我有两种方法正在尝试使用 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 )
}
当我将“en”语言环境与“INR”货币代码用于 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>
这两者都支持我们得到的结果是正确的,而我们对预期结果的假设是错误的。但是,如果您在互联网上查看,有许多知名网站说我们的假设是正确的,结果是不正确的。
这让我处于不知道该做什么的状态。谁是对的?你能帮我们回答这个问题吗?
此外,如果出于某种原因我们想要更改默认格式,有没有办法“覆盖”默认格式?