Skip to main content
LINE / Airbnb / Change.org / KakaoTalk

国际化咨询:修复现有问题,规划未来方向

你已经知道 i18n 有多难了。我见过这些症状:RTL 布局崩掉、德语文本溢出按钮、API 响应返回错误的语言,还有翻译在发布几周内就失去同步。我不提供万能解决方案。我帮你理清你团队正在面对的具体烂摊子——然后构建不会再以同样方式出问题的系统。

"我们应该早点计划好这个"

你现在正在支付的架构税

你用英语发布了。成功了。然后你「只为首页」加了法语。现在你来这里是因为:

你的代码库中散布着 lang= 检查,遍及 47 个文件

产品经理会问"我们能对文案进行 A/B 测试吗?",而工程部门则会说"不重写就做不到"。

你有三套不同的翻译工作流程,没有一套能稳定工作

我见过的翻车案例:

  • 团队花费了 6 个多月才将 i18n 适配到 Next.js 应用中,因为字符串被硬编码在组件里。
  • 翻译文件失去同步,因为开发者不知道该更新哪个文件
  • 发布前的「本地化冻结」期,因为没人信任翻译流程
  • 不愿更改任何已翻译的内容,因为工作流程实在太麻烦了。

我能帮您做什么:

  • 重构策略,助您逐步引入 i18n(而非要求您‘推倒重来’)
  • 保持翻译同步而不阻塞开发的流程设计
  • 架构审查,找出你现有方案在支持 10 种以上语言时会出现哪些问题

i18n 是架构,不是功能。试图在后期添加它,就像在房子建好之后才决定要挖个地下室一样。

我帮你挖那个地下室——或者决定你是否真的需要一个。

RTL 让一切崩溃

您的 UI 并非为阿拉伯语、希伯来语或乌尔都语而设计

你切换到 dir="rtl" 后,布局完全崩了:

下拉菜单打开方向错误
图标方向指反了
Flexbox 布局折叠或产生奇怪的重叠
工具提示超出屏幕范围
浮动元素完全忽略文本方向

我看到的:

  • 200 多个组件的设计系统,但其中只有 12 个能正确处理 RTL
  • 有些团队仍在使用 float: left 而非逻辑属性,这导致每个新功能都会出现 RTL bug
  • 需要针对特定组件进行 RTL 样式覆盖的弹出框和模态框
  • 声称支持 RTL 的框架,只会翻转布局方向,却把定位逻辑搞坏了

我能帮您做什么:

  • CSS 逻辑属性迁移(用 margin-inline-start 代替 margin-left)
  • 设计系统审查,在发布前找出 RTL 隐患
  • 针对 RTL 优先的样式提供特定框架指南(Tailwind、shadcn、MUI 等)。

在每个组件中手动修复 RTL bug 是不可持续的。我让 RTL 支持变得系统化,而不是一直疲于救火。

「德语文本把我们的按钮撑爆了」

UI 没有为翻译而设计

英语没问题,德语不行。你的设计基于以下假设:

按钮标签约 10 个字符用户名能放进 200 像素宽的列中错误消息只有一行

然后你把内容翻译成德语、芬兰语或泰语,结果发现:

按钮文字被截断

表格每一行都出现水平滚动条

文本换行后形成难以阅读的块

非拉丁文本被截断,因为容器具有固定宽度

我能帮您做什么:

  • 可根据内容长度灵活调整的弹性 UI 模式
  • 字符预算规划(考虑到德语会扩展 30%,而泰语不使用空格)
  • 能够正确处理 CJK、阿拉伯语和天城文的排版系统

我帮你构建经得住翻译考验的 UI,避免你先为 10,000 个根本放不下的词付费。

你不需要听什么 i18n 为什么重要的大道理。你需要的是一个凌晨 2 点调试过 RTL 弹窗、跟产品经理死磕过字符限制、还搭建过真正能跑通的翻译流程的人。

你可能不知道的那些坑

团队踩坑实录

这些不是纸上谈兵,而是生产环境中实际发生的问题:

复数形式的噩梦

英语:"1 个项目" 对比 "2 个项目"

波兰语:1 przedmiot / 2 przedmioty / 5 przedmiotów(3 种复数形式)

阿拉伯语:6 种复数形式

你的 count === 1 ? 'item' : 'items' 逻辑已经不适用了

日期/时间混乱

您使用 toLocaleDateString() 格式化了日期。结果,日本用户在您的 CSV 导出文件中看到"2025 年 2 月 9 日"时,Excel 就卡住了。

API 语言不匹配

你的前端请求法语内容,API 却返回英语,因为身份令牌没有携带语言信息。结果 UI 里出现了混杂的语言,用户会以为这是个 Bug

伪本地化测试

你在上线前没有用 [Ţĥîś îś ţéśţ ţéẋţ ţĥàţ éẋþàñðś 30%] 进行测试。结果现在你的波兰语网站无法使用了。

隐形假设

你以为只有字符串需要翻译。然后你遇到了日期、数字、货币、排序、搜索——所有这些都有与语言环境相关的行为

我能帮您做什么:

  • ICU MessageFormat 实现(处理复数、性别和上下文)
  • API 国际化模式(语言协商、回退策略)
  • 在翻译机构发现问题之前就能捕获它们的 QA 流程

工作流程才是最棘手的环节。

每天都要发布新版本,如何让 8 种语言保持同步?

你已经搞懂了技术。现在你却卡在流程上:

1

开发者合并了带有新英文字符串的代码。翻译滞后 2 周。用户看到翻译了一半的 UI

2

您不知道哪些字符串可以放心删除(它们是否还在使用?是否已翻译?是否正在由翻译公司处理?)

3

产品想改个文案,但没人知道把「提交」改成「发送」会不会影响 12 种语言的翻译

4

翻译文件与生产环境不同步,有时甚至长达数周

团队问我的问题:

"我们的 API 应该返回已翻译的内容,还是让前端来处理?"
"我们如何对翻译进行版本管理?"
"哪个才是唯一的权威数据源:Figma、代码库还是翻译工具?"
"我们如何防止开发者发布仅限英文的功能?"

我见过的翻车案例:

  • 提交到 Git 的翻译文件与生产环境中的字符串存在差异
  • "不要动西班牙语文件"的警告,因为没人知道哪些地方可以安全修改。
  • 功能先用英语发布,然后 6 个月后才翻译(如果最终会翻译的话)。

我能帮您做什么:

  • 翻译流水线设计(何时使用 i18n 库、何时使用 TMS、何时使用 AI)
  • 让源字符串和翻译保持同步的 Git 工作流程
  • 如果新字符串未标记为待翻译,就自动拦截 PR

技术问题都能解决,工作流程才是症结所在。我设计的工作流程,维护起来无需大费周章。

我合作过的团队

全球产品,区域专长

LINE (日本、台湾、泰国) 徽标

LINE (日本、台湾、泰国)

即时通讯平台,覆盖 3 个主要东亚市场。解决了 CJK 字符处理、平台生态系统集成,以及日本、台湾和泰国不同用户体验预期等特定挑战

KakaoTalk(韩国) 徽标

KakaoTalk(韩国)

韩国主流消息平台。针对韩国市场的特定产品需求提供解决方案,包括 UI 语言正式性要求和平台集成需求。

Change.org(196 个国家,20+ 种优先语言) 徽标

Change.org(196 个国家,20+ 种优先语言)

全球请愿平台,内容的速度和质量都至关重要。协助处理跨不同市场用户生成的政治/社会内容的翻译工作流程。

Airbnb(超过 220 个国家,超过 60 种语言) 徽标

Airbnb(超过 220 个国家,超过 60 种语言)

全球市场,具有复杂的国际化需求。针对多语言环境下的信任与安全挑战,以及平台概念在不同市场的文化适配提供咨询。

Intercom(超过 30 种语言,全球 B2B SaaS) 徽标

Intercom(超过 30 种语言,全球 B2B SaaS)

客户沟通平台,服务全球企业客户。负责实时支持工具的产品国际化和知识库本地化。

莉莉丝游戏(中国、日本、韩国、美国、欧洲) 徽标

莉莉丝游戏(中国、日本、韩国、美国、欧洲)

一家在全球发行移动游戏的发行商,成功应对了内容本地化和区域平台要求等市场特有挑战。

我曾进入的市场:

东亚(日本、韩国、中国):

CJK 排版,平台生态系统集成,垂直文本支持

东南亚(泰国、越南、印度尼西亚):

多文字系统支持,移动优先的用户预期

MENA(阿拉伯语地区):

RTL 布局需求、正式与口语化语言要求、文化内容适配

欧洲:

24 种官方语言,多国产品发布

美洲:

区域语言变体(拉美西班牙语 vs 西班牙本土西班牙语、巴西葡萄牙语)、双语市场

我清楚这些市场中什么有效、什么行不通——不是纸上谈兵,而是来自真实用户依赖的产品上线经验

让我们修复这些问题

你不需要听什么 i18n 为什么重要的大道理。你需要的是一个凌晨 2 点调试过 RTL 弹窗、跟产品经理死磕过字符限制、还搭建过真正能跑通的翻译流程的人。

架构与战略审核(1-2 周):

我会告诉你,当你添加接下来的 3 种语言时,哪些地方会出问题,以及修复这些问题的成本是多少。

市场发布支持(4-8 周):

你要在日本、MENA 或欧盟市场发布,需要的是有实战经验的专家。

持续合作关系:

嵌入式咨询,帮你从 2 种语言扩展到 20 种语言

我不搞理论。我只管问题分级、规划路线图、把东西交付出去。