异步 Python Telegram 机器人的本地化

问题描述 投票:0回答:2

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

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

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

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

python asynchronous localization internationalization gettext
2个回答
0
投票

好的,我们使用

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


0
投票

在现代 Python 中,与一堆函数调用共享设置值而不干扰其他上下文的方法是使用

contextvars.Contextvar
- https://docs.python.org/3/library/contextvars.html -这些是由于需要在不同的异步任务中保存不同的上下文而引入的,但也适用于多线程应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.