Настройка многоязычных шаблонов писем 1С-Битрикс
Многоязычные сайты на 1С-Битрикс отправляют системные письма — подтверждение заказа, смена пароля, регистрация — но часто делают это только на одном языке. Пользователь выбрал английскую версию сайта, оформил заказ, получил письмо на русском. Задача настройки многоязычных шаблонов — устранить именно эту ситуацию.
Как 1С-Битрикс выбирает шаблон письма
Системные почтовые события (тип \Bitrix\Main\Mail\Event) хранятся в таблице b_event_type. Каждое событие имеет LID — привязку к языку. Для многоязычного сайта нужно создать отдельный шаблон события для каждого языка.
Пример: событие SALE_NEW_ORDER (новый заказ). По умолчанию один шаблон с LID = ru. Для английской версии создаём второй шаблон того же события с LID = en. При отправке письма Битрикс выбирает шаблон по LID сайта, на котором был оформлен заказ.
Критически важно: LID в шаблоне — это идентификатор сайта (b_lang.LID), а не языка системы. На многоязычных сайтах с одним SITE_ID и несколькими языками через Bitrix\Main\Application::getInstance()->addApplication() или языковой SITE_ID — нужно проверять, как именно организована многоязычность в конкретном проекте.
Создание шаблонов для нескольких языков
Переходим в Настройки → Почтовые события → Типы почтовых событий. Для каждого системного события создаём шаблоны:
- Открываем событие (например,
SALE_NEW_ORDER) - Добавляем новый шаблон через «Добавить шаблон»
- В поле «Сайт» выбираем языковую версию (или
SITE_IDесли разные домены) - Заполняем тему и тело письма на нужном языке
Для технически корректной реализации не дублируем HTML-вёрстку в каждом шаблоне. Вместо этого:
- Общие элементы (шапка, подвал, кнопка) выносим в PHP-шаблон, подключаемый через
#INCLUDE_FILE# - Тексты параметризуем через переменные события
Переменные и локализация значений
Стандартные переменные события (#ORDER_ID#, #PRICE#) подставляются одинаково для всех языков. Но некоторые значения требуют локализации. Например, статус заказа «Обрабатывается» на русском и «Processing» на английском.
Для локализации динамических значений обработчик события (OnBeforeEventAdd) получает языковый контекст и подставляет переведённые строки:
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'main', 'OnBeforeEventAdd',
function (\Bitrix\Main\Event $event) {
$fields = $event->getParameter('FIELDS');
$lang = $fields['LID'] ?? 'ru';
// Переводим статус заказа
$fields['ORDER_STATUS'] = getLocalizedStatus($fields['ORDER_STATUS_ID'], $lang);
$event->setParameter('FIELDS', $fields);
}
);
Форматирование дат и чисел
В многоязычных письмах дата «13.03.2026» для русскоязычного пользователя корректна, но для немецкоязычного лучше «13. März 2026», а для английского — «March 13, 2026». В шаблоне используем переменную с уже отформатированным значением, формируемым в обработчике с учётом $lang.
Числовое форматирование: сумма заказа «1 499,90 ₽» vs «€ 24.99» — разный разделитель тысяч, разные символы валюты, разное положение знака. Используем \Bitrix\Currency\CurrencyManager::getCurrencyFormat() с учётом языка.
Типичные проблемы
Кодировка. Шаблоны с кириллицей должны сохраняться в UTF-8. Если через старый интерфейс администрирования шаблон был сохранён в CP1251 — письма придут с кракозябрами в части текста.
Заголовок Content-Type. Битрикс по умолчанию отправляет text/html; charset=UTF-8. Для мультиязычных шаблонов это корректно. Но если отправка идёт через внешний SMTP (SendGrid, Mailgun), проверяем, что charset не переопределяется настройками SMTP-модуля.
Ориентиры по срокам
| Задача | Срок |
|---|---|
| Локализация системных писем (5–10 событий, 2 языка) | 2–5 дней |
| Разработка унифицированной системы шаблонов для 4+ языков | 1–2 недели |
Стоимость рассчитывается индивидуально после аудита существующих шаблонов и языковой структуры сайта.







