前置条件
请确保你已经完成数据生成器设置章节。
设置
首先,我们要创建提供程序。 请记住,提供程序才是为我们生成数据的。 创建一个继承 FabricLanguageProvider 的类,填入基本方法:
java
public class ExampleModEnglishLangProvider extends FabricLanguageProvider {
protected ExampleModEnglishLangProvider(FabricDataOutput dataOutput, CompletableFuture<HolderLookup.Provider> registryLookup) {
// Specifying en_us is optional, as it's the default language code
super(dataOutput, "en_us", registryLookup);
}
@Override
public void generateTranslations(HolderLookup.Provider holderLookup, TranslationBuilder translationBuilder) {
}
}1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
TIP
对于想要生成的每种语言,需要不同的提供程序(例如一个 ExampleEnglishLangProvider 还有一个 ExamplePirateLangProvider)。
接着在 DataGeneratorEntrypoint 入口点的 onInitializeDataGenerator 方法里注册这个类。
java
pack.addProvider(ExampleModEnglishLangProvider::new);1
创建翻译
除了创建原始翻译、来自 Identifier 的翻译以及从现有的文件复制(通过传递 Path)之外,还有用于翻译物品、方块、标签、统计数据、实体、状态效果、创造模式物品栏、实体属性和魔咒的辅助方法。 只需在 translationBuilder 上调用 add,添加你想要翻译的内容以及应该翻译成的内容:
java
translationBuilder.add("text.example-mod.greeting", "Hello there!");1
使用翻译
生成的翻译取代了其他教程中添加的许多翻译,但你也可以在任何使用 Component 对象的地方使用。 在我们的示例中,如果我们想允许资源包翻译我们的问候语,我们使用 Component.translatable 而不是 `Component.literal:
java
ChatComponent chatHud = Minecraft.getInstance().gui.getChat();
chatHud.addMessage(Component.literal("Hello there!"));
chatHud.addMessage(Component.translatable("text.example-mod.greeting")); 1
2
3
2
3






