Генерація перекладу
ПЕРЕДУМОВИ
Спершу переконайтеся, що ви виконали процес налаштування генерації даних.
Налаштування
Спочатку ми створимо нашого постачальника. Пам’ятайте, що фактично генерують дані для нас постачальники. Створіть клас, який розширює 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
Створення перекладу
Разом зі створенням необроблених перекладів, перекладів з Identifier і копіюванням їх з уже наявного файлу (передаючи Path), існують допоміжні методи для перекладу предметів, блоків, теґів, статистики, сутностей, ефектів моба, вкладок творчості, атрибути сутностей та зачарування. Просто викличте 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






