来自 Django 文档:
如果您定义了自定义LANGUAGES
设置,标记语言就可以了
作为翻译字符串(如
上面显示的默认值)——但是
使用“假人”gettext()
函数,不
中的一个django.utils.translation
。
你永远不应该导入django.utils.translation
从内部
你的设置文件,因为
模块本身取决于
设置,这会导致
循环导入。解决办法是
使用“假人”gettext()
功能。
这是一个示例设置文件:
gettext = lambda s: s LANGUAGES = (
('de', gettext('German')),
('en', gettext('English')),
)
有了这样的安排,django-admin.py
makemessages
仍然会发现并标记
这些字符串用于翻译,但是
翻译不会发生在
运行时——所以你必须记住
将语言包裹在真实的语言中gettext()
在任何使用的代码中LANGUAGES
在运行时。
用真实的方式包装语言到底意味着什么gettext()
?代码中应该如何调用呢?
根据docs您可以使用ugettext_lazy
在设置中而不导致循环导入:
from django.utils.translation import ugettext_lazy as _
LANGUAGES = [
('de', _('German')),
('en', _('English')),
]
如果您使用 Django 版本 3.0 或更高版本,那么您应该使用gettext_lazy
反而。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)