【问题标题】:Django translation: pick variablesDjango 翻译:选择变量
【发布时间】:2014-01-30 19:37:45
【问题描述】:

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

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

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

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

谢谢!

【问题讨论】:

    标签: django localization internationalization translation


    【解决方案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。 恶作剧:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-09
      • 1970-01-01
      相关资源
      最近更新 更多