Языковые файлы позволяют добавлять свои строки текста на системных языках и заменять существующие. Запрещается использовать текст в хаках напрямую без языковых файлов.
Создание языковых файлов
Файлы языка создаются и редактируются на странице "Языковые файлы" в настройках хака. Их названия соответствуют кодам языков - 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' );