提问人:Sergey Cherepanov 提问时间:3/6/2017 更新时间:11/17/2023 访问量:881
异步 Python Telegram 机器人的本地化
Localization for Async Python Telegram bot
问:
我们有异步 python 应用程序(电报机器人),我们想添加本地化:用户在与机器人开始对话时选择语言,然后机器人为他翻译所有消息。
Django 允许更改每个请求的语言,它正常工作,因为 Django 为每个请求创建单独的进程。但它在异步机器人中不起作用——只有一个进程,我们应该处理其中使用不同语言的多个用户。
我们可以做一些简单的事情——将用户的偏好存储在数据库中,从数据库中加载每条传入消息的首选语言,然后他们将这些设置传递给所有内部函数——但这非常复杂,因为我们的机器人很复杂,可以包含十几个函数调用。
我们如何以优雅的方式在异步应用中实现语言切换?
答:
0赞
Sergey Cherepanov
3/6/2017
#1
好的,我们解决了这个问题,它为我们提供了所有内部函数调用的上下文。with
0赞
jsbueno
11/17/2023
#2
在现代 Python 中,在不弄乱其他上下文的情况下与一堆函数调用共享设置值的方法是使用 - https://docs.python.org/3/library/contextvars.html - 这些值是由于需要在不同的异步任务中保存不同的上下文而引入的,但对于多线程应用程序也很好。contextvars.Contextvar
评论