Перейти к содержанию

Механизм реализации

Тему урока можно изучить в новом формате — в документации по Bitrix Framework. В ней улучшена структура, описание, примеры.

Языковое сообщение - группа фраз на разных языках, имеющая один смысл.

  • В папке шаблона сайта создается папка с именем /lang/:

/bitrix/templates/< идентификатор шаблона >/lang/
- В папке /lang/ создаются папки с идентификаторами используемых языков: /en/, /de/, /ru/ и т.д. Например:

/bitrix/templates/<идентификатор шаблона>/lang/ru/
- В созданных папках размещаются соответствующие файлы языковых сообщений. Они характеризуются следующими параметрами:

  • Имя файла языковых сообщений соответствует имени файла, в котором выполняется его вызов. Например, если предполагается, что вызов файла с языковыми сообщениями будет выполняться в прологе шаблона сайта (файл header.php), то файл языковых сообщений должен быть сохранен с именем header.php;
  • Список сообщений в файле хранится в следующем виде:

    <?
    $MESS ['COMPANY_NAME'] = "Company Name";
    $MESS ['MAIN_PAGE'] = "Home page";
    $MESS ['PRINT'] = "Print version";
    $MESS ['AUTH_LOGIN'] = "Authorization";
    $MESS ['RATES_HEADER'] = "Currency rates";
    $MESS ['SEARCH'] = "Site search";
    $MESS ['SUBSCR'] = "Subscription";
    ?>
    

    где выражение в скобках это код фразы (например, 'COMPANY_NAME')

    Примечание: Система собирает все языковые файлы и формирует единый массив $MESS при формировании страницы. И если языковые фразы в разных местах имеют одинаковый код, то во всех местах будет использоваться код из последнего подключенного языкового файла. Это приводит к выводу неверной фразы. Рекомендуется создавать максимально уникальные ключи. - Затем в начало файла, для которого предусмотрено использование языковых сообщений (например, header.php), добавляется функция:

<?
Loc::loadMessages(__FILE__).
?>

Функция выполняет подключение файла языковых сообщений для текущего языка. - Далее все текстовые сообщения заменяются на функции вызова соответствующих языковых сообщений:

<?echo Loc::getMessage("SEARCH");?>

В качестве параметра функции GetMessage() используется код подключаемого сообщения. Функция проверяет наличие в подключенном языковом файле сообщения с соответствующим кодом и отображает его пользователю.