Async Python Telegram 机器人的本地化

Localization for Async Python Telegram bot

我们有异步 python 应用程序(telegram bot),我们想添加本地化:用户在开始与 bot 对话时选择语言,然后 bot 会为他翻译所有消息。

Django 允许为每个请求更改语言,它工作正常,因为 Django 为每个请求创建单独的进程。但它在异步机器人中不起作用——只有一个进程,我们应该在其中处理多个使用不同语言的用户。

我们可以做一些简单的事情——将用户的首选项存储在数据库中,从数据库中加载每条传入消息的首选语言,然后将这些设置传递给所有内部函数——但这相当复杂,因为我们的机器人很复杂并且可以有十几个包含的函数调用。

我们如何优雅地在异步应用程序中实现语言切换?

好的,我们使用 with 解决了问题,它为我们提供了所有内部函数调用的上下文。