过年宅家做多语言适配的坑与心得

趁着今年过年,我给自己的 app 做了多语言适配,原本以为只是简单的文本翻译,实操后才发现藏着不少技术和体验上的细节坑。今天结合实操经历复盘一下避坑经验。

先简单交代下背景:我开发的这款 app 是以海拔、气压、经纬度显示、指南针功能为基础,重点做了各类主题特效(扫光、呼吸、海浪、星辰、粒子等等),方便用户在不同场景下拍照打卡,比如“红旗漫卷”“橄榄圣光”等主题,就是为了适配用户拍照出片需求。之前仅支持中文,这次计划适配繁体中文、英语、西班牙语、葡萄牙语、德语、法语、日语、俄语。

IPad 版本适配好的中文设置界面和日语设置界面,日语这个假名是真不好看:

中文 “自由星夜” 和 英文的 “橄榄圣光”,截图看着有些呆,真实是有动态特效的:

初期计划额外适配阿拉伯语,毕竟文字小也是肉,但了解后发现,阿拉伯语为RTL(从右到左)书写语言,豆包说需要对整个 app 界面进行镜像翻转,按钮、图标方向均需调整,改动量大,我单人开发、过年时间有限,最终决定放弃阿拉伯语。适配的核心难点是细节适配的合理性,其实做好中文和英语就行了,但是我看市场上大多小语种的都没有做,算是解决一个小小的痛点。

第一个坑:不能直译。一开始我计划用机器翻译初稿再手动修正,实际测试后发现,机器翻译的生硬感严重,尤其是主题风格这类带有审美倾向的文本,比如“经典落日” “橄榄圣光”,直译到德语、俄语后,让留子朋友看了看,不仅读起来晦涩,长度也超出界面显示范围,容易出现文本截断问题,后续只能逐一对主题名进行意译,结合目标语言的审美习惯调整措辞,宁可简洁也不要翻译的太尬,同时控制翻译后长度,确保适配界面显示,仅这一步就耗时两天。

第二个坑:单位适配。国内使用长度单位(米)、速度单位(公里/小时),在欧美地区并不适用,欧美更习惯英尺(ft)、英里/小时(mph)。初期 app 并没有做区分适配,所有语言统一显示中文常用单位,考虑到用户体验,后续返工优化:中文、日语默认显示米和km/h,英语、德语、西班牙语等显示英尺和mph,增加手动切换单位功能。

俄语和葡萄牙语的单位设置页面:

第三个坑:避免固定宽高,适配长文本语言。德语、俄语的单词普遍偏长,初期我沿用了中文界面的固定宽高布局,导致翻译后部分文本出现截断挤压的问题,后续只能重新调整布局,采用弹性自适应布局(iOS用AutoLayout、Android用ConstraintLayout)。

第四个坑:俄语/西班牙语/德语等国家,逗号是小数点,而点号用来分隔千位数(例如 1.000 表示一千)。

西班牙语 “极顶冰川” 主题和俄语的 “长缨在手” 主题,在表示气压的时候使用逗号而不是点,和汉语有很大区别:

复盘本次适配经历,两个核心要点:一是多语言适配绝非文本翻译那么简单,需兼顾本地化习惯、数据格式、布局适配等细节。二是适配前要做好需求取舍,优先保证核心语言的适配质量,避免贪多求全导致返工。