Мы, как владельцы или разработчики приложений, стремимся обеспечивать хороший UX и подстраивать пользовательский интерфейс на основе территориального расположения и языка пользователя. Например, пользователь с США увидит другой формат даты, чем пользователь из Великобритании.
Чтобы достичь этого, большинство из нас используют сторонние библиотеки, такие как globalize, либо полагаются на встроенную поддержку в фреймворков, например, Angular.
Однако, JavaScript имеет нативную поддержку интернационализации. Да, я знаю, что вы думаете:
«Плохая поддержка и совместимость с различными браузерами.»
Но позвольте удивить вас.

Как вы можете видеть, все основные браузеры поддерживают его. Теперь, когда вы можете не волноваться за поддержку, рассмотрим основы.
Примечание: Internationalization API не является полноценным фреймворком интернационализации; он может быть полезным для большинства задач локализации, включая даты, числа и валюты.
Объект Intl
Объект Intl — объект, который выступает в роли пространства имен для Internationalization API и обеспечивает языковое сравнения строк, форматирование чисел, даты и времени.
Форматирование чисел
API Intl.NumberFormat позволяет форматировать числа. Разберем несколько примеров.
// "4,000"
new Intl.NumberFormat().format(4000);
// With custom locale
// "123.456,789"
new Intl.NumberFormat('de-DE').format(123456.789);
// Customize the currency
// "120.000,00 EUR"
new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR', currencyDisplay: 'code' })
.format(120000)
// "1,23,000"
new Intl.NumberFormat('en-IN', { maximumSignificantDigits: 3 })
.format(123456.789)
Форматирование даты
API Intl.DateTimeFormat позволяет форматировать дату и время.
// "12/22/2017"
new Intl.DateTimeFormat().format(new Date(2017, 11, 22));
// With custom locale
// "22/12/2017"
new Intl.DateTimeFormat('en-GB').format(new Date(2017, 11, 22));
// Customize the formatting
const options = {
year: 'numeric', month: 'numeric', day: 'numeric',
hour: 'numeric', minute: 'numeric', second: 'numeric',
hour12: false,
timeZone: 'America/Los_Angeles'
};
// "12/19/2012, 19:00:00"
new Intl.DateTimeFormat('en-US', options).format(date);
Сравнение строк
The Intl.Collator API позволяет сравнивать строки с учетом языка и региональных параметров.
new Intl.Collator().compare('a', 'c'); // → a negative value


















