Как использовать латинские цифры только с глобализацией? - PullRequest
0 голосов
/ 11 июня 2019

Мы используем globalize (https://github.com/globalizejs/globalize) для форматирования чисел, валют, дат и т. Д. По регионам. Однако, независимо от региона, мы всегда хотим использовать латинские цифры (0, 1, 2 ...). Вот как мы загружаем данные локали:

loadLocaleData(locale: string): Promise<string> {
    return forkJoin<any, any, any, any, any>([
        this.loadNumbers(locale),
        this.loadCurrency(locale),
        this.loadCalendarData(locale),
        this.loadTimeZone(locale),
        this.loadDateFields(locale)])
        .toPromise().then((localFiles) => {
            if (!localFiles || !localFiles.length) {
                return locale;
            }
            const [numbers, currency, calendarData, timeZone, dateFields] = localFiles;

            // Apparently order matter here so this is done very explicitly
            Globalize.load(likelySubtags);
            Globalize.load(numbers);
            Globalize.load(numberingSystems);
            Globalize.load(pluralData);
            Globalize.load(ordinalData);
            Globalize.load(currency);
            Globalize.load(currencyData);
            Globalize.load(calendarData);
            Globalize.load(timeZone);
            Globalize.load(timeData);
            Globalize.load(weekData);
            Globalize.load(dateFields);
            Globalize.loadTimeZone(IANATimezoneData);

            return locale;
        });
}

Системы нумерации определены в файле json, включенном в модуль узла:

{
  "supplemental": {
    "version": {
      "_number": "$Revision: 14000 $",
      "_unicodeVersion": "11.0.0",
      "_cldrVersion": "34"
    },
    "numberingSystems": {
      // OMITTED
      "arab": {
        "_digits": "٠١٢٣٤٥٦٧٨٩",
        "_type": "numeric"
      },
      // OMITTED
      "latn": {
        "_digits": "0123456789",
        "_type": "numeric"
      },
      // OMITTED
    }
  }
}

Я подумал о том, чтобы сделать копию этого файла в репозитории и изменить цифры для каждой локали на 0123456789, но мне сказали, что это не очень хороший способ сделать что-то (и я тоже это чувствовал).

Документация в Globalize невелика, и хотя я встречал по крайней мере еще один пост на другом сайте, где кто-то пытался решить подобную проблему, я не смог найти ни одного решения. Кто-нибудь знает, как решить эту проблему, сохранив при этом остальную часть регионального форматирования? ПРИМЕЧАНИЕ. В случае арабских чисел по-прежнему следует использовать символ арабской валюты, а не трехбуквенный код валюты (например, SAR).

...