Skip to main content

Life-Hack #8: Многоязычный бот

Данный Life-Hack позволит вам создать многоязычный бот со сменой языка по нажатию START.

Life-Hack - предполагает использование имеющегося функционала не очевидными и достаточно хитроумными способами, создавая в своём боте функции не заложенные разработчиками конструктора изначально.

В данном разделе мы публикуем различные варианты и готовые решения того, что может быть создано с использованием возможностей, уже имеющихся в конструкторе @MenuBuilderBot. При создании подобных руководств предполагается, что вы, в той или иной степени, уже знакомы с основными функциями конструктора и базовыми механизмами работы с ним. Если в процессе изучения представленного материала ваших базовых знаний окажется не достаточно, советуем изучить основы прежде чем продолжать.

❖ Самый простой способ (ещё не Life-Hack)

Самый простой и БЕSПЛАТНЫЙ  способ создать многоязычное меню это - в Главном Меню бота добавить необходимое количество кнопок - по одной на каждый язык - и внутри этих кнопок уже создавать меню на соответствующем языке. Всё!

А теперь, на основе описанной механики, версия для тех кто хочет создать что-то поинтереснее...

Приобретение функционала

Весь функционал приобретается В ВАШЕМ БОТЕ, для этого перейдите в свой бот:
☞ 🔐Админ | 🧩Расширения

ВАЖНО: Приобретение функционала для бота доступно только Создателю (хозяину) бота. Админы покупать функционал - НЕ МОГУТ!

Вам понадобится:

1. Переменные - 1 штука
☞ 🔐Админ | 🧩Расширения | 📂Переменные

2. Action-ы - 4 штуки
☞ 🔐Админ | 🧩Расширения | 📂Action-ы

3. (Не обязательно) Пакет Токенов Функций
☞ 🔐Админ | 🧩Расширения | 📂Action-ы

4. Условия для кнопок
☞ 🔐Админ | 🧩Расширения | 📂Кнопки

5. Макросы и выражения для кнопок
☞ 🔐Админ | 🧩Расширения | 📂Кнопки

6. Создание своих кнопок навигации
☞ 🔐Админ | 🧩Расширения | 📂Кастомизация

❖ Создание двуязычного меню


Как это работает

В главном меню создаются две кнопки с языками, каждая из которых, при нажатии, присваивает переменной своё число. Число, присваиваемое кнопкой, является идентификатором выбранного языка. В боте будет скрыта Системная Навигация, а команды кнопок самодельной навигации содержат в себе макрос с идентификатором выбранного языка и будут перемещать пользователя внутри соответствующих меню. Смена языка происходит по нажатию START.

ПРЕДУПРЕЖДЕНИЕ: Надо подчеркнуть, что описанный ниже способ позволяет юзеру менять язык ТОЛЬКО для созданного вами меню. Однако, языком системных кнопок и сообщений, показываемых пользователю в отдельных сценариях использования бота, по прежнему останется язык выбранный в качестве системного владельцем бота - для себя. Поэтому для многоязычных ботов системным языком надо выбирать тот язык, который в той или иной мере доступен и понятен большинству пользователей бота, не смотря на их предпочтения - чаще всего это Английский или Русский.

1. Создаём переменные

Переменная (Числовая) - Переходим в вашем боте:
☞ 🔐Админ | 🗄Переменные | 📙Цифровые | ➕Создать Переменную
Имя переменной: lng, (можете использовать свое).

2. Создаём кнопки языков

Для демонстрации подхода, кнопки меню для разных языков мы создадим в ручную. Когда последовательность создания и механизм их работы станут вам понятны, создавать лучше одну ветку полностью и затем копировать ее при помощи функции копирования (описано ниже).

2.1 Английская ветка меню

В Главном Меню переходим в «Редактор Кнопок» и создаем кнопку для английской ветки меню с командой и Action-ом:

● Название: English
● Команда: /home0
Опция команды: Переход по Команде
● Pre-Action: Чисел
Переменная: lng
Тип операции: Задать Значение
Значение: 0
Условие: {%lng% != 0}

Перейдя в «Редактор Постов» добавляем кнопке сообщение:
● Сообщение кнопки: "This is English menu".

2.2 Русская ветка меню

В Главном Меню переходим в «Редактор Кнопок» и создаем кнопку для русской ветки меню с командой и Action-ом:

● Название: Русский
● Команда: /home1
Опция команды: Переход по Команде
● Pre-Action: Чисел
Переменная: lng
Тип операции: Задать Значение
Значение: 1
Условие: {%lng% != 1}

Перейдя в «Редактор Постов» добавляем кнопке сообщение:
● Сообщение кнопки: "Это Русское меню".

3. Создаем навигацию

3.1 Отключение системной навигации

Прежде чем создавать свою собственную навигацию нам необходимо отключить системные кнопки навигации.
Для отключения переходим:
☞ 🔐Админ | 🎚Кастомизация Бота | Скрыть Навигацию

3.2 Навигация в Английском меню

После отключения системной, нам нужно создать собственную навигацию в каждом из разделов меню. Возвращаемся в Английское меню при включенном «Редакторе Кнопок». Для наглядности и демонстрации создания кастомной навигации, создадим Кнопки внутри английского меню.
● Название: Button 1
● Название: Button 2

Это будут кнопки "Главного Меню" для английской ветки вашего бота.

Внутри кнопки «Button 1» создаем подменю с двумя кнопками:
● Название: Button 1.1
● Название: Main Menu

Кнопка с названием «Main Menu» при нажатии должна переносить пользователя в Главное Меню - английской ветки. Добавляем ей Action команды:

● Pre-Action: Команд
Команда: /home%lng%

Как вы видите в команде присутствует макрос переменной языка (%lng%). При обработке команды на его место будет подставлено значение из этой переменной, которое соответствует выбранному пользователем языку.

Данный макрос использован для демонстрации подхода и облегчения копирования. Если вы не используете копирование в вашем Боте, то в команде можно использовать идентификатор языка напрямую. Поскольку данная кнопка нужна для навигации по английскому меню, то команда без макроса будет выглядеть так:
/home0
Ноль - "0" это значение числовой переменной по умолчанию и в нашем боте оно соответствует английскому языку.

Подменю для кнопки «Button2» создается аналогично при необходимости.

3.3 Навигация в Русском меню

Навигацию можно создавать вручную, однако если кнопок  много, то лучше использовать копирование.

3.3.1 Настройка копирования (не обязательно)

Для включения переходим:
☞ 🔐Админ | ⚙️Настройки Бота | Кнопка "Копировать"

Если у вас отсутствуют «Дополнительные Токены Функций» (с возобновляемыми токенами эта функция не работает), то данную настройку можно не включать.

Если вы подключали копирование в своём Боте, то копируем созданную кнопку навигации Английского меню. И, не выходя из редактора, переходим в русское меню. Вставляем кнопку навигации внутри «Кнопка 1».

Меняем имя вставленной кнопки на: «Главное Меню». Action Команд при копировании остаётся тем же, поскольку значение переменной %lng% у пользователя в Русской ветке меню будет соответствовать Русскому языку.

Собственно, макрос переменной языка в команде и был использован для удобства копирования кнопок навигации.

Если же вы не использовали копирование, то присвойте Action-у Команд, команду:
/home1
Что будет соответствовать Русскому меню.

❖ Переключение языков меню

Переключение кнопками по START

В описанном выше подходе к реализации двуязычного бота, для переключения языка пользователю нужно будет перезапустить бот командой START. Это перенесёт его в Системное «Главное Меню» в котором содержатся кнопки выбора языка.

У вас может быть своё видение дизайна интерфейса смены языка, поэтому опишем известные нам альтернативные способы.

Переключение командами в Главном Меню

Если вы не хотите показывать кнопки выбора языка после нажатия START, а, например, предпочитаете предоставить юзеру для этого сообщение с командами, то можно в "Сообщении для СТАРТ" указать команды, которые вы присвоили кнопкам языков (в примере выше это /home0 и /home1) и позволить юзерам переходить в соответствующее меню - по нажатию команд. Не забудьте скрыть кнопки выбора языка при помощи:

Невидимые Кнопки и Сообщения
Для подключения, в вашем боте пройдите:
☞ 🔐Админ | 🧩Расширения | 📂Кнопки

Переключение инлайн кнопками

По понятным причинам, вам может не понравится внешний вид команд с цифрами вместо языков. В этом случае вы так же можете создать "Сообщении для СТАРТ" с  предложением выбора языка, однако вместо показа команд непосредственно в тексте сообщения, вы можете использовать инлайн кнопки в режиме команд. Кнопкам можно задать любое название, а команды при этом не будут видны.

Названия языков в командах

Если ни один из представленных выше способов вам не подходит и вам всё равно хочется переключать языки командами, в этом случае язык можно сохранять их в текстовой переменной - например в виде: "en" и "ru". В этом случае команды для переключения языков будут выглядеть лучше.

ПРЕДУПРЕЖДЕНИЕ: Использование текстовых переменных для такого рода механик не самае рациональная идея с точки зрения оптимизации, однако решает вопрос внешнего вида команд выбора языка.

Отдельное меню настроек с переключением языков

Переключение языков в Главном Меню после нажатия START является необходимым для новых пользователей - поэтому полностью обойтись без него не получится. Однако, чтобы не заставлять ваших пользователей перезапускать бот для смены языка (поиск такого способа переключения, в некоторых случаях, может вызывать затруднения) его можно и продублировать в каком-либо разделе меню вашего бота - где юзер сможет легко его найти. Для этого в нужном разделе можно создать кнопку "Language" и поместить кнопки, идентичные по функционалу кнопкам навигации с Action-ами команд для каждого языка (понятно, что использование макроса в этом случае невозможно и команду смены языка нужно будет указывать не ссылаясь на переменную), либо сообщение с командами или инлайн кнопками как описано выше.