Языковые файлы - что это и зачем?
Языковые файлы - это PHP-файлы с переводом интерфейса (надписей, кнопок, сообщений) для разных языков.
Они хранятся в папках /lang/ внутри модулей, компонентов и шаблонов.
Для чего нужны?
-
Локализация — чтобы сайт отображал текст на нужном языке (русском, английском и т. д.).
-
Гибкость — можно менять стандартные фразы Битрикса без правки ядра.
-
Поддержка мультиязычности — один компонент может работать с разными языками.
Замена стандартных фраз
Выделение языковых фраз в отдельные lang-файлы используется во всем фреймворке. Это требование не только к разработчикам решений на основе «1С-Битрикс: Управление Сайтом», но и к ядру продукта.
В некоторых случаях вам может потребоваться изменить эти фразы. Это решаемо и существует механизм, позволяющий обойтись без правки языковых файлов ядра. А модификация ядра продукта, напомним, категорически запрещена, хоть она и выглядит всегда более простым решением.
Суть технологии в переопределении стандартных языковых переменных из массива $MESS, где бы в файловой структуре эти переменные не были объявлены — в /local/ или в ядре продукта.
Вам достаточно создать файл дополнительного перевода в знакомой папке php_interface и точно задать “координаты” переменной. В отличие от обычного файла переводов указывается не только код фразы (например, MAIN_AGENT_LAST_EXEC) но и путь к языковому файлу ядра (например, bitrix/modules/main/lang/ru/admin/agent_list.php).
Подробнее о структуре файла и его размещении можете прочитать в заметке «Тайные технологии локализации». Разработчику требуется только выполнить следующие шаги:
- Увидеть фразу в интерфейсе и скопировать для поиска.
- Найти фразу в файлах продукта. Можно воспользоваться встроенным в систему поиском по файлам. Найтись может несколько вхождений, нужное определяется простым перебором или анализом содержимого файла.
- Определить путь к lang-файлу и код lang-фразы.
- Добавить свой перевод в php_interface.
В реальных проектах такая задача может возникнуть в нескольких случаях, например:
- Пользователям административного раздела непонятны какие-то из стандартных формулировок. Чаще всего это касается сообщения об ошибках при заполнении форм.
- Какие-то из стандартных сущностей платформы требуют переименования по корпоративным стандартам заказчика.
- При переопределении других функций из ядра продукта. Например, при замене обычной CAPTCHA (деформированный текст на картинке) на стороннюю (голосовую или любую интерактивную) системные компоненты продолжают в случае ошибки выводить текст “Неверно введено слово с картинки”.
Языковые файлы для /local/php_interface/
Если кастомизация проекта выполняется не с помощью своего модуля, то часто код размещается в рамках /local/php_interface/, файлы подключаются в init.php. Классический пример — обработчики событий.
Тогда файлы локализаций размещаются в /local/php_interface/lang/[код_языка]/...
В начале файла, где нужно использовать фразы, можно подгрузить языковой файл (handlers.php):
use \Bitrix\Main\Localization\Loc;
Loc::loadLanguageFile(__FILE__);
Практика
Покажем замену фразы в административном разделе. Любые другие системные фразы заменяются аналогично.
Замена стандартных фраз
5 мин
Полезные ссылки и материалы