Как создать мультиязычного бота в telegram?

Как реализовать мультиязычность в боте? Никак не могу найти.
Думаю что можно реализовать в лоб созданием двух списков русский\английский и проверять наличие chat.id в них и выдавать тот или иной язык. Но мне кажется есть вариант проще

Кто знает?
  • Вопрос задан
  • 2108 просмотров
Решения вопроса 1
astec
@astec
Разработчик https://debtstracker.io/
В своём боте по учёту долгов https://t.me/DebtsTrackerRuBot я реализовал это следующим образом.

Создал табличку TgChat в БД с ключём по chat_id и в ней есть поле lang:string. По умолчании там русский, но пользователь может в настройках поменять на английский или другой.

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

В этой же табличке хранится текущее состояние чата так что грузить эту запись надо всё равно, соответсвенно накладных расходов ноль.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@LyoSU
Программист-любитель
Не знаком с питоном. Но на PHP я сделал так:
Сделал так:
Сделал файлики russian.strings, english.strings
Записывал в них строки примерно так:
"mainMenu" = "Привет, {userName}.";
Дальше подключал эти файлики в зависимости от lang в БД.
Проходил циклом по всем строкам и создавал константы вида: LANG_mainMenu
Ну и соответственно использовал эти константы где нужно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы