Глобализация чисел и валюты: формат 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'),

Другие вопросы по тегам