python中字典值的本地化
我在translation.py中有一个字典和函数,我正在从views.py调用它 Translation.py:-python中字典值的本地化,python,django,dictionary,Python,Django,Dictionary,我在translation.py中有一个字典和函数,我正在从views.py调用它 Translation.py:- from django.utils.translation import ugettext english_strings = { "key1" : { "key2":ugettext("val1"),
from django.utils.translation import ugettext
english_strings = {
"key1" :
{
"key2":ugettext("val1"),
"key3":ugettext("val2"),
"key4":ugettext("val3"),
.
.
}
}
def get_string():
return english_strings
其中所有键和val都是有效字符串。我正在尝试本地化。所有val都需要本地化。所以我需要打电话给所有val的ugettext。
在上述情况下,“django-admin.py makemessages-a”命令会自动将val添加到“locale/de/LC_MESSAGES/django.po”中,并且其工作正常
但我不想在字典里写ugettext(在每个val之前)。相反
def get_string():
temp = {}
for key,val in english_strings.items():
for k, v in val.items():
temp[k] = ugettext(v)
return temp
这就是我正在尝试的。但在第二种情况下,“django-admin.py makemessages-a”没有将val添加到“locale/de/LC_MESSAGES/django.po”。所以它不起作用。但函数返回的是键值对。如有任何建议,将不胜感激。
提前谢谢。我认为你想要什么是不可能的
makemessages
不会执行Python代码,因此它无法知道您稍后在ugettext
中包装了一个值。有一种惯例是使用\uu
作为ugettext
的简写,这可能会部分缓解您的问题(如果问题是您认为将每个目录值包装在uggettext
中过于显式)。您可以从django.utils.translation导入,将ugettext导入为
,然后编写(“val1”)
,而不是ugettext(“val1”)
。感谢您的宝贵建议,问题可能是“makemessages不执行Python代码”。是的,我用“uu”而不是ugettext来获得整洁的代码。非常感谢。