使用{select}格式(format.js)与聚合物app-localize-behavior

时间:2016-06-20 09:09:09

标签: localization polymer polymer-1.0 messageformat.js

我正在使用Polymers应用本地化行为进行一些试验,而且我很难找到一些关于如何使用format.js {select}格式的明确文档here

app-localization-behavior documentation说:
" Polymer.AppLocalizeBehavior完全支持format.js的相同消息语法;"
但是例如在聚合物文档中,它们将参数作为字符串传递:

{{localize('hello', 'Batman')}}

并且格式化.js文档不是:

I have {numCats, number} cats.

现在我面临的问题是如何使用{select}格式。

format.js docs说要像这样使用它:

{gender, select,
male {He}
female {She}
other {They}
} will respond shortly.

所以我在模板中这样做了:

{{localize(wir, select,
            wir {we}
            ich {i}
           )
}}

locales.json:

{
"en" : {
         "i" : "I",
         "we" : "we"        
       },
"fr" : { 

         "i" : "je",
         "we" : "nous"
       },
"de" : {
         "i" : "ich",
         "we" : "wir"
       }
}

语言默认设置为法语"fr",所以我希望得到#34; nous"作为输出,但屏幕上会显示完整的{{localize(etc..)}}

我做的最后一次尝试将所有内容传递为字符串或只是一些参数(所有组合),但这一切都没有帮助。

有没有人遇到同样的问题,或者有人可以解释我在这里做错了什么?

非常感谢帮助。

1 个答案:

答案 0 :(得分:2)

localize用法

  • localize的参数必须引用,如果它们是字符串文字,如:

    {{localize('hello', 'Batman')}}
    

    否则,它们被视为属性。例如,如果您的name属性包含Batman,则可以使用:

    {{localize('hello', name)}}
    
  • 第一个localize参数是语言字典中的键(在元素的resources属性中定义,或在元素加载的外部文件中定义,例如{{1} })

  • 第一个之后的所有locales.json个参数都直接传递给intl-messageformat

此字符串:

localize

...是一种消息格式,必须在语言字典中定义为值。此示例显示在{gender, select, male {He} female {She} other {They} } will respond shortly. 属性中定义的字典,其键为resources

response

然后,在元素的模板中,您将使用Polymer({ ... properties: { resources: { value: function() { return { 'en': { 'response': `{gender, select, male {He} female {She} } will respond shortly.` }, 'fr': { 'response': `{gender, select, male {Il} female {Elle} } répondra prochainement.` } } } } } }); ,如下所示:

localize

其中:

  • <div>Message: {{localize('response', 'gender', 'female')}}</div> :语言词典中的查找键
  • 'response' 'gender'
  • 的关键
  • {select} 'female'
  • 的选择器

{select}

codepen