Intl: интернационализация

16-02-25 18:15:47


Image for the Intl: интернационализация

Форматирование чисел с помощью Intl.NumberFormat

Базовое форматирование чисел

const number = 1234567.89;

const formatter = new Intl.NumberFormat('ru-RU');
console.log(formatter.format(number)); // Вывод: "1 234 567,89"

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

const price = 1999.99;

const rubFormatter = new Intl.NumberFormat('ru-RU', { style: 'currency', currency: 'RUB' });
console.log(rubFormatter.format(price)); // Вывод: "1 999,99 ₽"

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

const percentage = 0.752;

const percentFormatter = new Intl.NumberFormat('ru-RU', { style: 'percent' });
console.log(percentFormatter.format(percentage)); // Вывод: "75 %"

Форматирование дат с помощью Intl.DateTimeFormat

Базовое форматирование дат

const date = new Date(2024, 5, 15);

const dateFormatterRU = new Intl.DateTimeFormat('ru-RU');
console.log(dateFormatterRU.format(date)); // Вывод: "15.06.2024"

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

const timeFormatter = new Intl.DateTimeFormat('ru-RU', {
hour: '2-digit',
minute: '2-digit',
second: '2-digit',
timeZoneName: 'short'
});

console.log(timeFormatter.format(new Date())); // Вывод: "10:30:15 GMT+3"

Сравнение строк с Intl.Collator

const words = ['Яблоко', 'арбуз', 'Банан'];

const collator = new Intl.Collator('ru', { sensitivity: 'base' });
console.log(words.sort(collator.compare)); // Вывод: ["арбуз", "Банан", "Яблоко"]

Форматирование списка с Intl.ListFormat

const list = ['Яблоко', 'Банан', 'Вишня'];

const listFormatterRU = new Intl.ListFormat('ru', { style: 'long', type: 'conjunction' });
console.log(listFormatterRU.format(list)); // Вывод: "Яблоко, Банан и Вишня"

Реальное применение

  • Финансовые приложения: Форматирование валют.
  • Чаты и уведомления: Корректное склонение слов.
  • Поисковые системы: Упорядочивание данных по языковым правилам.
  • Сайты для путешествий: Корректное форматирование дат и времени.
  • ...