Celery任务中的翻译
我在我的一个任务中用了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
中使用了。