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

发布于 2024-11-09 16:33:14 字数 533 浏览 3 评论 0原文

在我的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

白色秋天 2024-11-16 16:33:14

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文