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

    Перехід з vue-i18n на Intlayer

    Чому перейти з vue-i18n на Intlayer?

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

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

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

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

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

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

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


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

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

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

    2. Повна міграція — Поступово замініть API vue-i18n на нативні hook'и Intlayer (useIntlayer) та розташуйте контент у файлах .content.ts поруч з вашими компонентами.

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


    Table of Contents


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

    Наступні кроки є мінімально необхідними для запуску вашого існуючого vue-i18n застосунку на Intlayer без змін коду в ваших компонентах.

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

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

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

      Обгорніть вашу існуючу конфігурацію бундлера плагіном сумісності. Він складає основний плагін Intlayer, налаштовує спостереження вмісту та — критично — впроваджує псевдонім модуля, щоб ваші існуючі виклики import … from 'vue-i18n' були прозоро перенаправлені на @intlayer/vue-i18n під час збирання. Жодні змін файлів вихідного коду не потрібні.

      Для Vite:

      vite.config.ts
      import { defineConfig } from "vite";
      import vue from "@vitejs/plugin-vue";
      import { vueI18nVitePlugin } from "@intlayer/vue-i18n/plugin";
      
      export default defineConfig({
        plugins: [vue(), vueI18nVitePlugin()],
      });
      vueI18nVitePlugin() обгортає плагін intlayer() з vite-intlayer та додає псевдонім vue-i18n. Використання звичайного плагіна intlayer() з vite-intlayer компілює словники, але не додає псевдонім — тоді вам доведеться вручну перейменувати імпорти на @intlayer/vue-i18n (див. Крок 4).

      Для Nuxt:

      Якщо ви використовуєте @nuxtjs/i18n (інтеграція Nuxt), встановіть nuxt-intlayer та додайте його до вашого nuxt.config.ts:

      bash
      npm install nuxt-intlayer
      nuxt.config.ts
      export default defineNuxtConfig({
        modules: ["nuxt-intlayer"],
        // Ви можете безпечно видалити @nuxtjs/i18n з ваших модулів
      });
      Вам більше не потрібні createI18n() або ручне завантаження провайдера. Intlayer компілює всі словники під час збирання, тому немає етапу завантаження під час виконання. Псевдонімований провайдер обробляє ініціалізацію для вас.

    На цьому швидка міграція завершена. Ваш застосунок тепер працює на Intlayer, при цьому зберігаючи кожен імпорт та API vue-i18n.

    Типізовані ключі перекладу — автоматично. Після того як Intlayer скомпілює ваші словники, useI18n типізується відповідно до вашого фактичного вмісту, коли ви передаєте опцію namespace. Ключі автодоповнюються у вашому IDE, а невалідні шляхи спричиняють помилки TypeScript під час збирання — додатково налаштування не потрібно.

    ts
    // 'about' — зареєстрований ключ словникаconst { t } = useI18n({ namespace: "about" });t("counter.label"); // ✓ автодоповненоt("does.not.exist"); // ✗ помилка TypeScript

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

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

    1. Явне перейменування імпортів (optional)

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

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

      Before After
      import { useI18n } from 'vue-i18n' import { useI18n } from '@intlayer/vue-i18n'
      import { createI18n } from 'vue-i18n' import { createI18n } from '@intlayer/vue-i18n'

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

    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: "icu",
            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 vue-i18n можна видалити:

    Файл / шаблон Чому він більше не потрібен
    createI18n() calls Постачальник Intlayer ініціалізує все автоматично; немає кроку завантаження під час виконання.
    Vue plugin registration (app.use(i18n)) Плагін Intlayer обробляє ін'єкцію та завантаження під капотом.
    JSON language bundles (locales/*.json) JSON bundles потрібні лише якщо ви все ще використовуєте плагін syncJSON. Як тільки ви перейдете на файли .content.ts, ви можете видалити папку JSON.

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


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

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

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

    Git конфігурація

    Додайте створену Intlayer директорію до вашого .gitignore:

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

    Йти далі

    • Візуальний редактор — Керуйте перекладами візуально у браузері: Intlayer Visual Editor
    • CMS — Екстерналізуйте та керуйте контентом віддалено: Intlayer CMS
    • VS Code Extension — Отримуйте автодоповнення та виявлення помилок перекладу в реальному часі: Intlayer VS Code Extension
    • CLI Reference — Повний список команд CLI: Intlayer CLI
    • Intlayer with Vue — Повне керівництво налаштування для Vue: intlayerwithvite+vue.md
    • Intlayer with Nuxt — Повне керівництво налаштування для Nuxt: intlayerwithnuxt.md