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 与前端框架确定时一并定案。

