Как реализовать переключение языка в асинхронном python приложении (telegram bot)?

Есть асинхронный бот для телеграма, хотим чтобы пользователь выбирал язык при добавлении бота, и все дальнейшие сообщения бота для этого пользователя были на выбранном языке.

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

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

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

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

В этой же табличке хранится текущее состояние чата так что грузить эту запись надо всё равно, соответсвенно накладных расходов ноль.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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