来自 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
。
将语言包装成 real 到底意味着什么gettext()
?它应该如何在代码中调用?