如何仅对全球化使用拉丁数字?

时间:2019-06-11 20:54:02

标签: javascript angular internationalization globalization cldr

我们正在使用全球化(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中的文档并不出色,尽管我在另一个站点上至少遇到过其他人试图解决类似问题的文章,但我仍未提出任何解决方案。有谁知道如何解决此问题,同时仍保留其余区域格式? 注意:如果使用阿拉伯数字,则仍应使用阿拉伯货币符号,而不是3字母的货币代码(例如SAR)。

0 个答案:

没有答案