主题
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。
翻译贡献指引
如何开始?
- 在
plugins/PLand/lang/下找到zh_CN.json(内置语言) - 复制一份,重命名为目标语言文件(如
en_US.json) - 逐条翻译
value,保持key不变
提交翻译
- 如果你希望翻译被官方收录,请提交 Pull Request 到 GitHub 仓库
- 翻译文件请统一放在
assets/lang/目录下(由构建系统自动复制到plugins/PLand/lang/)
社区翻译分享
你也可以将翻译文件分享到 社区论坛 / Discord,帮助其他用户快速上手。
太麻烦了?
你可以将此文档复制后,附带 zh_CN.json 一起提交给 AI (例如 ChatGPT), 并在提示词说出你的要求
例如:参照这个文档和zh_CN.json,翻译一份 en_US.json, 注意保持 key 不变