国际化——多语言版本的实现之路
2026年4月,一家新加坡的贸易公司联系我们,询问EIOS是否支持英文版。"我们的团队一半是中文母语者,一半是英文母语者。如果只有中文版,我们没法用。"这个需求触发了我们的国际化项目。
最初我们的反应是"加个英文翻译应该很快"。事实证明我们严重低估了国际化的复杂度。这不是"把中文翻译成英文"的简单任务,而是重新设计产品以适应多语言、多文化环境的系统工程。从4月到8月,历时4个月,我们才完成了中英文双语的完整支持。这篇文章将公开整个实现过程和那些意想不到的坑。
技术架构:i18n的基础设施
国际化(i18n)的技术基础是翻译文本管理系统。我们选择了react-intl(FormatJS)作为前端国际化库,i18next作为后端翻译管理框架。选择理由是它们的ICU MessageFormat支持、复数规则处理、日期/数字/货币的本地化格式化能力。
核心挑战不是技术选型,而是翻译文件的组织和管理。EIOS有2000多个可翻译字符串,分布在上百个组件和服务中。我们采用了命名空间分层的翻译文件结构:按功能模块划分命名空间(如dashboard、chat、settings等),每个命名空间下按语言代码组织翻译JSON文件(如zh-CN.json和en-US.json)。
翻译检测流程是:应用启动时,检测用户偏好(浏览器语言、账户设置、URL参数),加载对应语言的翻译文件,注入应用的IntlProvider中。用户可以在任何地方切换语言,无需刷新页面——所有已渲染的组件立即响应语言变更。
翻译管理:机器翻译+人工审校的混合流程
2000多个字符串的翻译不可能全部依赖人工翻译(时间太长、成本太高),也不可能完全依赖机器翻译(质量不可控)。我们建立了"机器翻译初译+人工审校"的混合流程。
第一步,使用DeepL API对所有可翻译字符串进行机器翻译初译。DeepL在中英翻译上的质量确实显著优于Google Translate,特别是在技术文档和UI文本领域。对于高度专业化的术语(如"联邦式Agent矩阵"),我们在翻译前建立了一份术语表,确保关键概念翻译的一致性。
第二步,人工审校。我们聘请了一位具有技术背景的中英双语译者,对所有机器翻译结果进行审核修正。译者不是逐句校对,而是按功能模块的整体语境进行优化,确保术语统一、语气一致。人工审校发现并修正了约15%的翻译问题——主要集中在中英文表达习惯差异(如英文UI通常更简洁直接)、中文特有概念的表达(如"接口人"在英文中没有直接对应)和上下文中一词多义的歧义消除。
第三步,内部测试。产品团队的英文使用者(虽然不是母语者,但足以发现明显的翻译错误)进行全功能走查,标记不通顺或不准确的翻译。
第四步,用户反馈。率先向新加坡客户开放英文版Beta,收集真实英文用户的反馈。这一步发现了一些"人工审校和内部测试都看不出来"的问题——比如某些中文友好的表达在英文母语者看来过于正式或不自然。
UI适配:翻译会影响布局
一个容易被忽视的问题是——不同语言的文本长度差异巨大。同一个UI元素,中文可能只用4个字,英文可能需要15个字符。这会导致按钮文字溢出、表格列宽不够、导航栏换行等布局问题。
我们的处理策略是"设计时以英文为准,检查时以中文为辅"。英文通常比中文长30%-50%,如果一个UI布局能容纳英文文本,通常也能容纳中文。但也有例外——中文虽然在字符数上更少,但在视觉宽度上不一定更窄(一个中文字符的宽度约等于两个英文字符)。
对于标签、按钮等固定空间元素,我们设置了最小宽度的弹性布局,超出空间时自动省略。对于表格列、卡片标题等灵活空间元素,使用CSS的min-content和auto宽度,让内容决定布局。这些适配工作的回报是——无论在中文还是英文环境下,界面都不会出现文字截断或布局错乱。
格式化:日期、数字、货币的本地化陷阱
国际化中最大的坑往往不在翻译,而在格式化。中文环境下的日期格式是"2026年11月18日",英文是"November 18, 2026"。数字千分位分隔:中文和英文都使用逗号(1,000,000),但其他语言可能用空格或句点。货币符号和位置也不同。这些差异看似微小,但如果忽略,会让用户感觉产品"不是为我设计的"。
我们的解决策略是利用Intl API而非手写格式化逻辑。JavaScript的Intl.DateTimeFormat和Intl.NumberFormat能根据locale自动处理日期和数字的格式化。关键是要将格式化的locale与翻译的locale保持一致——如果用户选择了英文界面,日期也应该按英文习惯显示,反之亦然。
时区是另一个容易出错的问题。用户的账户设置中有时区偏好,但浏览器检测到的时区可能不同。我们最终的规则是:账户设置优先于浏览器检测,并在涉及时间的UI元素上明确显示时区信息——避免"这个截止时间是北京时间还是纽约时间"的困惑。
文化适配:比翻译更深一层的挑战
国际化不仅是语言的翻译,更是文化的适配。有些内容可以直译,有些内容在不同文化中有不同的含义和接受度。
图标的文化含义是一个典型例子。我们在中文版中使用竖起大拇指的图标表示"赞",但在中东市场这个手势具有冒犯性。虽然我们当前只支持中英文,但我们建立了一个文化适配检查清单,为未来的多语言拓展做准备。
示例数据也是一个容易被忽视的文化适配点。v1.0中的所有示例数据都是中文场景——中文公司名称、人民币金额、中国城市名称。在英文版中,这些示例会让人觉得"这不是给我用的产品"。因此我们为不同语言版本准备了本地化的示例数据,让新用户在第一眼就感到产品是为他们服务的。
AI回复的文化适配是最复杂的。理论上,一个AI模型的输出语言会跟随输入语言——中文提问得到中文回答,英文提问得到英文回答。但实践中,AI生成的示例、默认值、推荐内容仍然需要根据用户的文化背景进行调整。目前这部分是通过在系统提示词中加入语言和文化偏好来实现的。
持续国际化:不是一次性的项目
国际化不是"翻译完了就结束了"的一次性任务。每次新功能开发都会引入新的可翻译字符串,如果不持续管理,翻译的完整性和一致性会逐渐退化。
我们在CI流水线中添加了翻译完整性检查。每次Pull Request如果引入了新的可翻译字符串但没有提供英文翻译,Pipeline自动失败并提示缺失的翻译键。这个机制强制执行了"开发即翻译"的纪律——不再有"先写中文,翻译以后再说"的侥幸。
翻译版本管理也是重要的一环。我们使用Git管理翻译文件,利用版本控制追踪每一处翻译的修改历史和修改人。当用户报告翻译问题时,可以快速追溯到修改记录并进行修复。每月进行一次翻译质量评审,重点关注新增功能和用户反馈的翻译问题。
国际化是EIOS走向全球市场的第一步。中英文双语支持让我们能够服务更广泛的用户群体——不仅包括英文母语者,也包括在中国的外企员工、有跨国业务的中国企业、以及任何习惯英文界面的用户。未来的目标是支持更多语言(日语、韩语优先),但这将取决于市场需求和资源投入的平衡。