在 Django 字段的定义中使用 `ugettext`
在我的 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 模块内编写希伯来语,但我更愿意避免这种情况,以防止编码地狱。
In my models.py
file I define a field on a model like this:
description = models.CharField(
max_length=40,
default=_('Bla bla bla'),
)
Now, _
is django.utils.translation.ugettext
, and I want to use as a default value the Hebrew translation of 'Bla bla bla'
, which is 'בלה בלה בלה'
. (The website is in Hebrew only.) The string is properly translated in the messages file. But when I run the Django admin and create a new object, I see the English 'bla bla bla'
on the field. I assume that English is the active language when compiling the models.py
module. How can I solve this and make it Hebrew?
I know that one solution would be to forego ugettext
and just write Hebrew inside the Python module, but I prefer to avoid that in order to prevent encoding hell.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
尝试
ugettext_lazy
https://docs .djangoproject.com/en/1.3/topics/i18n/internationalization/#lazy-translation
Try
ugettext_lazy
https://docs.djangoproject.com/en/1.3/topics/i18n/internationalization/#lazy-translation
ugettext 只是将字符串标记为可翻译。它本身不会为您做任何翻译。您必须创建语言文件(.mo 和 .po),然后将 LANGUAGE_CODE 设置设置为匹配。阅读有关国际化和本地化的 Django 文档以获取更多深入信息。
ugettext merely marks strings as translatable. It doesn't do any translation for you, per se. You have to create language files (.mo and .po) and then set the LANGUAGE_CODE setting to match. Read the Django documentation on Internationalization and Localization for more in depth info.