Skip to content

i18n 国际化 & 翻译指南 ​

i18n

插件默认提供简体中文为内置默认语言, 相关语言文件存放在 plugins/PLand/lang 下

插件自动基于玩家的 localeCode 来选择语言,无需手动设置

自定义翻译 ​

翻译文件的格式为 json,其中 key 为原句, value 为翻译后的句子

例如,将 你好,我是{},来自{} 翻译为 Hello, I am {}, from {},则可以创建一个 en_US 的翻译文件

json
{
  "你好,我是{},来自{}": "Hello, I am {}, from {}"
}

插件通过 key 原句来查找翻译,例如 你好,我是{},来自{},则会查找 你好,我是{},来自{} 的翻译,如果找不到,则会返回原句

占位符 ​

PLand 使用 fmt 库来格式化字符串,按照 {} 的顺序进行传参

fmt 的占位符 {} 默认从 0 开始编号,例如 你好 {}, 我是 {} 等价于 你好 {0}, 我是 {1}

基于此,你可以对调占位符的顺序

例如调整语句顺序

json
{
  "你好 {}, 我是 {}": "我是 {1}, 你好 {0}"
}
cpp
void test() {
  using ll::_tr;
  std::cout << "你好 {}, 我是 {}"_tr("小明", "小王") << std::endl; // 我是 小王, 你好 小明
}

语言文件命名 ​

语言文件按 语言_地区 格式命名,例如:

  • zh_CN.json — 简体中文(中国大陆)
  • zh_TW.json — 繁体中文(台湾地区)
  • en_US.json — 美式英语
  • ja_JP.json — 日语

插件会根据玩家的 localeCode(如 zh_CN)自动匹配对应文件,匹配不到则回退到 zh_CN.json。

翻译贡献指引 ​

如何开始? ​

  1. 在 plugins/PLand/lang/ 下找到 zh_CN.json(内置语言)
  2. 复制一份,重命名为目标语言文件(如 en_US.json)
  3. 逐条翻译 value,保持 key 不变

提交翻译 ​

  • 如果你希望翻译被官方收录,请提交 Pull Request 到 GitHub 仓库
  • 翻译文件请统一放在 assets/lang/ 目录下(由构建系统自动复制到 plugins/PLand/lang/)

社区翻译分享 ​

你也可以将翻译文件分享到 社区论坛 / Discord,帮助其他用户快速上手。

太麻烦了?

你可以将此文档复制后,附带 zh_CN.json 一起提交给 AI (例如 ChatGPT), 并在提示词说出你的要求
例如:参照这个文档和zh_CN.json,翻译一份 en_US.json, 注意保持 key 不变

AGPL-3.0 Licensed