Creation:2024-08-13Last update:2026-05-12

    Документация по конфигурации Intlayer

    Обзор

    Файлы конфигурации Intlayer позволяют настраивать различные аспекты плагина, такие как интернационализация, middleware и управление контентом. Этот документ содержит подробное описание каждого свойства в конфигурации.


    Содержание


    Поддержка форматов конфигурационных файлов

    Intlayer принимает форматы файлов конфигурации JSON, JS, MJS и TS:

    • intlayer.config.ts
    • intlayer.config.js
    • intlayer.config.json
    • intlayer.config.json5
    • intlayer.config.jsonc
    • intlayer.config.cjs
    • intlayer.config.mjs
    • .intlayerrc

    Пример конфигурационного файла

    intlayer.config.ts
    import { Locales, type IntlayerConfig } from "intlayer";import { nextjsRewrite } from "intlayer/routing";import { z } from "zod";/** * Пример конфигурационного файла Intlayer со всеми доступными опциями. */const config: IntlayerConfig = {  /**   * Конфигурация настроек интернационализации.   */  internationalization: {    /**     * Список поддерживаемых языков в приложении.     * По умолчанию: [Locales.ENGLISH]     */    locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],    /**     * Список обязательных языков, которые должны быть определены в каждом словаре.     * Если пусто, все языки обязательны в режиме `strict`.     * По умолчанию: []     */    requiredLocales: [Locales.ENGLISH],    /**     * Уровень строгости для интернационализированного контента.     * - "strict": Ошибка, если объявленный язык отсутствует или не объявлен.     * - "inclusive": Предупреждение, если объявленный язык отсутствует.     * - "loose": Принимает любой существующий язык.     * По умолчанию: "inclusive"     */    strictMode: "inclusive",    /**     * Язык по умолчанию, используемый как запасной, если запрошенный язык не найден.     * По умолчанию: Locales.ENGLISH     */    defaultLocale: Locales.ENGLISH,  },  /**   * Настройки, управляющие операциями со словарями и поведением при отсутствии перевода.   */  dictionary: {    /**     * Управляет способом импорта словарей.     * - "static": Статический импорт во время сборки.     * - "dynamic": Динамический импорт с использованием Suspense.     * - "fetch": Динамическое получение через API Live Sync.     * По умолчанию: "static"     */    importMode: "static",    /**     * Стратегия автоматического заполнения недостающих переводов с помощью ИИ.     * Может быть логическим значением или шаблоном пути для хранения заполненного контента.     * По умолчанию: true     */    fill: true,    /**     * Физическое расположение файлов словарей.     * - "local": Хранятся в локальной файловой системе.     * - "remote": Хранятся в Intlayer CMS.     * - "hybrid": Хранятся и локально, и в Intlayer CMS.     * - "plugin" (или любая кастомная строка): Предоставляется плагином или кастомным источником.     * По умолчанию: "local"     */    location: "local",    /**     * Нужно ли автоматически преобразовывать контент (например, Markdown в HTML).     * По умолчанию: false     */    contentAutoTransformation: false,  },  /**   * Конфигурация маршрутизации и middleware.   */  routing: {    /**     * Стратегия маршрутизации по языкам.     * - "prefix-no-default": Префикс для всех языков, кроме основного (например, /dashboard, /fr/dashboard).     * - "prefix-all": Префикс для всех языков (например, /en/dashboard, /fr/dashboard).     * - "no-prefix": Отсутствие языка в URL.     * - "search-params": Использование ?locale=...     * По умолчанию: "prefix-no-default"     */    mode: "prefix-no-default",    /**     * Где хранить выбранный пользователем язык.     * Опции: 'cookie', 'localStorage', 'sessionStorage', 'header' или их массив.     * По умолчанию: ['cookie', 'header']     */    storage: ["cookie", "header"],    /**     * Базовый путь для URL-адресов приложения.     * По умолчанию: ""     */    basePath: "",    /**     * Пользовательские правила перезаписи URL для путей на конкретных языках.     */    rewrite: nextjsRewrite({      "/[locale]/about": {        en: "/[locale]/about",        fr: "/[locale]/a-propos",      },    }),    /**     * Сопоставляет локали с именами хостов доменов для маршрутизации на основе доменов.     * URL-адреса для этих локалей будут абсолютными (например, https://intlayer.cn/).     * Домен подразумевает локаль, поэтому к пути не добавляется префикс локали.     * По умолчанию: undefined     */    domains: {      en: "intlayer.org",      zh: "intlayer.cn",    },  },  /**   * Настройки поиска и обработки файлов контента.   */  content: {    /**     * Расширения файлов для сканирования словарей.     * По умолчанию: ['.content.ts', '.content.js', '.content.json' и т.д.]     */    fileExtensions: [".content.ts", ".content.js", ".content.json"],    /**     * Директории, где находятся файлы .content.     * По умолчанию: ["."]     */    contentDir: ["src"],    /**     * Директория с исходным кодом.     * Используется для оптимизации сборки и преобразования кода.     * По умолчанию: ["."]     */    codeDir: ["src"],    /**     * Шаблоны для исключения из сканирования.     * По умолчанию: ['node_modules', '.intlayer' и т.д.]     */    excludedPath: ["node_modules"],    /**     * Нужно ли отслеживать изменения и пересобирать словари во время разработки.     * По умолчанию: true в режиме разработки     */    watch: true,    /**     * Команда для форматирования вновь созданных / обновленных файлов .content.     */    formatCommand: 'npx prettier --write "{{file}}"',  },  /**   * Конфигурация визуального редактора.   */  editor: {    /**     * Включен ли визуальный редактор.     * По умолчанию: false     */    enabled: true,    /**     * URL вашего приложения для валидации источника (origin).     * По умолчанию: ""     */    applicationURL: "http://localhost:3000",    /**     * Порт для локального сервера редактора.     * По умолчанию: 8000     */    port: 8000,    /**     * Публичный URL для редактора.     * По умолчанию: "http://localhost:8000"     */    editorURL: "http://localhost:8000",    /**     * URL Intlayer CMS.     * По умолчанию: "https://app.intlayer.org"     */    cmsURL: "https://app.intlayer.org",    /**     * URL серверного API.     * По умолчанию: "https://back.intlayer.org"     */    backendURL: "https://back.intlayer.org",    /**     * Нужно ли включать синхронизацию контента в реальном времени.     * По умолчанию: false     */    liveSync: true,  },  /**   * Настройки переводов и генерации с помощью ИИ.   */  ai: {    /**     * Используемый ИИ-провайдер.     * Опции: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio'     * По умолчанию: 'openai'     */    provider: "openai",    /**     * Используемая модель выбранного провайдера.     */    model: "gpt-4o",    /**     * API-ключ провайдера.     */    apiKey: process.env.OPENAI_API_KEY,    /**     * Глобальный контекст для направления ИИ при генерации переводов.     */    applicationContext: "Это приложение для бронирования путешествий.",    /**     * Базовый URL для ИИ API.     */    baseURL: "http://localhost:3000",    /**     * Сериализация данных     *     * Опции:     * - "json": По умолчанию, надежно; потребляет больше токенов.     * - "toon": Меньше токенов, менее стабильно, чем JSON.     *     * По умолчанию: "json"     */    dataSerialization: "json",  },  /**   * Настройки сборки и оптимизации.   */  build: {    /**     * Режим выполнения сборки.     * - "auto": Автоматическая сборка во время сборки приложения.     * - "manual": Требуется явная команда сборки.     * По умолчанию: "auto"     */    mode: "auto",    /**     * Нужно ли оптимизировать итоговый бандл, удаляя неиспользуемые словари.     * По умолчанию: true в продакшене     */    optimize: true,    /**     * Минимизировать словари для уменьшения размера бандла.     * По умолчанию: false     *     * Примечание:     * - Эта опция будет проигнорирована, если `optimize` отключена.     * - Эта опция будет проигнорирована, если `editor.enabled` имеет значение true.     */    minify: true,    /**     * Удалить неиспользуемые ключи в словарях.     * По умолчанию: false     *     * Примечание:     * - Эта опция будет проигнорирована, если `optimize` отключена.     */    purge: true,    /**     * Формат вывода для сгенерированных файлов словарей.     * По умолчанию: ['cjs', 'esm']     */    outputFormat: ["cjs", "esm"],    /**     * Должна ли сборка проверять типы TypeScript.     * По умолчанию: false     */    checkTypes: false,  },  /**   * Конфигурация логгера.   */  log: {    /**     * Уровень логирования.     * - "default": Стандартное логирование.     * - "verbose": Подробное отладочное логирование.     * - "disabled": Без логирования.     * По умолчанию: "default"     */    mode: "default",    /**     * Префикс для всех сообщений лога.     * По умолчанию: "[intlayer]"     */    prefix: "[intlayer]",  },  /**   * Конфигурация системы (продвинутые случаи использования)   */  system: {    /**     * Директория для хранения локализованных словарей.     */    dictionariesDir: ".intlayer/dictionary",    /**     * Директория для расширения модулей (module augmentation).     */    moduleAugmentationDir: ".intlayer/types",    /**     * Директория для хранения неслитых (unmerged) словарей.     */    unmergedDictionariesDir: ".intlayer/unmerged_dictionary",    /**     * Директория для хранения типов словарей.     */    typesDir: ".intlayer/types",    /**     * Директория, где хранятся основные файлы приложения.     */    mainDir: ".intlayer/main",    /**     * Директория, где хранятся скомпилированные файлы конфигурации.     */    configDir: ".intlayer/config",    /**     * Директория для файлов кэша.     */    cacheDir: ".intlayer/cache",  },  /**   * Конфигурация компилятора (продвинутые случаи использования)   */  compiler: {    /**     * Нужно ли включать компилятор.     *     * - false: Отключить компилятор.     * - true: Включить компилятор.     * - "build-only": Пропускать компилятор при разработке для ускорения запуска.     *     * По умолчанию: false     */    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`: Язык контента (locale).     *   - `extension`: Расширение файла.     *   - `componentFileName`: Имя файла компонента.     *   - `componentExtension`: Расширение файла компонента.     *   - `format`: Формат словаря.     *   - `componentFormat`: Формат словаря компонента.     *   - `componentDirPath`: Путь к директории компонента.     */    output: ({ locale, key }) => `compiler/${locale}/${key}.json`,    /**     * Сохранять ли компоненты после их преобразования.     * Таким образом, компилятор можно запустить один раз для преобразования приложения, а затем удалить.     */    saveComponents: false,    /**     * Вставлять в сгенерированный файл только контент. Полезно для вывода в формате i18next или ICU MessageFormat JSON по языкам.     */    noMetadata: false,    /**     * Префикс ключа словаря     */    dictionaryKeyPrefix: "", // Добавить опциональный префикс для извлеченных ключей словарей  },  /**   * Пользовательские схемы для валидации содержимого словарей.   */  schemas: {    "my-schema": z.object({      title: z.string(),    }),  },  /**   * Конфигурация плагинов.   */  plugins: [],};export default config;

    Справочник по конфигурации

    Ниже описаны различные параметры конфигурации, доступные в Intlayer.


    Конфигурация интернационализации (Internationalization)

    Определяет настройки, связанные с интернационализацией, включая доступные языки и язык по умолчанию.

    Поле Описание Тип По умолчанию Пример Примечание
    locales Список языков, поддерживаемых в приложении. string[] [Locales.ENGLISH] ['en', 'fr', 'es']
    requiredLocales Список обязательных языков в приложении. string[] [] [] • Если пусто, все языки обязательны в режиме strict.
    • Убедитесь, что обязательные языки также определены в поле locales.
    strictMode Обеспечивает надежную реализацию интернационализированного контента с помощью TypeScript. string 'inclusive' • Если "strict": функция t требует определения каждого объявленного языка - вызывает ошибку, если какой-то отсутствует или не объявлен.
    • Если "inclusive": предупреждает об отсутствующих языках, но разрешает использование существующих необъявленных.
    • Если "loose": принимает любой существующий язык.
    defaultLocale Язык по умолчанию, используемый как запасной, если запрошенный язык не найден. string Locales.ENGLISH 'en' Используется для определения языка, когда он не указан в URL, куки или заголовке.

    Конфигурация редактора (Editor)

    Определяет настройки для встроенного визуального редактора, включая порт сервера и статус включения.

    Поле Описание Тип По умолчанию Пример Примечание
    applicationURL URL приложения. string undefined 'http://localhost:3000'
    'https://example.com'
    process.env.INTLAYER_EDITOR_URL
    • Используется для ограничения источника (origin) редактора из соображений безопасности.
    • Если установлено в '*', редактор доступен из любого источника.
    port Порт, используемый сервером визуального редактора. number 8000
    editorURL URL сервера редактора. string 'http://localhost:8000' 'http://localhost:3000'
    'https://example.com'
    process.env.INTLAYER_EDITOR_URL
    • Используется для ограничения источников, которые могут взаимодействовать с приложением.
    • Если установлено в '*', доступно из любого источника.
    • Должно быть установлено, если изменен порт или редактор хостится на другом домене.
    cmsURL URL Intlayer CMS. string 'https://app.intlayer.org' 'https://app.intlayer.org'
    backendURL URL бэкенд-сервера. string https://back.intlayer.org http://localhost:4000
    enabled Должно ли приложение взаимодействовать с визуальным редактором. boolean false process.env.NODE_ENV !== 'production' • Если false, редактор не может взаимодействовать с приложением.
    • Отключение для определенных окружений повышает безопасность.
    clientId Позволяет пакетам intlayer аутентифицироваться на бэкенде через oAuth2. Чтобы получить токен доступа, перейдите на intlayer.org/project. string |
    undefined
    undefined Должно храниться в секрете; используйте переменные окружения.
    clientSecret Позволяет пакетам intlayer аутентифицироваться на бэкенде через oAuth2. Чтобы получить токен доступа, перейдите на intlayer.org/project. string |
    undefined
    undefined Должно храниться в секрете; используйте переменные окружения.
    dictionaryPriorityStrategy Стратегия приоритета словарей при наличии и локальных, и удаленных словарей. string 'local_first' 'distant_first' 'distant_first': приоритет удаленных словарей над локальными.
    'local_first': приоритет локальных словарей над удаленными.
    liveSync Должен ли сервер приложения мгновенно перезагружать контент при обнаружении изменений в CMS
    Визуальном редакторе
    Бэкенде.
    boolean true true • При добавлении/обновлении словаря приложение обновляет контент страницы.
    • Live Sync выносит контент на другой сервер, что может немного влиять на производительность.
    • Рекомендуется хостить оба на одной машине.
    liveSyncPort Порт сервера live sync. number 4000 4000
    liveSyncURL URL сервера live sync. string 'http://localhost:{liveSyncPort}' 'https://example.com' По умолчанию указывает на localhost; может быть изменен на удаленный сервер live sync.

    Конфигурация маршрутизации (Routing)

    Настройки, управляющие поведением маршрутизации, включая структуру URL, хранение языков и управление middleware.

    Поле Описание Тип По умолчанию Пример Примечание
    mode Режим маршрутизации URL для управления языками. 'prefix-no-default' |
    'prefix-all' |
    'no-prefix' |
    'search-params'
    'prefix-no-default' 'prefix-no-default': /dashboard (en) или /fr/dashboard (fr). 'prefix-all': /en/dashboard. 'no-prefix': язык управляется другими способами. 'search-params': /dashboard?locale=fr Не влияет на управление куками или хранилищем языков.
    storage Конфигурация хранения языка на клиенте. false |
    'cookie' |
    'localStorage' |
    'sessionStorage' |
    'header' |
    CookiesAttributes |
    StorageAttributes |
    Array
    ['cookie', 'header'] 'localStorage'
    [{ type: 'cookie', name: 'custom-locale', secure: true }]
    См. таблицу параметров хранения ниже.
    basePath Базовый путь для URL-адресов приложения. string '' '/my-app' Если приложение находится по адресу https://example.com/my-app, basePath - '/my-app', а URL становятся https://example.com/my-app/en.
    rewrite Пользовательские правила перезаписи URL, которые переопределяют режим маршрутизации по умолчанию для определенных путей. Поддерживает динамические параметры [param]. Record<string, StrictModeLocaleMap<string>> undefined См. пример ниже • Правила перезаписи имеют приоритет над mode.
    • Работает с Next.js и Vite.
    getLocalizedUrl() автоматически применяет соответствующие правила.
    • См. Пользовательские перезаписи URL.
    domains Сопоставляет локали с именами хостов доменов для маршрутизации на основе доменов. Когда установлено, URL-адреса для локали используют этот домен в качестве базы (абсолютный URL), и к пути не добавляется префикс локали. Partial<Record<Locale, string>> undefined { zh: 'intlayer.zh', fr: 'intlayer.org' } • Протокол по умолчанию - https://, если он не указан в имени хоста.
    • Сам домен идентифицирует локаль, поэтому префикс /zh/ не добавляется.
    getLocalizedUrl('/', 'zh') возвращает https://intlayer.zh/.

    Пример rewrite:

    typescript
    routing: {  mode: "prefix-no-default", // Запасная стратегия  rewrite: nextjsRewrite({    "/about": {      en: "/about",      fr: "/a-propos",    },    "/product/[slug]": {      en: "/product/[slug]",      fr: "/produit/[slug]",    },    "/blog/[category]/[id]": {      en: "/blog/[category]/[id]",      fr: "/journal/[category]/[id]",    },  }),}

    Параметры хранения (Storage)

    Значение Примечание Описание
    'cookie' • Для соответствия GDPR обеспечьте надлежащее согласие пользователя.
    • Настраивается через CookiesAttributes ({ type: 'cookie', name: 'custom-locale', secure: true, httpOnly: false }).
    Хранит язык в куках - доступно как на клиенте, так и на сервере.
    'localStorage' • Не истекает, если не будет явно очищено.
    • Прокси Intlayer не может получить к этому доступ.
    • Настраивается через StorageAttributes ({ type: 'localStorage', name: 'custom-locale' }).
    Хранит язык в браузере без ограничения срока - только на стороне клиента.
    'sessionStorage' • Очищается при закрытии вкладки/окна.
    • Прокси Intlayer не может получить к этому доступ.
    • Настраивается через StorageAttributes ({ type: 'sessionStorage', name: 'custom-locale' }).
    Хранит язык на время сессии страницы - только на стороне клиента.
    'header' • Полезно для вызовов API.
    • Сторона клиента не может получить доступ.
    • Настраивается через StorageAttributes ({ type: 'header', name: 'custom-locale' }).
    Хранит или передает язык через HTTP-заголовки - только на стороне сервера.

    Атрибуты куки (Cookies Attributes)

    При использовании хранения в куках можно настроить дополнительные атрибуты:

    Поле Описание Тип
    name Имя куки. По умолчанию: 'INTLAYER_LOCALE' string
    domain Домен куки. По умолчанию: undefined string
    path Путь куки. По умолчанию: undefined string
    secure Требовать HTTPS. По умолчанию: undefined boolean
    httpOnly Флаг HTTP-only. По умолчанию: undefined boolean
    sameSite Политика SameSite. 'strict' |
    'lax' |
    'none'
    expires Дата истечения или кол-во дней. По умолчанию: undefined Date |
    number

    Атрибуты хранилища (Storage Attributes)

    При использовании localStorage или sessionStorage:

    Поле Описание Тип
    type Тип хранилища. 'localStorage' |
    'sessionStorage'
    name Имя ключа в хранилище. По умолчанию: 'INTLAYER_LOCALE' string

    Примеры конфигурации

    Вот несколько распространенных примеров конфигурации для новой структуры маршрутизации v7:

    Базовая конфигурация (по умолчанию):

    typescript
    import { Locales, type IntlayerConfig } from "intlayer";// intlayer.config.tsconst config: IntlayerConfig = {  internationalization: {    locales: ["en", "fr", "es"],    defaultLocale: "en",  },  routing: {    mode: "prefix-no-default",    storage: "localStorage",    basePath: "",  },};export default config;

    Конфигурация с соблюдением GDPR:

    typescript
    import { Locales, type IntlayerConfig } from "intlayer";// intlayer.config.tsconst config: IntlayerConfig = {  internationalization: {    locales: ["en", "fr", "es"],    defaultLocale: "en",  },  routing: {    mode: "prefix-no-default",    storage: [      {        type: "localStorage",        name: "user-locale",      },      {        type: "cookie",        name: "user-locale",        secure: true,        sameSite: "strict",        httpOnly: false,      },    ],    basePath: "",  },};export default config;

    Режим параметров поиска (Search Params):

    typescript
    import { Locales, type IntlayerConfig } from "intlayer";// intlayer.config.tsconst config: IntlayerConfig = {  internationalization: {    locales: ["en", "fr", "es"],    defaultLocale: "en",  },  routing: {    mode: "search-params",    storage: "localStorage",    basePath: "",  },};export default config;

    Режим без префикса с кастомным хранилищем:

    typescript
    import { Locales, type IntlayerConfig } from "intlayer";// intlayer.config.tsconst config: IntlayerConfig = {  internationalization: {    locales: ["en", "fr", "es"],    defaultLocale: "en",  },  routing: {    mode: "no-prefix",    storage: {      type: "sessionStorage",      name: "app-locale",    },    basePath: "/my-app",  },};export default config;

    Пользовательская перезапись URL с динамическими путями:

    typescript
    // intlayer.config.tsimport { nextjsRewrite } from "intlayer/routing";const config: IntlayerConfig = {  internationalization: {    locales: ["en", "fr"],    defaultLocale: "en",  },  routing: {    mode: "prefix-no-default", // Запасной вариант для неперезаписанных путей    storage: "cookie",    rewrite: nextjsRewrite({      "/about": {        en: "/about",        fr: "/a-propos",      },      "/product/[slug]": {        en: "/product/[slug]",        fr: "/produit/[slug]",      },      "/blog/[category]/[id]": {        en: "/blog/[category]/[id]",        fr: "/journal/[category]/[id]",      },    }),  },};export default config;

    Конфигурация контента (Content)

    Настройки, связанные с тем, как контент управляется в приложении, включая имена директорий, расширения файлов и производные конфигурации.

    Поле Описание Тип По умолчанию Пример Примечание
    watch Указывает, должен ли Intlayer отслеживать изменения в файлах декларации контента для пересборки словарей. boolean true
    fileExtensions Расширения файлов для сканирования при компиляции словарей. string[] ['.content.ts', '.content.js', '.content.cjs', '.content.mjs', '.content.json', '.content.json5', '.content.jsonc', '.content.tsx', '.content.jsx'] ['.data.ts', '.data.js', '.data.json'] Настройка поможет избежать конфликтов.
    contentDir Путь к директории, где хранятся файлы определения контента (.content.*). string[] ['.'] ['src', '../../ui-library', require.resolve("@my-package/content"), '@my-package/content'] Используется для отслеживания файлов контента и пересборки словарей.
    codeDir Путь к директории, где хранится код, относительно базовой директории. string[] ['.'] ['src', '../../ui-library'] • Используется для отслеживания файлов кода для преобразования (удаление лишнего, оптимизация).
    • Отделение от contentDir может повысить производительность.
    excludedPath Директории, исключенные из сканирования контента. string[] ['**/node_modules/**', '**/dist/**', '**/build/**', '**/.intlayer/**', '**/.next/**', '**/.nuxt/**', '**/.expo/**', '**/.vercel/**', '**/.turbo/**', '**/.tanstack/**'] Пока не используется; планируется в будущем.
    formatCommand Команда для форматирования файлов контента при их локальной записи Intlayer. string undefined 'npx prettier --write "{{file}}" --log-level silent' (Prettier), 'npx biome format "{{file}}" --write --log-level none' (Biome), 'npx eslint --fix "{{file}}" --quiet' (ESLint) {{file}} будет заменено на путь к файлу.
    • Если не определено, Intlayer определит автоматически (тестирует prettier, biome, eslint).

    Конфигурация словарей (Dictionary)

    Параметры, управляющие операциями со словарями, включая поведение автоматического заполнения и генерацию контента.

    Поле Описание Тип По умолчанию Пример Примечание
    fill Управляет тем, как генерируются выходные файлы автозаполнения (ИИ-перевод). boolean |
    FilePathPattern |
    Partial<Record<Locale, boolean | FilePathPattern>>
    true { en: '/locales/en/{{key}}.json', fr: ({ key }) => '/locales/fr/${key}.json', es: false } true: путь по умолчанию (тот же файл, что и источник).
    false: отключить.
    • Шаблон строка/функция генерирует файлы по языкам.
    • Объект по языкам: каждый язык соответствует своему шаблону; false игнорирует этот язык.
    • Включение {{locale}} активирует генерацию по языкам.
    fill на уровне словаря всегда имеет приоритет над этой глобальной настройкой.
    description Помогает редактору и CMS понять назначение словаря. Также используется как контекст для генерации переводов с помощью ИИ. string undefined 'User profile section'
    locale Преобразует словарь в формат для конкретного языка. Каждое объявленное поле становится узлом перевода. Если отсутствует, словарь считается многоязычным. LocalesValues undefined 'en' Используйте это, если словарь предназначен для одного конкретного языка, а не содержит переводы для нескольких.
    contentAutoTransformation Автоматически преобразует строки контента в типизированные узлы (markdown, HTML или вставка). boolean |
    { markdown?: boolean; html?: boolean; insertion?: boolean }
    false true • Markdown : ### Titlemd('### Title').
    • HTML : <div>Title</div>html('<div>Title</div>').
    • Вставка : Hello {{name}}insert('Hello {{name}}').
    location Указывает, где хранятся файлы словарей и как они синхронизируются с CMS. 'local' |
    'remote' |
    'hybrid' |
    'plugin' |
    string
    'local' 'hybrid' 'local': управление только локально.
    'remote': управление только удаленно (CMS).
    'hybrid': управление и локально, и удаленно.
    'plugin' или кастомная строка: управление плагином или кастомным источником.
    importMode Управляет способом импорта словарей. 'static' |
    'dynamic' |
    'fetch'
    'static' 'dynamic' 'static': статический импорт.
    'dynamic': динамический импорт через Suspense.
    'fetch': получение через Live Sync API; откат к 'dynamic' при неудаче.
    • Требует плагины @intlayer/babel и @intlayer/swc.
    • Ключи должны быть объявлены статически.
    • Игнорируется, если optimize выключен.
    • Не влияет на getIntlayer, getDictionary и т.д.
    priority Приоритет словаря. Более высокие значения побеждают более низкие при разрешении конфликтов между словарями. number undefined 1
    live Устарело - используйте importMode: 'fetch'. Указывало, должен ли контент словаря получаться динамически через Live Sync API. boolean undefined Переименовано в importMode: 'fetch' в v8.0.0.
    schema Генерируется автоматически Intlayer для валидации JSON-схемы. 'https://intlayer.org/schema.json' авто-генерация Не редактируйте вручную.
    title Помогает идентифицировать словарь в редакторе и CMS. string undefined 'User Profile'
    tags Категоризирует словари и предоставляет контекст или инструкции для редактора и ИИ. string[] undefined ['user', 'profile']
    version Версия удаленного словаря; помогает отслеживать текущую используемую версию. string undefined '1.0.0' • Управляется в CMS.
    • Не редактируйте локально.

    Пример fill:

    ts
    dictionary: {  fill: {    en: "/locales/en/{{key}}.content.json",    fr: ({ key }) => `/locales/fr/${key}.content.json`,    es: false,  },};

    Конфигурация логгера (Log)

    Параметры для настройки вывода логов Intlayer.

    Поле Описание Тип По умолчанию Пример Примечание
    mode Указывает режим логгера. 'default' |
    'verbose' |
    'disabled'
    'default' 'verbose' 'verbose': логирует больше информации для отладки.
    'disabled': полностью отключает логгер.
    prefix Префикс для всех сообщений в логе. string '[intlayer] ' '[my prefix] '

    Конфигурация ИИ (AI)

    Настройки, управляющие ИИ-функциями Intlayer, включая провайдера, модель и API-ключ.

    Эта конфигурация опциональна, если вы зарегистрированы в Intlayer Dashboard с ключом доступа. Intlayer будет автоматически управлять наиболее эффективным и экономичным решением ИИ для ваших нужд. Использование параметров по умолчанию гарантирует лучшую долгосрочную поддержку, так как Intlayer постоянно обновляется для использования наиболее актуальных моделей.

    Если вы предпочитаете использовать собственный API-ключ или конкретную модель, вы можете определить свою конфигурацию ИИ. Эта конфигурация ИИ будет использоваться глобально в вашей среде Intlayer. Команды CLI будут использовать эти настройки по умолчанию для таких команд, как fill, так же как и SDK, визуальный редактор и CMS. Вы можете переопределить эти значения по умолчанию для конкретных случаев использования через параметры команд.

    Intlayer поддерживает несколько ИИ-провайдеров для максимальной гибкости. На данный момент поддерживаются следующие провайдеры:

    • OpenAI (По умолчанию)
    • Anthropic Claude
    • Mistral AI
    • DeepSeek
    • Google Gemini
    • Google AI Studio
    • Google Vertex
    • Meta Llama
    • Ollama
    • OpenRouter
    • Alibaba Cloud
    • Fireworks
    • Hugging Face
    • Groq
    • Amazon Bedrock
    • Together.ai
    • LM Studio
    Поле Описание Тип По умолчанию Пример Примечание
    provider Провайдер, используемый для ИИ-функций Intlayer. 'openai' |
    'anthropic' |
    'mistral' |
    'deepseek' |
    'gemini' |
    'ollama' |
    'openrouter' |
    'alibaba' |
    'fireworks' |
    'groq' |
    'huggingface' |
    'bedrock' |
    'googleaistudio' |
    'googlevertex' |
    'togetherai' |
    'lmstudio'
    undefined 'anthropic' Разные провайдеры требуют разные API-ключи и имеют разную стоимость.
    model Модель, используемая для ИИ-функций. string Нет 'gpt-4o-2024-11-20' Конкретная модель зависит от провайдера.
    temperature Управляет случайностью ответов ИИ. number Нет 0.1 Выше температура = более креативно и менее предсказуемо.
    apiKey Ваш API-ключ для выбранного провайдера. string Нет process.env.OPENAI_API_KEY Должно храниться в секрете; используйте переменные окружения.
    applicationContext Дополнительный контекст о вашем приложении, чтобы помочь ИИ генерировать более точные переводы (домен, целевая аудитория, тон, терминология). string Нет 'My own application context' Можно использовать для добавления правил (например: "You should not transform URLs").
    baseURL Базовый URL для ИИ API. string Нет 'https://api.openai.com/v1'
    'http://localhost:5000'
    Может указывать на локальный или кастомный эндпоинт ИИ API.
    dataSerialization Формат сериализации данных для ИИ-функций. 'json' |
    'toon'
    undefined 'toon' 'json': по умолчанию, надежно; потребляет больше токенов.
    'toon': меньше токенов, менее стабильно.
    • Дополнительные параметры передаются в модель как контекст (усилия рассуждения и т.д.).

    Конфигурация сборки (Build)

    Параметры, управляющие тем, как Intlayer оптимизирует и компилирует интернационализацию вашего приложения.

    Опции сборки применяются к плагинам @intlayer/babel и @intlayer/swc.

    В режиме разработки Intlayer использует статический импорт словарей для упрощения процесса разработки.
    Во время оптимизации Intlayer заменит вызовы словарей для оптимизации чанкинга (chunking), чтобы итоговый бандл импортировал только те словари, которые действительно используются.
    Поле Описание Тип По умолчанию Пример Примечание
    mode Управляет режимом сборки. 'auto' |
    'manual'
    'auto' 'manual' 'auto': сборка запускается автоматически при сборке приложения.
    'manual': выполняется только при явном вызове команды сборки.
    • Можно использовать для отключения сборки словарей (например, чтобы избежать выполнения в средах Node.js).
    optimize Управляет тем, должна ли выполняться оптимизация сборки. boolean undefined process.env.NODE_ENV === 'production' • Если не определено, оптимизация запускается при сборке фреймворка (Vite/Next.js).
    true форсирует оптимизацию даже в dev режиме.
    false отключает ее.
    • Если включено, заменяет вызовы словарей для оптимизации чанкинга.
    • Требует плагины @intlayer/babel и @intlayer/swc.
    minify Минимизировать словари для уменьшения размера бандла. boolean false • Указывает, должен ли бандл быть минифицирован.
    • По умолчанию: true в продакшене.
    • Эта опция будет проигнорирована, если optimize отключена.
    • Эта опция будет проигнорирована, если editor.enabled имеет значение true.
    purge Удалить неиспользуемые ключи в словарях. boolean false • Указывает, должен ли бандл быть очищен.
    • По умолчанию: true в продакшене.
    • Эта опция будет проигнорирована, если optimize отключена.
    checkTypes Указывает, должна ли сборка проверять типы TypeScript и логировать ошибки. boolean false Может замедлить процесс сборки.
    outputFormat Управляет выходным форматом словарей. ('esm' | 'cjs')[] ['esm', 'cjs'] ['cjs']
    traversePattern Шаблоны, определяющие, какие файлы сканировать во время оптимизации. string[] ['**/*.{tsx,ts,js,mjs,cjs,jsx,vue,svelte,svte}', '!**/node_modules/**', '!**/dist/**', '!**/.intlayer/**', '!**/*.config.*', '!**/*.test.*', '!**/*.spec.*', '!**/*.stories.*'] ['src/**/*.{ts,tsx}', '../ui-library/**/*.{ts,tsx}', '!**/node_modules/**'] • Ограничьте оптимизацию релевантными файлами для повышения производительности сборки.
    • Игнорирует, если optimize выключен.
    • Использует шаблоны glob.

    Системная конфигурация (System)

    Эти настройки предназначены для продвинутых случаев использования и внутренней конфигурации Intlayer.

    Поле Описание Тип По умолчанию Пример Примечание
    dictionariesDir Директория для скомпилированных словарей. string '.intlayer/dictionary'
    moduleAugmentationDir Директория для расширения модулей TypeScript. string '.intlayer/types'
    unmergedDictionariesDir Директория для хранения неслитых словарей. string '.intlayer/unmerged_dictionary'
    typesDir Директория для сгенерированных типов. string '.intlayer/types'
    mainDir Директория основного файла Intlayer. string '.intlayer/main'
    configDir Директория скомпилированных файлов конфигурации. string '.intlayer/config'
    cacheDir Директория файлов кэша. string '.intlayer/cache'

    Конфигурация компилятора (Compiler)

    Настройки, управляющие компилятором Intlayer, который извлекает словари напрямую из ваших компонентов.

    Поле Описание Тип По умолчанию Пример Примечание
    enabled Указывает, должен ли компилятор быть включен для извлечения словарей. boolean |
    'build-only'
    true 'build-only' 'build-only' пропускает компилятор при разработке для ускорения сборки; выполняется только при командах сборки.
    dictionaryKeyPrefix Префикс для извлеченных ключей словарей. string '' 'my-prefix-' Добавляется к сгенерированному ключу (на основе имени файла) для предотвращения конфликтов.
    saveComponents Должны ли компоненты сохраняться после их преобразования. boolean false • Если true, перезаписывает исходные файлы их преобразованными версиями.
    • Компилятор можно удалить после одного запуска.
    output Определяет путь для выходных файлов. Заменяет outputDir. Поддерживает переменные шаблона: {{fileName}},
    {{key}},
    {{locale}},
    {{extension}},
    {{componentFileName}},
    {{componentExtension}},
    {{format}},
    {{componentFormat}},
    {{componentDirPath}}.
    boolean |
    FilePathPattern |
    Partial<Record<Locale, boolean | FilePathPattern>>
    undefined './{{fileName}}{{extension}}'
    '/locales/{{locale}}/{{key}}.json'
    { en: ({ key }) => './locales/en/${key}.json', fr: '...', es: false }
    • Пути ./ разрешаются относительно директории компонента.
    • Пути / относительно корня.
    {{locale}} включает генерацию по языкам.
    • Поддерживает объектную нотацию для каждого языка.
    noMetadata Если true, компилятор опускает метаданные словаря (ключ, обертку контента) из вывода. boolean false false{"key":"my-key","content":{"key":"value"}}
    true{"key":"value"}
    • Полезно для вывода в формате i18next или ICU MessageFormat JSON.
    • Хорошо работает с плагином loadJSON.
    dictionaryKeyPrefix Префикс ключа словаря string '' Добавить опциональный префикс для извлеченных ключей словарей

    Пользовательские схемы (Custom Schemas)

    Поле Описание Тип
    schemas Позволяет определять схемы Zod для валидации структуры ваших словарей. Record<string, ZodSchema>

    Плагины (Plugins)

    Поле Описание Тип
    plugins Список плагинов Intlayer для включения. IntlayerPlugin[]