Задайте питання та отримайте підсумок документа, вказавши цю сторінку та обраного вами постачальника штучного інтелекту
Історія версій
- "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
Міграція з 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:
Compat adapter (рекомендується для існуючих додатків) — Встановіть
@intlayer/i18next. Цей пакет надає точно той самий API якi18next, але делегує всю роботу перекладу Intlayer під капотом. Ви зберігаєте свої існуючі викликиi18next.t(),i18next.changeLanguage()таcreateInstance()— єдина зміна - це шлях імпорту та ініціалізація.Повна міграція — Поступово замініть
i18nextAPI на нативні інструменти Intlayer та розмістіть вміст у файлах.content.ts.
Цей посібник спочатку охоплює Стратегію 1 (drop-in compat adapter), а потім розглядає опціональну повну міграцію.
Зміст
Швидка міграція
Наступні кроки — це мінімум, необхідний для запуску вашого існуючого додатку i18next на Intlayer без змін коду.
Встановлення залежностей
Встановіть основні пакети 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.Налаштування 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}}.Оновлення псевдонімів 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 та багато іншого.
Явне перейменування імпортів (необов'язково)
Необов'язковоЯкщо ви вважаєте за потрібне зробити залежність явною у ваших вихідних файлах або якщо ви не використовуєте плагін 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'Це прямі заміни — жодних змін до підписів функцій, аргументів або типів повернення не потрібно.
Увімкнути автоматизацію перекладу на базі 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 включає автоматично згенеровані типи:
Скопіюйте код у буфер обміну
{ // ... Ваші існуючі конфігурації TypeScript "include": [ // ... Ваші існуючі конфігурації TypeScript ".intlayer/**/*.ts", // Включіть автоматично згенеровані типи ],}Git Configuration
Додайте згенерований Intlayer каталог до вашого .gitignore:
Скопіюйте код у буфер обміну
# Ігнорувати файли, згенеровані Intlayer.intlayerЙдіть далі
- Visual Editor — Керуйте перекладами візуально у вашому браузері: Intlayer Visual Editor
- CMS — Екстерналізуйте та керуйте контентом віддалено: Intlayer CMS
- VS Code Extension — Отримайте автозаповнення та виявлення помилок перекладу в реальному часі: Intlayer VS Code Extension
- CLI Reference — Повний список команд CLI: Intlayer CLI