2011-08-26 100 views
1

我在我的一个任务中使用了ugettext。我编辑过po文件。但它没有奏效。有谁知道为什么?谢谢!芹菜任务翻译

from django.utils.translation import ugettext 

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

阅读芹菜文件,我把语言参数的任务,和之前味精= ugettext(“测试”)并激活(语言),和它的作品。

+0

提供一些关于您正在尝试做什么的更多信息,并阅读此内容,尤其是底部的部分:https://docs.djangoproject.com/en/dev/howto/i18n/ – leoluk

+0

这很奇怪,我在任务中使用get_language()总是显示'en-us',但我的本地语言不是。 – Danfi

回答

1

Django使用LocaleMiddleware确定当前语言。由于芹菜任务处理超出任何请求范围,所以它将fall back转换为LANGUAGE_CODE。如您所述,您需要手动激活该语言,则语言为bound to the local thread,因此可用于ugettext

+1

2016更新:截至Django 1.8,['get_translation'](https://github.com/celery/django-celery/blob/master/djcelery/common.py)现在返回NONE,所以您需要通过将语言转换为您的任务[如此处所述](http://docs.celeryproject.org/projects/django-celery/en/2.4/faq.html#generating-a-template-in-a-task-doesn-t -seem到尊重 - 我 - 国际化的设置) – grokpot