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

Добавление пользовательского языка

XC_VM использует файловую систему перевода. Каждый язык представляет собой отдельный файл .ini в каталоге src/resources/langs/. Добавление нового языка не требует изменения кода — просто создайте файл, и он автоматически появится в панели администратора.

быстрый старт

  1. Скопируйте файл ссылки на английском языке в качестве шаблона:
cp src/resources/langs/en.ini src/resources/langs/xx.ini

Замените xx кодом языка ISO 639-1 (например, it для итальянского, pl для польского, ja для японского).

  1. Откройте xx.ini и переведите значения (справа от =).:
[Language]
a_to_z = "A to Z"          ; ← translate this
access_code = "Access Code" ; ← translate this
actions = "Actions"         ; ← translate this
  1. Перейдите к Настройки → Интерфейс → Язык интерфейса и выберите новый код языка.

Вот и все. Перезагрузка не требуется.

Формат файла

Каждый файл .ini имеет следующую структуру:

[Language]
key = "Translated text"
another_key = "Another translated text"

Rules:

  • Заголовок раздела [Language] равен требуемый в первой строке.
  • Ключами являются идентификаторы snake_caseне меняйте их.
  • Значения должны быть заключены в двойные кавычки.
  • Строки отсортированы в алфавитном порядке по ключу для обеспечения согласованности.
  • Кодировка файла должна быть UTF-8 (без спецификации).

как это работает

Шаг Что происходит
Панель загрузки Translator::init() проверяет src/resources/langs/ на наличие *.ini файлов
Список языков Translator::available() возвращает все найденные языковые коды
Выбор пользователя Язык сохраняется в файле cookie lang (для каждого браузера) и в столбце базы данных settings.language (по умолчанию).
Отсутствующий ключ If a translation key is used in code but missing from your .ini file, the system automatically appends it with the key name as the default value

Доступные языки

Код Файл
bg bg.ini — Болгарский
de de.ini — Немецкий
en en.ini — Английский (справочный)
es es.ini — Испанский
fr fr.ini — Французский
pt pt.ini — Португальский
ru ru.ini — Русский

Чаевые

  • Всегда используйте en.ini в качестве источника истины — содержит все ключи. В других файлах могут отсутствовать ключи, которые автоматически заполняются во время выполнения.
  • Автоматическое создание недостающих ключей: если в вашем файле отсутствует ключ, Translator автоматически добавит key = "key" к вашему файлу. Затем вы сможете найти и перевести эти непереведенные записи.
  • Поиск непереведенных ключей — поиск строк, в которых ключ равен значению:
grep -P '^(\w+)\s*=\s*"\1"$' src/resources/langs/xx.ini
  • Проверьте свой файл — убедитесь, что parse_ini_file() может это прочитать:
php -r "var_dump(parse_ini_file('src/resources/langs/xx.ini', false, INI_SCANNER_RAW));" | head -20

Дополнительные переводы

Внести свой вклад в перевод проекта:

  1. Разветвите репозиторий.
  2. Создайте свой языковой файл, как описано выше.
  3. Отправьте запрос на извлечение с новым файлом .ini.

Пожалуйста, убедитесь, что все ключи из en.ini присутствуют и переведены.

Связанные файлы

Файл Роль
src/Core/Localization/Translator.php Поиск перевода
src/resources/langs/ Языковые файлы