在Django字段的定义中使用`ugettext`

时间:2011-05-26 21:42:21

标签: django internationalization gettext

在我的models.py文件中,我在这样的模型上定义了一个字段:

description = models.CharField(
    max_length=40,
    default=_('Bla bla bla'),
)

现在,_django.utils.translation.ugettext,我希望将'Bla bla bla'的希伯来语翻译用作'בלה בלה בלה'的默认值。 (该网站仅限希伯来语。)字符串在消息文件中正确翻译。但是当我运行Django管理员并创建一个新对象时,我在该字段上看到了英语'bla bla bla'。我认为在编译models.py模块时,英语是主动语言。我该如何解决这个问题并将其作为希伯来语?

我知道一个解决方案是放弃ugettext并在Python模块中编写希伯来语,但我更愿意避免这种情况,以防止编码地狱。

2 个答案:

答案 0 :(得分:1)

尝试ugettext_lazy

https://docs.djangoproject.com/en/1.3/topics/i18n/internationalization/#lazy-translation

  

始终在Django中使用延迟翻译   模型。

答案 1 :(得分:1)

ugettext只是将字符串标记为可翻译。它本身不会为您做任何翻译。您必须创建语言文件(.mo和.po),然后将LANGUAGE_CODE设置设置为匹配。有关详细信息,请阅读Django documentation on Internationalization and Localization