JavaScript Intl — форматування дат, чисел і валют за локаллю


Intl (скорочення від internationalization, інтернаціоналізація) форматує дати, числа, валюти й множину за правилами конкретної мови — вбудованими в браузер.

автор: NagarD

Загальний опис

Це той випадок, коли платформа вміє більше, ніж більшість про неї знає. Люди тягнуть цілі бібліотеки заради форматування дати, хоча браузер уже знає, що українською це «14 липня 2026 р.», а англійською — «July 14, 2026».

Intl.NumberFormat розставить розділювачі розрядів і додасть символ валюти. Intl.DateTimeFormat дасть дату в правильному порядку й із правильною назвою місяця у родовому відмінку — а це те, на чому самописні рішення падають найчастіше.

Intl.RelativeTimeFormat вміє «3 дні тому», а Intl.PluralRules знає, що українською буває «1 файл, 2 файли, 5 файлів» — три форми множини замість англійських двох.

автор: NagarD

Порада

Перш ніж тягнути бібліотеку для дат чи валют, перевір Intl: у 90% випадків вона вже вбудована в браузер і важить нуль байтів.

автор: NagarD

Синтаксис

new Intl.NumberFormat("uk-UA").format(1234.5);

властивості

Властивість Опис
NumberFormat Форматування чисел: розряди, валюти, відсотки.
DateTimeFormat Форматування дати й часу за локаллю.
RelativeTimeFormat Відносний час: «3 дні тому», «за годину».
PluralRules Форми множини: 1 файл, 2 файли, 5 файлів.
Collator Порівняння рядків за правилами мови (сортування).
ListFormat Перелік: «a, b та c».

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
Intl 24+ 29+ 10+ 15+ 12+ 11+
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
Intl 26+ yes yes 10+

Приклади

+ запропонувати свій приклад у пісочниці

Гривня, дата й українська множина — без жодної бібліотеки.

const price = new Intl.NumberFormat('uk-UA', {
    style: 'currency',
    currency: 'UAH',
}).format(1234.5);

console.log(price); // '1 234,50 ₴'

const date = new Intl.DateTimeFormat('uk-UA', {
    day: 'numeric',
    month: 'long',
    year: 'numeric',
}).format(new Date('2026-07-14'));

console.log(date); // '14 липня 2026 р.'

// «3 дні тому»
const rtf = new Intl.RelativeTimeFormat('uk-UA', { numeric: 'auto' });
console.log(rtf.format(-3, 'day')); // '3 дні тому'

// українська множина — три форми
const plural = new Intl.PluralRules('uk-UA');
console.log(plural.select(1), plural.select(2), plural.select(5)); // one few many
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід