Задайте питання та отримайте підсумок документа, вказавши цю сторінку та обраного вами постачальника штучного інтелекту
Історія версій
- "Init history"v9.0.005.06.2026
Вміст цієї сторінки перекладено за допомогою штучного інтелекту.
Переглянути останню версію оригінального вмісту англійськоюIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
Міграція з react-i18next / i18next на Intlayer
Чому варто перейти з react-i18next / i18next на Intlayer?
Замість завантаження великих JSON файлів на ваші сторінки, завантажуйте лише необхідний вміст. Intlayer допомагає зменшити розмір bundle та сторінок на 50%.
Розміщення вмісту вашої програми в одному місці полегшує обслуговування крупномасштабних додатків. Ви можете дублювати або видаляти окремий папку функції без потреби перегляду всієї бази коду вмісту. Крім того, Intlayer повністю типізований, щоб забезпечити точність вашого вмісту.
Intlayer також є рішенням з найактивнішим розвитком в екосистемі i18n — проблеми виправляються швидко, нові адаптери фреймворків з'являються регулярно, а основний API постійно удосконалюється на основі реального зворотного зв'язку з production.
Розташування вмісту в одному місці зменшує контекст, необхідний для великих мовних моделей (LLMs). Intlayer також містить набір інструментів, таких як CLI для тестування відсутніх перекладів, LSP, MCP та agent skills, щоб зробити розробницький досвід (DX) ще гладшим для AI agents.
Використовуйте автоматизацію для перекладу у вашому CI/CD pipeline, використовуючи LLM на ваш вибір за вартість вашого AI провайдера. Intlayer також пропонує компілятор для автоматизації видобутку вмісту, а також веб-платформу для допомоги перекладу у фоновому режимі.
Підключення великих JSON файлів до компонентів може привести до проблем продуктивності та реактивності. Intlayer оптимізує завантаження вашого вмісту під час збирання.
Більше ніж просто рішення i18n, Intlayer пропонує самостійно розміщений редактор та повноцінну CMS для допомоги вам керувати вашим багатомовним вмістом у реальному часі, що робить співпрацю з перекладачами, копірайтерами та іншими членами команди безперебійною. Вміст можна зберігати локально та/або віддалено.
Стратегії міграції
Існують дві взаємодоповнюючі стратегії для переходу з react-i18next / i18next на Intlayer:
Compat adapter (рекомендується для існуючих додатків) — Встановіть
@intlayer/react-i18next(для React компонентів) та/або@intlayer/i18next(для основного екземпляраi18n). Ці пакети надають той самий API, що йreact-i18next/i18next, але делегують всю роботу перекладу Intlayer під капотом. Ви зберігаєте існуючі викликиuseTranslation,Trans,withTranslation,i18next.t()— єдиною змією є шлях імпорту.Повна міграція — Поступово замінюйте
react-i18nextAPI на нативні хуки Intlayer (useIntlayer,IntlayerProvider) і розміщуйте вміст у файлах.content.tsпоряд із ваші компонентами.
Цей посібник спочатку охоплює Стратегію 1 (drop-in compat adapter), а потім розглядає необов'язкову повну міграцію.
Зміст
Швидка міграція
Наступні кроки — мінімум необхідний для запуску вашої існуючої програми react-i18next на Intlayer без змін коду.
Встановлення залежностей
Встановіть основні пакети Intlayer та адаптери сумісності:
bashКопіювати кодСкопіюйте код у буфер обміну
npx intlayer-cli init --interactiveфлаг
--interactiveнеобов'язковий. Використовуйтеintlayer-cli init, якщо ви AI-агент.Ця команда визначить ваше середовище та встановить необхідні пакети. Наприклад:
bashКопіювати кодСкопіюйте код у буфер обміну
npm install intlayer react-intlayer @intlayer/react-i18next @intlayer/i18next @intlayer/sync-json-pluginВи можете залишити встановленими
react-i18nextтаi18next— адаптери сумісності використовують їх якdevDependencies/ необов'язковіpeerDependenciesдля типів TypeScript. Вам не потрібно змінювати жодних однорівневих залежностейpackage.json.Налаштування Intlayer
Команда
intlayer initстворює стартовий файлintlayer.config.ts. Оновіть його відповідно до ваших існуючих локалей та вкажіть плагінsyncJSONна ваші файли повідомлень:intlayer.config.tsКопіювати кодСкопіюйте код у буфер обміну
import { Locales, type IntlayerConfig } from "intlayer"; import { syncJSON } from "@intlayer/sync-json-plugin"; const config: IntlayerConfig = { internationalization: { locales: [ Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH, // Додайте всі ваші існуючі локалі тут ], defaultLocale: Locales.ENGLISH, }, plugins: [ syncJSON({ // відповідає синтаксису заповнювачів react-i18next: {{name}} format: "i18next", source: ({ locale }) => `./src/locales/${locale}.json`, location: "src/locales", }), ], }; export default config;sourceвідображає локаль на шлях її JSON-файлу.locationповідомляє спостерігачу Intlayer, яку папку моніторити на предмет змін. Параметрformat: 'i18next'гарантує, що заповнювачі на кшталт{{name}}аналізуються правильно.Додавання плагіна Intlayer до вашого Bundler
Обгорніть вашу існуючу конфігурацію bundler за допомогою плагіна сумісності. Він компонує основний плагін Intlayer, налаштовує моніторинг вмісту та — що критично — інжектує псевдоніми модулів так, щоб ваші існуючі виклики
import … from 'react-i18next'(та'i18next') були прозоро перенаправлені на@intlayer/react-i18next/@intlayer/i18nextпід час побудови. Жодних змін вихідних файлів не потрібно.Для Vite:
vite.config.tsКопіювати кодСкопіюйте код у буфер обміну
import { defineConfig } from "vite"; import react from "@vitejs/plugin-react"; import { reactI18nextVitePlugin } from "@intlayer/react-i18next/plugin"; export default defineConfig({ plugins: [react(), reactI18nextVitePlugin()], });reactI18nextVitePlugin()обгортає плагінintlayer()відvite-intlayerта додає псевдонімиreact-i18next/i18next. Використання звичайного плагінаintlayer()відvite-intlayerкомпілює словники, але не додає ці псевдоніми — тоді вам потрібно було б вручну перейменувати імпорти на@intlayer/*(див. крок 4).Для Next.js:
Якщо ви використовуєте
next-i18next(інтеграція Pages Router), встановіть@intlayer/next-i18nextтаnext-intlayer:bashКопіювати кодСкопіюйте код у буфер обміну
npm install @intlayer/next-i18next next-intlayerПотім додайте плагін сумісності до вашого
next.config.ts(він інжектує псевдонімиnext-i18next/react-i18next/i18next):next.config.tsКопіювати кодСкопіюйте код у буфер обміну
import type { NextConfig } from "next"; import { createNextI18nPlugin } from "@intlayer/next-i18next/plugin"; const withIntlayer = createNextI18nPlugin(); const nextConfig: NextConfig = { /* ваші параметри */ }; export default withIntlayer(nextConfig);Вам більше не потрібен
i18next.init()або ручне завантаження провайдера. Intlayer компілює всі словники під час побудови, тому немає кроку завантаження під час виконання. Провайдер з псевдонімом обробляє ініціалізацію за вас.
Це все для швидкої міграції. Ваша програма тепер працює на Intlayer, зберігаючи кожний імпорт та API react-i18next.
Типізовані ключі перекладу — автоматично. Як тільки Intlayer компілює ваші словники,
useTranslationтаgetFixedTтипізуються відповідно до вашого фактичного вмісту. Ключі автодоповнюються у вашому IDE, а неправильні шляхи викликають помилки TypeScript під час побудови — жодного додаткового налаштування не потрібно.tsxКопіювати кодСкопіюйте код у буфер обміну
// 'about' — зареєстрований ключ словника → t() приймає лише правильні крапкові шляхиconst { t } = useTranslation("about");t("counter.label"); // ✓ автодоповненняt("does.not.exist"); // ✗ помилка TypeScript// На стороні сервера (екземпляр i18next)const tAbout = i18n.getFixedT(null, "about");tAbout("counter.label"); // ✓ типізовано
Повна міграція
Наведені нижче кроки є необов'язковими і можуть виконуватися поступово. Вони розблоковують повний набір функцій Intlayer: візуальний редактор, CMS, типізовані файли вмісту, переклад з використанням AI та інше.
Явне перейменування імпорту (необов'язково)
Необов'язковоПлагіни Intlayer вже обробляють aliasing на рівні bundler. Якщо ви віддаєте перевагу явній вказівці залежності у своїх файлах, ви можете перейменувати імпорти вручну:
Показати весь вміст таблиціВідкрийте таблицю в модальному вікні, щоб чітко переглянути всі дані
Раніше Після import { useTranslation } from 'react-i18next'import { useTranslation } from '@intlayer/react-i18next'import { Trans } from 'react-i18next'import { Trans } from '@intlayer/react-i18next'import { withTranslation } from 'react-i18next'import { withTranslation } from '@intlayer/react-i18next'import { I18nextProvider } from 'react-i18next'import { I18nextProvider } from '@intlayer/react-i18next'import { initReactI18next } from 'react-i18next'import { initReactI18next } from '@intlayer/react-i18next'import i18next from 'i18next'import i18next from '@intlayer/i18next'import { createInstance } from 'i18next'import { createInstance } from '@intlayer/i18next'import { t } from 'i18next'import { t } from '@intlayer/i18next'Для Next.js (
next-i18next):Показати весь вміст таблиціВідкрийте таблицю в модальному вікні, щоб чітко переглянути всі дані
Раніше Після import { serverSideTranslations } from 'next-i18next/serverSideTranslations'import { serverSideTranslations } from '@intlayer/next-i18next'import { appWithTranslation } from 'next-i18next'import { appWithTranslation } from '@intlayer/next-i18next'import { useTranslation } from 'next-i18next'import { useTranslation } from '@intlayer/next-i18next'Увімкнення автоматизованого перекладу з AI
Необов'язковоКоли Intlayer буде підключено, використовуйте його CLI для автоматичного заповнення відсутніх перекладів:
bashКопіювати кодСкопіюйте код у буфер обміну
# Тест на відсутні переклади (додайте в CI)npx intlayer test# Заповнити відсутні переклади за допомогою AInpx intlayer fillДодайте конфігурацію AI до
intlayer.config.ts:intlayer.config.tsКопіювати кодСкопіюйте код у буфер обміну
import { Locales, type IntlayerConfig } from "intlayer"; import { syncJSON } from "@intlayer/sync-json-plugin"; const config: IntlayerConfig = { internationalization: { locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], defaultLocale: Locales.ENGLISH, }, plugins: [ syncJSON({ format: "i18next", source: ({ locale }) => `./src/locales/${locale}.json`, location: "src/locales", }), ], ai: { apiKey: process.env.OPENAI_API_KEY, // provider: "openai", // за замовчуванням // model: "gpt-4o-mini", // за замовчуванням }, }; export default config;Див. документацію Intlayer CLI для всіх доступних опцій.
Що можна видалити після міграції
Після того як адаптери сумісності будуть на місці, наступний boilerplate react-i18next / i18next можна видалити:
Відкрийте таблицю в модальному вікні, щоб чітко переглянути всі дані
| Файл / шаблон | Чому більше це не потрібно |
|---|---|
i18next.init() calls | Інтлейєр автоматично ініціалізує все; немає етапу завантаження під час виконання. |
I18nextProvider / initReactI18next | Плагін Intlayer обробляє впровадження та завантаження під капотом. |
JSON language bundles (locales/*.json) | JSON пакети потрібні лише якщо ви все ще використовуєте плагін syncJSON. Після міграції на файли .content.ts ви можете видалити папку JSON. |
Коли ви будете готові йти далі, Intlayer автоматично виявляє всі файли .content.ts і .content.json будь-де у вашій кодовій базі (за замовчуванням, будь-де всередині ./src). Ви можете розмістити файл my-component.content.ts прямо поряд з вашим MyComponent.tsx, і Intlayer перехопить його під час збирання без будь-якої додаткової конфігурації — без імпортів, реєстрації чи централізованого файлу індексу. Це робить розташування перекладів поряд зі сторінками та компонентами абсолютно безпроблемним.
Налаштування TypeScript
Intlayer використовує модульне розширення для забезпечення повної TypeScript intellisense для ваших ключів перекладу. Переконайтесь, що ваш tsconfig.json включає автоматично генеровані типи:
Скопіюйте код у буфер обміну
{ // ... Ваші існуючі конфігурації TypeScript "include": [ // ... Ваші існуючі конфігурації TypeScript ".intlayer/**/*.ts", // Включити автоматично генеровані типи ],}Конфігурація Git
Додайте сформовану директорію Intlayer до вашого .gitignore:
Скопіюйте код у буфер обміну
# Ігнорувати файли, генеровані Intlayer.intlayerЙди далі
- Visual Editor — Керуйте перекладами візуально у вашому браузері: Intlayer Visual Editor
- CMS — Екстерналізуйте та керуйте контентом віддалено: Intlayer CMS
- VS Code Extension — Отримуйте автозаповнення та виявлення помилок перекладу в реальному часі: Intlayer VS Code Extension
- CLI Reference — Повний список команд CLI: Intlayer CLI
- Intlayer with React — Повний посібник налаштування для React: intlayerwithvite+react.md
- Intlayer with Next.js — Повний посібник налаштування для Next.js: intlayerwithnextjs_16.md