我正在尝试使用globalize编写两种方法。一个格式化数字,一个格式化货币。
function currencyFormatter(value, locale, fieldDefinition) {
var formatter = Globalize('en').currencyFormatter( 'INR' )
return formatter( value )
}
function numberFormatter(value, locale, fieldDefinition){
var formatter = Globalize('en').numberFormatter()
return formatter( value )
}
当我使用带有'INR'货币代码的'en'区域设置为currencyFormatter或'en'用于numberFormatter时,我希望看到类似₹12,34,567.89 的内容,但是我得到的是案例类似于₹1,234,567.89 (减去数字的货币符号)。我查看了我的node_modules文件夹cldr-data / main / en-IN / numbers.json,发现了这个:
"percentFormats-numberSystem-latn": {
"standard": "#,##,##0%"
},
"currencyFormats-numberSystem-latn": {
"currencySpacing": {
"beforeCurrency": {
"currencyMatch": "[:^S:]",
"surroundingMatch": "[:digit:]",
"insertBetween": " "
},
"afterCurrency": {
"currencyMatch": "[:^S:]",
"surroundingMatch": "[:digit:]",
"insertBetween": " "
}
},
"standard": "¤ #,##,##0.00",
"accounting": "¤#,##0.00;(¤#,##0.00)",
我也去了CLDR网站,挖出了我认为的格式文件(en-IN.xml),发现了这个:
<rulesetGrouping type="OrdinalRules">
<ruleset type="digits-ordinal">
<rbnfrule value="-x">−→→;</rbnfrule>
<rbnfrule value="0">=#,##0=$(ordinal,one{st}two{nd}few{rd}other{th})$;</rbnfrule>
</ruleset>
</rulesetGrouping>
这些都支持我们得到的结果是正确的,我们对我们期望的假设是错误的。但是,如果你在互联网上看,有很多信誉良好的网站说我们的假设是正确的,结果是不正确的。
这使我处于不知道该怎么做的状态。谁是对的?你能帮我们回答这个问题吗?
此外,如果出于任何原因我们想要更改默认格式,有没有办法“覆盖”默认格式?
答案 0 :(得分:0)
您应该使用Globalize('en-IN')
在印度使用英语,即{{1}}。