2011-08-26 99 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