Назад

Настройка многоязычности в компонентах и шаблонах 1С-Битрикс

Главная
Блог
Настройка многоязычности в компонентах и шаблонах 1С-Битрикс

Когда сайт выходит на международный уровень, важно обеспечить поддержку нескольких языков. В 1С-Битрикс мультиязычность можно реализовать разными способами: через языковые файлы, инфоблоки или даже многосайтовость. В этой статье разберем, как правильно настроить переводы в компонентах и шаблонах, используя файлы локализации.

1. Хранение выбранного языка

Перед настройкой переводов нужно определить, где и как хранить язык пользователя. Варианты:

  • Cookie (просто и быстро)

  • Local Storage (удобно для SPA)

  • Свойства пользователя (если требуется авторизация)

Рассмотрим пример с сохранением языка в куках:

<form id="form-lang" name="form-lang" action="" method="POST">
    <select name="lang" id="lang">
        <option<?if ($_COOKIE['LANG'] != 'ru'){ echo ' selected';}?> value="en">en</option>
        <option<?if ($_COOKIE['LANG'] == 'ru'){ echo ' selected';}?> value="ru">ru</option>
    </select>
</form>

<?if ($_POST['lang'] != false) {?>
    <?setcookie("LANG", $_POST['lang'], time()+86400, "/");?>
    <?LocalRedirect($_SERVER['HTTP_REFERER']);?>
<?}?>

После выбора языка он сохраняется в куки LANG, а затем происходит редирект, чтобы избежать дублирования данных при обновлении страницы.

2. Определение языка в шаблоне

В header.php шаблона можно задать константу для текущего языка:

if ($_COOKIE['LANG'] === 'ru') {
    define("MY_LANG", $_COOKIE['LANG']);
} else {
    define("MY_LANG", 'en');
}

3. Подключение языковых файлов

В 1С-Битрикс есть несколько способов загрузки переводов:

Для компонентов:

<?IncludeTemplateLangFile(__FILE__);?>
<?__IncludeLang($_SERVER["DOCUMENT_ROOT"].'/contacts/lang/'.MY_LANG.'/index.php');?>
<?__IncludeLang($_SERVER["DOCUMENT_ROOT"].$templateFolder.'/lang/'.MY_LANG.'/template.php');?>

Для шаблонов:

<?IncludeTemplateLangFile($_SERVER["DOCUMENT_ROOT"]."/bitrix/templates/".SITE_TEMPLATE_ID."/header.php", MY_LANG);?>

4. Структура языковых файлов

Файлы переводов хранятся в папках вида:

lang/  
├── ru/  
│   └── component.php  
└── en/  
    └── component.php  

Содержимое файла (component.php):

<?
$MESS["TITLE"] = "Контакты";
?>

Для вывода перевода используется метод GetMessage():

<?=GetMessage("TITLE")?>

5. Альтернативные подходы

  • Многосайтовость – если нужны полностью независимые версии сайта на разных языках.

  • Инфоблоки с мультиязычностью – удобно для контента, который часто меняется.

Заключение

Настройка переводов в 1С-Битрикс требует внимания к деталям: важно правильно хранить язык пользователя, подключать файлы и использовать соответствующие методы вывода. Для сложных проектов стоит рассмотреть многосайтовость или интеграцию с инфоблоками.

Рекомендация: Ознакомьтесь с официальной документацией Битрикс для более глубокого изучения темы.

Нужен надежный исполнитель?
Разрабатываем сайты, выполняем миграцию на Битрикс, дорабатываем функционал, сопровождаем проекты, а также занимаемся поисковым продвижением и комплексным маркетингом
Получить консультацию
Читайте по теме
Все статьи
Нужен надежный исполнитель?
Разрабатываем сайты, выполняем миграцию на Битрикс, дорабатываем функционал, сопровождаем проекты, а также занимаемся поисковым продвижением и комплексным маркетингом
Получить консультацию
Все статьи