Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI
История версий
- "Обновление опций компилятора, добавление поддержки FilePathPattern"v8.2.009.03.2026
- "Обновление опций компилятора"v8.1.725.02.2026
- "Выпуск 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.
Установка
Копировать код в буфер обмена
npm install vite-intlayerКонфигурация
Обновите ваш vite.config.ts, чтобы включить плагин intlayerCompiler:
Копировать код в буфер обмена
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.
Убедитесь, что установлен соответствующий пакет компилятора для вашего фреймворка:
Копировать код в буфер обмена
# Для Vuenpm install @intlayer/vue-compiler# Для Sveltenpm install @intlayer/svelte-compilerПользовательская конфигурация
Чтобы настроить поведение компилятора, вы можете обновить файл 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'или как функция. - Примечание: Пути
./**/*разрешаются относительно компонента. Пути/**/*разрешаются относительноbaseDirIntlayer. - Примечание: Если язык определен в пути, словари будут генерироваться для каждого языка.
- Пример:
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 для тестирования и заполнения недостающих переводов в вашем коде.
Копировать код в буфер обмена
npx intlayer test # Проверить наличие недостающих переводовКопировать код в буфер обмена
npx intlayer fill # Заполнить недостающие переводыИзвлечение
Intlayer предоставляет инструмент CLI для извлечения контента из вашего кода. Вы можете использовать команду intlayer extract, чтобы извлечь контент из вашего кода.
Копировать код в буфер обмена
npx intlayer extractДля получения более подробной информации обратитесь к документации CLI