Налаштування багатомовних шаблонів листів 1С-Бітрікс
Багатомовні сайти на 1С-Бітрікс надсилають системні листи — підтвердження замовлення, зміна пароля, реєстрація — але часто роблять це лише однією мовою. Користувач вибрав англійську версію сайту, оформив замовлення, отримав лист російською. Завдання налаштування багатомовних шаблонів — усунути саме цю ситуацію.
Як 1С-Бітрікс вибирає шаблон листа
Системні поштові події (тип \Bitrix\Main\Mail\Event) зберігаються в таблиці b_event_type. Кожна подія має LID — прив'язку до мови. Для багатомовного сайту потрібно створити окремий шаблон події для кожної мови.
Приклад: подія SALE_NEW_ORDER (нове замовлення). За замовчуванням один шаблон із LID = ru. Для англійської версії створюємо другий шаблон тієї ж події з LID = en. При надсиланні листа 1С-Бітрікс вибирає шаблон за 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 ₽» проти «€ 24.99» — різний роздільник тисяч, різні символи валюти, різне положення знака. Використовуємо \Bitrix\Currency\CurrencyManager::getCurrencyFormat() з урахуванням мови.
Типові проблеми
Кодування. Шаблони з кирилицею повинні зберігатися в UTF-8. Якщо через старий інтерфейс адміністрування шаблон було збережено в CP1251 — листи прийдуть із кракозябрами в частині тексту.
Заголовок Content-Type. 1С-Бітрікс за замовчуванням надсилає text/html; charset=UTF-8. Для багатомовних шаблонів це коректно. Але якщо надсилання відбувається через зовнішній SMTP (SendGrid, Mailgun), перевіряємо, що charset не перевизначається налаштуваннями SMTP-модуля.
Орієнтири за термінами
| Завдання | Термін |
|---|---|
| Локалізація системних листів (5–10 подій, 2 мови) | 2–5 днів |
| Розробка уніфікованої системи шаблонів для 4+ мов | 1–2 тижні |
Вартість розраховується індивідуально після аудиту існуючих шаблонів і мовної структури сайту.







