javascript42
Главная
Все учебники
Блог
Учебник I18next
Введение в i18next
Что такое интернационализация и локализация
История и эволюция i18next
Ключевые возможности библиотеки
Сравнение с альтернативными решениями
Философия и архитектурные принципы
Установка и базовая настройка
Установка через npm и yarn
Подключение через CDN
Минимальная конфигурация для старта
Структура проекта с i18next
Первый рабочий пример
Основы работы с переводами
Создание файлов переводов
Форматы хранения: JSON, JSON5, YAML
Организация namespace
Структурирование ключей перевода
Базовые методы получения переводов
Работа с методом t()
Fallback языки и цепочки
Интерполяция переменных
Форматирование значений
Плюрализация
Правила плюрализации для разных языков
Синтаксис plural форм
Интервалы и диапазоны
Ordinal формы
Кастомные правила плюрализации
Контекст и условные переводы
Использование context для вариативности
Мужской и женский род
Формальное и неформальное обращение
Комбинирование контекста с плюрализацией
Форматирование данных
Числа и валюты
Даты и время
Интеграция с Intl API
Кастомные форматтеры
Locale-специфичное форматирование
Вложенность и композиция переводов
Вложенные ключи и точечная нотация
Переиспользование переводов через $t()
Nesting с интерполяцией
Ограничения и лучшие практики
Namespace и организация переводов
Концепция namespace
Множественные namespace в проекте
Динамическая загрузка namespace
Дефолтный namespace
Разделение переводов по функциональности
Языки и локали
Определение текущего языка
Переключение языков
Определение языка браузера
Сохранение выбора пользователя
Поддержка региональных вариантов
Language detector и автоопределение
Backend и загрузка переводов
Концепция backend плагинов
i18next-http-backend для загрузки по HTTP
Конфигурация путей и endpoints
Кеширование переводов
Обработка ошибок загрузки
Стратегии предзагрузки
Альтернативные backend решения
Ленивая загрузка и code splitting
Асинхронная загрузка namespace
Динамический импорт переводов
Интеграция с webpack и vite
Оптимизация размера бандла
Стратегии разделения переводов
Плагины и расширения
Архитектура плагинов i18next
Backend плагины
Language detector плагины
Post-processor плагины
Formatter плагины
Создание собственных плагинов
Регистрация и использование плагинов
Post-processing переводов
Концепция постобработки
Встроенные постпроцессоры
Sprintf постпроцессор
Interval постпроцессор
Цепочки постпроцессоров
Разработка кастомных постпроцессоров
Обработка ошибок и missing переводов
Стратегии при отсутствующих ключах
Конфигурация saveMissing
Логирование проблем
MissingKeyHandler
Fallback стратегии
Режим разработки vs продакшн
i18next в React
Установка react-i18next
Провайдер I18nextProvider
Хук useTranslation
Компонент Trans для JSX
Хук useTranslation с namespace
Переключение языков в React
SSR и i18next в Next.js
Suspense и асинхронная загрузка
i18next в Vue
Установка vue-i18next
Интеграция с Vue 3
Composition API и i18next
Директива v-t
Компонент i18n-t
Переключение языков в Vue
Nuxt.js и i18next
i18next в Angular
Установка angular-i18next
Интеграция с модулями Angular
Сервис для переводов
Pipe для темплейтов
Директивы для i18n
Lazy loading модулей с переводами
i18next в Node.js и серверных приложениях
Настройка i18next на сервере
i18next-fs-backend для файловой системы
Мультиязычные API ответы
Email шаблоны на разных языках
Express middleware для i18next
Определение языка из заголовков
Продвинутая конфигурация
Полный обзор опций инициализации
Настройка behavior
Конфигурация detection
Опции кеширования
Debug режим и логирование
Performance оптимизации
Работа с ключами и переводами
Соглашения об именовании ключей
Плоская vs вложенная структура
Разделители и специальные символы
Экранирование и escaping
Работа с HTML в переводах
TypeScript и типизация
Настройка типов для i18next
Строгая типизация ключей переводов
Автодополнение в IDE
Генерация типов из переводов
Типизация namespace
Создание типобезопасных хелперов
Тестирование i18n
Стратегии тестирования переводов
Моки для i18next в тестах
Тестирование компонентов с переводами
Snapshot тестирование
Проверка полноты переводов
Автоматизация тестов локализации
Инструменты разработчика
i18next browser extension
Дебаггинг переводов
Визуализация missing keys
Инспектирование загруженных языков
Профилирование производительности
Управление переводами в команде
Структура файлов для совместной работы
Git workflow для переводов
Разделение ответственности
Синхронизация переводов между окружениями
Версионирование переводов
Интеграция с CAT инструментами
Экспорт переводов для переводчиков
Форматы обмена: XLIFF, PO, CSV
i18next-scanner для извлечения ключей
Импорт переводов обратно
Автоматизация workflow
Интеграция с Crowdin, Lokalise, Phrase
Миграция и обновление
Миграция с других библиотек на i18next
Обновление между major версиями i18next
Миграция с i18next v20 на v21+
Breaking changes и как их обрабатывать
Постепенная миграция больших проектов
Производительность и оптимизация
Бенчмарки и метрики
Оптимизация размера переводов
Ленивая инициализация
Мемоизация переводов
Проблемы с большими объемами переводов
Профилирование узких мест
Безопасность
XSS риски при работе с переводами
Санитизация пользовательского ввода
Безопасная интерполяция
Escaping HTML
Content Security Policy
Валидация переводов
Продвинутые паттерны использования
Динамические ключи переводов
Программная генерация переводов
A/B тестирование текстов
Персонализация переводов
Conditional loading стратегии
Кастомные resolvers
Доступность и i18n
RTL языки и направление текста
ARIA атрибуты и переводы
Доступность для скрин-ридеров
Языковые атрибуты в HTML
Культурные особенности интерфейсов
SEO и многоязычность
Мета-теги для разных языков
Hreflang атрибуты
Структура URL для мультиязычных сайтов
Sitemap для разных языков
SSR и индексация
Troubleshooting и частые проблемы
Переводы не загружаются
Неправильная плюрализация
Проблемы с асинхронной инициализацией
Memory leaks при работе с i18next
Конфликты между плагинами
Проблемы с бандлингом
Лучшие практики
Организация кодовой базы
Соглашения команды
Code review переводов
Документирование контекста для переводчиков
Поддержка консистентности
Масштабирование i18n в больших проектах