Задайте питання та отримайте підсумок документа, вказавши цю сторінку та обраного вами постачальника штучного інтелекту
Ця документація застаріла, базову версію оновлено станом на 4 жовтня 2026 р..
Перейти до англійської версії документаІсторія версій
- "Ініціалізація історії"v5.5.1029.06.2025
Вміст цієї сторінки перекладено за допомогою штучного інтелекту.
Переглянути останню версію оригінального вмісту англійськоюЯкщо у вас є ідея щодо покращення цієї документації, будь ласка, долучіться, надіславши pull request на GitHub.
Посилання на документацію на GitHubСкопіювати документацію у форматі Markdown в буфер обміну
Як працює Intlayer
Зміст
Огляд
Головна ідея Intlayer, застосувати керування контентом на рівні компонентів. Іншими словами, Intlayer дозволяє вам декларувати контент будь-де у вашому codebase, наприклад у тій самій директорії, що й компонент.
Скопіюйте код у буфер обміну
Для цього роль Intlayer полягає в тому, щоб знайти всі ваші content declaration files у всіх доступних форматах у проєкті, а потім згенерувати з них dictionaries.
Отже, є два основні етапи:
- Етап побудови
- Етап інтерпретації
Етап побудови словників
Етап побудови можна виконати трьома способами:
- за допомогою CLI з
npx intlayer build - використовуючи розширення VS Code
- за допомогою плагінів застосунку, таких як пакет
vite-intlayer, або їхніх еквівалентів для Next.js. Коли ви використовуєте один із цих плагінів, Intlayer автоматично збирає ваші словники під час запуску (dev) або збірки (prod) застосунку.
Оголошення файлів контенту
- Файли контенту можна визначати в різних форматах, таких як TypeScript, ECMAScript, CommonJS або JSON.
- Файли контенту можуть бути визначені в будь-якому місці проєкту, що дозволяє кращу підтримку та масштабованість. Важливо дотримуватися конвенцій щодо розширень файлів контенту. Це розширення за замовчуванням,
*.content.{js|cjs|mjs|ts|tsx|json}, але його можна змінити у файлі конфігурації.
Генерація
dictionaries- Словники генеруються з файлів контенту. За замовчуванням словники Intlayer створюються в директорії
.intlayer/dictionariesпроєкту. - Ці словники генеруються в різних форматах, щоб задовольнити всі потреби та оптимізувати продуктивність застосунку.
- Словники генеруються з файлів контенту. За замовчуванням словники Intlayer створюються в директорії
Генерація типів словників
На основі ваших dictionaries Intlayer згенерує типи, щоб зробити їх доступними у вашому застосунку.
Типи словників генеруються з файлів оголошень вмісту Intlayer (
content declaration files). За замовчуванням типи словників Intlayer генеруються в директорії.intlayer/typesпроєкту.Intlayer module augmentation, це можливість TypeScript, яка дозволяє визначати додаткові типи для Intlayer. Це спрощує досвід розробки, підказуючи доступні або обов'язкові аргументи. Серед згенерованих типів, типи словників Intlayer або навіть типи конфігурації мов додаються до файлу
types/intlayer.d.tsі використовуються іншими пакетами. Для цього необхідно, щоб файлtsconfig.jsonбув налаштований на включення директоріїtypesпроекту.
Крок інтерпретації словників
За допомогою Intlayer ви будете отримувати доступ до вашого контенту в застосунку, використовуючи хук useIntlayer.
Скопіюйте код у буфер обміну
Цей хук керуватиме визначенням локалі за вас і повертатиме контент для поточної локалі. Використовуючи цей хук, ви також зможете інтерпретувати markdown, керувати pluralization та багато іншого.
Щоб побачити всі можливості Intlayer, ви можете прочитати документацію словників.
Віддалений контент
Intlayer дозволяє оголошувати контент локально, а потім експортувати його до CMS, щоб зробити його редагованим для вашої нетехнічної команди.
Таким чином ви зможете відправляти (push) та отримувати (pull) контент між CMS та вашим додатком, подібно до того, як ви працюєте з Git для вашого коду.
Для зовнішніх словників, які використовують CMS, Intlayer виконує базову операцію fetch для отримання віддалених словників і об'єднує їх з локальними. Якщо це налаштовано в проекті, Intlayer автоматично керуватиме отриманням контенту з CMS під час запуску додатка (dev) або під час збірки (prod).
Візуальний редактор
Intlayer також надає візуальний редактор, щоб дозволити редагувати ваш контент у візуальний спосіб. Цей візуальний редактор доступний у зовнішньому пакеті intlayer-editor.

- Сервер, це проста Express-аплікація, яка прослуховує запити від клієнта та отримує вміст вашого застосунку, такий як
dictionaries, і конфігурацію, щоб зробити їх доступними на стороні клієнта. - З іншого боку, клієнт, це React-аплікація, яка використовується для взаємодії з вашим контентом за допомогою візуального інтерфейсу.
Коли ви викликаєте свій контент за допомогою useIntlayer і редактор увімкнений, він автоматично обгортає ваші рядки об'єктом Proxy з ім'ям IntlayerNode. Цей вузол використовує window.postMessage для зв'язку з вкладеним iframe, що містить інтерфейс візуального редактора.
На стороні редактора він прослуховує ці повідомлення та імітує реальну взаємодію з вашим контентом, дозволяючи редагувати текст безпосередньо в контексті вашого додатку.
Оптимізація збірки додатку
Щоб оптимізувати розмір бандлу вашого додатку, Intlayer надає два плагіни для оптимізації збірки: @intlayer/babel та @intlayer/swc.
Плагіни Babel та SWC працюють шляхом аналізу абстрактного синтаксичного дерева (AST) вашого додатка, щоб замінити виклики функцій Intlayer на оптимізований код. Цей процес робить ваш фінальний bundle легшим у production, забезпечуючи імпорт лише тих словників, які фактично використовуються, оптимізуючи chunking та зменшуючи розмір bundle.
У режимі розробки Intlayer використовує централізований статичний імпорт словників, щоб спростити досвід розробки.
Активувавши опцію importMode = "dynamic" у configuration, Intlayer використовуватиме динамічний імпорт для завантаження словників. Ця опція вимкнена за замовчуванням, щоб уникнути асинхронної обробки під час рендерингу додатка.
@intlayer/babelдоступний за замовчуванням у пакетіvite-intlayer,
@intlayer/babelдоступний за замовчуванням у пакетіvite-intlayer,
@intlayer/swcне встановлений за замовчуванням у пакетіnext-intlayer, оскільки плагіни SWC все ще експериментальні в Next.js.
Щоб дізнатися, як налаштувати збірку вашого застосунку, ви можете прочитати документацію з конфігурації.
Пакети
Intlayer складається з кількох пакетів, кожен із яких має конкретну роль у процесі перекладу. Нижче, графічне зображення структури цих пакетів:
intlayer
Пакет intlayer використовується в застосунках для оголошення контенту у файлах контенту.
Фронтенд-фреймворки
Пакет react-intlayer використовується для інтерпретації словників Intlayer і робить їх придатними для використання в React-застосунках.
Пакет next-intlayer використовується як шар поверх react-intlayer, щоб зробити словники Intlayer придатними для використання в Next.js-застосунках. Він інтегрує необхідні функції для роботи Intlayer у середовищі Next.js, такі як translation middleware, маршрутизація або конфігурація файлу next.config.js.
Пакет vue-intlayer використовується для інтерпретації словників Intlayer і робить їх придатними для використання у Vue-застосунках.
Пакет nuxt-intlayer є модулем Nuxt, який робить словники Intlayer доступними в застосунках Nuxt. Він інтегрує основні можливості для роботи Intlayer у середовищі Nuxt, такі як middleware перекладу, маршрутизація або конфігурація файлу nuxt.config.js.
Пакет svelte-intlayer використовується для інтерпретації словників Intlayer і їх використання в застосунках Svelte.
Пакет solid-intlayer використовується для інтерпретації словників Intlayer і їх використання в застосунках Solid.js.
Пакет preact-intlayer використовується для інтерпретації словників Intlayer і їх використання в застосунках Preact.
Пакет angular-intlayer використовується для інтерпретації словників Intlayer та забезпечення їхнього використання в додатках Angular.
Пакет astro-intlayer надає необхідні інструменти для інтеграції Intlayer у додатки Astro. Він налаштовує маршрутизацію на основі локалі та керування словниками.
Пакет remix-intlayer надає необхідні інструменти для інтеграції Intlayer у додатки Remix. Він налаштовує маршрутизацію на основі локалі, контекст на стороні сервера та керування словниками.
Пакет react-native-intlayer надає інструменти для інтеграції плагінів, щоб Intlayer працював з бандлером Metro.
Пакет lit-intlayer надає інструменти та компоненти для інтерпретації та використання словників Intlayer у програмах Lit.
Пакет vanilla-intlayer надає інструменти для інтеграції Intlayer у програми на чистому JavaScript, HTML або PHP.
Бекенд-фреймворки
Пакет express-intlayer використовується для застосування Intlayer на бекенді Express.js.
Пакет fastify-intlayer надає плагін для додатків на Fastify для роботи з інтернаціоналізацією. Він визначає локаль користувача та декорує об'єкт запиту (request).
Пакет hono-intlayer надає проміжне програмне забезпечення (middleware) для додатків Hono для обробки інтернаціоналізації. Він виявляє локаль користувача та заповнює об'єкт контексту.
Пакет elysia-intlayer надає плагін для додатків на Elysia для роботи з інтернаціоналізацією. Він визначає локаль користувача та впроваджує об'єкт intlayer у контекст маршруту.
Пакет adonis-intlayer надає проміжне ПЗ для додатків AdonisJS для обробки інтернаціоналізації. Він визначає локаль користувача та надає функції перекладу.
vite-intlayer
Містить плагін Vite для інтеграції Intlayer з бандлером Vite, а також middleware для визначення пріоритетної локалі користувача, керування cookie та обробки перенаправлень URL.
react-scripts-intlayer
Містить команди та плагіни react-scripts-intlayer для інтеграції Intlayer з додатком на базі Create React App. Ці плагіни засновані на craco і включають додаткову конфігурацію для бандлера Webpack.
eslint-plugin-intlayer
Пакет eslint-plugin-intlayer надає правила ESLint та oxlint для виявлення неперекладених рядків, перевірки визначень словників та дотримання найкращих практик i18n.
intlayer-editor
Пакет intlayer-editor використовується для забезпечення можливості використання візуального редактора. Цей пакет є опціональним, його можна встановити в застосунках, і він буде використовуватися пакетом react-intlayer.
Він складається з двох частин: сервера та клієнта.
Клієнт містить UI-елементи, які будуть використовуватися react-intlayer.
Сервер, на базі Express, використовується для отримання запитів від візуального редактора та керування або модифікації файлів контенту.
intlayer-cli
Пакет intlayer-cli можна використовувати для генерації словників за допомогою команди npx intlayer dictionaries build. Якщо intlayer вже встановлено, CLI встановлюється автоматично і цей пакет не є необхідним.
@intlayer/core
Пакет @intlayer/core є основним пакетом Intlayer. Він містить функції перекладу та керування словниками. @intlayer/core є багатоплатформним і використовується іншими пакетами для виконання інтерпретації словників.
@intlayer/config
Пакет @intlayer/config використовується для налаштування параметрів Intlayer, таких як доступні мови, параметри middleware Next.js або налаштування інтегрованого редактора.
@intlayer/webpack
Пакет @intlayer/webpack використовується для надання конфігурації Webpack, щоб застосунок на основі Webpack працював з Intlayer. Пакет також надає плагін, який можна додати до наявного застосунку Webpack.
@intlayer/cli
Пакет @intlayer/cli є NPM-пакетом, який використовується для оголошення скриптів, пов’язаних із командними інтерфейсами Intlayer. Він забезпечує узгодженість усіх CLI-команд Intlayer. Цей пакет, зокрема, використовується пакетами intlayer-cli та intlayer.
@intlayer/mcp
Пакет @intlayer/mcp забезпечує сервер MCP (Model Context Protocol), який надає підтримку IDE на базі ШІ, адаптовану до екосистеми Intlayer. Він автоматично завантажує документацію та інтегрується з Intlayer CLI.
@intlayer/lsp
Пакет @intlayer/lsp надає сервер Language Server Protocol (LSP), адаптований для Intlayer. Він забезпечує функції IDE, такі як перехід до визначення, пошук посилань, попередній перегляд при наведенні, автодоповнення ключів словника та діагностичні попередження.
@intlayer/ai
Пакет @intlayer/ai надає можливості SDK для програм Intlayer, уможливлюючи автоматизований переклад і генерацію контенту за допомогою ШІ.
@intlayer/analytics
Пакет @intlayer/analytics надає інструменти для збору метрик показів контенту, аналітики на рівні сторінок/локалей та вузлів, а також забезпечує A/B-тестування контенту.
@intlayer/dictionaries-entry
Пакет @intlayer/dictionaries-entry повертає шлях entry словників Intlayer: об'єднані словники з кореня, а також необ'єднані, віддалені, динамічні та fetch-словники з підшляхів /unmerged, /remote, /dynamic та /fetch. Оскільки з браузера неможливо виконувати пошук по файловій системі, використання bundler-ів, таких як Webpack або Rollup, для отримання шляху entry словників неможливе. Пакет та його підшляхи розроблені для того, щоб їх можна було alias-ити, що дозволяє оптимізувати bundling для різних збирачів, таких як Vite, Webpack та Turbopack.
@intlayer/engine
Пакет @intlayer/engine використовується для моніторингу файлів контенту та перегенерації зміненого словника при кожній модифікації.
@intlayer/editor
Пакет @intlayer/editor надає утиліти, пов'язані з редактором словників. Зокрема, він містить API для з'єднання застосунку з редактором Intlayer, а також утиліти для роботи зі словниками. Цей пакет є кросплатформним.
@intlayer/editor-react
Пакет @intlayer/editor-react надає стани, контексти, хуки та компоненти для з'єднання застосунку React з редактором Intlayer.
@intlayer/babel
Пакет @intlayer/babel надає інструменти, що оптимізують bundling словників для застосунків на основі Vite та Webpack.
@intlayer/swc
Пакет @intlayer/swc надає інструменти, що оптимізують bundling словників для застосунків Next.js.
@intlayer/api
Пакет @intlayer/api є API SDK для взаємодії з бекендом.
@intlayer/design-system
Пакет @intlayer/design-system використовується для обміну елементами дизайну між CMS і візуальним редактором.
@intlayer/backend
Пакет @intlayer/backend експортує типи бекенду та згодом надасть бекенд як окремий пакет.
Чат з нашою розумною документацією
Часто задавані запитання
Під час збирання. Плагін Intlayer сканує файли .content.ts, компілює їх в оптимізовані словники та записує до теки .intlayer. У середовищі розробки цей процес виконується миттєво при кожному збереженні файлу.
Значно менше, ніж рішення на основі просторів імен (namespaces), оскільки сторінка ніколи не завантажує каталог, який вона не рендерить. Розмітка, що рендериться на сервері, отримує свій контент безпосередньо на сервері, а компілятор під час збирання замінює виклики useIntlayer точними записами словника, які використовує компонент, тому невикористані ключі та мови видаляються. Динамічні словники розділяють залишок за окремими локалями. У порівнянні зі звичними альтернативами Intlayer зменшує розмір бандла та сторінки до 50%. Див. оптимізацію бандла та бенчмарк.
Так, і для цього є два шляхи. Ви можете переносити контент поступово, користуючись посібником з міграції з i18next або посібником з міграції з next-intl. Або ви можете повністю зберегти свій поточний API: адаптери сумісності надають абсолютно той самий інтерфейс, що й i18next, react-i18next, next-intl, next-i18next, react-intl, use-intl, vue-i18n та Lingui, але дані беруться зі словників Intlayer, завдяки чому змінюються лише імпорти, а код компонентів залишається незмінним.
Так. sync JSON плагін зберігає ваші файли /messages/{locale}/{namespace}.json як джерело істини та генерує словники Intlayer з них в обох напрямках. sync PO плагін робить те ж саме для gettext каталогів, а файли для окремих локалей дозволяють розділити контент за мовами замість групування локалей в один файл.
Ні. Запустіть npx intlayer extract, і Intlayer прочитає ваші файли, витягне призначені для користувача рядки і створить файл .content поруч із кожним компонентом, завдяки чому ви переглядаєте diff замість копіювання рядків у каталог вручну. Див. команду extract.
Для повністю автоматизованого робочого процесу Intlayer Compiler робить те саме під час збирання у коді JSX, TSX, Vue та Svelte, генеруючи словники під час кожної зміни, тому вручну підтримувати ключі не потрібно. Оскільки він працює через статичний аналіз, динамічні рядки середовища виконання залишаються поза його досяжністю.
П'ять інструментів, усі опціональні:
- Розширення VS Code: перехід від ключа
useIntlayerдо файлу контенту, вилучення рядків із компонента та запуск build, fill, test, push і pull із палітри команд або вкладки Intlayer. - LSP сервер: та сама функціональність у будь-якому редакторі з підтримкою LSP, включно з переходом до визначення, переглядом перекладеного значення під час наведення та автодоповненням ключів. Також підтримує виклики
i18next,react-i18next,next-intlтаuse-intl. - MCP сервер: надає документацію та CLI Intlayer для Cursor, VS Code, Claude Desktop, Claude Code та ChatGPT.
- Навички агента (Agent skills): спеціалізовані навички
intlayer-config,intlayer-cliтаintlayer-content. - Плагін ESLint: правило
no-raw-textвідстежує жорстко закодовані рядки.
