Бот говорит на 9 языках

Как научить бота говорить на разных языках?

Скажем, затеяли супер-проект на миллионную аудиторию. Хорошо бы сделать бота, говорящего на разных языках. Даже в Европе далеко не все говорят на английском и вообще народ любит нативные продукты.


Например, OfficeGymBot, говорит на 9 языках: английский, испанский, русский, французский, итальянский, германский, хинди, китайский и арабский.


В плане выбора языка у бота 2 сценария:

1) Если мессенджер передаёт язык, установленный в приложении пользователя, то бот самостоятельно определяет язык и весь контент (сообщения) отправляем на этом языке.

2) Если мессенджер не передал язык пользователя, то бот предлагает пользователю выбрать язык самостоятельно.

Также пользователь может в любое время поменять язык через команду /menu -> Language.

Как это сделать?

Просто! Вот скриншоты с комментами из конструктора botmother.

1. Сначала проверяем язык пользователя

Бот говорит на 9 языках Telegram, Разработка, Бот, Чат-бот, Длиннопост
Бот говорит на 9 языках Telegram, Разработка, Бот, Чат-бот, Длиннопост

На стартовый экран добавляем компонент "Развилка", который проверяет язык пользователя и направляет его на соответствующий экран (в зависимости от установленного языка).

Если мессенджер не передал значение языка, то направляем пользователя на экран "Выбрать язык" - для самостоятельного выбора ("Переход по умолчанию"). Он выбирает свой язык и также направляется на соответствующий языковой экран.


Кстати 👆 переменная мессенджера this_user.language хранит у себя информацию о том, какой язык установлен у пользователя и на каком языке отправлять ему сообщения. Соответственно, "en" - английский, "es" - испанский, "ru" - русский и так далее. Лучше использовать официальный код языка по стандарту ISO 639-1.

2. Потом сохраняем язык пользователя

Бот говорит на 9 языках Telegram, Разработка, Бот, Чат-бот, Длиннопост

Создаём языковые экраны, в которых будем сохранять язык пользователя в свою переменную language. Она понадобится для подстановки нужного текста в сообщение.


Направляем пользователя на соответствующий языковой экран для присвоения значения переменной. Например, на экране "English language" присваиваю значение "en" в переменную language. Теперь сообщения этому пользователю будут приходить на английском.

Аналогично можно присвоить значения и переводить контент на другие языка.

3. Добавляем тексты на разных языках

Бот говорит на 9 языках Telegram, Разработка, Бот, Чат-бот, Длиннопост

Создаём экран «Приветствие» и добавляем компонент "Сообщение" - это текст, который отправляется пользователю. Подготовим текст приветствия на нескольких языках и вставим небольшой код:


{{#eq language "en"}}Hello{{/eq}}{{#eq language "ru"}}Привет{{/eq}}{{#eq language "es"}}Hola{{/eq}}

Формула {{ #eq language "en"}} используется для отображения текста по определенным правилам:

{{ }} - означает добавление кода (хелпера);

#eq - проверка данных (условие);

language - переменная, которую я создал, чтобы записать в него код языка пользователя;

"en" - значение, записанное в переменную (в данном случае английский язык)

/eq - завершение проверки данных (условия).


И всё!

Теперь приветствие отобразится на языке пользователя: Hello, Привет или Hola.

Можно сделать сколько угодно языков.