【问题标题】:translation in celery tasks芹菜任务中的翻译
【发布时间】:2023-03-17 09:22:03
【问题描述】:

我在一项任务中使用了 ugettext。我已经编辑了 po 文件。但它没有用。有谁知道为什么?谢谢!

from django.utils.translation import ugettext

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

阅读 celery 文档,我将语言参数放在任务中,并在 msg = ugettext('test') 之前执行激活(语言),它可以工作。

【问题讨论】:

  • 提供更多关于你想要做什么的信息,并阅读这个,尤其是底部的部分:docs.djangoproject.com/en/dev/howto/i18n
  • 奇怪的是,我在任务中使用 get_language() 总是显示“en-us”,但我的本地语言不是。

标签: python django translation celery


【解决方案1】:

Django 使用LocaleMiddleware 确定当前语言。由于 celery 任务是在任何请求范围之外处理的,因此它将fall back 转换为 LANGUAGE_CODE。正如您所说,您需要手动激活语言,然后语言为bound to the local thread,因此可用于ugettext

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-04
  • 2016-03-19
  • 2016-02-03
  • 1970-01-01
  • 2012-12-01
  • 2014-04-16
  • 2018-07-04
相关资源
最近更新 更多