我正在使用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..)}}
。
我做的最后一次尝试将所有内容传递为字符串或只是一些参数(所有组合),但这一切都没有帮助。
有没有人遇到同样的问题,或者有人可以解释我在这里做错了什么?
非常感谢帮助。
答案 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}