Переводчик
Переводчик — опциональный модуль проекта, обеспечивающий двунаправленный машинный перевод между языком пользователя и языком проекта. Он позволяет одному и тому же боту обслуживать мультиязычную аудиторию, не дублируя намерения, Q&A и сценарии для каждого языка.
Когда использовать
- Бот работает с аудиторией, использующей несколько языков (e-commerce, travel, маркетплейсы, поддержка иностранных клиентов).
- Контент проекта (намерения, Q&A, тексты реакций) поддерживается на одном языке — русском, — а пользователи могут писать на любом.
- Требуется быстрый запуск мультиязычной поддержки без ведения параллельных проектов под каждый язык.
Если контент бота критичен с точки зрения формулировок (юридические тексты, медицинские инструкции, маркетинговые слоганы) — лучше поддерживать отдельные проекты или вручную локализованные тексты реакций. Машинный перевод сохраняет смысл, но может терять стилистические нюансы.
Как это работает
Когда «Переводчик» включён, платформа применяет перевод на двух границах диалога.
Входящие сообщения → язык проекта
Каждое сообщение пользователя перед передачей в NLU проходит проверку:
- Платформа определяет, написано ли сообщение на языке проекта (русском). Признаком является доля кириллических символов в тексте (с учётом отсечения HTML-разметки и ссылок).
- Если сообщение уже на русском — оно передаётся в NLU без изменений.
- Если сообщение на другом языке — оно переводится на русский, и в NLU попадает уже переведённый текст. Намерения, Q&A и сущности срабатывают по русскоязычной модели.
Распознавание (классификация намерений, поиск Q&A, извлечение сущностей) всегда работает на языке проекта. Это означает, что обучающие фразы и тренировка модели не требуют дублирования под каждый язык пользователя.
Исходящие сообщения → язык пользователя
Все текстовые ответы бота, перед отправкой в канал, переводятся на язык пользователя:
- Если язык пользователя совпадает с языком проекта — сообщения уходят как есть.
- Если язык пользователя отличается — все тексты реакции переводятся одним пакетом и доставляются пользователю на его языке.
Язык пользователя определяется платформой автоматически (на основании канала, профиля или предыдущих сообщений) и сохраняется в контексте диалога.
Если вы изменили текст реакции, перевод старой версии некоторое время будет оставаться старым.
Включение
- Перейдите в раздел Настройки проекта.
- Найдите раздел «Переводчик» и активируйте переключатель.
- Сохраните изменения и опубликуйте проект.
Подключение и тарификация модуля обсуждаются с вашим аккаунт-менеджером.
Поддерживаемые языки
Перевод выполняется через внешний сервис машинного перевода. Это даёт автоопределение исходного языка и широкий охват направлений перевода — европейские, азиатские и другие языки.
Полный список поддерживаемых языков
Абазинский, Абхазский, Азербайджанский, Албанский, Амхарский, Английский, Арабский, Армянский, Африкаанс, Баскский, Башкирский, Белорусский, Бенгальский, Бирманский, Болгарский, Боснийский, Бурятский, Валлийский, Венгерский, Вьетнамский, Гаитянский, Галисийский, Гальтарский, Горномарийский, Греческий, Грузинский, Гуджарати, Датский, Зулу, Иврит, Идиш, Индонезийский, Ирландский, Исландский, Испанский, Итальянский, Кабардино-Черкесский, Казахский, Казахский (латиница), Каннада, Карачаево-Балкарский, Каталанский, Киргизский, Китайский, Коми, Корейский, Коса, Кхмерский, Лаосский, Латынь, Латышский, Литовский, Люксембургский, Македонский, Малагасийский, Малайский, Малаялам, Мальтийский, Мансийский, Маори, Маратхи, Марийский, Мокшанский, Монгольский, Немецкий, Непальский, Нидерландский, Ногайский, Норвежский, Осетинский, Панджаби, Папьяменто, Персидский, Польский, Португальский, Португальский (бразильский), Румынский, Русский, Себуанский, Сербский, Сербский (латиница), Сингальский, Словацкий, Словенский, Суахили, Сунданский, Тагальский, Таджикский, Тайский, Тамильский, Татарский, Телугу, Тувинский, Турецкий, Удмуртский, Узбекский, Узбекский (кириллица), Украинский, Урду, Финский, Французский, Хинди, Хорватский, Чешский, Чувашский, Шведский, Шотландский (гэльский), Эльфийский (синдарин), Эмодзи, Эрзянский, Эсперанто, Эстонский, Яванский, Якутский, Японский.
Для тестов на близкородственных языках учитывайте, что встроенный детектор определяет «язык проекта» по доле кириллицы.
Что переводится, а что нет
| Что | Перевод |
|---|---|
| Текст входящего сообщения пользователя | Да |
| Текстовые реакции бота | Да |
| Тексты Q&A-ответов | Да |
| Обучающие фразы намерений | Нет (модель обучается на языке проекта) |
Значения переменных контекста, передаваемые в текст реакции через подстановку ({{ var }}) | Да, как часть итогового текста реакции |
| Системные события, идентификаторы, технические поля | Нет |
Взаимодействие с другими модулями
- NLU и Q&A. Распознавание происходит после перевода входящего сообщения. Никаких изменений в обучении модели не требуется.
- LLM-Ответ. Для качественной генерации желательно, чтобы язык запроса в LLM, контент Базы Знаний и язык, заданный в промпте, совпадали — обычно это русский. Перевод на язык пользователя выполняется уже на исходящем ответе, после генерации.
- Сниппеты. Сниппеты получают исходный текст пользователя после перевода (то есть на языке проекта). Если в сниппете требуется оригинал сообщения, обратитесь к сырым данным диалога.
- Перевод на оператора. При передаче диалога живому сотруднику история, как правило, сохраняется на языке проекта (с уже переведёнными сообщениями пользователя). Уточняйте поведение для конкретной интеграции с тикет-системой.
Вопросы и ответы
Нужно ли дублировать намерения и Q&A для каждого языка пользователя?
Нет. Модель обучается только на языке проекта (русском). Сообщения пользователя на других языках переводятся перед попаданием в NLU, поэтому существующая обучающая выборка работает для всех языков сразу.
Как добиться того, чтобы определённые слова не переводились (например, бренды, артикулы)?
Машинный перевод обычно сохраняет латинские бренд-имена и числовые артикулы. Если конкретный термин переводится некорректно, рассмотрите вынос таких значений в переменные контекста и формирование ответа из шаблона — это упрощает контроль над итоговой формулировкой.
Что произойдёт, если внешний сервис перевода временно недоступен?
Платформа залогирует ошибку и продолжит работу. Поведение для конкретного диалога зависит от конфигурации проекта — уточняйте у аккаунт-менеджера, нужен ли fallback-сценарий (например, перевод на оператора при сбое переводчика).
Можно ли переводить только в одну сторону — например, понимать иностранные сообщения, но отвечать только на русском?
Стандартное поведение — двунаправленный перевод. Для одностороннего сценария обратитесь к аккаунт-менеджеру: возможно, потребуется кастомная настройка или ручное управление языком пользователя через сниппет.
Влияет ли переводчик на скорость ответа бота?
Каждый перевод — это сетевой вызов API, что добавляет небольшую задержку. Для часто повторяющихся реплик задержка нивелируется кешем (1 час). Для уникальных длинных ответов LLM задержка перевода складывается с задержкой генерации.
Поддерживается ли перевод сущностей (Entity), например, дат и адресов?
Сущности извлекаются NLU-моделью из уже переведённого на русский текста. Для большинства типов (дата, число, email) это работает корректно. Для регион-специфичных сущностей (адрес, название организации) рекомендуется тестирование в тестовом чате на репрезентативных примерах.