国际化(i18n)
自动 UI 与条目文本依赖语言文件。你需要在模组资源包中提供 config.<modid>.* 键值。
键名约定
- 标题:
config.<modid>.title - 分类:
config.<modid>.category.<section>(section为顶层字段名) - 条目:
config.<modid>.<section>.<path>与... .tooltip- 顶层条目:
config.<modid>.<section>.<field> - 子分类条目:
config.<modid>.<section>.<sub.path>(点分路径)
- 顶层条目:
示例(顶层 + 子分类):
json
{
"config.my_mod.title": "我的模组设置",
"config.my_mod.category.general": "通用",
"config.my_mod.general.enabled": "启用",
"config.my_mod.general.enabled.tooltip": "是否启用主要功能",
"config.my_mod.category.client": "客户端",
"config.my_mod.client.ui.whitelist": "白名单",
"config.my_mod.client.ui.whitelist.tooltip": "允许显示的实体 ID 列表"
}Tips:
- 任何未提供的键将显示为默认英文 key 或占位,建议完整覆盖
- tooltip 可选;未提供时 UI 仍可正常显示
语言文件位置
- Fabric:
resources/assets/<modid>/lang/zh_cn.json、en_us.json等 - NeoForge:相同路径规范
UI 生成与键对应(实现细节)
- 顶层分类使用
builder.getOrCreateCategory( translatable("config.<modid>.category.<section>") ) - 条目文本:
- 顶层字段:
config.<modid>.<section>.<field> - 子分类字段:
config.<modid>.<section>.<sub.path>
- 顶层字段:
- 所有条目默认会附加
... .tooltip作为提示文本键
注意:对于顶层非子分类字段,内部实现会做一次 fieldName.replace('.', '_') 的防御式处理;一般不会影响你实际使用,因为字段名通常不含点。