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

Урок 3 из 9

8 мин

Нормально

Языковые файлы - что это и зачем?

Языковые файлы - это PHP-файлы с переводом интерфейса (надписей, кнопок, сообщений) для разных языков.

Они хранятся в папках /lang/ внутри модулей, компонентов и шаблонов.

Для чего нужны?

  • Локализация — чтобы сайт отображал текст на нужном языке (русском, английском и т. д.).

  • Гибкость — можно менять стандартные фразы Битрикса без правки ядра.

  • Поддержка мультиязычности — один компонент может работать с разными языками.

Замена стандартных фраз

Выделение языковых фраз в отдельные lang-файлы используется во всем фреймворке. Это требование не только к разработчикам решений на основе «1С-Битрикс: Управление Сайтом», но и к ядру продукта.

В некоторых случаях вам может потребоваться изменить эти фразы. Это решаемо и существует механизм, позволяющий обойтись без правки языковых файлов ядра. А модификация ядра продукта, напомним, категорически запрещена, хоть она и выглядит всегда более простым решением.

Суть технологии в переопределении стандартных языковых переменных из массива $MESS, где бы в файловой структуре эти переменные не были объявлены — в /local/ или в ядре продукта.

Вам достаточно создать файл дополнительного перевода в знакомой папке php_interface и точно задать “координаты” переменной. В отличие от обычного файла переводов указывается не только код фразы (например, MAIN_AGENT_LAST_EXEC) но и путь к языковому файлу ядра (например, bitrix/modules/main/lang/ru/admin/agent_list.php).

Подробнее о структуре файла и его размещении можете прочитать в заметке «Тайные технологии локализации». Разработчику требуется только выполнить следующие шаги:

  1. Увидеть фразу в интерфейсе и скопировать для поиска.
  2. Найти фразу в файлах продукта. Можно воспользоваться встроенным в систему поиском по файлам. Найтись может несколько вхождений, нужное определяется простым перебором или анализом содержимого файла.
  3. Определить путь к lang-файлу и код lang-фразы.
  4. Добавить свой перевод в php_interface.

В реальных проектах такая задача может возникнуть в нескольких случаях, например:

  1. Пользователям административного раздела непонятны какие-то из стандартных формулировок. Чаще всего это касается сообщения об ошибках при заполнении форм.
  2. Какие-то из стандартных сущностей платформы требуют переименования по корпоративным стандартам заказчика.
  3. При переопределении других функций из ядра продукта. Например, при замене обычной CAPTCHA (деформированный текст на картинке) на стороннюю (голосовую или любую интерактивную) системные компоненты продолжают в случае ошибки выводить текст “Неверно введено слово с картинки”.

Языковые файлы для /local/php_interface/

Если кастомизация проекта выполняется не с помощью своего модуля, то часто код размещается в рамках /local/php_interface/, файлы подключаются в init.php. Классический пример — обработчики событий.

Тогда файлы локализаций размещаются в /local/php_interface/lang/[код_языка]/...
картинка

В начале файла, где нужно использовать фразы, можно подгрузить языковой файл (handlers.php):

use \Bitrix\Main\Localization\Loc;
Loc::loadLanguageFile(__FILE__);

Практика

Покажем замену фразы в административном разделе. Любые другие системные фразы заменяются аналогично.

Замена стандартных фраз

5 мин

Полезные ссылки и материалы