javascript42
Главная
Все учебники
Блог
Учебник FormatJS
Введение
Что такое FormatJS
История и эволюция библиотеки
Архитектура и основные компоненты
Установка и начальная настройка
Совместимость с фреймворками и окружениями
Основы интернационализации
Концепция i18n в веб-разработке
Локали и языковые теги
Стандарты Unicode CLDR
Направление текста и письменность
Выбор стратегии локализации
Форматирование сообщений
Синтаксис ICU MessageFormat
Простые сообщения и плейсхолдеры
Множественное число и правила plural
Выбор по значению через select
Вложенные конструкции
Экранирование специальных символов
Работа с HTML в сообщениях
Обработка отсутствующих переводов
Форматирование чисел
Базовое форматирование числовых значений
Локализация разделителей
Процентные значения
Денежные единицы и валюты
Компактная нотация
Научная нотация
Единицы измерения
Округление и точность
Группировка разрядов
Знаки и нотация
Форматирование дат и времени
Основы работы с датами
Форматы даты: короткий, средний, длинный, полный
Форматы времени
Комбинированные форматы даты и времени
Часовые пояса
Календарные системы
Относительное время
Форматирование диапазонов дат
Пользовательские паттерны
Форматирование относительного времени
Концепция относительного форматирования
Единицы времени
Числовой и текстовый стили
Автоматический выбор единиц
Настройка стиля вывода
Форматирование списков
Типы списков: conjunction, disjunction, unit
Стилизация списков
Локализация соединительных элементов
Работа с React
Интеграция React Intl
Компонент IntlProvider
Хуки useIntl, useFormatMessage
Компоненты FormattedMessage, FormattedNumber
Компоненты FormattedDate, FormattedTime
Компонент FormattedRelativeTime
Компонент FormattedList
Императивное форматирование
Типизация с TypeScript
Оптимизация рендеринга
Извлечение и компиляция сообщений
CLI инструменты formatjs
Извлечение сообщений из кода
Формат хранения переводов
Компиляция сообщений для production
Интеграция с системами сборки
Webpack и другие бандлеры
Автоматизация процесса
Продвинутые паттерны MessageFormat
Сложные условные конструкции
Комбинирование plural и select
Кастомные форматтеры
Rich text форматирование
Теги и компоненты в сообщениях
Производительность парсинга
Управление переводами
Организация файлов переводов
Ленивая загрузка локалей
Динамическое переключение языка
Фолбэк стратегии
Версионирование переводов
Валидация и проверка полноты
Плюрализация
Правила множественного числа в разных языках
Категории CLDR: zero, one, two, few, many, other
Offset в plural конструкциях
Точные совпадения через =
Сложные случаи плюрализации
Форматирование с учетом пола
Грамматический род в разных языках
Select для гендерных форм
Комбинирование с plural
Инклюзивность в переводах
Производительность и оптимизация
Кэширование форматтеров
Мемоизация результатов
Ленивая инициализация
Размер бандла и tree-shaking
Предкомпиляция сообщений
Профилирование и бенчмарки
Работа с полифиллами
Когда нужны полифиллы
Intl.NumberFormat полифилл
Intl.DateTimeFormat полифилл
Intl.RelativeTimeFormat полифилл
Intl.ListFormat полифилл
Intl.PluralRules полифилл
Стратегии загрузки
Тестирование
Тестирование переводов
Моки и стабы IntlProvider
Тестирование компонентов с i18n
Снэпшот тестирование
Проверка покрытия локалей
E2E тестирование мультиязычности
Интеграция с другими фреймворками
Vue и Vue Intl
Angular
Svelte
Vanilla JavaScript
Node.js на сервере
Next.js и SSR
Gatsby и SSG
Миграция и совместимость
Переход с других i18n библиотек
Миграция с react-intl v2/v3
Обратная совместимость
Апгрейд стратегии
Серверный рендеринг
SSR с форматированием
Гидратация и синхронизация локали
Производительность на сервере
Кэширование на стороне сервера
Доступность
ARIA атрибуты и переводы
Локализация вспомогательных текстов
Направление текста и a11y
Экранные читалки
Безопасность
XSS и HTML в переводах
Санитизация пользовательского контента
Безопасная интерполяция
Валидация входных данных
Типизация и TypeScript
Типы для сообщений
Извлечение типов из переводов
Типобезопасное использование интерполяции
Генерация типов из дескрипторов
Strict mode конфигурация
Расширенная конфигурация
Настройка форматтеров по умолчанию
Кастомные локаль дата
Переопределение CLDR данных
Обработка ошибок
Логирование и дебаг
Практические рецепты
Форматирование телефонных номеров
Адреса и почтовые индексы
Имена и их склонение
Цены и скидки
Временные интервалы
Диапазоны значений
Процессы и статусы
Уведомления и алерты
Отладка и troubleshooting
Частые ошибки и их решения
Дебаг отсутствующих переводов
Проблемы с кодировкой
Конфликты локалей
Инструменты разработчика
Инструментарий и экосистема
Babel плагины
ESLint правила
Prettier форматирование
IDE расширения
Онлайн инструменты
Глоссарий и справочник
Термины интернационализации
Коды языков и локалей
Справочник по ICU синтаксису
API референс
Таблица соответствия локалей