Django翻译:挑选变量

时间:2014-01-30 19:37:45

标签: django localization internationalization translation

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

问题在于,与标准"Hello, %(first_name)s"不同,我们需要"Halo, Herr %(last_name)s"取决于语言。

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

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

谢谢!

1 个答案:

答案 0 :(得分:1)

有:

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

1

编译_('Hello, %(first_name)s') % user_data,同时提供翻译Halo, Herr %(last_name)s会导致a format specification for argument 'first_name' doesn't exist in 'msgstr'错误,但是会创建mo文件,并且翻译工作正常! (在windows下运行gettext 0.18.1测试。)

2

您可以使用python较新的字符串格式:_('Hello, {first_name}').format(**user_data),并转换为Halo, Her, {last_name}

3。 的hackish:

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

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