Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中字典值的本地化_Python_Django_Dictionary - Fatal编程技术网

python中字典值的本地化

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"),

我在translation.py中有一个字典和函数,我正在从views.py调用它

Translation.py:-

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来获得整洁的代码。非常感谢。