Локализация чисел

Введение в локализацию чисел, десятичные символы, символы группировки, системы нумерации.

Основы чисел

Число состоит из целой части и десятичной части, разделенных десятичным символом. Целая часть может также быть разделена символом группировки (иногда называемым тысячным символом), что делает длинные числа более удобными для чтения.

В Соединенных Штатах используется точка (.) для десятичного символа и запятая (,) для символа группировки.

Десятичные символы

Существует три различных десятичных символа:

  • . - 1.0 - Точка U+002E
  • , - 1,0 - Запятая U+002C
  • ٫ - 1٫0 - Арабский десятичный разделитель U+066B

Символы группировки

Существует шесть различных символов группировки:

  • , - 1,000 - Запятая. U+002C
  • . - 1.000 - Точка. U+002E
  •   - 1 000 - Неразрывный пробел. U+00A0
  •   - 1 000 - Узкий неразрывный пробел. U+202F
  • ٬ - 1٬000 - Арабский тысячный разделитель. U+066C
  • ’ - 1’000 - Правая одинарная кавычка. U+2019

Шаблоны группировки

Наиболее распространённым шаблоном группировки является группировка каждые 3 цифры. Однако в некоторых регионах Индии используется уникальная система группировки по 2 цифры.

Например, число 1 миллиард выглядит следующим образом в обоих шаблонах группировки (с использованием запятой в качестве символа группировки):

  • Группировка по 3 цифры: 1,000,000,000
  • Группировка по 2 цифры: 1,00,00,00,000

Обратите внимание, что в группировке по 2 цифры для самой правой группы по-прежнему используются 3 цифры, но всё остальное группируется по 2 цифры.

Различные шаблоны форматирования

Ниже приведены различные комбинации шаблонов форматирования для различных поддерживаемых регионов:

Формат числа Шаблон группировки Символ группировки Десятичный символ Используется в
1,000,000.22 3 цифры Запятая Точка 298 регионов
1.000.000,22 3 цифры Точка Запятая 151 регион
1 000 000,22 3 цифры Неразрывный пробел Запятая 129 регионов
1 000 000,22 3 цифры Узкий неразрывный пробел Запятая 44 региона
1,000,000٫22 3 цифры Арабский тысячный разделитель Арабский десятичный разделитель 43 региона
10,00,000.22 2 цифры Запятая Точка 34 региона
1’000’000.22 3 цифры Правая одинарная кавычка Точка 10 регионов
1 000 000.22 3 цифры Неразрывный пробел Точка 10 регионов
1’000’000,22 3 цифры Правая одинарная кавычка Запятая 2 региона

Знаки минуса

Существует два различных символа для обозначения знака минуса. Дефис используется в большинстве регионов, но также используется более длинный символ — знак минуса:

Системы нумерации

Числа от 0 до 9 часто называют арабскими цифрами, латинскими цифрами или западными цифрами.

Примечание: Термин арабские цифры может быть запутанным, поскольку, хотя арабский мир изобрел эту систему чисел, они больше не используют её в этой форме.

Вот пример распространённых систем нумерации:

Ключ Название 0 1 2 3 4 5 6 7 8 9
latn Западная 0 1 2 3 4 5 6 7 8 9
arab Арабско-индийская ٠ ١ ٢ ٣ ٤ ٥ ٦ ٧ ٨ ٩
arabext Расширенная арабско-индийская ۰ ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹
beng Бенгальская ০ ১ ২ ৩ ৪ ৫ ৬ ৭ ৮ ৯
deva Деванагари ० १ २ ३ ४ ५ ६ ७ ८ ९

Все системы счисления

Полный список всех систем счисления и информация о том, какие из них полностью поддерживаются браузерами.

Ниже полный список систем счисления, поддерживаемый Международными компонентами для Юникода.

Это системы счисления, символы которых полностью поддерживаются «из коробки»:

Ключ Название 0 1 2 3 4 5 6 7 8 9
adlm Адлам ? ? ? ? ? ? ? ? ? ?
ahom Ахом ? ? ? ? ? ? ? ? ? ?
arab Арабские-Индици ٠ ١ ٢ ٣ ٤ ٥ ٦ ٧ ٨ ٩
arabext Расширенные арабские-Индици ۰ ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹
bali Бали ᭐ ᭑ ᭒ ᭓ ᭔ ᭕ ᭖ ᭗ ᭘ ᭙
beng Бенгальские ০ ১ ২ ৩ ৪ ৫ ৬ ৭ ৮ ৯
brah Брахми ? ? ? ? ? ? ? ? ? ?
cakm Чакма ? ? ? ? ? ? ? ? ? ?
cham Чам ꩐ ꩑ ꩒ ꩓ ꩔ ꩕ ꩖ ꩗ ꩘ ꩙
deva Деванагари ० १ २ ३ ४ ५ ६ ७ ८ ९
fullwide Полная ширина 0 1 2 3 4 5 6 7 8 9
gonm Масарам Гонди ? ? ? ? ? ? ? ? ? ?
gujr Гуджарати ૦ ૧ ૨ ૩ ૪ ૫ ૬ ૭ ૮ ૯
guru Гурмукхи ੦ ੧ ੨ ੩ ੪ ੫ ੬ ੭ ੮ ੯
hanidec Китайская десятичная 〇 一 二 三 四 五 六 七 八 九
hmnp Ньякенг Пуачу Хмонг ? ? ? ? ? ? ? ? ? ?
java Яванский ꧐ ꧑ ꧒ ꧓ ꧔ ꧕ ꧖ ꧗ ꧘ ꧙
kali Кая Ли ꤀ ꤁ ꤂ ꤃ ꤄ ꤅ ꤆ ꤇ ꤈ ꤉
khmr Кхмерские ០ ១ ២ ៣ ៤ ៥ ៦ ៧ ៨ ៩
knda Каннада ೦ ೧ ೨ ೩ ೪ ೫ ೬ ೭ ೮ ೯
laoo Лаосские ໐ ໑ ໒ ໓ ໔ ໕ ໖ ໗ ໘ ໙
latn Западные 0 1 2 3 4 5 6 7 8 9
lepc Лепча ᱀ ᱁ ᱂ ᱃ ᱄ ᱅ ᱆ ᱇ ᱈ ᱉
limb Лимбу ᥆ ᥇ ᥈ ᥉ ᥊ ᥋ ᥌ ᥍ ᥎ ᥏
mathbold Математическая жирная ? ? ? ? ? ? ? ? ? ?
mathdbl Математическая двойная ? ? ? ? ? ? ? ? ? ?
mathmono Математическая моноширинная ? ? ? ? ? ? ? ? ? ?
mathsanb Математическая без засечек жирная ? ? ? ? ? ? ? ? ? ?
mathsans Математическая без засечек ? ? ? ? ? ? ? ? ? ?
mlym Малаялам ൦ ൧ ൨ ൩ ൪ ൫ ൬ ൭ ൮ ൯
modi Моди ? ? ? ? ? ? ? ? ? ?
mong Монгольские ᠐ ᠑ ᠒ ᠓ ᠔ ᠕ ᠖ ᠗ ᠘ ᠙
mroo Мро ? ? ? ? ? ? ? ? ? ?
mtei Мейтей Майек ꯰ ꯱ ꯲ ꯳ ꯴ ꯵ ꯶ ꯷ ꯸ ꯹
mymr Мьянманские ၀ ၁ ၂ ၃ ၄ ၅ ၆ ၇ ၈ ၉
mymrshan Мьянманские шан ႐ ႑ ႒ ႓ ႔ ႕ ႖ ႗ ႘ ႙
mymrtlng Мьянманские Тай Лаинг ꧰ ꧱ ꧲ ꧳ ꧴ ꧵ ꧶ ꧷ ꧸ ꧹
nkoo Н'ко ߀ ߁ ߂ ߃ ߄ ߅ ߆ ߇ ߈ ߉
olck Ол Чики ᱐ ᱑ ᱒ ᱓ ᱔ ᱕ ᱖ ᱗ ᱘ ᱙
orya Ория ୦ ୧ ୨ ୩ ୪ ୫ ୬ ୭ ୮ ୯
osma Османья ? ? ? ? ? ? ? ? ? ?
rohg Ханифи рохинджа ? ? ? ? ? ? ? ? ? ?
saur Саураштра ꣐ ꣑ ꣒ ꣓ ꣔ ꣕ ꣖ ꣗ ꣘ ꣙
shrd Шарада ? ? ? ? ? ? ? ? ? ?
sind Худавади ? ? ? ? ? ? ? ? ? ?
sinh Сингальские лит ෦ ෧ ෨ ෩ ෪ ෫ ෬ ෭ ෮ ෯
sora Сора сомпенг ? ? ? ? ? ? ? ? ? ?
sund Сунданские ᮰ ᮱ ᮲ ᮳ ᮴ ᮵ ᮶ ᮷ ᮸ ᮹
takr Такри ? ? ? ? ? ? ? ? ? ?
talu Новый тай луе ᧐ ᧑ ᧒ ᧓ ᧔ ᧕ ᧖ ᧗ ᧘ ᧙
tamldec Тамильские ௦ ௧ ௨ ௩ ௪ ௫ ௬ ௭ ௮ ௯
telu Телугу ౦ ౧ ౨ ౩ ౪ ౫ ౬ ౭ ౮ ౯
thai Тайские ๐ ๑ ๒ ๓ ๔ ๕ ๖ ๗ ๘ ๙
tibt Тибетские ༠ ༡ ༢ ༣ ༤ ༥ ༦ ༧ ༨ ༩
tirh Тирхута ? ? ? ? ? ? ? ? ? ?
vaii Ваи ꘠ ꘡ ꘢ ꘣ ꘤ ꘥ ꘦ ꘧ ꘨ ꘩
wara Варанг Кшити ? ? ? ? ? ? ? ? ? ?
wcho Ванчо ? ? ? ? ? ? ? ? ? ?

Системы счисления, требующие пользовательских шрифтов

Следующие системы счисления редки, и для отображения символов вам потребуются специальные шрифты. Для каждой из этих систем чисел есть шрифт _Noto_.

Пример того, насколько эти системы редки: традиционный шрифт Гунджала Гонди был почти забыт, и очень мало людей все еще умеют его читать. Исследователи зафиксировали этот шрифт в 2014 году, и его поддержка появилась в 2018 году, хотя большинство народа гонди даже не знают о его существовании.

Ключ Название
bhks Бхайксуки
diak Дивес Акуру
gong Гунджала Гонди
hmng Пахау Хмонг
kawi Кави
lana Тай Тхам Хора
lanatham Тай Тхам Тхам
nagm Наг Мундари
newa Невари
segment Сегментированная
tnsa Тангса

Алгоритмические системы

Эти системы счисления не являются десятичными, а вычисляются по формуле. Наиболее узнаваемый пример — римские цифры.

Вот полный список. Эти системы, как правило, не используются в современных приложениях или браузерах.

Ключ Название
armn Армянские
armnlow Армянские строчные
cyrl Кириллица
ethi Эфиопские
geor Грузинские
grek Греческие
greklow Греческие строчные
hanidays Китайский календарь (дни месяца)
hans Упрощенные китайские
hansfin Упрощенные китайские финансовые
hant Традиционные китайские
hantfin Традиционные китайские финансовые
hebr Еврейские
jpan Японские
jpanfin Японские финансовые
jpanyear Японский календарь (Ганнен)
roman Римские
romanlow Римские строчные
taml Традиционные тамильские

Все локали

Последнее обновление 10 марта 2023 г.

Полный список локалей, поддерживаемых компонентами для Unicode. Для каждой локали указаны шаблон группировки, символ группировки, десятичный символ и система счисления.

Некоторые из этих свойств могут отличаться в разных средах выполнения javascript. Например, система счисления и шаблон группировки могут различаться между nodejs и chrome. Этот список был сгенерирован с использованием Node v18.

Код Название Шаблон группировки Символ группировки Десятичный символ Система счисления
af Afrikaans 3 digit No-Break Space Comma latn
af-NA Afrikaans (Namibia) 3 digit No-Break Space Comma latn
af-ZA Afrikaans (South Africa) 3 digit No-Break Space Comma latn
agq Aghem 3 digit No-Break Space Comma latn
agq-CM Aghem (Cameroon) 3 digit No-Break Space Comma latn
ak Akan 3 digit Comma Period latn
ak-GH Akan (Ghana) 3 digit Comma Period latn
am Amharic 3 digit Comma Period latn
am-ET Amharic (Ethiopia) 3 digit Comma Period latn
ar Arabic 3 digit Arabic Thousands Separator Arabic Decimal Separator arab
ar-001 Arabic (World) 3 digit Arabic Thousands Separator Arabic Decimal Separator arab
ar-AE Arabic (United Arab Emirates) 3 digit Comma Period latn
ar-BH Arabic (Bahrain) 3 digit Arabic Thousands Separator Arabic Decimal Separator arab
ar-DJ Arabic (Djibouti) 3 digit Arabic Thousands Separator Arabic Decimal Separator arab
ar-DZ Arabic (Algeria) 3 digit Period Comma latn
ar-EG Arabic (Egypt) 3 digit Arabic Thousands Separator Arabic Decimal Separator arab
ar-EH Arabic (Western Sahara) 3 digit Comma Period latn
ar-ER Arabic (Eritrea) 3 digit Arabic Thousands Separator Arabic Decimal Separator arab
ar-IL Arabic (Israel) 3 digit Arabic Thousands Separator Arabic Decimal Separator arab
ar-IQ Arabic (Iraq) 3 digit Arabic Thousands Separator Arabic Decimal Separator arab
ar-JO Arabic (Jordan) 3 digit Arabic Thousands Separator Arabic Decimal Separator arab
ar-KM Arabic (Comoros) 3 digit Arabic Thousands Separator Arabic Decimal Separator arab
ar-KW Arabic (Kuwait) 3 digit Arabic Thousands Separator Arabic Decimal Separator arab
ar-LB Arabic (Lebanon) 3 digit Arabic Thousands Separator Arabic Decimal Separator arab
ar-LY Arabic (Libya) 3 digit Period Comma latn
ar-MA Arabic (Morocco) 3 digit Period Comma latn
ar-MR Arabic (Mauritania) 3 digit Arabic Thousands Separator Arabic Decimal Separator arab
ar-OM Arabic (Oman) 3 digit Arabic Thousands Separator Arabic Decimal Separator arab
ar-PS Arabic (Palestinian Territories) 3 digit Arabic Thousands Separator Arabic Decimal Separator arab
ar-QA Arabic (Qatar) 3 digit Arabic Thousands Separator Arabic Decimal Separator arab
ar-SA Arabic (Saudi Arabia) 3 digit Arabic Thousands Separator Arabic Decimal Separator arab
ar-SD Arabic (Sudan) 3 digit Arabic Thousands Separator Arabic Decimal Separator arab
ar-SO Arabic (Somalia) 3 digit Arabic Thousands Separator Arabic Decimal Separator arab
ar-SS Arabic (South Sudan) 3 digit Arabic Thousands Separator Arabic Decimal Separator arab
ar-SY Arabic (Syria) 3 digit Arabic Thousands Separator Arabic Decimal Separator arab
ar-TD Arabic (Chad) 3 digit Arabic Thousands Separator Arabic Decimal Separator arab
ar-TN Arabic (Tunisia) 3 digit Period Comma latn
ar-YE Arabic (Yemen) 3 digit Arabic Thousands Separator Arabic Decimal Separator arab
as Assamese 2 digit Comma Period beng
as-IN Assamese (India) 2 digit Comma Period beng
asa Asu 3 digit Comma Period latn
asa-TZ Asu (Tanzania) 3 digit Comma Period latn
ast Asturian 3 digit Period Comma latn
ast-ES Asturian (Spain) 3 digit Period Comma latn
az Azerbaijani 3 digit Period Comma latn
az-Cyrl Azerbaijani (Cyrillic) 3 digit Period Comma latn
az-Cyrl-AZ Azerbaijani (Cyrillic, Azerbaijan) 3 digit Period Comma latn
az-Latn Azerbaijani (Latin) 3 digit Period Comma latn
az-Latn-AZ Azerbaijani (Latin, Azerbaijan) 3 digit Period Comma latn
bas Basaa 3 digit No-Break Space Comma latn
bas-CM Basaa (Cameroon) 3 digit No-Break Space Comma latn
be Belarusian 3 digit No-Break Space Comma latn
be-BY Belarusian (Belarus) 3 digit No-Break Space Comma latn
bem Bemba 3 digit Comma Period latn
bem-ZM Bemba (Zambia) 3 digit Comma Period latn
bez Bena 3 digit Comma Period latn
bez-TZ Bena (Tanzania) 3 digit Comma Period latn
bg Bulgarian 3 digit No-Break Space Comma latn
bg-BG Bulgarian (Bulgaria) 3 digit No-Break Space Comma latn
bm Bambara 3 digit Comma Period latn
bm-ML Bambara (Mali) 3 digit Comma Period latn
bn Bangla 2 digit Comma Period beng
bn-BD Bangla (Bangladesh) 2 digit Comma Period beng
bn-IN Bangla (India) 2 digit Comma Period beng
bo Tibetan 3 digit Comma Period latn
bo-CN Tibetan (China) 3 digit Comma Period latn
bo-IN Tibetan (India) 3 digit Comma Period latn
br Breton 3 digit No-Break Space Comma latn
br-FR Breton (France) 3 digit No-Break Space Comma latn
brx Bodo 2 digit Comma Period latn
brx-IN Bodo (India) 2 digit Comma Period latn
bs Bosnian 3 digit Period Comma latn
bs-Cyrl Bosnian (Cyrillic) 3 digit Period Comma latn
bs-Cyrl-BA Bosnian (Cyrillic, Bosnia & Herzegovina) 3 digit Period Comma latn
bs-Latn Bosnian (Latin) 3 digit Period Comma latn
bs-Latn-BA Bosnian (Latin, Bosnia & Herzegovina) 3 digit Period Comma latn
ca Catalan 3 digit Period Comma latn
ca-AD Catalan (Andorra) 3 digit Period Comma latn
ca-ES Catalan (Spain) 3 digit Period Comma latn
ca-FR Catalan (France) 3 digit Period Comma latn
ca-IT Catalan (Italy) 3 digit Period Comma latn
ccp Chakma 2 digit Comma Period cakm
ccp-BD Chakma (Bangladesh) 2 digit Comma Period cakm
ccp-IN Chakma (India) 2 digit Comma Period cakm
ce Chechen 3 digit Comma Period latn
ce-RU Chechen (Russia) 3 digit Comma Period latn
cgg Chiga 3 digit Comma Period latn
cgg-UG Chiga (Uganda) 3 digit Comma Period latn
chr Cherokee 3 digit Comma Period latn
chr-US Cherokee (United States) 3 digit Comma Period latn
ckb Central Kurdish 3 digit Arabic Thousands Separator Arabic Decimal Separator arab
ckb-IQ Central Kurdish (Iraq) 3 digit Arabic Thousands Separator Arabic Decimal Separator arab
ckb-IR Central Kurdish (Iran) 3 digit Arabic Thousands Separator Arabic Decimal Separator arab
cs Czech 3 digit No-Break Space Comma latn
cs-CZ Czech (Czechia) 3 digit No-Break Space Comma latn
cy Welsh 3 digit Comma Period latn
cy-GB Welsh (United Kingdom) 3 digit Comma Period latn
da Danish 3 digit Period Comma latn
da-DK Danish (Denmark) 3 digit Period Comma latn
da-GL Danish (Greenland) 3 digit Period Comma latn
dav Taita 3 digit Comma Period latn
dav-KE Taita (Kenya) 3 digit Comma Period latn
de German 3 digit Period Comma latn
de-AT German (Austria) 3 digit No-Break Space Comma latn
de-BE German (Belgium) 3 digit Period Comma latn
de-CH German (Switzerland) 3 digit Right Single Quotation Mark Period latn
de-DE German (Germany) 3 digit Period Comma latn
de-IT German (Italy) 3 digit Period Comma latn
de-LI German (Liechtenstein) 3 digit Right Single Quotation Mark Period latn
de-LU German (Luxembourg) 3 digit Period Comma latn
dje Zarma 3 digit No-Break Space Period latn
dje-NE Zarma (Niger) 3 digit No-Break Space Period latn
dsb Lower Sorbian 3 digit Period Comma latn
dsb-DE Lower Sorbian (Germany) 3 digit Period Comma latn
dua Duala 3 digit No-Break Space Comma latn
dua-CM Duala (Cameroon) 3 digit No-Break Space Comma latn
dyo Jola-Fonyi 3 digit No-Break Space Comma latn
dyo-SN Jola-Fonyi (Senegal) 3 digit No-Break Space Comma latn
dz Dzongkha 2 digit Comma Period tibt
dz-BT Dzongkha (Bhutan) 2 digit Comma Period tibt
ebu Embu 3 digit Comma Period latn
ebu-KE Embu (Kenya) 3 digit Comma Period latn
ee Ewe 3 digit Comma Period latn
ee-GH Ewe (Ghana) 3 digit Comma Period latn
ee-TG Ewe (Togo) 3 digit Comma Period latn
el Greek 3 digit Period Comma latn
el-CY Greek (Cyprus) 3 digit Period Comma latn
el-GR Greek (Greece) 3 digit Period Comma latn
en English 3 digit Comma Period latn
en-001 English (World) 3 digit Comma Period latn
en-150 English (Europe) 3 digit Comma Period latn
en-AG English (Antigua & Barbuda) 3 digit Comma Period latn
en-AI English (Anguilla) 3 digit Comma Period latn
en-AS English (American Samoa) 3 digit Comma Period latn
en-AT English (Austria) 3 digit Period Comma latn
en-AU English (Australia) 3 digit Comma Period latn
en-BB English (Barbados) 3 digit Comma Period latn
en-BE English (Belgium) 3 digit Period Comma latn
en-BI English (Burundi) 3 digit Comma Period latn
en-BM English (Bermuda) 3 digit Comma Period latn
en-BS English (Bahamas) 3 digit Comma Period latn
en-BW English (Botswana) 3 digit Comma Period latn
en-BZ English (Belize) 3 digit Comma Period latn
en-CA English (Canada) 3 digit Comma Period latn
en-CC English (Cocos [Keeling] Islands) 3 digit Comma Period latn
en-CH English (Switzerland) 3 digit Right Single Quotation Mark Period latn
en-CK English (Cook Islands) 3 digit Comma Period latn
en-CM English (Cameroon) 3 digit Comma Period latn
en-CX English (Christmas Island) 3 digit Comma Period latn
en-CY English (Cyprus) 3 digit Comma Period latn
en-DE English (Germany) 3 digit Period Comma latn
en-DG English (Diego Garcia) 3 digit Comma Period latn
en-DK English (Denmark) 3 digit Period Comma latn
en-DM English (Dominica) 3 digit Comma Period latn
en-ER English (Eritrea) 3 digit Comma Period latn
en-FI English (Finland) 3 digit No-Break Space Comma latn
en-FJ English (Fiji) 3 digit Comma Period latn
en-FK English (Falkland Islands) 3 digit Comma Period latn
en-FM English (Micronesia) 3 digit Comma Period latn
en-GB English (United Kingdom) 3 digit Comma Period latn
en-GD English (Grenada) 3 digit Comma Period latn
en-GG English (Guernsey) 3 digit Comma Period latn
en-GH English (Ghana) 3 digit Comma Period latn
en-GI English (Gibraltar) 3 digit Comma Period latn
en-GM English (Gambia) 3 digit Comma Period latn
en-GU English (Guam) 3 digit Comma Period latn
en-GY English (Guyana) 3 digit Comma Period latn
en-HK English (Hong Kong SAR China) 3 digit Comma Period latn
en-IE English (Ireland) 3 digit Comma Period latn
en-IL English (Israel) 3 digit Comma Period latn
en-IM English (Isle of Man) 3 digit Comma Period latn
en-IN English (India) 2 digit Comma Period latn
en-IO English (British Indian Ocean Territory) 3 digit Comma Period latn
en-JE English (Jersey) 3 digit Comma Period latn
en-JM English (Jamaica) 3 digit Comma Period latn
en-KE English (Kenya) 3 digit Comma Period latn
en-KI English (Kiribati) 3 digit Comma Period latn
en-KN English (St. Kitts & Nevis) 3 digit Comma Period latn
en-KY English (Cayman Islands) 3 digit Comma Period latn
en-LC English (St. Lucia) 3 digit Comma Period latn
en-LR English (Liberia) 3 digit Comma Period latn
en-LS English (Lesotho) 3 digit Comma Period latn
en-MG English (Madagascar) 3 digit Comma Period latn
en-MH English (Marshall Islands) 3 digit Comma Period latn
en-MO English (Macau SAR China) 3 digit Comma Period latn
en-MP English (Northern Mariana Islands) 3 digit Comma Period latn
en-MS English (Montserrat) 3 digit Comma Period latn
en-MT English (Malta) 3 digit Comma Period latn
en-MU English (Mauritius) 3 digit Comma Period latn
en-MW English (Malawi) 3 digit Comma Period latn
en-MY English (Malaysia) 3 digit Comma Period latn
en-NA English (Namibia) 3 digit Comma Period latn
en-NF English (Norfolk Island) 3 digit Comma Period latn
en-NG English (Nigeria) 3 digit Comma Period latn
en-NL English (Netherlands) 3 digit Period Comma latn
en-NR English (Nauru) 3 digit Comma Period latn
en-NU English (Niue) 3 digit Comma Period latn
en-NZ English (New Zealand) 3 digit Comma Period latn
en-PG English (Papua New Guinea) 3 digit Comma Period latn
en-PH English (Philippines) 3 digit Comma Period latn
en-PK English (Pakistan) 3 digit Comma Period latn
en-PN English (Pitcairn Islands) 3 digit Comma Period latn
en-PR English (Puerto Rico) 3 digit Comma Period latn
en-PW English (Palau) 3 digit Comma Period latn
en-RW English (Rwanda) 3 digit Comma Period latn
en-SB English (Solomon Islands) 3 digit Comma Period latn
en-SC English (Seychelles) 3 digit Comma Period latn
en-SD English (Sudan) 3 digit Comma Period latn
en-SE English (Sweden) 3 digit No-Break Space Comma latn
en-SG English (Singapore) 3 digit Comma Period latn
en-SH English (St. Helena) 3 digit Comma Period latn
en-SI English (Slovenia) 3 digit Period Comma latn
en-SL English (Sierra Leone) 3 digit Comma Period latn
en-SS English (South Sudan) 3 digit Comma Period latn
en-SX English (Sint Maarten) 3 digit Comma Period latn
en-SZ English (Swaziland) 3 digit Comma Period latn
en-TC English (Turks & Caicos Islands) 3 digit Comma Period latn
en-TK English (Tokelau) 3 digit Comma Period latn
en-TO English (Tonga) 3 digit Comma Period latn
en-TT English (Trinidad & Tobago) 3 digit Comma Period latn
en-TV English (Tuvalu) 3 digit Comma Period latn
en-TZ English (Tanzania) 3 digit Comma Period latn
en-UG English (Uganda) 3 digit Comma Period latn
en-UM English (U.S. Outlying Islands) 3 digit Comma Period latn
en-US English (United States) 3 digit Comma Period latn
en-VC English (St. Vincent & Grenadines) 3 digit Comma Period latn
en-VG English (British Virgin Islands) 3 digit Comma Period latn
en-VI English (U.S. Virgin Islands) 3 digit Comma Period latn
en-VU English (Vanuatu) 3 digit Comma Period latn
en-WS English (Samoa) 3 digit Comma Period latn
en-ZA English (South Africa) 3 digit No-Break Space Comma latn
en-ZM English (Zambia) 3 digit Comma Period latn
en-ZW English (Zimbabwe) 3 digit Comma Period latn
eo Esperanto 3 digit No-Break Space Comma latn
es Spanish 3 digit Period Comma latn
es-419 Spanish (Latin America) 3 digit Comma Period latn
es-AR Spanish (Argentina) 3 digit Period Comma latn
es-BO Spanish (Bolivia) 3 digit Period Comma latn
es-BR Spanish (Brazil) 3 digit Comma Period latn
es-BZ Spanish (Belize) 3 digit Comma Period latn
es-CL Spanish (Chile) 3 digit Period Comma latn
es-CO Spanish (Colombia) 3 digit Period Comma latn
es-CR Spanish (Costa Rica) 3 digit No-Break Space Comma latn
es-CU Spanish (Cuba) 3 digit Comma Period latn
es-DO Spanish (Dominican Republic) 3 digit Comma Period latn
es-EA Spanish (Ceuta & Melilla) 3 digit Period Comma latn
es-EC Spanish (Ecuador) 3 digit Period Comma latn
es-ES Spanish (Spain) 3 digit Period Comma latn
es-GQ Spanish (Equatorial Guinea) 3 digit Period Comma latn
es-GT Spanish (Guatemala) 3 digit Comma Period latn
es-HN Spanish (Honduras) 3 digit Comma Period latn
es-IC Spanish (Canary Islands) 3 digit Period Comma latn
es-MX Spanish (Mexico) 3 digit Comma Period latn
es-NI Spanish (Nicaragua) 3 digit Comma Period latn
es-PA Spanish (Panama) 3 digit Comma Period latn
es-PE Spanish (Peru) 3 digit Comma Period latn
es-PH Spanish (Philippines) 3 digit Period Comma latn
es-PR Spanish (Puerto Rico) 3 digit Comma Period latn
es-PY Spanish (Paraguay) 3 digit Period Comma latn
es-SV Spanish (El Salvador) 3 digit Comma Period latn
es-US Spanish (United States) 3 digit Comma Period latn
es-UY Spanish (Uruguay) 3 digit Period Comma latn
es-VE Spanish (Venezuela) 3 digit Period Comma latn
et Estonian 3 digit No-Break Space Comma latn
et-EE Estonian (Estonia) 3 digit No-Break Space Comma latn
eu Basque 3 digit Period Comma latn
eu-ES Basque (Spain) 3 digit Period Comma latn
ewo Ewondo 3 digit No-Break Space Comma latn
ewo-CM Ewondo (Cameroon) 3 digit No-Break Space Comma latn
fa Persian 3 digit Arabic Thousands Separator Arabic Decimal Separator arabext
fa-AF Persian (Afghanistan) 3 digit Arabic Thousands Separator Arabic Decimal Separator arabext
fa-IR Persian (Iran) 3 digit Arabic Thousands Separator Arabic Decimal Separator arabext
ff Fulah 3 digit No-Break Space Comma latn
ff-CM Fulah (Cameroon) 3 digit No-Break Space Comma latn
ff-GN Fulah (Guinea) 3 digit No-Break Space Comma latn
ff-MR Fulah (Mauritania) 3 digit No-Break Space Comma latn
ff-SN Fulah (Senegal) 3 digit No-Break Space Comma latn
fi Finnish 3 digit No-Break Space Comma latn
fi-FI Finnish (Finland) 3 digit No-Break Space Comma latn
fil Filipino 3 digit Comma Period latn
fil-PH Filipino (Philippines) 3 digit Comma Period latn
fo Faroese 3 digit Period Comma latn
fo-DK Faroese (Denmark) 3 digit Period Comma latn
fo-FO Faroese (Faroe Islands) 3 digit Period Comma latn
fr French 3 digit Narrow No-Break Space Comma latn
fr-BE French (Belgium) 3 digit Narrow No-Break Space Comma latn
fr-BF French (Burkina Faso) 3 digit Narrow No-Break Space Comma latn
fr-BI French (Burundi) 3 digit Narrow No-Break Space Comma latn
fr-BJ French (Benin) 3 digit Narrow No-Break Space Comma latn
fr-BL French (St. Barthélemy) 3 digit Narrow No-Break Space Comma latn
fr-CA French (Canada) 3 digit No-Break Space Comma latn
fr-CD French (Congo - Kinshasa) 3 digit Narrow No-Break Space Comma latn
fr-CF French (Central African Republic) 3 digit Narrow No-Break Space Comma latn
fr-CG French (Congo - Brazzaville) 3 digit Narrow No-Break Space Comma latn
fr-CH French (Switzerland) 3 digit Narrow No-Break Space Comma latn
fr-CI French (Côte d’Ivoire) 3 digit Narrow No-Break Space Comma latn
fr-CM French (Cameroon) 3 digit Narrow No-Break Space Comma latn
fr-DJ French (Djibouti) 3 digit Narrow No-Break Space Comma latn
fr-DZ French (Algeria) 3 digit Narrow No-Break Space Comma latn
fr-FR French (France) 3 digit Narrow No-Break Space Comma latn
fr-GA French (Gabon) 3 digit Narrow No-Break Space Comma latn
fr-GF French (French Guiana) 3 digit Narrow No-Break Space Comma latn
fr-GN French (Guinea) 3 digit Narrow No-Break Space Comma latn
fr-GP French (Guadeloupe) 3 digit Narrow No-Break Space Comma latn
fr-GQ French (Equatorial Guinea) 3 digit Narrow No-Break Space Comma latn
fr-HT French (Haiti) 3 digit Narrow No-Break Space Comma latn
fr-KM French (Comoros) 3 digit Narrow No-Break Space Comma latn
fr-LU French (Luxembourg) 3 digit Period Comma latn
fr-MA French (Morocco) 3 digit Period Comma latn
fr-MC French (Monaco) 3 digit Narrow No-Break Space Comma latn
fr-MF French (St. Martin) 3 digit Narrow No-Break Space Comma latn
fr-MG French (Madagascar) 3 digit Narrow No-Break Space Comma latn
fr-ML French (Mali) 3 digit Narrow No-Break Space Comma latn
fr-MQ French (Martinique) 3 digit Narrow No-Break Space Comma latn
fr-MR French (Mauritania) 3 digit Narrow No-Break Space Comma latn
fr-MU French (Mauritius) 3 digit Narrow No-Break Space Comma latn
fr-NC French (New Caledonia) 3 digit Narrow No-Break Space Comma latn
fr-NE French (Niger) 3 digit Narrow No-Break Space Comma latn
fr-PF French (French Polynesia) 3 digit Narrow No-Break Space Comma latn
fr-PM French (St. Pierre & Miquelon) 3 digit Narrow No-Break Space Comma latn
fr-RE French (Réunion) 3 digit Narrow No-Break Space Comma latn
fr-RW French (Rwanda) 3 digit Narrow No-Break Space Comma latn
fr-SC French (Seychelles) 3 digit Narrow No-Break Space Comma latn
fr-SN French (Senegal) 3 digit Narrow No-Break Space Comma latn
fr-SY French (Syria) 3 digit Narrow No-Break Space Comma latn
fr-TD French (Chad) 3 digit Narrow No-Break Space Comma latn
fr-TG French (Togo) 3 digit Narrow No-Break Space Comma latn
fr-TN French (Tunisia) 3 digit Narrow No-Break Space Comma latn
fr-VU French (Vanuatu) 3 digit Narrow No-Break Space Comma latn
fr-WF French (Wallis & Futuna) 3 digit Narrow No-Break Space Comma latn
fr-YT French (Mayotte) 3 digit Narrow No-Break Space Comma latn
fur Friulian 3 digit Period Comma latn
fur-IT Friulian (Italy) 3 digit Period Comma latn
fy Western Frisian 3 digit Period Comma latn
fy-NL Western Frisian (Netherlands) 3 digit Period Comma latn
ga Irish 3 digit Comma Period latn
ga-IE Irish (Ireland) 3 digit Comma Period latn
gd Scottish Gaelic 3 digit Comma Period latn
gd-GB Scottish Gaelic (United Kingdom) 3 digit Comma Period latn
gl Galician 3 digit Period Comma latn
gl-ES Galician (Spain) 3 digit Period Comma latn
gsw Swiss German 3 digit Right Single Quotation Mark Period latn
gsw-CH Swiss German (Switzerland) 3 digit Right Single Quotation Mark Period latn
gsw-FR Swiss German (France) 3 digit Right Single Quotation Mark Period latn
gsw-LI Swiss German (Liechtenstein) 3 digit Right Single Quotation Mark Period latn
gu Gujarati 2 digit Comma Period latn
gu-IN Gujarati (India) 2 digit Comma Period latn
guz Gusii 3 digit Comma Period latn
guz-KE Gusii (Kenya) 3 digit Comma Period latn
gv Manx 3 digit Comma Period latn
gv-IM Manx (Isle of Man) 3 digit Comma Period latn
ha Hausa 3 digit Comma Period latn
ha-GH Hausa (Ghana) 3 digit Comma Period latn
ha-NE Hausa (Niger) 3 digit Comma Period latn
ha-NG Hausa (Nigeria) 3 digit Comma Period latn
haw Hawaiian 3 digit Comma Period latn
haw-US Hawaiian (United States) 3 digit Comma Period latn
he Hebrew 3 digit Comma Period latn
he-IL Hebrew (Israel) 3 digit Comma Period latn
hi Hindi 2 digit Comma Period latn
hi-IN Hindi (India) 2 digit Comma Period latn
hr Croatian 3 digit Period Comma latn
hr-BA Croatian (Bosnia & Herzegovina) 3 digit Period Comma latn
hr-HR Croatian (Croatia) 3 digit Period Comma latn
hsb Upper Sorbian 3 digit Period Comma latn
hsb-DE Upper Sorbian (Germany) 3 digit Period Comma latn
hu Hungarian 3 digit No-Break Space Comma latn
hu-HU Hungarian (Hungary) 3 digit No-Break Space Comma latn
hy Armenian 3 digit No-Break Space Comma latn
hy-AM Armenian (Armenia) 3 digit No-Break Space Comma latn
id Indonesian 3 digit Period Comma latn
id-ID Indonesian (Indonesia) 3 digit Period Comma latn
ig Igbo 3 digit Comma Period latn
ig-NG Igbo (Nigeria) 3 digit Comma Period latn
ii Sichuan Yi 3 digit Comma Period latn
ii-CN Sichuan Yi (China) 3 digit Comma Period latn
is Icelandic 3 digit Period Comma latn
is-IS Icelandic (Iceland) 3 digit Period Comma latn
it Italian 3 digit Period Comma latn
it-CH Italian (Switzerland) 3 digit Right Single Quotation Mark Period latn
it-IT Italian (Italy) 3 digit Period Comma latn
it-SM Italian (San Marino) 3 digit Period Comma latn
it-VA Italian (Vatican City) 3 digit Period Comma latn
ja Japanese 3 digit Comma Period latn
ja-JP Japanese (Japan) 3 digit Comma Period latn
jgo Ngomba 3 digit Period Comma latn
jgo-CM Ngomba (Cameroon) 3 digit Period Comma latn
jmc Machame 3 digit Comma Period latn
jmc-TZ Machame (Tanzania) 3 digit Comma Period latn
ka Georgian 3 digit No-Break Space Comma latn
ka-GE Georgian (Georgia) 3 digit No-Break Space Comma latn
kab Kabyle 3 digit No-Break Space Comma latn
kab-DZ Kabyle (Algeria) 3 digit No-Break Space Comma latn
kam Kamba 3 digit Comma Period latn
kam-KE Kamba (Kenya) 3 digit Comma Period latn
kde Makonde 3 digit Comma Period latn
kde-TZ Makonde (Tanzania) 3 digit Comma Period latn
kea Kabuverdianu 3 digit No-Break Space Comma latn
kea-CV Kabuverdianu (Cape Verde) 3 digit No-Break Space Comma latn
khq Koyra Chiini 3 digit No-Break Space Period latn
khq-ML Koyra Chiini (Mali) 3 digit No-Break Space Period latn
ki Kikuyu 3 digit Comma Period latn
ki-KE Kikuyu (Kenya) 3 digit Comma Period latn
kk Kazakh 3 digit No-Break Space Comma latn
kk-KZ Kazakh (Kazakhstan) 3 digit No-Break Space Comma latn
kkj Kako 3 digit Period Comma latn
kkj-CM Kako (Cameroon) 3 digit Period Comma latn
kl Kalaallisut 3 digit Period Comma latn
kl-GL Kalaallisut (Greenland) 3 digit Period Comma latn
kln Kalenjin 3 digit Comma Period latn
kln-KE Kalenjin (Kenya) 3 digit Comma Period latn
km Khmer 3 digit Period Comma latn
km-KH Khmer (Cambodia) 3 digit Period Comma latn
kn Kannada 3 digit Comma Period latn
kn-IN Kannada (India) 3 digit Comma Period latn
ko Korean 3 digit Comma Period latn
ko-KP Korean (North Korea) 3 digit Comma Period latn
ko-KR Korean (South Korea) 3 digit Comma Period latn
kok Konkani 3 digit Comma Period latn
kok-IN Konkani (India) 3 digit Comma Period latn
ks Kashmiri 3 digit Arabic Thousands Separator Arabic Decimal Separator arabext
ks-IN Kashmiri (India) 3 digit Arabic Thousands Separator Arabic Decimal Separator arabext
ksb Shambala 3 digit Comma Period latn
ksb-TZ Shambala (Tanzania) 3 digit Comma Period latn
ksf Bafia 3 digit No-Break Space Comma latn
ksf-CM Bafia (Cameroon) 3 digit No-Break Space Comma latn
ksh Colognian 3 digit No-Break Space Comma latn
ksh-DE Colognian (Germany) 3 digit No-Break Space Comma latn
kw Cornish 3 digit Comma Period latn
kw-GB Cornish (United Kingdom) 3 digit Comma Period latn
ky Kyrgyz 3 digit No-Break Space Comma latn
ky-KG Kyrgyz (Kyrgyzstan) 3 digit No-Break Space Comma latn
lag Langi 3 digit Comma Period latn
lag-TZ Langi (Tanzania) 3 digit Comma Period latn
lb Luxembourgish 3 digit Period Comma latn
lb-LU Luxembourgish (Luxembourg) 3 digit Period Comma latn
lg Ganda 3 digit Comma Period latn
lg-UG Ganda (Uganda) 3 digit Comma Period latn
lkt Lakota 3 digit Comma Period latn
lkt-US Lakota (United States) 3 digit Comma Period latn
ln Lingala 3 digit Period Comma latn
ln-AO Lingala (Angola) 3 digit Period Comma latn
ln-CD Lingala (Congo - Kinshasa) 3 digit Period Comma latn
ln-CF Lingala (Central African Republic) 3 digit Period Comma latn
ln-CG Lingala (Congo - Brazzaville) 3 digit Period Comma latn
lo Lao 3 digit Period Comma latn
lo-LA Lao (Laos) 3 digit Period Comma latn
lrc Northern Luri 3 digit Arabic Thousands Separator Arabic Decimal Separator arabext
lrc-IQ Northern Luri (Iraq) 3 digit Arabic Thousands Separator Arabic Decimal Separator arabext
lrc-IR Northern Luri (Iran) 3 digit Arabic Thousands Separator Arabic Decimal Separator arabext
lt Lithuanian 3 digit No-Break Space Comma latn
lt-LT Lithuanian (Lithuania) 3 digit No-Break Space Comma latn
lu Luba-Katanga 3 digit Period Comma latn
lu-CD Luba-Katanga (Congo - Kinshasa) 3 digit Period Comma latn
luo Luo 3 digit Comma Period latn
luo-KE Luo (Kenya) 3 digit Comma Period latn
luy Luyia 3 digit Comma Period latn
luy-KE Luyia (Kenya) 3 digit Comma Period latn
lv Latvian 3 digit No-Break Space Comma latn
lv-LV Latvian (Latvia) 3 digit No-Break Space Comma latn
mas Masai 3 digit Comma Period latn
mas-KE Masai (Kenya) 3 digit Comma Period latn
mas-TZ Masai (Tanzania) 3 digit Comma Period latn
mer Meru 3 digit Comma Period latn
mer-KE Meru (Kenya) 3 digit Comma Period latn
mfe Morisyen 3 digit No-Break Space Period latn
mfe-MU Morisyen (Mauritius) 3 digit No-Break Space Period latn
mg Malagasy 3 digit Comma Period latn
mg-MG Malagasy (Madagascar) 3 digit Comma Period latn
mgh Makhuwa-Meetto 3 digit Period Comma latn
mgh-MZ Makhuwa-Meetto (Mozambique) 3 digit Period Comma latn
mgo Metaʼ 3 digit Comma Period latn
mgo-CM Metaʼ (Cameroon) 3 digit Comma Period latn
mk Macedonian 3 digit Period Comma latn
mk-MK Macedonian (Macedonia) 3 digit Period Comma latn
ml Malayalam 2 digit Comma Period latn
ml-IN Malayalam (India) 2 digit Comma Period latn
mn Mongolian 3 digit Comma Period latn
mn-MN Mongolian (Mongolia) 3 digit Comma Period latn
mr Marathi 2 digit Comma Period deva
mr-IN Marathi (India) 2 digit Comma Period deva
ms Malay 3 digit Comma Period latn
ms-BN Malay (Brunei) 3 digit Period Comma latn
ms-MY Malay (Malaysia) 3 digit Comma Period latn
ms-SG Malay (Singapore) 3 digit Comma Period latn
mt Maltese 3 digit Comma Period latn
mt-MT Maltese (Malta) 3 digit Comma Period latn
mua Mundang 3 digit Period Comma latn
mua-CM Mundang (Cameroon) 3 digit Period Comma latn
my Burmese 3 digit Comma Period mymr
my-MM Burmese (Myanmar [Burma]) 3 digit Comma Period mymr
mzn Mazanderani 3 digit Arabic Thousands Separator Arabic Decimal Separator arabext
mzn-IR Mazanderani (Iran) 3 digit Arabic Thousands Separator Arabic Decimal Separator arabext
naq Nama 3 digit Comma Period latn
naq-NA Nama (Namibia) 3 digit Comma Period latn
nb Norwegian Bokmål 3 digit No-Break Space Comma latn
nb-NO Norwegian Bokmål (Norway) 3 digit No-Break Space Comma latn
nb-SJ Norwegian Bokmål (Svalbard & Jan Mayen) 3 digit No-Break Space Comma latn
nd North Ndebele 3 digit Comma Period latn
nd-ZW North Ndebele (Zimbabwe) 3 digit Comma Period latn
nds Low German 3 digit Comma Period latn
nds-DE Low German (Germany) 3 digit Comma Period latn
nds-NL Low German (Netherlands) 3 digit Comma Period latn
ne Nepali 2 digit Comma Period deva
ne-IN Nepali (India) 2 digit Comma Period deva
ne-NP Nepali (Nepal) 2 digit Comma Period deva
nl Dutch 3 digit Period Comma latn
nl-AW Dutch (Aruba) 3 digit Period Comma latn
nl-BE Dutch (Belgium) 3 digit Period Comma latn
nl-BQ Dutch (Caribbean Netherlands) 3 digit Period Comma latn
nl-CW Dutch (Curaçao) 3 digit Period Comma latn
nl-NL Dutch (Netherlands) 3 digit Period Comma latn
nl-SR Dutch (Suriname) 3 digit Period Comma latn
nl-SX Dutch (Sint Maarten) 3 digit Period Comma latn
nmg Kwasio 3 digit No-Break Space Comma latn
nmg-CM Kwasio (Cameroon) 3 digit No-Break Space Comma latn
nn Norwegian Nynorsk 3 digit No-Break Space Comma latn
nn-NO Norwegian Nynorsk (Norway) 3 digit No-Break Space Comma latn
nnh Ngiemboon 3 digit Period Comma latn
nnh-CM Ngiemboon (Cameroon) 3 digit Period Comma latn
nus Nuer 3 digit Comma Period latn
nus-SS Nuer (South Sudan) 3 digit Comma Period latn
nyn Nyankole 3 digit Comma Period latn
nyn-UG Nyankole (Uganda) 3 digit Comma Period latn
om Oromo 3 digit Comma Period latn
om-ET Oromo (Ethiopia) 3 digit Comma Period latn
om-KE Oromo (Kenya) 3 digit Comma Period latn
or Odia 2 digit Comma Period latn
or-IN Odia (India) 2 digit Comma Period latn
os Ossetic 3 digit No-Break Space Comma latn
os-GE Ossetic (Georgia) 3 digit No-Break Space Comma latn
os-RU Ossetic (Russia) 3 digit No-Break Space Comma latn
pa Punjabi 2 digit Comma Period latn
pa-Arab Punjabi (Arabic) 3 digit Arabic Thousands Separator Arabic Decimal Separator arabext
pa-Arab-PK Punjabi (Arabic, Pakistan) 3 digit Arabic Thousands Separator Arabic Decimal Separator arabext
pa-Guru Punjabi (Gurmukhi) 2 digit Comma Period latn
pa-Guru-IN Punjabi (Gurmukhi, India) 2 digit Comma Period latn
pl Polish 3 digit No-Break Space Comma latn
pl-PL Polish (Poland) 3 digit No-Break Space Comma latn
ps Pashto 3 digit Arabic Thousands Separator Arabic Decimal Separator arabext
ps-AF Pashto (Afghanistan) 3 digit Arabic Thousands Separator Arabic Decimal Separator arabext
pt Portuguese 3 digit Period Comma latn
pt-AO Portuguese (Angola) 3 digit No-Break Space Comma latn
pt-BR Portuguese (Brazil) 3 digit Period Comma latn
pt-CH Portuguese (Switzerland) 3 digit No-Break Space Comma latn
pt-CV Portuguese (Cape Verde) 3 digit No-Break Space Comma latn
pt-GQ Portuguese (Equatorial Guinea) 3 digit No-Break Space Comma latn
pt-GW Portuguese (Guinea-Bissau) 3 digit No-Break Space Comma latn
pt-LU Portuguese (Luxembourg) 3 digit No-Break Space Comma latn
pt-MO Portuguese (Macau SAR China) 3 digit No-Break Space Comma latn
pt-MZ Portuguese (Mozambique) 3 digit No-Break Space Comma latn
pt-PT Portuguese (Portugal) 3 digit No-Break Space Comma latn
pt-ST Portuguese (São Tomé & Príncipe) 3 digit No-Break Space Comma latn
pt-TL Portuguese (Timor-Leste) 3 digit No-Break Space Comma latn
qu Quechua 3 digit Comma Period latn
qu-BO Quechua (Bolivia) 3 digit Period Comma latn
qu-EC Quechua (Ecuador) 3 digit Comma Period latn
qu-PE Quechua (Peru) 3 digit Comma Period latn
rm Romansh 3 digit Right Single Quotation Mark Period latn
rm-CH Romansh (Switzerland) 3 digit Right Single Quotation Mark Period latn
rn Rundi 3 digit Period Comma latn
rn-BI Rundi (Burundi) 3 digit Period Comma latn
ro Romanian 3 digit Period Comma latn
ro-MD Romanian (Moldova) 3 digit Period Comma latn
ro-RO Romanian (Romania) 3 digit Period Comma latn
rof Rombo 3 digit Comma Period latn
rof-TZ Rombo (Tanzania) 3 digit Comma Period latn
ru Russian 3 digit No-Break Space Comma latn
ru-BY Russian (Belarus) 3 digit No-Break Space Comma latn
ru-KG Russian (Kyrgyzstan) 3 digit No-Break Space Comma latn
ru-KZ Russian (Kazakhstan) 3 digit No-Break Space Comma latn
ru-MD Russian (Moldova) 3 digit No-Break Space Comma latn
ru-RU Russian (Russia) 3 digit No-Break Space Comma latn
ru-UA Russian (Ukraine) 3 digit No-Break Space Comma latn
rw Kinyarwanda 3 digit Period Comma latn
rw-RW Kinyarwanda (Rwanda) 3 digit Period Comma latn
rwk Rwa 3 digit Comma Period latn
rwk-TZ Rwa (Tanzania) 3 digit Comma Period latn
sah Sakha 3 digit No-Break Space Comma latn
sah-RU Sakha (Russia) 3 digit No-Break Space Comma latn
saq Samburu 3 digit Comma Period latn
saq-KE Samburu (Kenya) 3 digit Comma Period latn
sbp Sangu 3 digit Comma Period latn
sbp-TZ Sangu (Tanzania) 3 digit Comma Period latn
se Northern Sami 3 digit No-Break Space Comma latn
se-FI Northern Sami (Finland) 3 digit No-Break Space Comma latn
se-NO Northern Sami (Norway) 3 digit No-Break Space Comma latn
se-SE Northern Sami (Sweden) 3 digit No-Break Space Comma latn
seh Sena 3 digit Period Comma latn
seh-MZ Sena (Mozambique) 3 digit Period Comma latn
ses Koyraboro Senni 3 digit No-Break Space Period latn
ses-ML Koyraboro Senni (Mali) 3 digit No-Break Space Period latn
sg Sango 3 digit Period Comma latn
sg-CF Sango (Central African Republic) 3 digit Period Comma latn
shi Tachelhit 3 digit No-Break Space Comma latn
shi-Latn Tachelhit (Latin) 3 digit No-Break Space Comma latn
shi-Latn-MA Tachelhit (Latin, Morocco) 3 digit No-Break Space Comma latn
shi-Tfng Tachelhit (Tifinagh) 3 digit No-Break Space Comma latn
shi-Tfng-MA Tachelhit (Tifinagh, Morocco) 3 digit No-Break Space Comma latn
si Sinhala 3 digit Comma Period latn
si-LK Sinhala (Sri Lanka) 3 digit Comma Period latn
sk Slovak 3 digit No-Break Space Comma latn
sk-SK Slovak (Slovakia) 3 digit No-Break Space Comma latn
sl Slovenian 3 digit Period Comma latn
sl-SI Slovenian (Slovenia) 3 digit Period Comma latn
smn Inari Sami 3 digit No-Break Space Comma latn
smn-FI Inari Sami (Finland) 3 digit No-Break Space Comma latn
sn Shona 3 digit Comma Period latn
sn-ZW Shona (Zimbabwe) 3 digit Comma Period latn
so Somali 3 digit Comma Period latn
so-DJ Somali (Djibouti) 3 digit Comma Period latn
so-ET Somali (Ethiopia) 3 digit Comma Period latn
so-KE Somali (Kenya) 3 digit Comma Period latn
so-SO Somali (Somalia) 3 digit Comma Period latn
sq Albanian 3 digit No-Break Space Comma latn
sq-AL Albanian (Albania) 3 digit No-Break Space Comma latn
sq-MK Albanian (Macedonia) 3 digit No-Break Space Comma latn
sq-XK Albanian (Kosovo) 3 digit No-Break Space Comma latn
sr Serbian 3 digit Period Comma latn
sr-Cyrl Serbian (Cyrillic) 3 digit Period Comma latn
sr-Cyrl-BA Serbian (Cyrillic, Bosnia & Herzegovina) 3 digit Period Comma latn
sr-Cyrl-ME Serbian (Cyrillic, Montenegro) 3 digit Period Comma latn
sr-Cyrl-RS Serbian (Cyrillic, Serbia) 3 digit Period Comma latn
sr-Cyrl-XK Serbian (Cyrillic, Kosovo) 3 digit Period Comma latn
sr-Latn Serbian (Latin) 3 digit Period Comma latn
sr-Latn-BA Serbian (Latin, Bosnia & Herzegovina) 3 digit Period Comma latn
sr-Latn-ME Serbian (Latin, Montenegro) 3 digit Period Comma latn
sr-Latn-RS Serbian (Latin, Serbia) 3 digit Period Comma latn
sr-Latn-XK Serbian (Latin, Kosovo) 3 digit Period Comma latn
sv Swedish 3 digit No-Break Space Comma latn
sv-AX Swedish (Åland Islands) 3 digit No-Break Space Comma latn
sv-FI Swedish (Finland) 3 digit No-Break Space Comma latn
sv-SE Swedish (Sweden) 3 digit No-Break Space Comma latn
sw Swahili 3 digit Comma Period latn
sw-CD Swahili (Congo - Kinshasa) 3 digit Period Comma latn
sw-KE Swahili (Kenya) 3 digit Comma Period latn
sw-TZ Swahili (Tanzania) 3 digit Comma Period latn
sw-UG Swahili (Uganda) 3 digit Comma Period latn
ta Tamil 2 digit Comma Period latn
ta-IN Tamil (India) 2 digit Comma Period latn
ta-LK Tamil (Sri Lanka) 2 digit Comma Period latn
ta-MY Tamil (Malaysia) 3 digit Comma Period latn
ta-SG Tamil (Singapore) 3 digit Comma Period latn
te Telugu 2 digit Comma Period latn
te-IN Telugu (India) 2 digit Comma Period latn
teo Teso 3 digit Comma Period latn
teo-KE Teso (Kenya) 3 digit Comma Period latn
teo-UG Teso (Uganda) 3 digit Comma Period latn
tg Tajik 3 digit No-Break Space Comma latn
tg-TJ Tajik (Tajikistan) 3 digit No-Break Space Comma latn
th Thai 3 digit Comma Period latn
th-TH Thai (Thailand) 3 digit Comma Period latn
ti Tigrinya 3 digit Comma Period latn
ti-ER Tigrinya (Eritrea) 3 digit Comma Period latn
ti-ET Tigrinya (Ethiopia) 3 digit Comma Period latn
to Tongan 3 digit Comma Period latn
to-TO Tongan (Tonga) 3 digit Comma Period latn
tr Turkish 3 digit Period Comma latn
tr-CY Turkish (Cyprus) 3 digit Period Comma latn
tr-TR Turkish (Turkey) 3 digit Period Comma latn
tt Tatar 3 digit No-Break Space Comma latn
tt-RU Tatar (Russia) 3 digit No-Break Space Comma latn
twq Tasawaq 3 digit No-Break Space Period latn
twq-NE Tasawaq (Niger) 3 digit No-Break Space Period latn
tzm Central Atlas Tamazight 3 digit No-Break Space Comma latn
tzm-MA Central Atlas Tamazight (Morocco) 3 digit No-Break Space Comma latn
ug Uyghur 3 digit Comma Period latn
ug-CN Uyghur (China) 3 digit Comma Period latn
uk Ukrainian 3 digit No-Break Space Comma latn
uk-UA Ukrainian (Ukraine) 3 digit No-Break Space Comma latn
ur Urdu 3 digit Comma Period latn
ur-IN Urdu (India) 3 digit Arabic Thousands Separator Arabic Decimal Separator arabext
ur-PK Urdu (Pakistan) 3 digit Comma Period latn
uz Uzbek 3 digit No-Break Space Comma latn
uz-Arab Uzbek (Arabic) 3 digit Arabic Thousands Separator Arabic Decimal Separator arabext
uz-Arab-AF Uzbek (Arabic, Afghanistan) 3 digit Arabic Thousands Separator Arabic Decimal Separator arabext
uz-Cyrl Uzbek (Cyrillic) 3 digit No-Break Space Comma latn
uz-Cyrl-UZ Uzbek (Cyrillic, Uzbekistan) 3 digit No-Break Space Comma latn
uz-Latn Uzbek (Latin) 3 digit No-Break Space Comma latn
uz-Latn-UZ Uzbek (Latin, Uzbekistan) 3 digit No-Break Space Comma latn
vai Vai 3 digit Comma Period latn
vai-Latn Vai (Latin) 3 digit Comma Period latn
vai-Latn-LR Vai (Latin, Liberia) 3 digit Comma Period latn
vai-Vaii Vai (Vai) 3 digit Comma Period latn
vai-Vaii-LR Vai (Vai, Liberia) 3 digit Comma Period latn
vi Vietnamese 3 digit Period Comma latn
vi-VN Vietnamese (Vietnam) 3 digit Period Comma latn
vun Vunjo 3 digit Comma Period latn
vun-TZ Vunjo (Tanzania) 3 digit Comma Period latn
wae Walser 3 digit Right Single Quotation Mark Comma latn
wae-CH Walser (Switzerland) 3 digit Right Single Quotation Mark Comma latn
wo Wolof 3 digit Period Comma latn
wo-SN Wolof (Senegal) 3 digit Period Comma latn
xog Soga 3 digit Comma Period latn
xog-UG Soga (Uganda) 3 digit Comma Period latn
yav Yangben 3 digit No-Break Space Comma latn
yav-CM Yangben (Cameroon) 3 digit No-Break Space Comma latn
yi Yiddish 3 digit Comma Period latn
yi-001 Yiddish (World) 3 digit Comma Period latn
yo Yoruba 3 digit Comma Period latn
yo-BJ Yoruba (Benin) 3 digit Comma Period latn
yo-NG Yoruba (Nigeria) 3 digit Comma Period latn
yue Cantonese 3 digit Comma Period latn
yue-Hans Cantonese (Simplified) 3 digit Comma Period latn
yue-Hans-CN Cantonese (Simplified, China) 3 digit Comma Period latn
yue-Hant Cantonese (Traditional) 3 digit Comma Period latn
yue-Hant-HK Cantonese (Traditional, Hong Kong SAR China) 3 digit Comma Period latn
zgh Standard Moroccan Tamazight 3 digit No-Break Space Comma latn
zgh-MA Standard Moroccan Tamazight (Morocco) 3 digit No-Break Space Comma latn
zh Chinese 3 digit Comma Period latn
zh-Hans Chinese (Simplified) 3 digit Comma Period latn
zh-Hans-CN Chinese (Simplified, China) 3 digit Comma Period latn
zh-Hans-HK Chinese (Simplified, Hong Kong SAR China) 3 digit Comma Period latn
zh-Hans-MO Chinese (Simplified, Macau SAR China) 3 digit Comma Period latn
zh-Hans-SG Chinese (Simplified, Singapore) 3 digit Comma Period latn
zh-Hant Chinese (Traditional) 3 digit Comma Period latn
zh-Hant-HK Chinese (Traditional, Hong Kong SAR China) 3 digit Comma Period latn
zh-Hant-MO Chinese (Traditional, Macau SAR China) 3 digit Comma Period latn
zh-Hant-TW Chinese (Traditional, Taiwan) 3 digit Comma Period latn
zu Zulu 3 digit Comma Period latn
zu-ZA Zulu (South Africa) 3 digit Comma Period latn

Руководство по форматированию

Наиболее распространённые примеры использования API Intl.NumberFormat для форматирования чисел в любом языке.

См.: Полная документация по API Intl.NumberFormat

Метод format() форматирует число в локализованную строку.

new Intl.NumberFormat('en-US').format(1234.56);
// Вывод:
"1,234.56"

Метод formatToParts() возвращает массив, где каждая часть числа разделена на элементы. Это полезно для определения свойств локали, что может быть полезно при парсинге чисел. См. руководство по парсингу.

new Intl.NumberFormat('en-US').formatToParts(1234.56);
// Вывод:
[{"type":"integer","value":"1"},{"type":"group","value":","},{"type":"integer","value":"234"},{"type":"decimal","value":"."},{"type":"fraction","value":"56"}]

Изменение системы нумерации

Вы можете изменить систему нумерации в своей локали, добавив -u-nu-{code}.

Один из распространённых примеров — китайская локаль zh, которая использует систему нумерации latn по умолчанию:

new Intl.NumberFormat('zh').format(1234.56);
// Вывод:
"1,234.56"

Но система нумерации hanidec также очень распространена в этой локали и будет выглядеть следующим образом:

new Intl.NumberFormat('zh-u-nu-hanidec').format(1234.56);
// Вывод:
"一,二三四.五六"

Другой способ изменить систему нумерации — указать параметр numberingSystem.

new Intl.NumberFormat('zh', {numberingSystem: 'hanidec'}).format(1234.56);
// Вывод:
"一,二三四.五六"

Количество десятичных знаков

По умолчанию десятичные знаки округляются до 3 знаков:

new Intl.NumberFormat('en-US').format(0.5555555);
// Вывод:
"0.556"

Чтобы переопределить количество десятичных знаков, используйте параметр minimumFractionDigits:

new Intl.NumberFormat('en-US', {maximumFractionDigits: 5}).format(0.5555555);
// Вывод:
"0.55556"

Форматирование валют

Чтобы отформатировать число как валюту, необходимо задать параметры style и currency:

new Intl.NumberFormat('en-US', {style: 'currency', currency: 'USD'}).format(12.99);
// Вывод:
"$12.99"

Форматирование процентов

Для форматирования числа как процента число должно быть между 0 и 1, а параметр style должен быть установлен на percent:

new Intl.NumberFormat('en-US', {style: 'percent'}).format(0.75);
// Вывод:
"75%"

Руководство по парсингу

Руководство по парсингу чисел в любой локали с использованием API Intl.NumberFormat без использования библиотек.

В качестве примера локали я использую ar-DZ-u-nu-arab (арабская локаль с арабской системой нумерации). Этот формат чисел не имеет ничего общего с американским английским.

Следующее число мы будем разбирать:

const localizedString = '-١٫٢٣٤ٮ٥٦'; // результат будет -1234.56

Замена символов группировки и десятичного разделителя

Сначала нам нужно определить символы группировки и десятичного разделителя для локали, отформатировав тестовое число:

const parts = new Intl.NumberFormat('ar-DZ-u-nu-arab').formatToParts(1111.11);
const groupSymbol = parts.find(d => d.type === 'group').value; // ٫
const decimalSymbol = parts.find(d => d.type === 'decimal').value; // ٮ

Теперь, когда мы знаем символы, используемые локалью, мы можем удалить символы группировки и заменить десятичный символ на точку.

localizedString.replace(new RegExp(groupSymbol, 'g'), '').replace(decimalSymbol, '.');

Замена цифр

Теперь нам нужно определить цифры, используемые в локали:

const numerals = new Intl.NumberFormat('ar-DZ-u-nu-arab', { useGrouping: false }).format(9876543210).split('').reverse().join('');

Теперь создаем регулярное выражение с цифрами:

const numeralRegex = new RegExp(`[${numerals}]`, 'g');

Теперь мы можем заменить цифры на стандартные цифры от 0 до 9:

.replace(numeralRegex, (group) => numerals.indexOf(group).toString());

Финальные шаги

Нам нужно разрешить использование любого символа минуса:

.replace(/[−-]\s?/, '-');

Наконец, преобразуем строку в число:

Number(...);

Собираем всё вместе

Вот как может выглядеть переиспользуемый класс:

export class NumberParser {
  constructor(private readonly locale) {
	const parts = Intl.NumberFormat(locale).formatToParts(1111.11);
	this.groupSymbol = parts.find(part => part.type === 'group').value;
	this.decimalSymbol = parts.find(part => part.type === 'decimal').value;
	this.numerals = new Intl.NumberFormat(locale, { useGrouping: false }).format(9876543210).split('').reverse().join('');
	this.numeralRegex = new RegExp(`[${this.numerals}]`, 'g');
  }

  parse(localizedNumber) {
	if (!localizedNumber) return null;
	return Number(
	  localizedNumber
		.replace(new RegExp(this.groupSymbol, 'g'), '')
		.replace(this.decimalSymbol, '.')
		.replace(/[−-]\s?/, '-')
		.replace(this.numeralRegex, group => this.numerals.indexOf(group).toString())
	);
  }
}

Числовые вводы в любой локали

Если вам нужно разрешить ввод чисел в любой локали, используйте <input type="text"/>, так как локализованное число может содержать символы, которые не разрешены в <input type="number"/>.

Затем, когда пользователь изменяет число, необходимо преобразовать локализованную строку обратно в число JavaScript, чтобы оно было отправлено на сервер в правильном формате.

Пример с React

Вот пример компонента ввода чисел в React:

export default function NumberInput({locale, initialValue}) {
  const [localeValue, setLocaleValue] = useState(new Intl.NumberFormat(locale).format(initialValue));
  const [numberValue, setNumberValue] = useState(initialValue);
  const parser = new NumberParser(locale);

  const handleChange = (e) => {
	setLocaleValue(e.target.value);
	setNumberValue(parser.parse(e.target.value));
  };
  return (
	<div>
	  <input type="text" value={localeValue} onChange={handleChange}/>
	  <div>Значение числа: {numberValue}</div>
	</div>
  );
}

localeValue (строка) — это то, что мы используем для поля ввода. А numberValue (число) — это то, что мы используем как системное значение (значение, которое мы получаем и отправляем на сервер).

Локализация числового ввода в Angular

Я опубликовал пакет NPM для Angular под названием ngx-decimal: https://www.npmjs.com/package/ngx-decimal

Он всё сделает за вас. Пример использования:

<input type="text" ngxDecimal [(ngModel)]="numberValue">

--