Перейти к содержимому

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

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

Нужна ли мне локализация? ​

Локализация важна, если на сервер заходят игроки, говорящие на разных языках:

  1. Доступность - каждый игрок понимает сообщения и интерфейс плагинов.
  2. Вовлечённость - игрокам комфортнее, и они проводят на сервере больше времени.
  3. Конкурентное преимущество - из похожих серверов игроки выберут тот, где им удобнее.

Что такое языковые файлы? ​

Языковые файлы - это JSON-файлы, в которых плагин хранит свои сообщения на разных языках. Carbon работает с ними так же, как Oxide:

  1. У каждого плагина с поддержкой локализации есть свой набор языковых файлов.
  2. Для каждого языка создаётся отдельный файл.
  3. Игрок видит сообщения на языке, выбранном в его клиенте Rust.

Если у плагина нет файла для языка игрока, Carbon покажет сообщение из английского файла en.

Где находятся языковые файлы ​

Языковые файлы хранятся в папке carbon/lang. Внутри для каждого языка есть своя папка:

txt
carbon
 └── lang
     ├── en
     │   ├── Vanish.json
     │   └── AnotherPlugin.json
     ├── ru
     │   ├── Vanish.json
     │   └── AnotherPlugin.json
     └── fr
         ├── Vanish.json
         └── AnotherPlugin.json
ФайлЯзык
carbon/lang/en/Vanish.jsonанглийский
carbon/lang/ru/Vanish.jsonрусский
carbon/lang/fr/Vanish.jsonфранцузский

Как редактировать языковой файл ​

Откройте нужный файл в Sublime Text. Для примера возьмём английскую локализацию плагина Vanish: carbon/lang/en/Vanish.json.

json
{
  "VanishCommand": "vanish",
  "Vanished": "Vanish: <color=orange> Enabled </color>",
  "Reappear": "Vanish: <color=orange> Disabled </color>",
  "NoPerms": "You do not have permission to do this",
  "PermanentVanish": "You are in a permanent vanish mode",
  "NoPlayers": "No players found using id: {0}"
}

Структура знакома по статье синтаксис JSON: это пары «ключ: значение». В файлах локализации меняйте только значения. Ключи использует код плагина, и если их изменить, плагин не найдёт свои сообщения. Все значения в локализации - строки.

Для примера поменяем цвет с orange на red в выделенных строках:

json
{
  "VanishCommand": "vanish",
  "Vanished": "Vanish: <color=red> Enabled </color>",
  "Reappear": "Vanish: <color=red> Disabled </color>",
  "NoPerms": "You do not have permission to do this",
  "PermanentVanish": "You are in a permanent vanish mode",
  "NoPlayers": "No players found using id: {0}"
}

Сохраните файл и перезагрузите плагин командой c.reload Vanish, чтобы изменения вступили в силу.

WARNING

Мы меняли английский файл локализации, поэтому увидеть изменения можно, только если клиент Rust на английском языке.

Ключи-замены (плейсхолдеры) ​

В строке NoPlayers есть необычное значение {0}. Это ключ-замена: вместо него плагин подставляет данные, в этом случае ID игрока.

Нумерация начинается с нуля: {0}, {1}, {2} и так далее. Например, в строке Hello {0}, welcome to the server! плагин заменит {0} на ник, и игрок увидит Hello Alice, welcome to the server!.

Ключи-замены можно переставлять местами, но нельзя добавлять номера, которых нет в исходной строке:

  • Hello {1}, player {0} - правильно, если в исходной строке были {0} и {1};
  • Hello {2}, player {0} - ошибка, если плагин передаёт только {0} и {1}: такое сообщение плагин не сможет вывести.

Дополнительная разметка ​

В строках можно использовать теги оформления:

РазметкаРезультат
<color=red>Текст</color>текст красного цвета
<color=#FF0000>Текст</color>цвет в формате HEX
<b>Текст</b>жирный текст
<size=30>Текст</size>текст размером 30

Теги можно комбинировать, например <size=30><color=red><b>Текст</b></color></size>.

Язык сервера ​

В файле carbon/config.json есть параметр Language, по умолчанию en. Это язык сервера для системы локализации плагинов. Посмотреть текущий язык можно командой c.lang.

Опубликовано под лицензией MIT.
Данный проект не является официальной документацией Facepunch/Rust.
Это общественная база знаний, созданная для удобства администраторов и игроков.