如何从 Django shell 调用 ugettext?

How to call ugettext from Django shell?

我正在开发一个 Django 项目,该项目已本地化并且可以在多种语言中正常运行。现在出于某种原因,我需要从其 shell.

中调用 ugettext

这是我所做的:

>>> from django.conf import settings
>>> settings.LANGUAGE_CODE
u'fa-ir'
>>> from django.utils.translation import ugettext as _
>>> print _("Schedule & Details")
Schedule & Details

如您所见,短语 "Schedule & Details" 并未以波斯语打印。

是否可以翻译一个短语然后在 Django 中打印它shell?

Django 的正常翻译功能依赖于 django.middleware.locale.LocaleMiddleware,但中间件作为请求/响应周期的一部分运行。由于您处于交互式 shell 并且没有请求对象,因此中间件无法完成其工作。

如果您手动激活 shell 中的语言,您应该会看到翻译按预期运行:

>>> from django.utils.translation import activate, ugettext as _
>>>
>>> activate('fa-ir')
>>> print _("Schedule & Details")

当然,如果您愿意,您可以从 settings.LANGUAGE_CODE 加载它,而不是硬编码 'fa-ir'