Генерация переводов 26.1.2
Руководство по настройке генерации переводов с помощью datagen.
WARNING
Эта страница написана для версии 26.1.2. Документация для более старых версий может быть неполной.
ТРЕБОВАНИЯ
Сначала убедитесь, что вы установили 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






