Глобализация чисел и валюты: формат en-IN/INR не работает должным образом
У меня есть два метода, которые я пытаюсь написать, используя 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>
Оба из них подтверждают, что результаты, которые мы получаем, верны, а наши предположения о том, что мы ожидаем, неверны. Однако, если вы посмотрите в Интернете, есть много авторитетных сайтов, которые говорят, что наши предположения верны, а результаты неверны.
Это оставляет меня в состоянии не знать, что делать. Кто прав? Можете ли вы помочь нам ответить на этот вопрос?
Кроме того, есть ли способ "перезаписать" формат по умолчанию, если по какой-либо причине мы хотели изменить его?
1 ответ
Вы должны использовать en-IN
для английского языка, на котором говорят в Индии, т.е. Globalize('en-IN')
,