Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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
Django翻译:选择变量_Django_Localization_Internationalization_Translation - Fatal编程技术网

Django翻译:选择变量

Django翻译:选择变量,django,localization,internationalization,translation,Django,Localization,Internationalization,Translation,我们正在建设一个项目,我们需要将通知翻译成不同的语言 问题在于,不同于标准的“Hello,%(first_name)s”,我们需要有“Halo,Herr%(last_name)s”,具体取决于语言 换句话说,我们希望在翻译的块中使用的变量取决于语言 实施它的最佳方式是什么?我真的不想为每种语言实现不同的模板 谢谢 具有: user_data = { 'first_name': 'Charlie', 'last_name': 'Brown', } 一, 编译('Hello,%(

我们正在建设一个项目,我们需要将通知翻译成不同的语言

问题在于,不同于标准的
“Hello,%(first_name)s”
,我们需要有
“Halo,Herr%(last_name)s”
,具体取决于语言

换句话说,我们希望在翻译的块中使用的变量取决于语言

实施它的最佳方式是什么?我真的不想为每种语言实现不同的模板

谢谢

具有:

user_data = {
    'first_name': 'Charlie', 
    'last_name': 'Brown',
}
一,

编译
('Hello,%(first\u name)s')%user\u数据
,在提供翻译
Halo时,Herr%(last\u name)s
会导致
参数“first\u name”的格式规范在“msgstr”中不存在
错误,但是创建了mo文件,翻译工作正常!(使用在windows下运行的gettext 0.18.1进行测试)

二,

您可以使用python较新的字符串格式:
('Hello,{first\u name}')。format(**user\u data)
,并将其翻译为
Halo,Her,{last\u name}

三,。 粗俗的:

_("Hello %s") % (user_data[_('hello_name_field')])

#or uglier but safe:
_("Hello %s") % (user_data.get(_('hello_name_field'), user_data['first_name'])