您可以从支持翻译关键字的现有语言文件和类中生成翻译条目。
首先,创建一个继承 FabricLanguageProvider
的类,并实现如下基本方法:
private static class MyModEnglishLangProvider extends FabricLanguageProvider { private MyModEnglishLangProvider(FabricDataOutput dataGenerator) { // en_us 是可选参数,默认情况下该参数为 en_us super(dataGenerator, "en_us"); } @Override public void generateTranslations(TranslationBuilder translationBuilder) { } }
让我们添加一些翻译条目:
@Override public void generateTranslations(TranslationBuilder translationBuilder) { translationBuilder.add(SIMPLE_ITEM, "Simple Item"); translationBuilder.add(SIMPLE_BLOCK, "Simple Block"); translationBuilder.add(SIMPLE_ITEM_GROUP, "Simple Item Group"); // 加载现有的语言文件 try { Path existingFilePath = dataGenerator.getModContainer().findPath("assets/mymod/lang/en_us.existing.json").get(); translationBuilder.add(existingFilePath); } catch (Exception e) { throw new RuntimeException("Failed to add existing language file!", e); } }
现在,我们需要将提供程序添加到入口点类的 onInitializeDataGenerator
中的数据生成器中,如下所示:
public class DataGeneration implements DataGeneratorEntrypoint { @Override public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) { Pack pack = fabricDataGenerator.createPack(); pack.addProvider(MyModEnglishLangProvider::new); } }
以下的游戏对象有一个翻译键供你翻译:
Item
Block
ItemGroup
EntityType<T>
Enchantment
EntityAttribute
StatType<T>
StatusEffect
Identifier