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-ами команд для каждого языка (понятно, что использование макроса в этом случае невозможно и команду смены языка нужно будет указывать не ссылаясь на переменную), либо сообщение с командами или инлайн кнопками как описано выше.