javascript42
Главная
Все учебники
Блог
Учебник Intl API
Введение
Что такое Intl API
История появления и развития
Преимущества использования
Браузерная поддержка и полифилы
Структура библиотеки
Основы локализации
Понятие локали
Формат BCP 47
Определение локали пользователя
Fallback и цепочки локалей
Unicode расширения локалей
Intl.Collator
Назначение и область применения
Создание экземпляра компаратора
Опции сравнения строк
Учет регистра и диакритических знаков
Числовая сортировка
Игнорирование пунктуации
Сортировка массивов объектов
Производительность при массовых операциях
Метод resolvedOptions
Intl.DateTimeFormat
Форматирование дат и времени
Стили отображения даты
Стили отображения времени
Пользовательские шаблоны форматирования
Часовые пояса
Календарные системы
Форматирование диапазонов дат
Метод formatToParts
Метод formatRangeToParts
Парсинг отформатированных дат
Intl.NumberFormat
Форматирование чисел
Разделители тысяч и десятичные разделители
Минимальное и максимальное количество цифр
Значащие цифры
Форматирование валют
Коды валют ISO 4217
Отображение символов валют
Форматирование процентов
Единицы измерения
Компактная нотация
Научная нотация
Системы счисления
Группировка цифр
Форматирование диапазонов чисел
Intl.PluralRules
Правила множественного числа
Категории: zero, one, two, few, many, other
Кардинальные числительные
Порядковые числительные
Метод select
Применение в интернационализации текстов
Комбинирование с NumberFormat
Intl.RelativeTimeFormat
Относительное форматирование времени
Единицы времени
Стили отображения: long, short, narrow
Числовой и автоматический режимы
Создание динамических временных меток
Intl.ListFormat
Форматирование списков
Типы списков: conjunction, disjunction, unit
Стили отображения списков
Обработка пустых массивов
Intl.DisplayNames
Получение локализованных названий
Названия языков
Названия регионов и стран
Названия письменностей
Названия валют
Названия календарей
Названия единиц измерения
Fallback для отсутствующих значений
Intl.Locale
Работа с объектом Locale
Свойства локали
Язык, регион, письменность
Календарь и система счисления
Час12/Час24
Направление письма
Методы minimize и maximize
Получение информации о локали
Intl.Segmenter
Сегментация текста
Деление на графемы
Деление на слова
Деление на предложения
Итерирование по сегментам
Получение индексов границ
Обработка сложных скриптов
Эмодзи и составные символы
Продвинутые техники
Кэширование форматтеров
Переиспользование экземпляров
Оптимизация производительности
Ленивая инициализация
Обработка отсутствующих локалей
Создание пользовательских форматтеров
Комбинирование нескольких API
Динамическая смена языка
Интеграция с фреймворками
React и Intl API
Vue и локализация
Angular i18n
Серверный рендеринг
Hydration локализованного контента
State management локали
Работа с временными зонами
IANA база данных временных зон
Конвертация между зонами
Учет летнего времени
Offset и named зоны
Форматирование для разных зон
Проблемы и edge cases
Валюты и финансы
Правила округления валют
Минорные единицы валют
Криптовалюты
Исторические валюты
Мультивалютные операции
Точность вычислений
Календари и даты
Григорианский календарь
Исламский календарь
Еврейский календарь
Буддийский календарь
Японский календарь
Китайский календарь
Конвертация между календарями
Праздники и нерабочие дни
Сортировка и поиск
Алгоритмы сортировки с учетом локали
Бинарный поиск локализованных данных
Индексирование для быстрого поиска
Сравнение производительности
Кастомные правила сортировки
Типографика и письменность
Направление текста RTL/LTR
Вертикальная письменность
Перенос слов
Регистр букв с учетом локали
Особенности различных алфавитов
Обработка ошибок
Типы ошибок RangeError, TypeError
Валидация локалей
Валидация опций
Graceful degradation
Логирование проблем локализации
Тестирование
Unit-тесты локализации
Мокирование локалей
Тестирование в разных окружениях
Snapshot-тестирование форматирования
Проверка корректности переводов
CI/CD для интернационализированных приложений
Производительность
Бенчмарки Intl API
Сравнение с альтернативными решениями
Профилирование локализованного кода
Memory footprint
Оптимизация bundle size
Tree shaking неиспользуемых локалей
Полифилы и совместимость
FormatJS Intl полифил
Определение необходимости полифилов
Динамическая загрузка полифилов
Размер и производительность полифилов
Стратегии поддержки старых браузеров
Практические паттерны
Singleton для форматтеров
Factory паттерн
Dependency injection локали
Middleware для локализации
Хуки и композиция
Декораторы форматирования
Миграция и внедрение
Аудит существующего кода
Постепенная миграция
Замена moment.js и date-fns
Замена ручного форматирования
Обновление legacy систем
Обратная совместимость
Безопасность
Инъекции через локали
Валидация пользовательского ввода
XSS риски при форматировании
Санитизация данных
Content Security Policy
Доступность
ARIA-атрибуты для локализованного контента
Семантическая разметка дат и чисел
Озвучивание экранными читалками
Сокращения и аббревиатуры
Форматы для людей с ограниченными возможностями
Специфика языков
Особенности китайского
Особенности арабского
Особенности японского
Особенности хинди
Особенности тайского
Особенности европейских языков
Редкие языки и диалекты
Инструменты разработчика
Browser DevTools для локализации
Расширения для тестирования
Визуализация правил форматирования
Отладка проблем с локалями
Автоматизация проверок
Спецификация и стандарты
ECMAScript Internationalization API
Unicode CLDR
ISO стандарты
IETF RFC документы
Процесс стандартизации
Будущие возможности API