语言文件生成
继承 LanguageProvider 并实现 #addTranslations,即可为模组生成语言文件。每个子类代表一个独立的语言区域:例如 en_us 表示美式英语,es_es 表示西班牙语。实现后,必须将提供者添加到 DataGenerator。
原创说明图,依据 Forge 1.21.x 官方文档 绘制。
// 在模组事件总线上
@SubscribeEvent
public void gatherData(GatherDataEvent event) {
event.getGenerator().addProvider(
event.includeClient(), // 仅在生成客户端资源时运行
output -> new MyLanguageProvider(output, MOD_ID, "en_us") // 美式英语本地化
);
}
LanguageProvider
每个语言提供者本质上是字符串映射,将每个翻译键映射到本地化名称。可使用 #add 添加映射;也有方法使用 Block、Item、ItemStack、Enchantment、MobEffect 和 EntityType 的翻译键。
// 在 LanguageProvider#addTranslations 中
this.addBlock(EXAMPLE_BLOCK, "Example Block");
this.add("object.examplemod.example_object", "Example Object");
提示:包含美式英语以外字母或数字的本地化名称可以直接提供。提供者会自动将字符转换成对应的 Unicode 表示,供游戏读取。
// 编码为 'Example with a d\u00EDacritic'
this.addItem("example.diacritic", "Example with a díacritic");