Задайте питання та отримайте підсумок документа, вказавши цю сторінку та обраного вами постачальника штучного інтелекту
Історія версій
- "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
Перехід з 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:
Compat adapter (рекомендується для існуючих додатків) — Встановіть
@intlayer/vue-i18n(для Vue-компонентів). Цей пакет надає абсолютно той самий API, що йvue-i18n, але делегує всю роботу з перекладами Intlayer під капотом. Ви зберігаєте свої існуючі виклики$t,useI18n()та<i18n-t>— єдина зміна — це шлях імпорту та ініціалізація.Повна міграція — Поступово замініть API
vue-i18nна нативні hook'и Intlayer (useIntlayer) та розташуйте контент у файлах.content.tsпоруч з вашими компонентами.
Цей посібник спочатку охоплює Strategy 1 (drop-in compat adapter), а потім проходить через опціональну повну міграцію.
Table of Contents
Швидка міграція
Наступні кроки є мінімально необхідними для запуску вашого існуючого vue-i18n застосунку на Intlayer без змін коду в ваших компонентах.
Встановлення залежностей
Встановіть основні пакети 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.Налаштування 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.Додайте плагін 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-intlayernuxt.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 та інше.
Явне перейменування імпортів (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 замінники — змін у сигнатурах функцій, аргументах або типах повернення не потрібно.
Увімкніть автоматизацію перекладу на основі 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 включає автоматично генеровані типи:
Скопіюйте код у буфер обміну
{ // ... Ваші існуючі конфігурації TypeScript "include": [ // ... Ваші існуючі конфігурації TypeScript ".intlayer/**/*.ts", // Включіть автоматично генеровані типи ],}Git конфігурація
Додайте створену Intlayer директорію до вашого .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