O
O
okay122017-03-04 12:10:56
Python
okay12, 2017-03-04 12:10:56

How to implement language switching in asynchronous python application (telegram bot)?

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

Answer the question

In order to leave comments, you need to log in

1 answer(s)
A
Alexander Trakhimenok, 2017-03-09
@okay12

In my debt tracking bot https://t.me/DebtsTrackerRuBot , I implemented it as follows.
Created a TgChat table in the database with the key according to chat_id and it has a lang:string field. By default, there is Russian, but the user can change it to English or another in the settings.
With each request, this field is checked and the variable is set to the context that is passed to each method through and through. Wherever it is necessary to respond with text, the translation is taken according to the message key.
The current state of the chat is stored in the same plate, so you need to load this record anyway, so there is zero overhead.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question