User Tools

Site Tools


ru:tutorial:lang

Названия переводов

Обратите внимание, что у вашего предмета странное отображаемое имя, например item.tutorial.my_item? Это происходит потому, что название вашего предмета не имеет перевода на выбранный вами язык игры. Переводы используются для поддержки нескольких разных языков для одной строки.

Создание файла локализации

Вы можете использовать файлы локализации для предоставления переводов для переводимых строк в игре. Вам нужно будет создать файл с именем, соответствующим вашему языку. Чтобы найти код ваших языков, посетите эту страницу. Английский - это en_us (Русский - ru_ru). Как только у вас будет свой языковой код, создайте файл JSON по адресу resources/assets/modid/lang/; полным примером файла перевода на английский язык будет resources/assets/tutorial/lang/en_us.json (Русский - resources/assets/tutorial/lang/ru_ru.json).

Добавление перевода

После создания файла lang вы можете использовать этот базовый шаблон для добавления переводов:

resources/assets/tutorial/lang/ru_ru.json
{
  "item.tutorial.my_item": "Мой предмет",
  "item.tutorial.my_awesome.item": "Мой крутой предмет",
  [...]
}

Где первая строка - это любая переводимая строка (например, имя элемента или переводимый текст). Если вы следуете инструкциям по вики-руководству, не забудьте изменить modid на `tutorial` или любой другой выбранный вами modid.

Использование своего переводимого текста

Всякий раз, когда функция принимает “Text”, у вас есть возможность присвоить ей “new LiteralText()”, что означает, что Майнкрафт будет использовать строку в аргументе конструктора как есть. Однако это нежелательно, поскольку это затруднило бы перевод этого текста на другой язык, если вы захотите это сделать. Вот почему всякий раз, когда требуется объект “Text”, вы должны присвоить ему “new TranslatableText()” с ключом перевода, а затем перевести ключ в файл lang. Например, при добавлении всплывающей подсказки выполните:

@Override
public void appendTooltip(ItemStack itemStack, World world, List<Text> tooltip, TooltipContext tooltipContext) {
    tooltip.add(new TranslatableText("item.tutorial.fabric_item.tooltip"));
}

А затем добавьте в файл локализации:

resources/assets/tutorial/lang/ru_ru.json
{
  "item.tutorial.fabric_item.tooltip": "Моя подсказка"
}

И всплывающая подсказка будет отображаться как “Моя подсказка”

Добавление динамических значений к переводимому тексту

Допустим, вы хотите, чтобы текст изменялся в зависимости от какой-либо переменной, например текущего дня и месяца. Для динамического числа мы помещаем %d там, где вы хотите, чтобы число отображалось в значении ввода перевода, например:

resources/assets/tutorial/lang/ru_ru.json
{
  "item.tutorial.fabric_item.tooltip": "Моя подсказка в день %d, и месяц %d" 
}

Затем мы передаем переменные, которые мы используем в нашей строке, в том порядке, в котором они отображаются в тексте. Сначала день, потом месяц:

int currentDay = 4;
int currentMonth = 7;
tooltip.add(new TranslatableText("item.tutorial.fabric_item.tooltip", currentDay, currentMonth));

И всплывающая подсказка будет отображаться как “Моя подсказка в день 4, и месяц 7”. Чтобы передать строку, мы используем “%s” вместо “%d”. Если вы хотите, чтобы он буквально показывал “%”, используйте “%%”. Для получения дополнительной информации см. Java String.format (это работает точно так же).

Добавление новой линии

Заставить \n работать было слишком сложно для Mojang, поэтому для того, чтобы иметь название с несколькими строками, вы должны разделить ключ перевода на несколько ключей:

resources/assets/tutorial/lang/ru_ru.json
{
  "item.tutorial.fabric_item.tooltip_1": "Первая линия моей подсказки", 
  "item.tutorial.fabric_item.tooltip_2": "Вторая линия моей подсказки" 
}

Затем добавьте части TranslatableText по отдельности:

tooltip.add(new TranslatableText("item.tutorial.fabric_item.tooltip_1"));
tooltip.add(new TranslatableText("item.tutorial.fabric_item.tooltip_2"));

И всплывающая подсказка будет отображаться как:

Первая линия моей подсказки
Вторая линия моей подсказки

Формат перевода

Ключ перевода для объектов, которые вы зарегистрировали, находится в форме <тип объекта>.<пространство имён>.<путь> (имя и путь, определенные зарегистрированным Идентификатором).

Тип объекта Формат Пример
Block block.<прост. им.>.<путь> “block.tutorial.example_block”: “Блок для примера”
Item item.<прост. им.>.<путь> “item.tutorial.my_item”: “Мой предмет”
ItemGroup itemGroup.<прост. им.>.<путь> “itemGroup.tutorial.my_group”: “Моя вкладка”
Fluid fluid.<прост. им.>.<путь>
SoundEvent sound_event.<прост. им.>.<путь>
StatusEffect effect.<прост. им.>.<путь>
Enchantment enchantment.<прост. им.>.<путь>
EntityType entity.<прост. им.>.<путь>
Biome biome.<прост. им.>.<путь>
Stat stat.<прост. им.>.<путь>

Для типов, отсутствующих в этом списке, см. net.minecraft.util.registry.Registry.

ru/tutorial/lang.txt · Last modified: 2022/03/26 20:51 by furnygo