ГоловнаПісочницяВітринаДодатокДокументаціяБлог
    • Englishанглійська
      EN
    • русскийросійська
      RU
    • 日本語японська
      JA
    • françaisфранцузька
      FR
    • 한국어корейська
      KO
    • 中文китайська
      ZH
    • españolіспанська
      ES
    • Deutschнімецька
      DE
    • العربيةарабська
      AR
    • italianoіталійська
      IT
    • British Englishанглійська (Велика Британія)
      EN-GB
    • portuguêsпортугальська
      PT
    • हिन्दीгінді
      HI
    • Türkçeтурецька
      TR
    • polskiпольська
      PL
    • Indonesiaіндонезійська
      ID
    • Tiếng Việtвʼєтнамська
      VI
    • українськаукраїнська
      UK
    /
    Фільтрувати документи за фреймворком
    Alt+←
    Чому Intlayer?
    Почати
    Концепція
    • Як працює Intlayer
    • Конфігурація
    • TestFillBuildWatchExtractLoginPushPullConfigurationListVersionEditorLiveDebugDoc ReviewDoc TranslateSDK
    • Візуальний редактор
    • CMS
    • Інтеграція CI/CD
    • ПерекладМножинаПерелікУмоваРідВставкаФайлВкладеністьMarkdownHTMLОтримання функції
    • Файл для кожної локалі
    • Компілятор
    • Автозаповнення
    • Тестування
    • Оптимізація пакета
    Середовище
    • Next.js 14 та App Router
      Next.js 15
      Next.js без locale URL
      Next.js та Page Router
      Compiler
    • Tanstack Start Solid
    • Astro та React
      Astro та Svelte
      Astro та Vue
      Astro та Solid
      Astro та Preact
      Astro та Lit
      Astro та Vanilla JS
    • React Router v7
      React Router v7 (fs-routes)
      Compiler
    • Nuxt та Vue
    • Vite та Solid
    • SvelteKit
    • Vite та Preact
    • Vite та Vanilla JS
    • Vite та Lit
    • Angular 19 (Webpack)
      Analog
    • React CRA
    • React Native та Expo
    • Express.js
      NestJS
      Fastify
      Hono
      Adonis
    • Lynx та React
    Plugins
    • JSON
    • gettext (.po)
    Розширення VS Code
    Агент
    • Сервер MCP
    • Навички агента
    Релізи
    • v8
    • v7
    • v6
    Бенчмарк
    • Next.js
    • TanStack
    • Vue
    • Solid
    • Svelte
    Блог
    Задати питання
    1. Documentation
    2. Compiler
    Дата створення:2025-09-09Останнє оновлення:2026-03-12
    Надішліть цей документ вашому улюбленому AI-асистенту
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    Задайте питання та отримайте підсумок документа, вказавши цю сторінку та обраного вами постачальника штучного інтелекту

    Історія версій

    1. "Оновлення опцій компілятора, додана підтримка FilePathPattern"
      v8.2.009.03.2026
    2. "Оновлення опцій компілятора"
      v8.1.725.02.2026
    3. "Випуск компілятора"
      v7.3.127.11.2025

    Вміст цієї сторінки перекладено за допомогою штучного інтелекту.

    Переглянути останню версію оригінального вмісту англійською
    Редагувати цей документ

    Якщо у вас є ідея щодо покращення цієї документації, будь ласка, долучіться, надіславши pull request на GitHub.

    Посилання на документацію на GitHub
    Копіювати

    Скопіювати документацію у форматі Markdown в буфер обміну

    Intlayer Compiler | Автоматизоване витягування контенту для i18n

    Що таке Intlayer Compiler?

    Intlayer Compiler - це потужний інструмент, розроблений для автоматизації процесу інтернаціоналізації (i18n) у ваших додатках. Він сканує ваш вихідний код (JSX, TSX, Vue, Svelte) на наявність декларацій контенту, витягує їх і автоматично генерує необхідні файли словників. Це дозволяє зберігати контент поруч із компонентами, тоді як Intlayer займається керуванням та синхронізацією ваших словників.

    Чому використовувати Intlayer Compiler?

    • Автоматизація: Усуває ручне копіювання та вставляння контенту у словники.
    • Швидкість: Оптимізоване витягування контенту забезпечує швидкість процесу збірки.
    • Досвід розробника: Тримайте декларації контенту там, де вони використовуються, що покращує підтримуваність.
    • Оновлення в реальному часі: Підтримує Hot Module Replacement (HMR) для миттєвого зворотного зв'язку під час розробки.

    Див. статтю в блозі Compiler vs. Declarative i18n для глибшого порівняння.

    Чому не використовувати Intlayer Compiler?

    Хоча компілятор пропонує чудовий досвід «just works», він також вносить певні компроміси, про які варто знати:

    • Евристична неоднозначність: Компілятор має вгадувати, що є контентом для користувача, а що - логікою додатка (наприклад, className="active", коди статусів, ID продуктів). У складних кодових базах це може призводити до хибних спрацьовувань або пропущених рядків, що вимагатиме ручних анотацій та винятків.
    • Тільки статична екстракція: Екстракція на основі компілятора покладається на статичний аналіз. Рядки, які існують лише під час виконання (коди помилок API, поля CMS тощо), не можуть бути виявлені або перекладені лише компілятором, тому вам усе одно знадобиться додаткова стратегія i18n під час виконання.

    Для глибшого архітектурного порівняння див. статтю в блозі Compiler vs. Declarative i18n.

    Як альтернативу, щоб автоматизувати ваш процес i18n і зберегти повний контроль над контентом, Intlayer також пропонує команду автоматичної екстракції intlayer extract (див. документацію CLI), або команду Intlayer: extract content to Dictionary з розширення Intlayer для VS Code (див. документацію розширення VS Code).

    Використання

    Vite

    Для додатків на базі Vite (React, Vue, Svelte тощо) найпростіший спосіб використовувати компілятор - через плагін vite-intlayer.

    Встановлення

    bash
    Копіювати код

    Скопіюйте код у буфер обміну

    npm install vite-intlayer

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

    Оновіть ваш vite.config.ts, щоб включити плагін intlayerCompiler:

    vite.config.ts
    Копіювати код

    Скопіюйте код у буфер обміну

    import { defineConfig } from "vite";import { intlayer, intlayerCompiler } from "vite-intlayer";export default defineConfig({ plugins: [   intlayer(),   intlayerCompiler(), // Додає плагін компілятора ],});

    See complete tutorial: Intlayer Compiler with Vite+React

    Підтримка фреймворків

    Плагін Vite автоматично визначає та обробляє різні типи файлів:

    • React / JSX / TSX: Обробляються нативно.
    • Vue: Потребує @intlayer/vue-compiler.
    • Svelte: Потребує @intlayer/svelte-compiler.

    Переконайтеся, що встановили відповідний пакет компілятора для вашого фреймворку:

    bash
    Копіювати код

    Скопіюйте код у буфер обміну

    # Для Vuenpm install @intlayer/vue-compiler# Для Sveltenpm install @intlayer/svelte-compiler

    Next.js (Babel)

    Для Next.js або інших додатків на базі Webpack, що використовують Babel, ви можете налаштувати компілятор за допомогою плагіна @intlayer/babel.

    Встановлення

    bash
    Копіювати код

    Скопіюйте код у буфер обміну

    npm install @intlayer/babel

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

    Оновіть ваш babel.config.js (або babel.config.json), щоб додати плагін для екстракції. Ми надаємо хелпер getExtractPluginOptions, який автоматично завантажує вашу конфігурацію Intlayer.

    babel.config.js
    Копіювати код

    Скопіюйте код у буфер обміну

    const { intlayerExtractBabelPlugin, intlayerOptimizeBabelPlugin, getExtractPluginOptions, getOptimizePluginOptions,} = require("@intlayer/babel");module.exports = { presets: ["next/babel"], plugins: [   // Витягує контент з компонентів у словники   [intlayerExtractBabelPlugin, getExtractPluginOptions()],   // Оптимізує імпорти, замінюючи useIntlayer на прямі імпорти словників   [intlayerOptimizeBabelPlugin, getOptimizePluginOptions()], ],};

    Ця конфігурація гарантує, що контент, оголошений у ваших компонентах, буде автоматично витягнутий і використаний для генерації словників під час процесу збірки.

    See complete tutorial: Intlayer Compiler with Next.js

    Користувацька конфігурація

    Щоб налаштувати поведінку компілятора, ви можете оновити файл intlayer.config.ts у корені вашого проєкту.

    intlayer.config.ts
    Копіювати код

    Скопіюйте код у буфер обміну

    import { type IntlayerConfig, Locales } from "intlayer";const config: IntlayerConfig = {  compiler: {    /**     * Вказує, чи має бути увімкнено компілятор.     * Встановіть значення 'build-only', щоб пропустити компілятор під час розробки та прискорити запуск.     */    enabled: true,    /**     * Визначає шлях до вихідних файлів. Замінює `outputDir`.     *     * - Шляхи, що починаються з `./`, розв'язуються відносно каталогу компонента.     * - Шляхи, що починаються з `/`, розв'язуються відносно кореня проєкту (`baseDir`).     *     * - Включення змінної `{{locale}}` у шлях дозволить генерувати словники, розділені за локалями.     *     * Приклади:     * ```ts     * {     *   // Створює багатомовні файли .content.ts поруч із компонентом     *   output: ({ fileName, extension }) => `./${fileName}${extension}`,     *     *   // output: './{{fileName}}{{extension}}', // Еквівалент з використанням рядкового шаблону     * }     * ```     *     * ```ts     * {     *   // Створює централізовані JSON-файли за локалями в корені проєкту     *   output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,     *     *   // output: '/locales/{{locale}}/{{key}}.content.json', // Еквівалент з використанням рядкового шаблону     * }     * ```     *     * Список змінних:     *   - `fileName`: Назва файлу.     *   - `key`: Ключ контенту.     *   - `locale`: Локаль контенту.     *   - `extension`: Розширення файлу.     *   - `componentFileName`: Назва файлу компонента.     *   - `componentExtension`: Розширення файлу компонента.     *   - `format`: Формат словника.     *   - `componentFormat`: Формат словника компонента.     *   - `componentDirPath`: Шлях до каталогу компонента.     */    output: ({ fileName, extension }) => `./${fileName}${extension}`,    /**     * Вказує, чи мають компоненти зберігатися після трансформації.     * Таким чином компілятор можна запустити лише один раз для трансформації додатка, а потім видалити.     */    saveComponents: false,    /**     * Вставляє лише контент у згенерований файл. Корисно для виводу JSON для i18next або ICU MessageFormat для кожної локалі.     *     * - `output: ({ locale, key }) => `./locale/${locale}/${key}.json`,`     */    noMetadata: false,    /**     * Префікс ключа словника     */    dictionaryKeyPrefix: "", // Додає необов'язковий префікс для витягнутих ключів словника  },};export default config;

    Довідник з конфігурації компілятора

    Наступні властивості можна налаштувати в блоці compiler вашого файлу intlayer.config.ts:

    • enabled:

      • Тип: boolean | 'build-only'
      • Типово: true
      • Опис: Вказує, чи має бути увімкнено компілятор.
    • dictionaryKeyPrefix:

      • Тип: string
      • Типово: ''
      • Опис: Префікс для витягнутих ключів словника.
    • transformPattern:

      • Тип: string | string[]
      • Типово: ['**/*.{js,ts,mjs,cjs,jsx,tsx,vue,svelte}', '!**/node_modules/**']
      • Опис: (Застаріло: використовуйте build.traversePattern) Шаблони для обходу коду для оптимізації.
    • excludePattern:

      • Тип: string | string[]
      • Типово: ['**/node_modules/**']
      • Опис: (Застаріло: використовуйте build.traversePattern) Шаблони для виключення з оптимізації.
    • output:

      • Тип: FilePathPattern
      • Типово: ({ key }) => 'compiler/${key}.content.json'
      • Опис: Визначає шлях до вихідних файлів. Замінює outputDir. Обробляє динамічні змінні, такі як {{locale}}, {{key}}, {{fileName}}, {{extension}}, {{format}}, {{dirPath}}, {{componentFileName}}, {{componentExtension}} та {{componentFormat}}. Можна встановити як рядок у форматі 'my/{{var}}/path' або як функцію.
      • Примітка: Шляхи ./**/* розв'язуються відносно компонента. Шляхи /**/* розв'язуються відносно baseDir Intlayer.
      • Примітка: Якщо локаль визначена в шляху, словники будуть генеруватися для кожної локалі.
      • Приклад: output: ({ locale, key }) => 'compiler/${locale}/${key}.json'
    • noMetadata:

      • Тип: boolean
      • Типово: false
      • Опис: Вказує, чи мають метадані зберігатися у файлі. Якщо true, компілятор не зберігатиме метадані словників (ключ, оболонка вмісту). Корисно для виводу JSON для i18next або ICU MessageFormat для кожної локалі.
      • Примітка: Корисно при використанні з плагіном loadJSON.
      • Приклад: Якщо true: json { "key": "value" } Якщо false: json { "key": "value", "content": { "key": "value" } }
    • saveComponents:

      • Тип: boolean
      • Типово: false
      • Опис: Вказує, чи мають компоненти зберігатися після трансформації.

    Заповнення відсутніх перекладів

    Intlayer надає CLI-інструмент, який допоможе заповнити відсутні переклади. Ви можете використовувати команду intlayer для перевірки та заповнення відсутніх перекладів у вашому коді.

    bash
    Копіювати код

    Скопіюйте код у буфер обміну

    npx intlayer test         # Перевірити наявність відсутніх перекладів
    bash
    Копіювати код

    Скопіюйте код у буфер обміну

    npx intlayer fill         # Заповнити відсутні переклади

    Екстракція

    Intlayer надає CLI-інструмент, який допоможе вам витягти контент із вашого коду. Ви можете використовувати команду intlayer extract, щоб витягти контент із вашого коду.

    bash
    Копіювати код

    Скопіюйте код у буфер обміну

    npx intlayer extract
    Для отримання детальнішої інформації див. документацію CLI
    Файл для кожної локалі
    Автозаповнення
    Alt+→

    На цій сторінці

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

      npm install vite-intlayer
      import { defineConfig } from "vite";import { intlayer, intlayerCompiler } from "vite-intlayer";export default defineConfig({ plugins: [   intlayer(),   intlayerCompiler(), // Додає плагін компілятора ],});
      # Для Vuenpm install @intlayer/vue-compiler# Для Sveltenpm install @intlayer/svelte-compiler
      npm install @intlayer/babel
      const { intlayerExtractBabelPlugin, intlayerOptimizeBabelPlugin, getExtractPluginOptions, getOptimizePluginOptions,} = require("@intlayer/babel");module.exports = { presets: ["next/babel"], plugins: [   // Витягує контент з компонентів у словники   [intlayerExtractBabelPlugin, getExtractPluginOptions()],   // Оптимізує імпорти, замінюючи useIntlayer на прямі імпорти словників   [intlayerOptimizeBabelPlugin, getOptimizePluginOptions()], ],};
      import { type IntlayerConfig, Locales } from "intlayer";const config: IntlayerConfig = {  compiler: {    /**     * Вказує, чи має бути увімкнено компілятор.     * Встановіть значення 'build-only', щоб пропустити компілятор під час розробки та прискорити запуск.     */    enabled: true,    /**     * Визначає шлях до вихідних файлів. Замінює `outputDir`.     *     * - Шляхи, що починаються з `./`, розв'язуються відносно каталогу компонента.     * - Шляхи, що починаються з `/`, розв'язуються відносно кореня проєкту (`baseDir`).     *     * - Включення змінної `{{locale}}` у шлях дозволить генерувати словники, розділені за локалями.     *     * Приклади:     * ```ts     * {     *   // Створює багатомовні файли .content.ts поруч із компонентом     *   output: ({ fileName, extension }) => `./${fileName}${extension}`,     *     *   // output: './{{fileName}}{{extension}}', // Еквівалент з використанням рядкового шаблону     * }     * ```     *     * ```ts     * {     *   // Створює централізовані JSON-файли за локалями в корені проєкту     *   output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,     *     *   // output: '/locales/{{locale}}/{{key}}.content.json', // Еквівалент з використанням рядкового шаблону     * }     * ```     *     * Список змінних:     *   - `fileName`: Назва файлу.     *   - `key`: Ключ контенту.     *   - `locale`: Локаль контенту.     *   - `extension`: Розширення файлу.     *   - `componentFileName`: Назва файлу компонента.     *   - `componentExtension`: Розширення файлу компонента.     *   - `format`: Формат словника.     *   - `componentFormat`: Формат словника компонента.     *   - `componentDirPath`: Шлях до каталогу компонента.     */    output: ({ fileName, extension }) => `./${fileName}${extension}`,    /**     * Вказує, чи мають компоненти зберігатися після трансформації.     * Таким чином компілятор можна запустити лише один раз для трансформації додатка, а потім видалити.     */    saveComponents: false,    /**     * Вставляє лише контент у згенерований файл. Корисно для виводу JSON для i18next або ICU MessageFormat для кожної локалі.     *     * - `output: ({ locale, key }) => `./locale/${locale}/${key}.json`,`     */    noMetadata: false,    /**     * Префікс ключа словника     */    dictionaryKeyPrefix: "", // Додає необов'язковий префікс для витягнутих ключів словника  },};export default config;
      npx intlayer test         # Перевірити наявність відсутніх перекладів
      npx intlayer fill         # Заповнити відсутні переклади
      npx intlayer extract