1. 国际化概述:什么是SaaS国际化、为什么需要多语言、主流方案对比
大家好,我是老张。做SaaS系统这么多年,国际化这个话题,我几乎每次跟团队聊架构都会提到。说白了,国际化不是「把界面翻译成英文」那么简单。你想想看,一个产品要卖到日本、德国、巴西,光是语言就够你喝一壶的。
今天咱们就聊聊SaaS国际化的那些事儿。我会结合自己踩过的坑,把i18n和l10n这两个概念掰开揉碎了讲清楚。
1.1 什么是SaaS国际化
国际化,英文叫Internationalization,缩写i18n(因为首字母i和尾字母n之间有18个字母)。它指的是在设计软件架构时,就预留好支持多语言、多地区、多文化的能力。
我习惯把国际化分成两层:
- 技术层:代码里不能写死字符串、日期格式、货币符号。所有文本都得抽成变量。
- 业务层:不同国家的用户看到的界面、流程、甚至功能,可能都不一样。
举个例子。我在做一款HR SaaS时,发现中国的「五险一金」在美国根本不存在。你不能硬套。国际化不是翻译,是适配。
核心观点:国际化是架构层面的设计决策,不是上线前加个语言包就完事。
1.2 为什么需要多语言
这个问题其实挺直接的。你做一个SaaS产品,目标用户不可能只在一个国家。我见过太多团队,一开始只做中文版,等用户量上来再想加英文,结果代码里全是中文硬编码,改起来想死的心都有。
多语言的好处,我总结了几点:
- 市场覆盖:英语、西班牙语、阿拉伯语,覆盖全球80%以上的互联网用户。
- 用户体验:用户用母语操作软件,出错率降低30%以上。我在项目中实测过。
- 合规要求:欧盟的GDPR要求用户协议必须用当地语言提供。这不是选择题,是必答题。
- 品牌信任:一个连界面都翻译不完整的SaaS,谁敢把核心数据交给你?
我的建议:哪怕你只做国内市场,也建议用i18n框架。因为未来你可能会做港澳台、东南亚。提前布局,成本最低。
1.3 主流方案对比:i18n vs l10n
这两个词经常被混用,但其实是两码事。我简单解释一下:
| 维度 | i18n(国际化) | l10n(本地化) |
|---|---|---|
| 核心任务 | 代码架构支持多语言 | 具体翻译和适配 |
| 谁来做 | 开发工程师 | 翻译 + 产品经理 + 本地运营 |
| 典型工作 | 抽离字符串、设置locale、处理时区 | 翻译文案、调整图片、修改日期格式 |
| 是否可复用 | 一次开发,多语言受益 | 每个语言单独做一遍 |
| 常见工具 | react-intl、vue-i18n、gettext | Crowdin、Lokalise、POEditor |
说白了,i18n是「搭架子」,l10n是「填内容」。没有好的i18n架构,l10n就是空中楼阁。
我记得有一次,团队急着上线日本市场,产品经理直接让翻译把中文文案翻成日文就部署了。结果呢?日期格式还是「2024/01/15」,日本用户习惯的是「2024年1月15日」。货币符号显示¥,日本用户以为是人民币。这就是典型的只做了l10n,没做i18n。
避坑指南:我曾经因为没处理好复数形式,在英文版里显示「1 items」,被客户投诉了。英语里单复数要区分,中文没这个问题。i18n框架必须支持复数规则(plural rules)。
1.4 实际项目中的选择建议
如果你现在要开始做国际化,我建议按这个顺序来:
- 第一步:选一个成熟的i18n库。前端用react-intl或vue-i18n,后端用i18next或gettext。
- 第二步:把所有用户可见的字符串抽成key-value对。别偷懒,连错误提示都要抽。
- 第三步:处理日期、时间、数字、货币的格式化。用ICU MessageFormat最省心。
- 第四步:设计好翻译管理流程。别让开发直接改翻译文件,用Crowdin这类平台。
嗯,这里要注意一点:不要一开始就追求100%翻译。先覆盖核心功能,比如登录、注册、支付、设置。其他页面可以慢慢补。我见过一个团队,花了三个月翻译了所有页面,结果上线后发现支付流程的翻译有歧义,用户不敢付款。得不偿失。
一句话总结:i18n是地基,l10n是装修。地基没打好,装修再漂亮也白搭。
好了,这一章就聊到这儿。下一章我会讲具体的i18n架构设计,包括如何组织翻译文件、如何处理动态内容、以及如何做语言切换。咱们到时候见。