Генерация переводов 26.1.2
Руководство по настройке генерации переводов с помощью datagen.
ТРЕБОВАНИЯ
Сначала убедитесь, что вы установили datagen.
Установка
Сначала мы создадим нашего провайдера. Помните, что именно провайдеры генерируют данные для нас. Создайте класс, который расширяет FabricLanguageProvider и заполните базовые методы:
java
public class ExampleModEnglishLangProvider extends FabricLanguageProvider {
protected ExampleModEnglishLangProvider(FabricPackOutput 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
Создание переводов
Наряду с созданием необработанных (raw) переводов, переводов на основе идентификаторов (Identifier) и их копированием из уже существующего файла (путем передачи пути Path), существуют вспомогательные методы для перевода предметов (items), блоков (blocks), тегов (tags), статистик (stats), сущностей (entities), эффектов мобов (mob effects), вкладок творческого режима (creative tabs), атрибутов сущностей (entity attributes) и зачарований (enchantments). Просто вызовите add на translationBuilder с указанием того, что вы хотите перевести и на что он должен перевести:
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






