Перейти к содержанию

Локализация#

Все файлы переводов должны располагаться по следующему пути: /assets/<mod_id>/lang чтобы они были обнаружены и загружены игрой.

Создайте следующие файлы:

src    
└── main
    └── resources
        └── assets
            └── mcmodding
                └── lang
                    └── en_US.lang
                    └── ru_RU.lang

Примечание

Наличие файла en_US.lang является обязательным - этот перевод является базовым. Игра использует его при отсутствии другого перевода или строки в переводе для выбранного языка.

Если переводить лень...

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

Содержание файла:

itemGroup.mcmodding=McModding

item.ring.name=Кольцо
item.paint_can.name=Банка краски
item.cherry.name=Черешня

item.ruby_axe.name=Рубиновый топор
item.ruby_hoe.name=Рубиновая мотыга
item.ruby_pickaxe.name=Рубиновая кирка
item.ruby_spade.name=Рубиновая лопата
item.ruby_sword.name=Рубиновый меч
item.ruby_multi_tool.name=Рубиновый мультиинструмент

entity.mcmodding.goose.name=Гусь

tile.ruby.name=Рубиновый блок

Формат файла представляет из пары ключ=значение, размещённые каждая на отдельной строке. Файл представляет собой обычный Java Properties file.

Важно

Строки из вашего файла загружаются в общую таблицу переводов, поэтому важно чтобы ключи строк были уникальны и не конфликтовали с другими модами и самой игрой. Хорошей практикой будет добавлять к каждому ключу префикс с нашим ModId (например: mcmodding.some.key=Наш перевод)

Вы можете добавлять свои значения в этот файл, чтобы обращаться к ним позже с помощью:

  • I18n#format данный метод доступен только на клиенте, поэтому рекомендуется использовать только для локализации GUI.
  • StatCollector#translateToLocal и StatCollector#translateToLocalFormatted будут работать везде. Второй вариант подходит, если нужно передать в строку аргументы для String#format.
  • Использовать ChatComponentTranslation принимающий в качестве строки ключ перевода. Этот вариант актуален при отправке сообщений в чат с сервера - клиент игрока сам переведёт сообщение на выбранный в настройках язык.

Совет

Если Вы работаете в Intellij Idea, рекомендуется установить плагин Minecraft Development. Он добавляет подсветку синтаксиста для *.lang файлов, а также будет сообщать о расхождениях переводов по сравнению с базовым.