我正在开发一个本地化的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中打印?
答案 0 :(得分:4)
Django的正常翻译功能取决于django.middleware.locale.LocaleMiddleware
,但中间件作为请求/响应周期的一部分运行。由于您处于交互式shell中,并且没有请求对象,因此中间件无法完成其工作。
如果您手动激活shell中的语言,您应该看到翻译的行为符合预期:
drop table a_y purge;
create table a_y as
select te.a, s.ids
from table_expressions te
join
(select t2.pk, RTRIM(XMLAGG(XMLELEMENT(E,t1.b,',').EXTRACT('//text()')
ORDER BY t1.b).GetClobVal(),',') as ids
from a_x t1
join table_expressions t2
on t1.a like '%' || t2.a || '%'
group by t2.pk
) s
on te.pk = s.pk
;
select * from a_y;
A IDS
------------------------- ---
atveroeosipsum 1,3
test 2
stetclitakasd 2
noseatakimata 3
loremipsumdolor 1,4
consetetursadipscingelitr 5
当然,如果您愿意,可以从>>> from django.utils.translation import activate, ugettext as _
>>>
>>> activate('fa-ir')
>>> print _("Schedule & Details")
加载'fa-ir'
,而不是硬编码。