Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI
История версий
- "Добавлена поддержка провайдера LM Studio"v8.9.412.05.2026
- "Добавлены опции `prune` и `minify` в конфигурацию сборки"v8.7.008.04.2026
- "Добавлена опция `currentDomain`"v8.7.003.04.2026
- "Добавлена объектная нотация для каждого языка для 'compiler.output' и 'dictionary.fill'"v8.4.020.03.2026
- "'baseDir' перенесен из конфигурации 'content' в конфигурацию 'system'"v8.3.011.03.2026
- "Обновлены опции компилятора, добавлена поддержка 'output' и 'noMetadata'"v8.2.009.03.2026
- "Обновлены опции компилятора"v8.1.725.02.2026
- "Добавлена опция компилятора 'build-only' и префикс словаря"v8.1.523.02.2026
- "Добавлена поддержка провайдеров Open Router, Alibaba, Amazon, Google Vertex Bedrock, Fireworks, Groq, Hugging Face и Together.ai"v8.0.612.02.2026
- "Добавлен `dataSerialization` в конфигурацию ИИ"v8.0.506.02.2026
- "Режим импорта `live` переименован в `fetch` для лучшего описания базового механизма."v8.0.024.01.2026
- "Конфигурация сборки `importMode` перенесена в конфигурацию `dictionary`."v8.0.022.01.2026
- "Добавлена опция `rewrite` в конфигурацию маршрутизации"v8.0.022.01.2026
- "Конфигурация системы отделена от конфигурации контента. Внутренние пути перенесены в свойство `system`. Добавлен `codeDir` для отделения файлов контента от преобразования кода."v8.0.018.01.2026
- "Добавлены опции словаря `location` и `schema`"v8.0.018.01.2026
- "Добавлена поддержка форматов файлов JSON5 и JSONC"v7.5.110.01.2026
- "Добавлена опция `buildMode`"v7.5.017.12.2025
- "Добавлена конфигурация `dictionary`"v7.0.025.10.2025
- "`middleware` заменен на конфигурацию `routing`"v7.0.021.10.2025
- "Добавлена опция `formatCommand`"v7.0.012.10.2025
- "Обновлена опция `excludedPath`"v6.2.012.10.2025
- "Добавлена опция `outputFormat`"v6.0.223.09.2025
- "Удалены поля `dictionaryOutput` и `i18nextResourcesDir`"v6.0.021.09.2025
- "Добавлен режим импорта `live`"v6.0.016.09.2025
- "Поле `hotReload` заменено на `liveSync` и добавлены поля `liveSyncPort`, `liveSyncURL`"v6.0.004.09.2025
- "`activateDynamicImport` заменен на опцию `importMode`"v5.6.125.07.2025
- "Стандартный `contentDir` изменен с `['src']` на `['.']`"v5.6.013.07.2025
- "Добавлены команды `docs`"v5.5.1129.06.2025
Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
Документация по конфигурации Intlayer
Обзор
Файлы конфигурации Intlayer позволяют настраивать различные аспекты плагина, такие как интернационализация, middleware и управление контентом. Этот документ содержит подробное описание каждого свойства в конфигурации.
Содержание
Поддержка форматов конфигурационных файлов
Intlayer принимает форматы файлов конфигурации JSON, JS, MJS и TS:
intlayer.config.tsintlayer.config.jsintlayer.config.jsonintlayer.config.json5intlayer.config.jsoncintlayer.config.cjsintlayer.config.mjs.intlayerrc
Пример конфигурационного файла
Копировать код в буфер обмена
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:
Копировать код в буфер обмена
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:
Базовая конфигурация (по умолчанию):
Копировать код в буфер обмена
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:
Копировать код в буфер обмена
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):
Копировать код в буфер обмена
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;Режим без префикса с кастомным хранилищем:
Копировать код в буфер обмена
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 с динамическими путями:
Копировать код в буфер обмена
// 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 : ### Title → md('### 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:
Копировать код в буфер обмена
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[] |