Мы используем 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).