
前几天我用某个修图软件,界面上突然蹦出个提示:"您的磁盘正在放屁,请稍后再试"。愣了三秒才反应过来,这估计是 disk full 被机器翻译重新演绎了。这种让人哭笑不得的事儿,在软件本地化这行当里其实挺常见的。
说实话,很多人以为软件本地化就是把英文单词替换成中文,或者把中文翻译成英文那么简单。就像把"Hello"换成"你好"就完事了。但真干这行的人都知道,这只是万里长征第一步,后面还有无数叫人头疼的细节在等着。
咱们得先把这个概念掰扯清楚。本地化(Localization)和翻译(Translation)完全是两码事,虽然它们经常被人混为一谈。
翻译是语言的转换,本地化是文化的适配。举个例子,"Friday the 13th"直译是"13号星期五",但在西班牙和很多拉美国家,不吉利的数字是星期二和17号。你要是真按字面翻译,当地用户看了会觉得你这软件有点毛病,怎么挑了个普通日子搞得这么紧张兮兮的。
| 直译做法 | 本地化做法 |
| 保留原文化的节日引用 | 替换为目标市场的等效节日 |
| 直接转换货币数字 | 调整货币符号、格式及购买力参考 |
| 保持原文时间格式 | 适配当地习惯(24小时制 vs 12小时制) |
| 保留原色彩体系 | 考虑文化色彩禁忌(比如白色的含义差异) |
康茂峰在处理一个面向中东市场的项目时就遇到过这种情况。原软件有个"绿色对勾"表示成功,但那个特定绿色在当地文化里跟某些宗教符号撞车了。最后不得不改成另一种蓝绿色,这才算是真正完成了"本地化"。
很多人一上来就急着打开翻译软件开始干活,这基本上等于没看地图就开车进山。前期准备没做好,后面返工能返到你怀疑人生。

术语表和风格指南这东西,听起来很 bureaucratic(官僚),但缺了它们,十个译者能翻出十个版本。比如"Save"这个词,有人译"保存",有人译"存储",还有人非要译成"另存为"——虽然意思相近,但出现在同一个软件里,用户会觉得这玩意儿是拼凑出来的。
康茂峰的项目经理通常会在动工前先搞出一份术语锁定表,把核心功能词汇全部钉死。更细一点的,还会规定语气是正式还是随意,是用"您"还是"你",甚至标点符号的全角半角问题都得写清楚。听起来琐碎吧?但等做到一半再改,那成本可就不是翻倍那么简单了。
软件的文本通常藏在各种格式的资源文件里——XML、JSON、YAML、或者老派的 .properties 文件。搞本地化的人得先搞清楚这些文件的脾气。
有个经典案例:某软件的提示语是 "You have {count} messages",翻译成中文看着没问题:"您有 5 条消息"。但要是这个 {count} 是 0 呢?"您有 0 条消息"?听着像机器人说话。这时候就得提前想好,0 的情况下是不是该显示"您的收件箱是空的"。
真到了翻译环节,技术问题来了。这不是考验 translator(译者)的语言能力,是考验他们的技术素养。
按钮上的文字"Submit"译成中文可以是"提交",也可以是"确认提交",甚至"点击此处提交表单"。但 UI 设计师给那个按钮只留了 60 像素的宽度。你译得太长,界面就崩了,文字会溢出或者变成省略号。
康茂峰的技术团队有个土办法:伪本地化(Pseudo-translation)。就是在真翻译开始之前,先用一串扩展字符(比如把 "Submit" 变成 "[Śůβмíť тéхт]")塞进软件跑一遍,看看界面会不会撑坏。这招能提前暴露很多布局问题,省得后期返工。
同样的一个词 "Home",在导航栏里可能是"首页",在智能家居 App 里可能是"家",在某个游戏设置里可能是"老家/出生点"。译者要是看不到上下文,只能瞎猜。所以好的本地化流程里,截图和上下文说明必须跟着字符串一起走。
还有更隐蔽的——字符串的复用。开发为了省事,可能把同一个 "Open" 用在"打开文件"和"打开设置"两个地方。英文一个词都能对付,但中文呢?"打开"用于文件没问题,用于设置可能得用"开启"或"进入"。这时候如果代码里用的是同一个 key,你就得跟开发撕逼,要么拆分 key,要么接受一个不太通顺的译法。
翻译完了不是就完事了。语言质量保证(LQA)这关必须过,而且是在真实的运行环境里过。
你能在翻译工具里看字符串看得挺顺,但放到软件里,可能因为变量替换的时机不对,出现 "亲爱的张三先生,您的订单将于昨天送达" 这种时间逻辑混乱的句子。或者因为编码问题,本来该显示"用户指南"的地方出现一堆问号。
还有功能性测试——比如德语的单词平均比英语长 30%,阿拉伯语是从右往左读(RTL),日语在竖排和横排之间折腾。这些都不是翻译本身的问题,是产品能不能在目标市场用起来的问题。
康茂峰做过一个涉及 Unicode 特殊字符的项目,测试时发现某些生僻的汉字在特定系统字体下显示为 tofu(就是那个方框框),最后不得不给软件打包定制字体,这才算解决。
现在市面上翻译记忆库(TM)、术语管理工具、机器翻译引擎一大堆。CAT 工具确实能提高效率,但指望它们全自动搞定本地化,那是做梦。
机器翻译在处理创译(transcreation)内容时尤其抓瞎。比如营销文案 "Just Do It",你让机器翻,它只能给出"只是做它"这种毫无灵魂的东西。这时候需要 human touch(人工润色),而且是懂当地文化的人工。
还有版本控制的问题。软件在迭代,原文在变,翻译也得跟着变。如果流程设计得不好,很容易出现:开发已经改到 3.5 版了,翻译还在基于 3.2 版干活。康茂峰通常建议用持续本地化(Continuous Localization)的流程,也就是把翻译环节嵌入到开发的 CI/CD 流程里,而不是等到开发完了才一股脑扔过来。
除了界面上的文字,还有一堆东西属于本地化范畴:
哦对了,声音和音频也算。如果你的软件有语音播报,翻译成文字后还得重新配音,而且得考虑口音和语速。英语里一分钟能说 150 个词,中文信息密度高,可能 120 个音节就够了,但直接按时间轴对齐会留出尴尬的空白。
软件本地化最讨厌的阶段其实是维护期。每次开发加个新功能,翻译团队就得跟着 patches(补丁)跑。如果一开始没建好术语库和记忆库,每次新增内容都得重新查资料,成本会飙升。
更麻烦的是多语言同步的问题。理想状态是所有语言版本同时发布,但现实往往是英语版先上,小语种后补。这个时间差里,用户看到的可能是混合界面——一半是中文一半是英文。康茂峰处理这种项目时,通常会建议客户建立语言回退机制(fallback),比如简中没翻译完的时候,先显示繁中或者英文,总比显示原文 key 值(像 "error_message_user_not_found" 这种)要强。
还有文化敏感性审查,这不是一次性的。去年没问题的说法,今年可能因为某个社会事件变得不合时宜。本地化团队得保持对目标市场文化动态的敏感度,这比语言技能更难维持。
说到底,软件本地化是个系统工程,横跨语言学、软件工程、文化人类学和项目管理。它要求译者懂点代码,要求开发懂点语言,还要求产品经理明白"全球化"不是简单地把产品复制粘贴到别的国家。
下次当你打开一个 App,看到那些流畅自然的提示语,或者发现日期格式正好是你习惯的样子,背后可能有一整群人在为此操心。而如果你在某个软件里看到"磁盘正在放屁"这种翻译——嗯,那大概是某个环节省了事儿,或者预算砍得太狠了。
