Задайте питання та отримайте підсумок документа, вказавши цю сторінку та обраного вами постачальника штучного інтелекту
Історія версій
- "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
Перехід від next-i18next до Intlayer
Чому мігрувати з next-i18next на 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 для допомоги вам у керуванні вашим багатомовним контентом у реальному часі, що робить співпрацю з перекладачами, копірайтерами та іншими членами команди безперешкодною. Контент можна зберігати локально та/або віддалено.
Стратегії міграції
Оскільки next-i18next обертає react-i18next та i18next, існують дві взаємодоповнювальні стратегії для міграції на Intlayer:
Адаптер сумісності (рекомендується для існуючих додатків) — Встановіть
@intlayer/next-i18next,@intlayer/react-i18nextта@intlayer/i18next. Ці пакети експортують точно такий же API, як їхні аналоги, але делегують всю роботу перекладу Intlayer під капотом. Ви зберігаєте існуючі викликиuseTranslation,appWithTranslation,serverSideTranslationsта маршрутизацію Next.js Pages без змін — єдиною змінею є ініціалізація.Повна міграція — Поступово замініть API
next-i18nextна нативні гаки Intlayer (useIntlayer) та розташуйте контент у файлах.content.tsпоряд з вашими компонентами.
Цей посібник спочатку охоплює Стратегію 1 (адаптер типу "plug-and-play"), а потім проводить вас через опціональну повну міграцію.
Зміст
Швидка міграція
Наступні кроки - це мінімум, необхідний для запуску вашого існуючого додатка Next.js Pages Router на Intlayer без змін коду в ваших сторінках та компонентах.
Встановлення залежностей
Встановіть основні пакети Intlayer та адаптери сумісності:
bashКопіювати кодСкопіюйте код у буфер обміну
npx intlayer-cli init --interactiveпрапор
--interactiveопціональний. Використовуйтеintlayer-cli init, якщо ви AI агент.Ця команда визначить ваше середовище та встановить необхідні пакети. Наприклад:
bashКопіювати кодСкопіюйте код у буфер обміну
npm install intlayer next-intlayer react-intlayer @intlayer/next-i18next @intlayer/react-i18next @intlayer/i18next @intlayer/sync-json-pluginВи можете безпечно зберігати
next-i18next,react-i18nextтаi18nextвстановленими під час міграції, хоча ви видалите їх після встановлення псевдонімів.Налаштування Intlayer
Команда
intlayer initстворює стартовий файлintlayer.config.ts. Оновіть його відповідно до ваших існуючих локалей та вкажіть плагінуsyncJSONна ваші файли повідомленьnext-i18next(зазвичай всерединіpublic/locales):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: ({ key, locale }) => `./public/locales/${locale}/${key}.json`, location: "public/locales", }), ], }; export default config;sourceвідображає локаль та простір назв (key) на шлях до його JSON файлу.locationповідомляє спостерігачу Intlayer, яку папку моніторити на наявність змін. Опціяformat: 'i18next'забезпечує правильне розпарсення заповнювачів дляnext-i18next.Оновлення конфігурації Next.js
Обгорніть ваш існуючий
next.config.ts(або.js) за допомогоюcreateNextI18nPluginз@intlayer/next-i18next/plugin. Цей обгортач складаєwithIntlayerта впроваджує псевдонімиnext-i18next/react-i18next/i18next→@intlayer/*, тому ваші існуючі викликиimport { useTranslation } from 'next-i18next'прозоро перенаправляються під час компіляції. Жодних змін вихідного кода не потрібно.next.config.tsКопіювати кодСкопіюйте код у буфер обміну
import type { NextConfig } from "next"; import { createNextI18nPlugin } from "@intlayer/next-i18next/plugin"; // Ви можете видалити конфігурацію i18n, імпортовану з next-i18next.config.js // import { i18n } from './next-i18next.config'; const withIntlayer = createNextI18nPlugin(); const nextConfig: NextConfig = { // Intlayer керує маршрутизацією Next.js i18n під капотом, // тому вам більше не потрібно передавати об'єкт i18n сюди. }; export default withIntlayer(nextConfig);Вам більше не потрібен файл
next-i18next.config.js. Intlayer компілює всі словники під час компіляції, беручи на себе визначення локалі, маршрутизацію та завантаження словника без втручання.Надаєте перевагу простому
withIntlayerзnext-intlayer/server? Він компілює ваші словники, але не додає псевдонімиnext-i18next/react-i18next/i18next— тоді вам потрібно буде вручну перейменувати імпорти на@intlayer/*(див. крок 4).
Ось і все для швидкої міграції. Ваш додаток Next.js тепер працює на Intlayer, зберігаючи цілісність всіх викликів useTranslation, serverSideTranslations та appWithTranslation.
Типізовані ключі перекладу — автоматично. Після того як Intlayer скомпілює ваші словники,
useTranslationтаgetFixedTтипізуються щодо вашого фактичного вмісту. Ключі автозавершуються у вашій IDE, а невалідні шляхи викликають помилки TypeScript під час компіляції — додаткове налаштування не потрібно.tsxКопіювати кодСкопіюйте код у буфер обміну
// Pages Router — 'about' це зареєстрований ключ словникаconst { t } = useTranslation("about");t("counter.label"); // ✓ автозавершенняt("does.not.exist"); // ✗ помилка TypeScript// getStaticProps / getServerSideProps (екземпляр i18next)const tAbout = i18n.getFixedT(null, "about");tAbout("counter.label"); // ✓ типізовано
Повна міграція
Наведені нижче кроки є необов'язковими та можуть виконуватися поступово. Вони розблоковують повний набір функцій Intlayer: візуальний редактор, CMS, типізовані файли вмісту, AI-потужний переклад та інше.
Явне перейменування імпортів (необов'язково)
Необов'язковоПлагін Intlayer вже обробляє aliasing на рівні bundler. Якщо ви надаєте перевагу явному позначенню залежності у вихідних файлах, ви можете вручну перейменувати імпорти:
Показати весь вміст таблиціВідкрийте таблицю в модальному вікні, щоб чітко переглянути всі дані
Раніше Тепер 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'import { useTranslation } from 'react-i18next'import { useTranslation } from '@intlayer/react-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: ({ key, locale }) => `./public/locales/${locale}/${key}.json`, location: "public/locales", }), ], ai: { apiKey: process.env.OPENAI_API_KEY, // provider: "openai", // за замовчуванням // model: "gpt-4o-mini", // за замовчуванням }, }; export default config;Див. документацію Intlayer CLI для всіх доступних опцій.
Що можна видалити після міграції
Після того як адаптер сумісності буде на місці, наступний boilerplate next-i18next можна видалити:
Відкрийте таблицю в модальному вікні, щоб чітко переглянути всі дані
| Файл / pattern | Чому він більше не потрібен |
|---|---|
next-i18next.config.js | Intlayer обробляє маршрутизацію, завантаження словників та стандартні мови внутрішньо на основі intlayer.config.ts. |
next-i18next з package.json | Повністю замінено на @intlayer/next-i18next та aliasing. |
JSON мовні пакети (public/locales/*.json) | JSON пакети потрібні лише якщо ви все ще використовуєте plugin syncJSON. Після міграції на .content.ts файли ви можете видалити папку JSON. |
Коли ви будете готові йти далі, Intlayer автоматично виявляє всі .content.ts та .content.json файли будь-де у вашій кодовій базі (за замовчуванням, будь-де всередині ./src). Ви можете розмістити файл my-component.content.ts прямо поруч з вашим MyComponent.tsx і Intlayer підхопить його під час збірки без будь-якої додаткової конфігурації — без імпортів, реєстрації чи централізованого файлу індексу. Це робить co-locating перекладів з сторінками та компонентами абсолютно беззбійним.
Налаштування TypeScript
Intlayer використовує module augmentation для забезпечення повної TypeScript intellisense для ваших ключів перекладу. Переконайтесь, що ваш файл tsconfig.json включає автоматично згенеровані типи:
Скопіюйте код у буфер обміну
{ // ... Ваші існуючі конфігурації TypeScript "include": [ // ... Ваші існуючі конфігурації TypeScript ".intlayer/**/*.ts", // Включити автоматично згенеровані типи ],}Git Configuration
Додайте згенеровану Intlayer директорію до вашого .gitignore:
Скопіюйте код у буфер обміну
# Ignore the files generated by Intlayer.intlayerЙдіть далі
- Visual Editor — Керуйте перекладами візуально у браузері: Intlayer Visual Editor
- CMS — Екстерналізуйте та керуйте вмістом віддалено: Intlayer CMS
- VS Code Extension — Отримайте автодоповнення та виявлення помилок перекладу в реальному часі: Intlayer VS Code Extension
- CLI Reference — Повний список команд CLI: Intlayer CLI
- Intlayer with Next.js (Pages Router) — Повний посібник налаштування для Next.js: intlayerwithnextjspagerouter.md