Интернационализация модов в Forge: руководство

published on 30 April 2024

Интернационализация модов в Forge позволяет разработчикам создавать моды для Minecraft, которые могут быть легко переведены на различные языки. Это обеспечивает более доступный игровой опыт для игроков из разных стран и культур. В этом руководстве рассматриваются следующие ключевые моменты:

  • Создание файлов .lang для каждого языка
  • Использование методов Forge, таких как I18n.format() и I18n.translateToLocal() для интернационализации
  • Обработка символов экранирования в файлах .lang
Шаг Описание
Создание языковых файлов Создайте файлы .lang для каждого языка, который вы хотите поддерживать
Использование методов Forge Используйте методы Forge для интернационализации в блоках и предметах
Обработка символов экранирования Обрабатывайте символы экранирования в файлах .lang, используя \n для перехода на новую строку и \t для табуляции

Интернационализация модов в Forge - это важный шаг в создании более доступных игровых опытов для игроков из разных стран и культур. Это позволяет создавать моды, которые могут быть легко переведены и адаптированы для различных языков и регионов.

Что такое i18n и L10n?

Интернационализация (i18n) и локализация (L10n) - это два важных процесса, которые помогают создавать программное обеспечение, которое может работать с различными языками и регионами.

Определения

Термин Определение
Интернационализация (i18n) Процесс создания программного обеспечения, которое может работать с различными языками и регионами, не требуя изменений в коде.
Локализация (L10n) Процесс адаптации программного обеспечения для конкретного языка и региона, добавляя локализованные ресурсы, такие как переведенные тексты и изображения.

В контексте Minecraft модов, эти процессы позволяют создавать моды, которые могут быть адаптированы для различных языков и регионов, чтобы игроки могли наслаждаться игрой на своем родном языке.

В следующих разделах мы рассмотрим, как использовать эти процессы для локализации модов в Forge.

Подготовка к международной локализации модов в Forge

Forge

Перед началом международной локализации модов в Forge, вам нужно убедиться, что у вас есть все необходимые инструменты и ресурсы.

Необходимые инструменты и ресурсы

Вам потребуется:

  • Текстовый редактор, способный редактировать файлы .resx и .sbl. В этом руководстве мы будем использовать Visual Studio Community 2022 и текстовый редактор по вашему выбору.
  • Пустой файл .resx и пустой файл .sbl, которые можно скачать по ссылкам drive.google.com.
  • Код BCP 47 для языка, который вы хотите перевести ваш мод, или языка, который вы хотите определить как язык по умолчанию для вашего мода. Эти коды можно найти на сайте learn.microsoft.com.

Подготовка к локализации

Прежде чем начать локализацию модов, вам нужно иметь базовые знания о:

  • Моддинге Minecraft
  • Forge
  • Структуре файлов JSON
  • Стандартах кодирования текста

Если у вас нет опыта в этих областях, рекомендуется ознакомиться с ними перед продолжением.

В следующих разделах мы рассмотрим, как создать файлы языка, как именовать ключи локализации и как использовать форматирование текста и цвета.

Создание файлов языка

В этом разделе мы рассмотрим, как создать файлы языка для модов в Forge. Файлы языка играют важную роль в международной локализации модов, позволяя игрокам видеть имена блоков, предметов и других элементов в их родном языке.

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

Чтобы создать файл языка, вам нужно создать файл с расширением .lang в папке assets/yourmodname/lang/, где yourmodname - это имя вашего мода. Например, если ваш мод называется tutorialmod, то файл языка должен быть создан в папке assets/tutorialmod/lang/.

Формат файла языка

Формат файла языка прост: каждый элемент в файле состоит из двух частей - имени элемента и его перевода. Имена элементов обычно имеют формат item.tutorialmod.itemBasic.name или tile.tutorialmod.blockBasic.name, а переводы - это то, что будет отображаться в игре.

Имя элемента Перевод
item.tutorialmod.itemBasic.name Basic Item
tile.tutorialmod.blockBasic.name Basic Block

Каждый элемент в файле языка должен быть на новой строке, и имя элемента должно быть равно переводу, разделенному знаком равенства (=).

Использование файлов языка

Когда файл языка создан, Forge будет использовать его для отображения имен блоков, предметов и других элементов в игре. Если файл языка не найден, Forge будет использовать имена элементов по умолчанию.

В следующих разделах мы рассмотрим, как именовать ключи локализации и как использовать форматирование текста и цвета в файлах языка.

Именование Ключей Локализации

В предыдущем разделе мы рассмотрели создание файлов языка для модов в Forge. Теперь давайте перейдем к именованию ключей локализации, которые используются в этих файлах языка.

Стандартное Именование

В Minecraft модах имена ключей локализации обычно имеют формат item.modid.itemname.name или tile.modid.blockname.name, где modid - это идентификатор вашего мода, а itemname или blockname - это имя элемента, который вы хотите локализовать.

Правила Именования

При именовании ключей локализации необходимо учитывать следующие правила:

  • Имена ключей локализации не должны быть namespaced.
  • Рекомендуется использовать префикс modid в имени ключа локализации, чтобы избежать конфликтов с другими модами.
  • Имена ключей локализации должны быть уникальными для каждого элемента в вашем моде.

Примеры

Имя Ключа Локализации Описание
item.examplemod.example_item.name Имя элемента "Example Item" в моде "examplemod"
tile.examplemod.example_block.name Имя блока "Example Block" в моде "examplemod"

В следующем разделе мы рассмотрим, как использовать форматирование текста и цвета в файлах языка.

Пользовательские Ключи Локализации

В предыдущих разделах мы рассмотрели создание файлов языка для модов в Forge и именование ключей локализации. Теперь давайте перейдем к созданию и реализации пользовательских локализованных записей с помощью метода I18n.format().

Создание Пользовательских Локализованных Записей

Чтобы создать пользовательскую локализованную запись, вам нужно использовать метод I18n.format() и передать в него строку формата и аргументы. Например, если вы хотите создать локализованную запись для имени элемента "Example Item" в моде "examplemod", вы можете использовать следующий код:

I18n.format("item.examplemod.example_item.name", "Example Item")

В этом примере item.examplemod.example_item.name - это ключ локализации, а "Example Item" - это значение, которое будет отображаться в игре.

Использование Пользовательских Локализованных Записей

Чтобы использовать пользовательскую локализованную запись в файле языка, вам нужно добавить ее в файл языка в формате JSON. Например, если вы хотите добавить локализованную запись для имени элемента "Example Item" в моде "examplemod", вы можете добавить следующую строку в файл языка:

{
  "item.examplemod.example_item.name": "Example Item"
}

В этом примере item.examplemod.example_item.name - это ключ локализации, а "Example Item" - это значение, которое будет отображаться в игре.

Правила Именования Пользовательских Локализованных Записей

При создании пользовательских локализованных записей необходимо учитывать следующие правила:

Правило Описание
Имена ключей локализации не должны быть namespaced. Имена ключей локализации не должны содержать namespace.
Рекомендуется использовать префикс modid в имени ключа локализации. Используйте префикс modid в имени ключа локализации, чтобы избежать конфликтов с другими модами.
Имена ключей локализации должны быть уникальными для каждого элемента в вашем моде. Имена ключей локализации должны быть уникальными для каждого элемента в вашем моде.

Примеры Пользовательских Локализованных Записей

Ключ Локализации Описание
item.examplemod.example_item.name Имя элемента "Example Item" в моде "examplemod"
tile.examplemod.example_block.name Имя блока "Example Block" в моде "examplemod"

В следующем разделе мы рассмотрим, как использовать форматирование текста и цвета в файлах языка.

sbb-itb-b1cf51d

Форматирование Текста и Цвета

В предыдущих разделах мы рассмотрели создание файлов языка для модов в Forge и именование ключей локализации. Теперь давайте перейдем к форматированию текста и цветов в файлах языка.

Minecraft Color Codes

Minecraft

Minecraft Color Codes позволяют изменять цвет текста в игре. Эти коды могут быть использованы для изменения цвета текста, добавления цвета к тексту на знаках или в книгах и перьях, а также для форматирования сообщений дня на сервере.

Код Описание
§r Сброс текста к стандартному цвету и стилю
§6 Золотой цвет
§l Жирный текст
§o Курсив

Примеры использования Minecraft Color Codes

Вы можете использовать Minecraft Color Codes в файлах языка, чтобы изменять формат текста. Например:

{
  "item.examplemod.example_item.name": "§6Example Item"
}

В этом примере §6 - это код цвета, который изменяет текст на золотой цвет.

Minecraft Formatting Codes

Minecraft Formatting Codes позволяют форматировать текст в игре. Эти коды могут быть использованы для создания жирного текста, курсива и других форматов.

Код Описание
§l Жирный текст
§o Курсив

Примеры использования Minecraft Formatting Codes

Вы можете использовать Minecraft Formatting Codes в файлах языка, чтобы форматировать текст. Например:

{
  "item.examplemod.example_item.name": "§lExample Item"
}

В этом примере §l - это код форматирования, который создает жирный текст.

В следующем разделе мы рассмотрим, как обнаруживать язык игрока и адаптировать текст к его языковым предпочтениям.

Определение языка игрока

Определение языка игрока является важной частью интернационализации модов Minecraft. В этом разделе мы рассмотрим техники определения текущих языковых настроек клиента игрока и адаптации контента мода соответственно.

Использование EntityPlayerMP

Один из способов определения языка игрока - использовать класс EntityPlayerMP. Этот класс имеет приватное поле translator, которое устанавливается во время присоединения игрока с пакетом C15PacketClientSettings. Поле translator содержит код языка, например, "en_US". Доступ к этому полю позволяет определить язык игрока и адаптировать контент мода соответственно.

Проверка языка клиента с серверной стороны

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

Использование ресурсных пакетов

Ресурсные пакеты также могут быть использованы для определения языка игрока. Создав ресурсный пакет с языковыми файлами (например, en_US.lang) и включив его в мод, вы можете получить доступ к языковым настройкам игрока. Этот метод полезен, когда вы хотите обеспечить языковую поддержку для вашего мода.

В следующем разделе мы рассмотримadvanced темы локализации, включая форматирование и цвета.

Advanced Localization Topics

В этом разделе мы рассмотрим продвинутые темы локализации, включая обработку символов экранирования в файлах .lang и использование специфических методов Forge для интернационализации в блоках и предметах.

Обработка символов экранирования в файлах .lang

Когда вы создаете файлы .lang для локализации вашего мода, вам может потребоваться обработка символов экранирования. Символы экранирования используются для указания специальных символов, таких как \n для перехода на новую строку или \t для табуляции.

Символ экранирования Описание
\\n Переход на новую строку
\\t Табуляция

Использование методов Forge для интернационализации

Forge предоставляет несколько методов для интернационализации в блоках и предметах. Один из них - это использование класса net.minecraft.client.resources.I18n.

Метод Описание
I18n.format() Получает локализованную строку для блока или предмета
I18n.translateToLocal() Получает локализованную строку для кастомного ключа перевода

Использование кастомных ключей перевода

В некоторых случаях вам может потребоваться использовать кастомные ключи перевода для блока или предмета.

Кастомный ключ перевода Описание
examplemod.custom_block_name Кастомный ключ перевода для блока

В следующем разделе мы рассмотрим ключевые моменты и выводы по интернационализации модов в Forge.

Ключевые моменты и выводы

В этом руководстве мы рассмотрели важные аспекты интернационализации модов в Forge, включая создание языковых файлов, использование методов Forge для интернационализации и обработку символов экранирования.

Основные шаги интернационализации

Шаг Описание
Создание языковых файлов Создайте файлы .lang для каждого языка, который вы хотите поддерживать
Использование методов Forge Используйте методы Forge, такие как I18n.format() и I18n.translateToLocal(), для интернационализации в блоках и предметах
Обработка символов экранирования Обрабатывайте символы экранирования в файлах .lang, используя символы \n для перехода на новую строку и \t для табуляции

Выводы

Интернационализация модов в Forge - это важный шаг в создании более доступных игровых опытов для игроков из разных стран и культур. Используя методы и техники, описанные в этом руководстве, вы сможете создавать моды, которые могут быть легко переведены и адаптированы для различных языков и регионов.

В заключение, интернационализация модов в Forge - это не только вопрос удобства игроков, но и важный аспект разработки качественных и доступных модов для обширного сообщества Minecraft.

Часто задаваемые вопросы

Что такое ключ перевода в Minecraft?

Ключ перевода - это уникальная строка, которая идентифицирует текст в любом языке. Например, block.minecraft.dirt - это ключ перевода, ссылающийся на имя блока Dirt. Он используется для отображения имени блока в соответствующем языке.

Как работает интернационализация в Minecraft?

Интернационализация в Minecraft позволяет создавать моды, которые могут быть переведены на различные языки. Это достигается с помощью файлов .lang, которые содержат переведенные тексты для каждого языка.

Почему интернационализация важна в Minecraft?

Интернационализация важна в Minecraft, потому что она позволяет игрокам из разных стран и культур наслаждаться игрой на их родном языке. Это также помогает создателям модов достичь более широкой аудитории и обеспечить более доступный игровой опыт.

Related posts

Read more

Built on Unicorn Platform