Языковые файлы

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

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

Файлы языка создаются и редактируются на странице "Языковые файлы" в настройках хака. Их названия соответствуют кодам языков - ru.php для русского и en.php для английского.

Языковой файл должен возвращать ассоциативный массив строк. Ключом массива является идентификатор строки, значением - её состав на выбранном языке. Рекомендуется начинать ключи с названия хака.

Пример языкового файла:

<?php
return [
  'proxy_config_h' => 'Конфигурация прокси',
  'proxy_config_t' => 'В этом разделе вы можете настроить конфигурацию.',
];

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

Для обращения к строке по её идентификатору, используется массив lang объекта $core. Этот массив собирается объединением всех языковых файлов.

$core->lang['proxy_config_h']

Кеш языковых файлов

При автоматическом обновлении и активации хаков, кеш языка очищается автоматически. Если вы занимаетесь разработкой хака самостоятельно, вам нужно вручную очищать кеш при изменении файла языка.

Перейдите в раздел "Управление - Настройки", пойдите по кнопке "Диагностика". В разделе "Кеш" найдите "Компилированные языковые файлы" и нажмите "Очистить".

Добавление нового языка

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

За составление списка языков отвечает обработчик languages, который принимает на вход массив языков:

  • Ключ массива: символьный идентификатор языка, например, fr для французского или de для немецкого. Это название должны иметь языковые файлы в вашем хаке.
  • name - название языка, которое будет видеть пользователь. Рекомендуется использовать самоназвание на языке оригинала.
  • base - языковой файл, который выступает в качестве основы (ru или en).
  • guess - строка или массив строк, по наличию которых в Accept-Language язык будет определяться автоматически.

Пример обработчика для добавления языка:

function hack_pl_languages( $core, $lang ) {
  $lang['pl'] = [ 'name' => 'Polski', 'base' => 'en', 'guess' => 'pl' ];
  return $lang;
}

Не забудьте прописать обработчик в вашей функции инициализации хака:

$core->handle( 'languages', 'hack_pl_languages' );