Skip to content

ADR-0006 国际化(i18n)方案

This page isn't translated yet — showing the Chinese version.

  • 状态:已接受
  • 日期:2026-10-22

产品面向中英双语玩家,需从第一天就具备 i18n。需决定翻译文件放哪,以及是否“单独开仓库 + git submodule”管理。

  • 不单独开仓库、不用 git submodule:翻译与代码强耦合(新字符串随功能走),分仓库会造成版本错位;submodule 增加 checkout / CI / 同步摩擦。
  • 翻译文件随各产品仓库存放,目录约定 locales/{zh-CN,en-US}.toml(前端同构用 JSON);跨产品通用字符串进 shared/i18n。
  • shared/i18n 提供 Localizer 接口(T / Plural,含 locale 回退链);Go 后端用 go-i18n,前端用 i18next / next-intl。
  • 起步 locale:zh-CN、en-US;缺省回退 en-US。
  • 正:翻译与代码同版本,无 submodule 复杂度;Localizer 接口让实现可替换、两端语义一致。
  • 负:翻译贡献需走各产品仓库 PR;若未来要社区集中翻译,再接入 Weblate / Crowdin(届时仍同步回各产品仓库,不改架构)。
  • 注意:消息键命名规范(如 yggdrasil.error.invalidToken)在 M1 与前端框架确定时一并定案。