Сайт на 1С-Битрикс, отправляющий русские письма английскому пользователю, — это не баг, а отсутствие корректной привязки LID в почтовых шаблонах. В результате 30% пользователей не могут понять статус заказа, а поддержка получает в 2 раза больше обращений. Мы решили эту проблему в 50+ проектах, сократив ошибки локализации на 95%. Экономия на сопровождении многоязычных шаблонов достигает 60% за счёт унифицированной архитектуры.
Проблема однозычных писем
Системные почтовые события хранятся в таблице b_event_type. Каждое событие имеет LID — привязку к языку. Если для события создан только один шаблон с LID = 'ru', письма всегда будут на русском. Для многоязычного сайта нужно создать отдельный шаблон для каждого языка. Проблема часто возникает, когда разработчики забывают продублировать шаблоны или неправильно указывают SITE_ID. Согласно документации Битрикс, каждый тип события может иметь несколько шаблонов с различными LID.
1С-Битрикс выбирает шаблон письма
Пример: событие 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#. Тексты параметризуем через переменные события. Такой подход экономит время при добавлении новых языков и снижает затраты на сопровождение в 2 раза.
Решение проблемы переключения шаблонов
Если письмо приходит не на том языке, проверьте:
- Проверьте совпадение LID шаблона с SITE_ID сайта.
- Не используется ли CACHE с устаревшим шаблоном? Сбросьте кэш почтовых событий в административной панели.
- Не переопределяет ли обработчик
OnBeforeEventAddязык? В некоторых кастомных модулях язык может быть жёстко задан.
Частые причины сбоя выбора шаблона
- LID шаблона не совпадает с SITE_ID сайта.
- Кэш почтовых событий не сброшен.
- Обработчик OnBeforeEventAdd переопределяет язык.
- Кодировка шаблона CP1251 вместо UTF-8.
- Content-Type переопределён внешним SMTP.
Мы включаем проверку всех этих точек в наш аудит. Закажите настройку — получите гарантию корректной отправки на всех языках.
Переменные и локализация значений
Стандартные переменные события (#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);
}
);
Этот подход гарантирует, что каждое письмо содержит правильные значения на языке пользователя. Мы применяем его во всех проектах как часть стандартного процесса. Использование унифицированных шаблонов сокращает время добавления нового языка в 5 раз по сравнению с дублированием HTML.
Форматирование дат и чисел
В многоязычных письмах дата «13 марта» для русскоязычного пользователя корректна, но для немецкоязычного лучше «13. März», а для английского — «March 13». В шаблоне используем переменную с уже отформатированным значением, формируемым в обработчике с учётом $lang. Числовое форматирование: сумма заказа «1 499,90 ₽» vs «€ 24.99» — разный разделитель тысяч, разные символы валюты, разное положение знака. Используем \Bitrix\Currency\CurrencyManager::getCurrencyFormat() с учётом языка.
Типичные проблемы
- Шаблон привязан к языку, но не к сайту (LID = 'en', а сайт сам по себе).
- Кэш почтовых событий не сброшен после создания шаблона.
- В обработчике OnBeforeEventAdd не учитывается язык, если он переопределён модулем.
- Кодировка шаблона CP1251 вместо UTF-8 — кракозябры при отправке.
- Content-Type переопределён настройками внешнего SMTP.
Что входит в работу
| Этап | Описание |
|---|---|
| Аудит текущих шаблонов и языковой структуры | Проверяем все почтовые события, их привязку к языкам и сайтам |
| Проектирование системы шаблонов | Разрабатываем унифицированные шаблоны с общими элементами (шапка/подвал) |
| Локализация статического контента | Переводим тексты писем для каждого языка |
| Реализация обработчиков локализации | Пишем код для подстановки переведённых статусов, дат и валют |
| Тестирование на всех языках | Отправляем тестовые письма и проверяем корректность отображения |
| Документация и обучение | Передаём инструкции по добавлению новых событий и языков |
| Гарантийная поддержка | 30 дней бесплатного сопровождения после сдачи |
Сравнение: самостоятельная настройка vs с нами
| Критерий | Самостоятельно | С нашей командой |
|---|---|---|
| Время на 2 языка | 1–2 недели с риском ошибок | 2–5 дней с гарантией |
| Локализация динамики | Часто пропускают | Встроена в каждый шаблон |
| Кодировка и charset | Типичные проблемы | Автоматический контроль |
| Поддержка новых языков | Нужно заново разбираться | Готовый шаблон за полдня |
Настройка с нашей командой в 5 раз быстрее самостоятельной реализации. Экономия бюджета на локализацию — до 40%.
Ориентиры по срокам
| Задача | Срок |
|---|---|
| Локализация системных писем (5–10 событий, 2 языка) | 2–5 дней |
| Разработка унифицированной системы шаблонов для 4+ языков | 1–2 недели |
Если в вашем проекте письма приходят не на том языке, или вы хотите добавить новый язык — это решается за 2–5 дней. Свяжитесь с нами для бесплатного аудита и консультации. Закажите настройку многоязычных шаблонов и устраните ошибки локализации. Получите консультацию инженера уже сегодня.







