Skip to main content
Version: 1.20.x

语言生成

可以通过子类化LanguageProvider并实现#addTranslations为模组生成语言文件。创建的每个LanguageProvider子类代表一个单独的localeen_us代表美式英语,es_es代表西班牙语等)。实现后,必须将提供者添加DataGenerator中。

// 在模组事件总线上
@SubscribeEvent
public void gatherData(GatherDataEvent event) {
event.getGenerator().addProvider(
// 告诉生成器仅在生成客户端资源时运行
event.includeClient(),
// 美式英语的本地化
output -> new MyLanguageProvider(output, MOD_ID, "en_us")
);
}

LanguageProvider

每个语言提供者都是一个简单的字符串映射,其中每个翻译键都映射到一个本地化名称。可以使用#add添加翻译键映射。此外,还有一些方法使用BlockItemItemStackEnchantmentMobEffectEntityType的翻译键。

// 在LanguageProvider#addTranslations中
this.addBlock(EXAMPLE_BLOCK, "Example Block");
this.add("object.examplemod.example_object", "Example Object");

!!! 提示 包含非美式英语字母数字值的本地化名称可以按原样提供。提供者会自动将字符翻译为等效的unicode,供游戏读取。

```java
// 编码为'Example with a d\u00EDacritic'
this.addItem("example.diacritic", "Example with a díacritic");
```