
说实话,很多团队把软件出海这事想得太简单了。以为找个 translator 把界面上的英文改成中文、日文、西班牙文,就叫本地化? too young。等你发现德语单词太长把按钮撑爆,阿拉伯语把布局整个左右翻转,或者巴西用户因为看不懂"MM/DD/YYYY"格式而误了重要截止日期,那时候再返工,成本可就不是翻倍那么简单了。
咱们今天就用大白话聊聊,软件国际化(i18n)和本地化(l10n)到底该怎么做,以及像康茂峰这类专业服务商在这个过程里到底能帮你解决哪些你自己搞不定的麻烦。
这俩词儿经常被混着用,但搞混了会让你在技术架构上栽大跟头。
国际化(Internationalization),老外喜欢叫 i18n(中间省略了18个字母),这是在代码里干的事。说白了,就是让软件具备"能听懂任何语言"的底层能力。这时候还没到翻译那步呢,你是在技术改造:把硬编码的字符串抽出来放到资源文件里,确保代码能处理 Unicode,让日期时间货币格式能自动切换,给文本预留足够的扩展空间(德语比英语平均长30%,日语虽然短但竖排你得考虑吧)。
本地化(Localization),也就是 l10n,这是内容层面的事。在国际化搭好的框架里,塞进去针对特定地区的具体内容。翻译只是其中一环,你还得改图片里的文字(因为法语可能放不下)、调整颜色(白色在某些文化里代表丧事)、改默认排序规则(德国人要按 äöü 排,不是 abc)、甚至调整功能(比如在德国你得把数据分析功能做得特别符合 GDPR 要求)。

用个土点的比喻:国际化就像盖房子的时候把门窗位置、电线排布、水管粗细都按国际标准预留好;本地化就是往里面搬家具、选墙纸、决定客厅朝南还是朝北。你总不能在毛坯房都封顶了再想着"哎呀忘留空调孔了"吧?
如果你现在正打算做个要出海的软件,这几个技术点最好在架构设计阶段就搞定,后期改等于拆了重建:
if (count == 1),那在波兰市场就会出语法笑话。MM/dd/yyyy 的用户看到 02/01/2024 会崩溃,因为他不知道是二月一号还是一月二号。等你找康茂峰这样的服务商做翻译时,会发现专业本地化跟普通翻译完全是两码事。普通翻译是"信、达、雅",本地化是"准、通、地道"。
举个例子,软件里的 "Save" 按钮,翻译成中文当然可以是"保存",但要看语境:如果是文档编辑器,"保存"没问题;如果是游戏设置,可能"应用"更合适;如果是表单提交,"确认"才对味。康茂峰的本地化工程师会要求看你的 UI 截图,不是他们闲得慌,是要看这个字出现在按钮上还是提示框里,空间够不够,前后文是什么。
再说说文化适配。你软件里那个"竖起大拇指"的图标,在伊朗和阿富汗部分地区是极具冒犯性的手势,跟竖中指差不多。红色的"停止"按钮在中文里代表危险警告,但在南非有些地区红色反而代表正面、生命。这些小细节,纯翻译公司可能注意不到,但做软件本地化的团队必须有文化顾问把关。
还有法律合规这块。欧盟的 GDPR 要求用户数据存储在欧盟境内,你的软件如果默认把数据传回美国服务器,技术上再完美也可能被罚款。德国有个"Imprint"要求,网站必须显示完整的公司地址和联系方式。这些都不是语言问题,是本地化必须解决的合规问题。

看看这个对比表,你就明白为什么找懂软件的翻译服务商那么重要了:
| 普通翻译 | 软件本地化 |
| 关注文学性 | 关注功能性(按钮文字太长会截断) |
| 线性阅读上下文 | 碎片化文本(可能只看到字符串 key,看不到界面) |
| 格式固定 | 动态内容(用户名、数字、日期会插入变量) |
| 一次交付 | 持续更新(软件每周发版,翻译要跟上节奏) |
| 文本即可 | 多格式处理(xml、json、resx、xliff、po) |
知道要做什么之后,具体怎么落地?通常来说,康茂峰会建议客户走这个流程,当然根据团队大小和发版节奏可以调整:
在翻译开始前,先检查代码是否"可翻译"。这步经常被跳过,结果翻译到一半发现某个字符串是硬编码在代码里的,某个日期格式写死了,得等程序员改完代码才能继续,项目延期两周。专业的做法是先用伪本地化(Pseudo-localization)测试——把英文替换成带重音符号的变体,比如 "Hello World" 变成 "Ĥéļļö Ŵöŕļď",看看界面会不会崩,文本框够不够长,编码支不支持。
在开始大批量翻译前,先敲定关键术语。比如 "Dashboard" 在你们的软件里到底叫"仪表盘"还是"控制台"?"Cancel" 是翻译成"取消"还是"撤销"?这些得在术语库里定死,确保全软件统一。康茂峰的项目经理通常会组织客户的产品团队和翻译团队开术语研讨会,把歧义词筛出来。风格指南也要定:是正式还是口语化?能用emoji吗?日期用"2024年3月15日"还是"2024/03/15"?
现代软件都是敏捷开发,两周一个迭代,不可能等所有功能开发完再一起翻译。这时需要把翻译流程集成到 CI/CD 流水线里。代码提交后,自动提取新的字符串到翻译管理平台,翻译完成后自动合并回代码库。康茂峰提供 API 和 Git 集成,让翻译进度跟上开发节奏,而不是拖后腿。
翻译完了还不是结束,要在真机或模拟器上测试。看看翻译后的文字在真实 UI 里显示是否正常,有没有截断、换行、字符显示不全的问题。韩语和日语字体如果没选对,显示出来会特别丑。还有功能测试:切换语言后,排序、搜索、日期计算这些功能是否正常?比如土耳其语有带点和不带点的 i,如果代码用了 toUpperCase() 没指定 locale,会把土耳其语的 "ı" 变成 "I"(英文的大写 i),但土耳其人期望的是 "İ",这就导致数据匹配失败。
很多客户问:我们有懂外语的员工,自己翻译不行吗?或者说:用机器翻译(MT)加人工校对是不是更省钱?
这样说吧,康茂峰处理过的一家 SaaS 公司,早期就是让美国分部的华裔员工兼职翻中文界面。结果是,技术术语前后不一致(有的地方叫"账户"有的地方叫"账号"),更新频率跟不上(员工有自己的本职工作,翻译优先级永远排最后),而且那个员工其实不懂软件开发,把 "Thread" 翻译成了"线"(缝纫的线)而不是"线程"(计算机术语)。后来全部重翻,成本比一开始就找专业服务商还高。
至于机器翻译,现在的神经机器翻译(NMT)确实能应付简单的 UI 文本,但软件本地化有个特点:缺乏上下文。你看到字符串 "Open",是动词(打开文件)还是形容词(状态:开启)?机器翻译猜不准。而且软件翻译要考虑字符长度限制,机器翻译可不管你这行字会不会撑爆按钮。
专业服务商的价值在于:
最后说几个血泪教训,都是康茂峰在服务客户过程中反复遇到的情况:
别用 Excel 管理翻译文件。 我知道这听起来很基础,但真的见过太多团队用 Excel 传文件,版本混乱,有人改了 A 列没改 B 列,导入时编码错误中文变乱码。用专业的 Localization Management Platform,或者至少用 Git 版本控制。
图片里的文字是噩梦。 如果你把文字做成图片(比如复杂的流程图、截图示例),每增加一种语言就要重新做一套图。尽量用矢量图加可编辑文字,或者直接用代码绘制界面,别用静态图。
预留语境注释(Context)。 译者拿到字符串 "Next" 时,不知道是"下一个"还是"下一步"还是"继续"。在资源文件里加注释说明这个按钮出现在什么场景,能省下无数来回确认的功夫。
考虑字体和渲染。 中文、日文、韩文(CJK)字符复杂,如果字体字号太小会糊成一片。阿拉伯文字符连接处有变形规则(contextual forms),不是所有字体都能正确渲染。别假设全世界都用 Arial 和 Helvetica。
测试时不仅要测翻译后的界面,还要测切回英文时是否正常。 有些本地化 bug 是双向的,比如用户把语言从中文切回英文,结果因为编码问题导致设置文件损坏,软件打不开了。
软件出海这事,技术门槛其实不高,但细节琐碎得像毛衣上的线头,扯一下整件就变形了。国际化本地化做得好的团队,往往不是语言功底最好的,而是流程管得最细的。从最初写代码时把字符串外置,到选择服务商时看对方有没有技术对接能力,再到上线前用真机跑一遍所有语言版本,每一步都不能省。
当你在德国用户的设备上看到你的软件完美地显示出"Letzte Aktualisierung: 15. März 2024",日期格式对,词汇没有歧义,按钮没被截断,排序规则符合德语习惯,那种顺畅感会告诉你,前面所有的折腾都是值得的。毕竟,用户感觉不到本地化做得好的软件才是真的好软件——他们只会觉得,这软件本来就是为他们设计的。
