Локализация
С помощью локализации можно настроить сообщения и текст интерфейса плагинов под разные языки игроков. Чаще всего на серверах используют русский и английский.
Нужна ли мне локализация?
Локализация важна, если на сервер заходят игроки, говорящие на разных языках:
- Доступность - каждый игрок понимает сообщения и интерфейс плагинов.
- Вовлечённость - игрокам комфортнее, и они проводят на сервере больше времени.
- Конкурентное преимущество - из похожих серверов игроки выберут тот, где им удобнее.
Что такое языковые файлы?
Языковые файлы - это JSON-файлы, в которых плагин хранит свои сообщения на разных языках. Carbon работает с ними так же, как Oxide:
- У каждого плагина с поддержкой локализации есть свой набор языковых файлов.
- Для каждого языка создаётся отдельный файл.
- Игрок видит сообщения на языке, выбранном в его клиенте Rust.
Если у плагина нет файла для языка игрока, Carbon покажет сообщение из английского файла en.
Где находятся языковые файлы
Языковые файлы хранятся в папке carbon/lang. Внутри для каждого языка есть своя папка:
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.
{
"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 в выделенных строках:
{
"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.