Библиотека i18next используется как базовый слой интернационализации, предоставляя механизмы хранения, загрузки и выбора переводов. Надстройка react-i18next интегрирует этот функционал в экосистему React, обеспечивая реактивные переводы, контексты и удобные хуки.
Минимальная конфигурация для работы с React требует установки трёх ключевых зависимостей:
i18next — ядро системы интернационализацииreact-i18next — связка с Reacti18next backend или плагин для загрузки переводов (по
необходимости)Установка через npm:
npm install i18next react-i18next
При использовании yarn:
yarn add i18next react-i18next
Дополнительно часто подключается загрузчик переводов по HTTP:
npm install i18next-http-backend
и детектор языка пользователя:
npm install i18next-browser-languagedetector
i18next выполняет роль движка, который управляет:
react-i18next добавляет слой интеграции:
useTranslation, useLanguage)withTranslation)Trans)React обеспечивает реактивную модель обновления интерфейса, в которой смена языка автоматически вызывает перерисовку компонентов.
Для типичного production-приложения установка часто расширяется:
npm install i18next react-i18next i18next-http-backend i18next-browser-languagedetector
i18next-http-backend Позволяет загружать переводы из внешних JSON-файлов:
/public/locales/en/translation.json/public/locales/ru/translation.jsoni18next-browser-languagedetector Определяет язык пользователя через:
navigator.languageПосле установки зависимости формируют единый i18n-слой, который должен быть инициализирован до рендера React-приложения.
Пример базовой структуры:
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
i18n
.use(initReactI18next)
.init({
resources: {},
lng: 'en',
fallbackLng: 'en',
interpolation: {
escapeValue: false
}
});
export default i18n;
Здесь происходит связывание ядра i18next с React-обвязкой
react-i18next через плагин initReactI18next.
Файл инициализации обычно импортируется один раз в точке входа:
import './i18n';
import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
Это гарантирует, что i18n-инстанс создан до рендера компонентов React.
При использовании TypeScript дополнительно устанавливаются типы:
npm install -D @types/i18next
Для react-i18next отдельные типы обычно не требуются, так как они встроены в пакет.
После установки корректная конфигурация характеризуется следующими признаками:
i18nextuseTranslation из
react-i18nextsrc/
i18n/
index.js
locales/
en/
translation.json
ru/
translation.json
App.jsx
main.jsx
i18next в такой структуре выступает центральным слоем, вокруг которого строится система переводов, а react-i18next обеспечивает интеграцию с компонентной архитектурой React.