Когда сайт выходит на международный уровень, важно обеспечить поддержку нескольких языков. В 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С-Битрикс требует внимания к деталям: важно правильно хранить язык пользователя, подключать файлы и использовать соответствующие методы вывода. Для сложных проектов стоит рассмотреть многосайтовость или интеграцию с инфоблоками.
Рекомендация: Ознакомьтесь с официальной документацией Битрикс для более глубокого изучения темы.