如何从 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'
。
我正在开发一个 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'
。