Автор:
    Дата створення:2026-06-05Останнє оновлення:2026-06-05

    Міграція з i18next на Intlayer

    Чому варто перейти з i18next на Intlayer?

    Замість завантаження великих JSON-файлів на ваші сторінки завантажуйте лише необхідний контент. Intlayer допомагає зменшити розмір bundle та сторінок на 50%.

    Область видимості контенту вашої програми полегшує обслуговування великомасштабних додатків. Ви можете дублювати або видаляти папку однієї функції без перегляду всієї codebase контенту. Крім того, Intlayer повністю типізований, щоб забезпечити точність вашого контенту.

    Intlayer також є рішенням із найактивнішою розробкою в екосистемі i18n — проблеми вирішуються швидко, нові адаптери фреймворків регулярно додаються, а основний API постійно вдосконалюється на основі реального відгуку з production.

    Розташування контенту поруч зменшує контекст, необхідний великим мовним моделям (LLMs). Intlayer також поставляється з набором інструментів, таких як CLI для тестування відсутніх перекладів, LSP, MCP та agent skills, щоб зробити досвід розробника (DX) ще зручнішим для AI агентів.

    Використовуйте автоматизацію для перекладу у вашому CI/CD pipeline, використовуючи LLM на ваш вибір за вартість вашого AI провайдера. Intlayer також пропонує компілятор для автоматизації вилучення контенту, а також веб-платформу для допомоги в перекладі у фоновому режимі.

    Підключення великих JSON-файлів до компонентів може привести до проблем із продуктивністю та реактивністю. Intlayer оптимізує завантаження контенту на етапі збірки.

    Більше ніж просто рішення i18n, Intlayer надає самостійно розміщений редактор та повноцінну CMS для керування вашим багатомовним контентом у режимі реального часу, що робить співпрацю з перекладачами, копірайтерами та іншими членами команди безпроблемною. Контент може зберігатися локально та/або віддалено.


    Стратегії міграції

    Існують дві взаємодоповнюючі стратегії для міграції з i18next на Intlayer:

    1. Compat adapter (рекомендується для існуючих додатків) — Встановіть @intlayer/i18next. Цей пакет надає точно той самий API як i18next, але делегує всю роботу перекладу Intlayer під капотом. Ви зберігаєте свої існуючі виклики i18next.t(), i18next.changeLanguage() та createInstance() — єдина зміна - це шлях імпорту та ініціалізація.

    2. Повна міграція — Поступово замініть i18next API на нативні інструменти Intlayer та розмістіть вміст у файлах .content.ts.

    Цей посібник спочатку охоплює Стратегію 1 (drop-in compat adapter), а потім розглядає опціональну повну міграцію.


    Зміст


    Швидка міграція

    Наступні кроки — це мінімум, необхідний для запуску вашого існуючого додатку i18next на Intlayer без змін коду.

    1. Встановлення залежностей

      Встановіть основні пакети Intlayer та адаптер сумісності:

      bash
      npx intlayer-cli init --interactive
      прапор --interactive не обов'язковий. Використовуйте intlayer-cli init, якщо ви AI-агент.
      Ця команда виявить ваше середовище та встановить необхідні пакети. Наприклад:
      bash
      npm install intlayer @intlayer/i18next @intlayer/sync-json-plugin
      Ви можете залишити встановленим i18next — адаптер сумісності використовує його як devDependency / peerDependency для типів TypeScript.
    2. Налаштування 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({
            // відповідає синтаксису заповнювачів i18next: {{name}}
            format: "i18next",
            source: ({ locale }) => `./src/locales/${locale}.json`,
            location: "src/locales",
          }),
        ],
      };
      
      export default config;
      source маппує локаль на шлях її JSON-файлу. location говорить спостерігачу Intlayer, яку папку моніторити на предмет змін. Опція format: 'i18next' забезпечує правильний парсинг заповнювачів на кшталт {{name}}.
    3. Оновлення псевдонімів bundler (необов'язково)

      Якщо ви використовуєте bundler (Vite, Webpack, esbuild), ви можете вінжектити псевдонім модуля, щоб import ... from 'i18next' автоматично розв'язувався на @intlayer/i18next. Це усуває необхідність вручну змінювати імпорти у вашій кодовій базі.

      Для Vite:

      vite.config.ts
      import { defineConfig } from "vite";
      import i18nextVitePlugin from "@intlayer/i18next/plugin";
      
      export default defineConfig({
        plugins: [i18nextVitePlugin()],
      });

      i18nextVitePlugin() обгортає плагін intlayer() від vite-intlayer та додає псевдонім i18next@intlayer/i18next за вас. Використання звичайного плагіна intlayer() від vite-intlayer компілює словники, але не додає цей псевдонім — ви тоді вручну перейменуєте імпорти на @intlayer/i18next (див. наступний крок).

    Це все для швидкої міграції. Ваш додаток тепер запускається на Intlayer, зберігаючи кожен імпорт та API i18next.


    Повна міграція

    Наведені нижче кроки є необов'язковими і можуть виконуватися поступово. Вони розблоковують повний набір функцій Intlayer: візуальний редактор, CMS, типізовані файли контенту, переклад на базі AI та багато іншого.

    1. Явне перейменування імпортів (необов'язково)

      Необов'язково

      Якщо ви вважаєте за потрібне зробити залежність явною у ваших вихідних файлах або якщо ви не використовуєте плагін bundler для створення псевдонімів імпортів, ви можете вручну перейменувати імпорти:

      До Після
      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'

      Це прямі заміни — жодних змін до підписів функцій, аргументів або типів повернення не потрібно.

    2. Увімкнути автоматизацію перекладу на базі 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 для всіх доступних опцій.

    Що можна видалити після міграції

    Після того як адаптер сумісності буде встановлений, наступний i18next шаблонний код можна видалити:

    Файл / pattern Чому він більше не потрібен
    i18next.init() calls Intlayer ініціалізує все автоматично; немає кроку завантаження під час виконання.
    i18next.use(...) Intlayer не використовує плагіни i18next, backends або детектори мови.
    JSON language bundles (locales/*.json) JSON пакети потрібні тільки якщо ви все ще використовуєте плагін syncJSON. Після переходу на файли .content.ts ви можете видалити папку JSON.

    Коли ви готові йти далі, Intlayer автоматично виявляє всі файли .content.ts і .content.json де-небудь у вашому codebase (за замовчуванням, де-небудь всередину ./src). Ви можете розмістити файл my-component.content.ts прямо поруч із вашою логікою, і Intlayer підберіть його під час збірки без додаткової конфігурації — без імпортів, реєстрацій або централізованого індексного файлу. Це робить co-locating перекладів абсолютно безпроблемним.


    Налаштування TypeScript

    Intlayer використовує module augmentation для забезпечення повної TypeScript intellisense для ваших ключів перекладу. Переконайтеся, що ваш tsconfig.json включає автоматично згенеровані типи:

    tsconfig.json
    {  // ... Ваші існуючі конфігурації TypeScript  "include": [    // ... Ваші існуючі конфігурації TypeScript    ".intlayer/**/*.ts", // Включіть автоматично згенеровані типи  ],}

    Git Configuration

    Додайте згенерований Intlayer каталог до вашого .gitignore:

    .gitignore
    # Ігнорувати файли, згенеровані Intlayer.intlayer

    Йдіть далі

    • Visual Editor — Керуйте перекладами візуально у вашому браузері: Intlayer Visual Editor
    • CMS — Екстерналізуйте та керуйте контентом віддалено: Intlayer CMS
    • VS Code Extension — Отримайте автозаповнення та виявлення помилок перекладу в реальному часі: Intlayer VS Code Extension
    • CLI Reference — Повний список команд CLI: Intlayer CLI