I18next распространяется как npm-пакет и устанавливается
стандартными менеджерами зависимостей JavaScript. Библиотека
поддерживает работу как в браузере, так и в Node.js, React, Vue, Angular
и других экосистемах.
Для установки через npm используется команда:
npm install i18next
После завершения установки пакет появится в разделе
dependencies файла package.json:
{
"dependencies": {
"i18next": "^25.0.0"
}
}
Импорт библиотеки в ES Modules:
import i18next from 'i18next';
Импорт в CommonJS:
const i18next = require('i18next');
Менеджер пакетов Yarn использует аналогичную схему установки.
Команда установки:
yarn add i18next
После установки зависимость также автоматически записывается в
package.json.
Для проверки версии установленного пакета используется команда:
npm list i18next
или:
yarn list i18next
Также версия может быть проверена напрямую через Node.js:
node -p "require('i18next').version"
После установки библиотека обычно подключается в отдельном конфигурационном файле.
Пример структуры проекта:
project/
├── src/
│ ├── i18n.js
│ ├── app.js
│ └── locales/
│ ├── en/
│ │ └── translation.json
│ └── ru/
│ └── translation.json
├── package.json
└── node_modules/
После установки необходимо выполнить инициализацию экземпляра
i18next.
Файл src/i18n.js:
import i18next from 'i18next';
i18next.init({
lng: 'ru',
fallbackLng: 'en',
resources: {
ru: {
translation: {
hello: 'Привет'
}
},
en: {
translation: {
hello: 'Hello'
}
}
}
});
export default i18next;
Использование:
import i18next from './i18n.js';
console.log(i18next.t('hello'));
Результат:
Привет
Архитектура i18next построена модульно. Основной пакет
предоставляет базовый функционал, а расширения подключаются
отдельно.
Наиболее распространённые дополнения:
| Модуль | Назначение |
|---|---|
react-i18next |
Интеграция с React |
i18next-http-backend |
Загрузка переводов по HTTP |
i18next-browser-languagedetector |
Автоопределение языка браузера |
i18next-fs-backend |
Загрузка переводов из файловой системы |
i18next-chained-backend |
Комбинирование нескольких backend |
i18next-icu |
Поддержка ICU MessageFormat |
Для React используется отдельный пакет:
npm install react-i18next
или:
yarn add react-i18next
Дополнительно почти всегда устанавливается сам i18next,
если он ещё отсутствует:
npm install i18next react-i18next
Во многих проектах переводы хранятся в JSON-файлах и загружаются динамически.
Установка HTTP backend:
npm install i18next-http-backend
или:
yarn add i18next-http-backend
Подключение:
import i18next from 'i18next';
import Backend from 'i18next-http-backend';
i18next.use(Backend).init({
lng: 'ru',
backend: {
loadPath: '/locales/{{lng}}/{{ns}}.json'
}
});
Плагин автоматически определяет язык пользователя через:
navigator.languageУстановка:
npm install i18next-browser-languagedetector
или:
yarn add i18next-browser-languagedetector
Использование:
import i18next from 'i18next';
import LanguageDetector from 'i18next-browser-languagedetector';
i18next
.use(LanguageDetector)
.init({
fallbackLng: 'en'
});
npm:
npm install i18next react-i18next i18next-http-backend i18next-browser-languagedetector
Yarn:
yarn add i18next react-i18next i18next-http-backend i18next-browser-languagedetector
I18next полностью поддерживает TypeScript.
Установка:
npm install i18next
или:
yarn add i18next
Дополнительные типы устанавливать не требуется, поскольку библиотека содержит встроенные TypeScript-определения.
Пример TypeScript-конфигурации:
import i18next from 'i18next';
i18next.init({
lng: 'ru',
resources: {
ru: {
translation: {
welcome: 'Добро пожаловать'
}
}
}
});
Для серверных приложений i18next также устанавливается
через npm или Yarn.
Установка:
npm install i18next
Пример серверного использования:
const i18next = require('i18next');
i18next.init({
lng: 'ru',
resources: {
ru: {
translation: {
error: 'Ошибка сервера'
}
}
}
});
console.log(i18next.t('error'));
В серверной среде переводы часто читаются напрямую из файловой системы.
Установка:
npm install i18next-fs-backend
или:
yarn add i18next-fs-backend
Использование:
const i18next = require('i18next');
const Backend = require('i18next-fs-backend');
i18next
.use(Backend)
.init({
lng: 'ru',
backend: {
loadPath: './locales/{{lng}}/{{ns}}.json'
}
});
| Характеристика | npm | Yarn |
|---|---|---|
| Файл блокировки | package-lock.json |
yarn.lock |
| Скорость установки | Высокая | Высокая |
| Менеджер по умолчанию | Встроен в Node.js | Устанавливается отдельно |
| Совместимость | Полная | Полная |
I18next одинаково работает в обеих системах управления
пакетами.
Иногда проекту требуется фиксированная версия библиотеки.
Установка определённой версии через npm:
npm install i18next@25.0.0
Через Yarn:
yarn add i18next@25.0.0
Хотя i18next обычно относится к production-зависимостям,
некоторые вспомогательные инструменты могут устанавливаться как
devDependencies.
npm:
npm install --save-dev i18next-parser
Yarn:
yarn add --dev i18next-parser
При повреждении зависимостей выполняется полная переустановка.
Для npm:
rm -rf node_modules package-lock.json
npm install
Для Yarn:
rm -rf node_modules yarn.lock
yarn install
Простейший способ убедиться в работоспособности библиотеки — выполнить тестовый скрипт.
Создание файла test.js:
const i18next = require('i18next');
i18next.init({
lng: 'en',
resources: {
en: {
translation: {
test: 'I18next works'
}
}
}
});
console.log(i18next.t('test'));
Запуск:
node test.js
Ожидаемый результат:
I18next works
В monorepo-проектах библиотека обычно устанавливается в корневом workspace.
Пример для Yarn Workspaces:
yarn workspace frontend add i18next
Для npm workspaces:
npm install i18next --workspace=frontend
Cannot find module 'i18next'Причины:
node_modules;npm install.Решение:
npm install i18next
Ошибка:
SyntaxError: Cannot use import statement outside a module
Причина — смешивание модульных систем.
Решение для ESM:
{
"type": "module"
}
Либо использовать CommonJS:
const i18next = require('i18next');
Некоторые интеграции требуют совместимых версий React или других библиотек.
Проверка:
npm ls
Установка совместимых зависимостей:
npm install react react-dom react-i18next
Удаление через npm:
npm uninstall i18next
Удаление через Yarn:
yarn remove i18next
npm install i18next i18next-http-backend i18next-browser-languagedetector
npm install i18next react-i18next i18next-http-backend i18next-browser-languagedetector
npm install i18next i18next-fs-backend
npm install i18next react-i18next
Пример итоговой структуры:
project/
├── public/
│ └── locales/
│ ├── en/
│ │ └── translation.json
│ └── ru/
│ └── translation.json
│
├── src/
│ ├── i18n.js
│ ├── App.jsx
│ └── main.jsx
│
├── node_modules/
├── package.json
├── package-lock.json
└── yarn.lock
Файл translation.json:
{
"title": "Главная страница",
"button.save": "Сохранить"
}
Пример получения перевода:
i18next.t('button.save');
Результат:
Сохранить