JavaScript Intl — форматування дат, чисел і валют за локаллю
Intl (скорочення від internationalization, інтернаціоналізація) форматує дати, числа, валюти й множину за правилами конкретної мови — вбудованими в браузер.
Загальний опис
Це той випадок, коли платформа вміє більше, ніж більшість про неї знає. Люди тягнуть цілі бібліотеки заради форматування дати, хоча браузер уже знає, що українською це «14 липня 2026 р.», а англійською — «July 14, 2026».
Intl.NumberFormat розставить розділювачі розрядів і додасть символ валюти. Intl.DateTimeFormat дасть дату в правильному порядку й із правильною назвою місяця у родовому відмінку — а це те, на чому самописні рішення падають найчастіше.
Intl.RelativeTimeFormat вміє «3 дні тому», а Intl.PluralRules знає, що українською буває «1 файл, 2 файли, 5 файлів» — три форми множини замість англійських двох.
- Порада
-
Перш ніж тягнути бібліотеку для дат чи валют, перевір
автор: NagarDIntl: у 90% випадків вона вже вбудована в браузер і важить нуль байтів.
Синтаксис
new Intl.NumberFormat("uk-UA").format(1234.5);
властивості
| Властивість | Опис |
|---|---|
| NumberFormat | Форматування чисел: розряди, валюти, відсотки. |
| DateTimeFormat | Форматування дати й часу за локаллю. |
| RelativeTimeFormat | Відносний час: «3 дні тому», «за годину». |
| PluralRules | Форми множини: 1 файл, 2 файли, 5 файлів. |
| Collator | Порівняння рядків за правилами мови (сортування). |
| ListFormat | Перелік: «a, b та c». |
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| Intl | 24+ | 29+ | 10+ | 15+ | 12+ | 11+ |
| Переглядач | ||||
|---|---|---|---|---|
| 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
Коментарі
Коментарів ще немає — будьте першим!