ГлавнаяПесочницаВитринаПриложениеДокументБлог
    • 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

    Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI

    История версий

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

    Содержимое этой страницы было переведено с помощью ИИ.

    Смотреть последнюю версию оригинального контента на английском
    Изменить эту документацию

    Если у вас есть идея по улучшению этой документации, не стесняйтесь внести свой вклад, подав запрос на вытягивание на 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?

    Хотя компилятор предлагает отличный опыт "работает из коробки", он также вводит некоторые компромиссы, о которых вы должны знать:

    • Эвристическая неоднозначность: Компилятор должен угадывать, что является пользовательским контентом, а что - логикой приложения (например, 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: "", // Добавьте необязательный префикс для извлеченных ключей словаря  },};

    Справочник по конфигурации компилятора

    Следующие свойства могут быть настроены в блоке 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: "", // Добавьте необязательный префикс для извлеченных ключей словаря  },};
      npx intlayer test         # Проверить наличие недостающих переводов
      npx intlayer fill         # Заполнить недостающие переводы
      npx intlayer extract