Junior Шаблоны сайта Рекомендуется

Языковые файлы и локализация

Интерфейсные тексты выносятся в языковые файлы каталога lang/<код_языка>/ с массивом $MESS и загружаются методом Loc::getMessage(). Ядро сопоставляет языковой файл по относительному пути вызывающего PHP-скрипта, а сами файлы сохраняются в UTF-8 без BOM во избежание сбоев отправки HTTP-заголовков.

1 разработчик прошёл

Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.

Что нужно понимать

  • 1
    Папка lang и функция Loc::getMessage
  • 2
    Языковые файлы компонентов и модулей
  • 3
    Несколько языков на сайте
  • 4
    Кодировка и BOM

Материалы

Официальная документация

Проверь себя

Loc::getMessage() вернул null, хотя фраза в языковом файле есть. Что проверить первым?

Путь. Ядро ищет языковой файл по пути файла, из которого вызван getMessage: lang/ru/ плюс то же относительное имя. Фраза для result_modifier.php должна лежать в lang/ru/result_modifier.php, а не в lang/ru/template.php; для файлов вне компонентов нужен Loc::loadMessages(__FILE__).

После добавления языкового файла редирект на странице стал падать с ошибкой headers already sent. Почему?

Файл сохранён в UTF-8 с BOM: три байта перед открывающим тегом PHP уходят в вывод при include, и заголовки уже отправлены. Пересохраните файл без BOM.

Заказчик хочет английскую версию через год. Что в коде на одном языке нужно сделать сейчас, чтобы это не стало переписыванием?

Все строки компонентов и модулей держать в lang/ru через Loc::getMessage(). Тогда английская версия — это папка lang/en и язык сайта в настройках, а не поиск кириллицы по коду.

Фраза находится, но страница стала заметно медленнее после переноса кода между файлами. При чём тут языковые файлы?

Ленивая загрузка: если кода нет в языковом файле вызывающего файла, ядро перебирает остальные зарегистрированные файлы по очереди, пока не найдёт. BX_MESS_LOG покажет такие фразы и путь, куда их перенести.

Не сходится?

Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.

Знаете материал лучше?

Предложите ссылку: после проверки она появится в этом разделе.

Войти, чтобы предложить
Поделиться в Telegram
Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.
AI Домовой

AI Домовой История

на связи

пишет…
Нет истории чатов
AI Домовой

Нужна авторизация

Войдите, чтобы задавать вопросы AI Домовому.

Войти