ГоловнаПісочницяВітринаДодатокДокументаціяБлог
    • 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. Концепція
    3. Конфігурація
    Дата створення:2024-08-13Останнє оновлення:2026-05-12
    Надішліть цей документ вашому улюбленому AI-асистенту
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

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

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

    1. "Додано підтримку провайдера LM Studio"
      v8.9.412.05.2026
    2. "Додано параметри `minify` та `prune` до конфігурації збірки"
      v8.7.007.04.2026
    3. "Додано параметр `currentDomain`"
      v8.7.003.04.2026
    4. "Додано підтримку визначення шляхів для кожної локалі для 'compiler.output' та 'dictionary.fill'"
      v8.4.020.03.2026
    5. "Перенесено 'baseDir' з конфігурації 'content' до конфігурації 'system'"
      v8.3.011.03.2026
    6. "Оновлено параметри компілятора, додано підтримку для 'output' та 'noMetadata'"
      v8.2.009.03.2026
    7. "Оновлено параметри компілятора"
      v8.1.725.02.2026
    8. "Додано параметр компілятора 'build-only' та префікс ключа словника"
      v8.1.523.02.2026
    9. "Додано підтримку провайдерів Open Router, Alibaba, Amazon, Google Vertex Bedrock, Fireworks, Groq, Hugging Face та Together AI"
      v8.0.612.02.2026
    10. "Додано `dataSerialization` до конфігурації AI"
      v8.0.506.02.2026
    11. "Перейменовано режим імпорту `live` на `fetch` для кращого опису механізму."
      v8.0.024.01.2026
    12. "Перенесено конфігурацію збірки `importMode` до конфігурації `dictionary`."
      v8.0.022.01.2026
    13. "Додано параметр `rewrite` до конфігурації маршрутизації"
      v8.0.022.01.2026
    14. "Відокремлено системну конфігурацію від конфігурації контенту. Перенесено внутрішні шляхи до властивості `system`. Додано `codeDir` для відокремлення файлів контенту від перетворень коду."
      v8.0.018.01.2026
    15. "Додано параметри словника `location` та `schema`"
      v8.0.018.01.2026
    16. "Додано підтримку форматів файлів JSON5 та JSONC"
      v7.5.110.01.2026
    17. "Додано параметр `buildMode`"
      v7.5.017.12.2025
    18. "Додано конфігурацію `dictionary`"
      v7.0.025.10.2025
    19. "Замінено `middleware` на конфігурацію `routing`"
      v7.0.021.10.2025
    20. "Додано параметр `formatCommand`"
      v7.0.012.10.2025
    21. "Оновлено параметр `excludedPath`"
      v6.2.012.10.2025
    22. "Додано параметр `outputFormat`"
      v6.0.223.09.2025
    23. "Вилучено поля `dictionaryOutput` та `i18nextResourcesDir`"
      v6.0.021.09.2025
    24. "Додано режим імпорту `live`"
      v6.0.016.09.2025
    25. "Замінено поле `hotReload` на `liveSync` та додано поля `liveSyncPort`, `liveSyncURL`"
      v6.0.004.09.2025
    26. "Замінено параметр `activateDynamicImport` на параметр `importMode`"
      v5.6.125.07.2025
    27. "Змінено стандартний `contentDir` з `['src']` на `['.']`"
      v5.6.013.07.2025
    28. "Додано команди `docs`"
      v5.5.1129.06.2025

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

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

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

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

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

    Документація з конфігурації Intlayer

    Огляд

    Конфігураційні файли Intlayer дозволяють налаштовувати різні аспекти плагіна, такі як інтернаціоналізація (i18n), проміжне ПЗ та керування контентом. Цей документ містить детальний опис кожної властивості в конфігурації.


    Зміст


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

    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": Динамічне отримання через Live Sync API.     * За замовчуванням: "static"     */    importMode: "static",    /**     * Стратегія автоматичного заповнення відсутніх перекладів за допомогою AI.     * Може бути логічним значенням або шаблоном шляху для збереження заповненого контенту.     * За замовчуванням: true     */    fill: true,    /**     * Фізичне місце розташування файлів словників.     * - "local": Зберігаються у локальній файловій системі.     * - "remote": Зберігаються в Intlayer CMS.     * - "hybrid": Зберігаються і локально, і в Intlayer CMS.     * - "plugin" (або будь-який рядок): Надаються плагіном або власним джерелом.     * За замовчуванням: "local"     */    location: "local",    /**     * Чи слід автоматично перетворювати контент (наприклад, Markdown у HTML).     * За замовчуванням: false     */    contentAutoTransformation: false,  },  /**   * Конфігурація маршрутизації та проміжного ПЗ.   */  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 вашого додатка для перевірки джерела.     * За замовчуванням: ""     */    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.   */  ai: {    /**     * Використовуваний провайдер 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,    /**     * Глобальний контекст для допомоги AI під час генерації перекладів.     */    applicationContext: "Це додаток для бронювання подорожей.",    /**     * Базовий URL для AI API.     */    baseURL: "http://localhost:3000",    /**     * Серіалізація даних (Data Serialization)     *     * Варіанти:     * - "json": за замовчуванням, надійний; використовує більше токенів.     * - "toon": швидше, менше токенів, менш стабільний за JSON.     *     * За замовчуванням: "json"     */    dataSerialization: "json",  },  /**   * Налаштування збірки та оптимізації.   */  build: {    /**     * Режим виконання збірки.     * - "auto": Автоматична збірка під час збірки додатка.     * - "manual": Потрібна явна команда для збірки.     * За замовчуванням: "auto"     */    mode: "auto",    /**     * Чи слід оптимізувати пакет додатка шляхом видалення невикористовуваних словників.     * За замовчуванням: true у виробничому середовищі     */    optimize: true,    /**     * Мініфікувати словники для зменшення розміру бандла.     * За замовчуванням: true     *     * Примітка:     * - Цей параметр буде ігноруватися, якщо `optimize` вимкнено.     * - Цей параметр буде ігноруватися, якщо `editor.enabled` має значення true.     */    minify: true,    /**     * Видалити невикористовувані ключі в словниках.     * За замовчуванням: true     *     * Примітка:     * - Цей параметр буде ігноруватися, якщо `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",    /**     * Директорія для незлитих словників.     */    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`: Локаль контенту.     *   - `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, файлах cookie або заголовку.

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

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

    Показати весь вміст таблиці

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

    Поле Опис Тип За замовчуванням Приклад Примітки
    applicationURL URL вашого додатка. string undefined 'http://localhost:3000'
    'https://example.com'
    process.env.INTLAYER_EDITOR_URL
    • Використовується для обмеження джерела редактора з міркувань безпеки.
    • Якщо встановлено '*', редактор доступний з будь-якого джерела.
    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, зберігання локалі та керування проміжним ПЗ.

    Показати весь вміст таблиці

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

    Поле Опис Тип За замовчуванням Приклад Примітки
    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 Не впливає на керування файлами cookie або локальне сховище.
    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 }).
    Зберігає локаль у файлі cookie - доступно і на клієнті, і на сервері.
    'localStorage' • Термін дії не закінчується, поки не буде видалено явно.
    • Intlayer Proxy не має доступу до нього.
    • Можна налаштувати через StorageAttributes ({ type: 'localStorage', name: 'custom-locale' }).
    Зберігає локаль у браузері без терміну дії - лише клієнтська частина.
    'sessionStorage' • Видаляється при закритті вкладки/вікна браузера.
    • Intlayer Proxy не має доступу до нього.
    • Можна налаштувати через StorageAttributes ({ type: 'sessionStorage', name: 'custom-locale' }).
    Зберігає локаль на час сесії сторінки - лише клієнтська частина.
    'header' • Корисно для викликів API.
    • Клієнтська частина не має доступу до нього.
    • Можна налаштувати через StorageAttributes ({ type: 'header', name: 'custom-locale' }).
    Зберігає або передає локаль через HTTP-заголовки - лише серверна частина.

    Атрибути Cookie (Cookies Attributes)

    При використанні зберігання у файлах cookie можна задати додаткові атрибути:

    Показати весь вміст таблиці

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

    Поле Опис Тип
    name Назва файлу cookie. За замовчуванням: 'INTLAYER_LOCALE' string
    domain Домен файлу cookie. За замовчуванням: undefined string
    path Шлях файлу cookie. За замовчуванням: 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;

    Режим без префікса (No-Prefix) з власним сховищем:

    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 Керує генерацією вихідних файлів автоматичного заповнення (перекладів AI). 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 зрозуміти призначення словника. Також використовується як контекст для генерації перекладів за допомогою AI. 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 Класифікує словники та надає контекст або інструкції для редактора та AI. 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] ' '[мій префікс] '

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

    Налаштування для управління можливостями AI в Intlayer, включаючи провайдера, модель та API-ключ.

    Ця конфігурація є необов'язковою, якщо ви реєструєтеся з ключем доступу в Intlayer Dashboard. Intlayer автоматично керуватиме найбільш економічно вигідним та ефективним рішенням AI для ваших потреб. Використання стандартних налаштувань забезпечує найкращу довгострокову підтримку, оскільки Intlayer постійно оновлюється для використання останніх моделей.

    Якщо ви віддаєте перевагу використанню власного API-ключа або конкретної моделі, ви можете визначити власну конфігурацію AI. Ця конфігурація AI використовуватиметься глобально у вашому середовищі Intlayer. Команди CLI, такі як fill, використовуватимуть ці налаштування за замовчуванням, так само як SDK, візуальний редактор та CMS. Ви можете перевизначити ці значення за замовчуванням у конкретних випадках за допомогою параметрів команд.

    Intlayer підтримує широкий спектр провайдерів AI для забезпечення максимальної гнучкості. Наразі підтримуються такі провайдери:

    • 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 Провайдер, який використовуватиметься для функцій AI в Intlayer. 'openai' |
    'anthropic' |
    'mistral' |
    'deepseek' |
    'gemini' |
    'ollama' |
    'openrouter' |
    'alibaba' |
    'fireworks' |
    'groq' |
    'huggingface' |
    'bedrock' |
    'googleaistudio' |
    'googlevertex' |
    'togetherai' |
    'lmstudio'
    undefined 'anthropic' Різні провайдери вимагають різних API-ключів та мають різні ціни.
    model Модель AI, яка використовуватиметься для функцій AI. string Немає 'gpt-4o-2024-11-20' Конкретні моделі залежать від провайдера.
    temperature Контролює випадковість відповідей AI. number Немає 0.1 Вища температура = креативніші та менш надійні відповіді.
    apiKey Ваш API-ключ для вибраного провайдера. string Немає process.env.OPENAI_API_KEY Повинно зберігатися в секреті; використовуйте змінні середовища.
    applicationContext Додатковий контекст про ваш додаток, щоб допомогти AI генерувати точніші переклади (домен, цільова аудиторія, тон, термінологія). string Немає 'мій власний контекст додатка' Може використовуватися для додавання правил (наприклад: "Ви не повинні перекладати свої URL" ).
    baseURL Базовий URL для AI API. string Немає 'https://api.openai.com/v1'
    'http://localhost:5000'
    Може вказувати на локальні або власні кінцеві точки AI API.
    dataSerialization Формат серіалізації даних для функцій AI. 'json' |
    'toon'
    undefined 'toon' • 'json': за замовчуванням, надійний; використовує більше токенів.
    • 'toon': менше токенів, менш стабільно.
    • Передає моделі контекст як додатковий параметр (reasoning effort тощо).

    Конфігурація збірки (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 форсує оптимізацію навіть у режимі розробки.
    • false вимикає її.
    • Якщо ввімкнено, замінює виклики словників для оптимізації chunking.
    • Потрібні плагіни @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 Директорія для module augmentation 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, компілятор видаляє метадані словника (ключ, content wrapper) з виводу. 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[]
    Як працює Intlayer
    CLI
    Alt+→

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

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

      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": Динамічне отримання через Live Sync API.     * За замовчуванням: "static"     */    importMode: "static",    /**     * Стратегія автоматичного заповнення відсутніх перекладів за допомогою AI.     * Може бути логічним значенням або шаблоном шляху для збереження заповненого контенту.     * За замовчуванням: true     */    fill: true,    /**     * Фізичне місце розташування файлів словників.     * - "local": Зберігаються у локальній файловій системі.     * - "remote": Зберігаються в Intlayer CMS.     * - "hybrid": Зберігаються і локально, і в Intlayer CMS.     * - "plugin" (або будь-який рядок): Надаються плагіном або власним джерелом.     * За замовчуванням: "local"     */    location: "local",    /**     * Чи слід автоматично перетворювати контент (наприклад, Markdown у HTML).     * За замовчуванням: false     */    contentAutoTransformation: false,  },  /**   * Конфігурація маршрутизації та проміжного ПЗ.   */  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 вашого додатка для перевірки джерела.     * За замовчуванням: ""     */    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.   */  ai: {    /**     * Використовуваний провайдер 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,    /**     * Глобальний контекст для допомоги AI під час генерації перекладів.     */    applicationContext: "Це додаток для бронювання подорожей.",    /**     * Базовий URL для AI API.     */    baseURL: "http://localhost:3000",    /**     * Серіалізація даних (Data Serialization)     *     * Варіанти:     * - "json": за замовчуванням, надійний; використовує більше токенів.     * - "toon": швидше, менше токенів, менш стабільний за JSON.     *     * За замовчуванням: "json"     */    dataSerialization: "json",  },  /**   * Налаштування збірки та оптимізації.   */  build: {    /**     * Режим виконання збірки.     * - "auto": Автоматична збірка під час збірки додатка.     * - "manual": Потрібна явна команда для збірки.     * За замовчуванням: "auto"     */    mode: "auto",    /**     * Чи слід оптимізувати пакет додатка шляхом видалення невикористовуваних словників.     * За замовчуванням: true у виробничому середовищі     */    optimize: true,    /**     * Мініфікувати словники для зменшення розміру бандла.     * За замовчуванням: true     *     * Примітка:     * - Цей параметр буде ігноруватися, якщо `optimize` вимкнено.     * - Цей параметр буде ігноруватися, якщо `editor.enabled` має значення true.     */    minify: true,    /**     * Видалити невикористовувані ключі в словниках.     * За замовчуванням: true     *     * Примітка:     * - Цей параметр буде ігноруватися, якщо `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",    /**     * Директорія для незлитих словників.     */    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`: Локаль контенту.     *   - `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;
      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]",    },  }),}
      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;
      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;
      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;
      // 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;
      dictionary: {  fill: {    en: "/locales/en/{{key}}.content.json",    fr: ({ key }) => `/locales/fr/${key}.content.json`,    es: false,  },};