今天早上打开邮箱,突然看到航空公司的外包项目新需求:安卓版的地勤调度系统要紧急适配繁体中文和日文。我瞅了眼桌上那杯刚冲的速溶咖啡,心想这活估计又得和资源文件打一整天游击战。
第一步:撞上硬骨头
直接打开之前的汉化项目翻源码。好家伙,三千多个字符串资源散落在几百个xml文件里,和上次修改记录对不上号。更坑的是同事写的注释:“中文版直接覆盖values文件夹”——结果现在英文版和日文版按钮全挤在同一个界面打架,下拉菜单直接显示成乱码方块。
第二步:抄家伙动手
抡起Android Studio就开始干:
- 先把所有values-zh文件夹重命名成values-zh-rCN(不然系统认不出简体中文)
- 用全局替换把%s占位符全改成%1$s这种带编号的格式,不然日语语序插进来直接崩
- 开着模拟器边改边骂:发现中文省略号"……"在日文环境下显示成乱码,用转义符\u2026手动替换才解决
小编温馨提醒:本站只提供游戏介绍,下载游戏推荐89游戏,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
第三步:掉进新坑
本以为大功告成时,测试组突然甩过来几张截图。航班状态页的“已延误”在繁体环境下居然显示成“已延誤”,关键字段少个字导致地勤人员看岔三趟航班。翻代码发现delay_status这个字段被不同模块重复定义了五次,有的在values-zh-rTW里写“延誤”,有的还残留着简体字“延误”。
气得直接开了文本比对工具,把重复字段全合并到同一个*,顺手把公司祖传的“Departure/Arrival”硬编码文本挖出来换成资源引用。折腾完发现布局文件里还有七八个android:text="登机口"漏网之鱼——这些大爷们根本不会进翻译文件!
最终歪打正着
临下班前突然灵光一闪:
- 把translatable="false"属性拍到不需要翻译的按钮文本上
- 用脚本扫出所有没走资源文件的文本,替换成@string/引用
- 在values文件夹塞了份预翻译的日语词库占位防崩溃
现在切语言时按钮再也不会挤变形,繁体版“行李托运”和简体版“行李托运”终于统一成“行李託運”。测试组老张端着枸杞杯路过时嘟囔了句:“这回居然没让航班信息在日语界面炸成烟花?”
(掏出小本本加粗记教训:永远别信“直接覆盖文件夹”这种鬼话,航空公司系统里藏着至少二十年的编码债,下次接活得先收考古费!)