Celery任务中的翻译

3 投票
1 回答
1950 浏览
提问于 2025-04-17 00:22

我在我的一个任务中用了ugettext。我编辑了po文件,但没有效果。有人知道为什么吗?谢谢!

from django.utils.translation import ugettext

@task
def testtask():
    .....
    msg = ugettext('test')
    .....

我看了celery的文档,我在任务里加了语言参数,并在msg = ugettext('test')之前调用了activate(language),这样就好了。

1 个回答

4

Django通过一个叫做 LocaleMiddleware 的工具来判断当前使用的语言。当一个celery任务在没有请求的情况下运行时,它会 回退 到默认的语言设置,也就是LANGUAGE_CODE。正如你所说的,如果你需要手动激活语言,那么这个语言就会 绑定到本地线程,这样就可以在 ugettext 中使用了。

撰写回答