Автор:
    БозданиС:2024-08-13ПослСднСС обновлСниС:2026-08-30

    ДокумСнтация ΠΏΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Intlayer

    ΠžΠ±Π·ΠΎΡ€

    Π€Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Intlayer ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ аспСкты ΠΏΠ»Π°Π³ΠΈΠ½Π°, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ интСрнационализация, middleware ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ΠΎΠΌ. Π­Ρ‚ΠΎΡ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ содСрТит ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ свойства Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

    Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

    ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²

    Intlayer ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ JSON, JS, MJS ΠΈ TS:

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

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°

    intlayer.config.ts
    import { Locales, type IntlayerConfig } from "intlayer";
    import { nextjsRewrite } from "intlayer/routing";
    import { syncJSON } from "@intlayer/sync-json-plugin";
    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": БтатичСский ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π²ΠΎ врСмя сборки (build time).
         * - "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",
    
        /**
         * Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ прокси ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π»ΠΎΠΊΠ°Π»Π΅ΠΉ Intlayer (middleware).
         * ΠžΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΠΈ, Ρ€Π΅Π΄ΠΈΡ€Π΅ΠΊΡ‚Ρ‹ ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ URL Π² dev, preview ΠΈ SSR.
         * - Π½Π΅ Π·Π°Π΄Π°Π½ΠΎ (auto): сСрвСры dev ΠΈ preview ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎ URL,
         *   игнорируя локаль, ΡΠΎΡ…Ρ€Π°Π½Ρ‘Π½Π½ΡƒΡŽ Π² cookie ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°Ρ…. ΠŸΡ€Π΅Ρ„ΠΈΠΊΡΡ‹ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ
         *   Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ, локаль ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ сохраняСтся, Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Accept-Language
         *   ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ дСйствуСт. Π’ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅ Π²Π΅Π΄Ρ‘Ρ‚ сСбя ΠΊΠ°ΠΊ `true`.
         * - true: ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²ΠΎ всСх окруТСниях.
         * - false: ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ Π»ΠΎΠΊΠ°Π»Π΅ΠΉ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π°.
         * По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: undefined (auto)
         */
        enableProxy: undefined,
    
        /**
         * Π“Π΄Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ язык.
         * ΠžΠΏΡ†ΠΈΠΈ: '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,
      },
    
      /**
       * ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ (analytics).
       */
      analytics: {
        /**
         * Π’ΠΊΠ»ΡŽΡ‡Ρ‘Π½ Π»ΠΈ сбор Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ (просмотры страниц, ΠΏΠΎΠΊΠ°Π·Ρ‹ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°, события A/B).
         * Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ установлСнного ΠΏΠ°ΠΊΠ΅Ρ‚Π° `@intlayer/analytics` ΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ `editor.clientId` для Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΠΈ.
         * По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: true
         */
        enabled: true,
    
        /**
         * ΠœΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡƒΠ½Π΄Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ автоматичСскими ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΌΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ°ΠΌΠΈ Π½Π° бэкСнд.
         * По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: 20000
         */
        flushInterval: 20000,
    
        /**
         * Доля сСссий для записи, ΠΎΡ‚ 0 (Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ) Π΄ΠΎ 1 (всС).
         * По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: 1
         */
        sampleRate: 1,
      },
    
      /**
       * Настройки ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠ² ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ИИ.
       */
      ai: {
        /**
         * Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ИИ-ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€.
         * ΠžΠΏΡ†ΠΈΠΈ: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio', 'moonshotai'
         * По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: '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": АвтоматичСская сборка Π²ΠΎ врСмя сборки (build time) прилоТСния.
         * - "manual": ВрСбуСтся явная ΠΊΠΎΠΌΠ°Π½Π΄Π° сборки.
         * По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: "auto"
         */
        mode: "auto",
    
        /**
         * НуТно Π»ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Π±Π°Π½Π΄Π», удаляя Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ словари.
         * По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: true Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅
         */
        optimize: true,
    
        /**
         * ΠœΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ словари для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π±Π°Π½Π΄Π»Π°.
         * По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: false
         *
         * ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅:
         * - Π­Ρ‚Π° опция Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π°, Ссли `optimize` ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π°.
         * - Π­Ρ‚Π° опция Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π°, Ссли `editor.enabled` ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true.
         */
        minify: true,
    
        /**
         * Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ Π² словарях.
         * По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: false
         *
         * ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅:
         * - Π­Ρ‚Π° опция Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π°, Ссли `optimize` ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π°.
         */
        purge: true,
    
        /**
         * Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π°Π½ΠΊΠΈ словарСй ΠΏΠΎ Π»ΠΎΠΊΠ°Π»ΠΈ Π² соотвСтствии с Π³Ρ€Π°Π½ΠΈΡ†Π΅ΠΉ раздСлСния
         * ΠΊΠΎΠ΄Π°, которая ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»Π΅Π½ΠΈΠ²ΠΎ загруТаСмая страница ΠΏΠΎΠ»ΡƒΡ‡Π°Π»Π° своё
         * содСрТимоС ΠΎΠ΄Π½ΠΈΠΌ запросом.
         * По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: true
         *
         * ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅:
         * - ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ словарям с `importMode: 'dynamic'`.
         */
        chunkGrouping: true,
    
        /**
         * Π—Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ вмСстС с Ρ‡Π°Π½ΠΊΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚, вмСсто получСния
         * послС отрисовки этого Ρ‡Π°Π½ΠΊΠ°. ЧтСния ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ синхронно вмСсто
         * приостановки, поэтому ΠΏΡ€ΠΈ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ большС Π½Π΅ ΠΌΠ΅Π»ΡŒΠΊΠ°Π΅Ρ‚ состояниС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.
         * По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: true
         *
         * ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅:
         * - ΠžΠΆΠΈΠ΄Π°Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΡ‘Π½Π½Π°Ρ локаль, поэтому страница Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ лишь Ρ‚ΠΎΡ‚
         *   язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚.
         */
        dictionariesPreload: 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(),
        }),
      },
    
      /**
       * ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ словаря.
       */
      dictionary: {
        /**
         * УправляСт способом ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° словарСй.
         * - "static": БтатичСски импортируСтся Π²ΠΎ врСмя сборки.
         * - "dynamic": ДинамичСски импортируСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Suspense.
         * - "fetch": ДинамичСски загруТаСтся Ρ‡Π΅Ρ€Π΅Π· API ΠΆΠΈΠ²ΠΎΠΉ синхронизации.
         */
        importMode: "static",
    
        /**
         * Π€ΠΎΡ€ΠΌΠ°Ρ‚ сообщСний ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для всСх словарСй Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅.
         * - 'intlayer': БобствСнный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ intlayer (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ).
         * - 'icu': Π€ΠΎΡ€ΠΌΠ°Ρ‚ сообщСний ICU.
         * - 'i18next': Π€ΠΎΡ€ΠΌΠ°Ρ‚ i18next.
         * - 'vue-i18n': Π€ΠΎΡ€ΠΌΠ°Ρ‚ Vue I18n.
         * - 'po': Π€ΠΎΡ€ΠΌΠ°Ρ‚ GNU Gettext PO.
         */
        format: "icu",
      },
    
      /**
       * ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ².
       */
      plugins: [
        syncJSON({
          format: "icu",
          source: ({ locale }) => `./messages/${locale}.json`,
        }),
      ],
    };
    
    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Π―Π·Ρ‹ΠΊ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠ°ΠΊ запасной, Ссли Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹ΠΉ язык Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½.stringLocales.ENGLISH'en'Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для опрСдСлСния языка, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ Π² URL, ΠΊΡƒΠΊΠΈ ΠΈΠ»ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅.

    ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° (Editor)

    ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ настройки для встроСнного Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠΎΡ€Ρ‚ сСрвСра ΠΈ статус Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.

    ПолСОписаниСВипПо ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
    applicationURLURL прилоТСния.stringundefined'http://localhost:3000'
    'https://example.com'
    process.env.INTLAYER_EDITOR_URL
    β€’ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ограничСния источника (origin) Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΈΠ· сообраТСний бСзопасности.
    β€’ Если установлСно Π² '*', Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ доступСн ΠΈΠ· любого источника.
    portΠŸΠΎΡ€Ρ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ сСрвСром Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°.number8000
    editorURLURL сСрвСра Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°.string'http://localhost:8000''http://localhost:3000'
    'https://example.com'
    process.env.INTLAYER_EDITOR_URL
    β€’ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ограничСния источников, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.
    β€’ Если установлСно Π² '*', доступно ΠΈΠ· любого источника.
    β€’ Π”ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ установлСно, Ссли ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ ΠΏΠΎΡ€Ρ‚ ΠΈΠ»ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ хостится Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π΄ΠΎΠΌΠ΅Π½Π΅.
    cmsURLURL Intlayer CMS.string'https://app.intlayer.org''https://app.intlayer.org'
    backendURLURL бэкСнд-сСрвСра.stringhttps://back.intlayer.orghttp://localhost:4000
    enabledΠ”ΠΎΠ»ΠΆΠ½ΠΎ Π»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ.booleanfalseprocess.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
    Π’ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅
    БэкСндС.
    booleantruetrueβ€’ ΠŸΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ/ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ словаря ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ обновляСт ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ страницы.
    β€’ Live Sync выносит ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ сСрвСр, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.
    β€’ РСкомСндуСтся Ρ…ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΎΠ±Π° Π½Π° ΠΎΠ΄Π½ΠΎΠΉ машинС.
    liveSyncPortΠŸΠΎΡ€Ρ‚ сСрвСра live sync.number40004000
    liveSyncURLURL сСрвСра live sync.string'http://localhost:{liveSyncPort}''https://example.com'По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° localhost; ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ сСрвСр live sync.

    ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ (Analytics)

    ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ настройки, связанныС с Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΎΠΉ Intlayer: сбор Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ показываСтся ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ (просмотры страниц, ΠΏΠΎΠΊΠ°Π·Ρ‹ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°), ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ A/B-тСстирования ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°.

    Аналитика Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ opt-out: ΠΎΠ½Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ установлСн ΠΏΠ°ΠΊΠ΅Ρ‚ @intlayer/analytics ΠΈ настроСн ΠΊΠ»ΡŽΡ‡ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (editor.clientId) для Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΠΈ. УстановитС analytics.enabled Π² false β€” ΠΈΠ»ΠΈ Π½Π΅ устанавливайтС ΠΏΠ°ΠΊΠ΅Ρ‚ β€” ΠΈ вся интСграция Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½Π° ΠΈΠ· сборки вашСго прилоТСния (dead-code elimination).

    ПолСОписаниСВипПо ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
    enabledΠ’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ сбор Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ (просмотры страниц, ΠΏΠΎΠΊΠ°Π·Ρ‹ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°, события A/B).booleantruefalseΠ’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ установлСнного ΠΏΠ°ΠΊΠ΅Ρ‚Π° @intlayer/analytics ΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ editor.clientId для Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΠΈ; ΠΈΠ½Π°Ρ‡Π΅ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠ° остаётся ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½ΠΎΠΉ, Π΄Π°ΠΆΠ΅ Ссли enabled Ρ€Π°Π²Π½ΠΎ true.
    flushIntervalΠœΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡƒΠ½Π΄Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ автоматичСскими ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΌΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ°ΠΌΠΈ Π½Π° бэкСнд.number2000010000
    sampleRateДоля сСссий для записи, ΠΎΡ‚ 0 (Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ) Π΄ΠΎ 1 (всС).number10.5Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π° для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сСссии, поэтому записанная сСссия сообщаСт ΠΎΠ±ΠΎ всСх своих событиях (Π±Π΅Π· частичных Π²ΠΎΡ€ΠΎΠ½ΠΎΠΊ).

    ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ (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НС влияСт Π½Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΡƒΠΊΠ°ΠΌΠΈ ΠΈΠ»ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ языков.
    enableProxyΠ’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ прокси ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π»ΠΎΠΊΠ°Π»Π΅ΠΉ Intlayer (middleware).boolean |
    undefined
    undefined (auto)trueβ€’ НС Π·Π°Π΄Π°Π½ΠΎ (auto): сСрвСры dev ΠΈ preview ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ локаль ΠΈΠ· cookie/Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΊΠ°ΠΊ источник Ρ€Π΅Π΄ΠΈΡ€Π΅ΠΊΡ‚Π°; прСфиксы, сохранСниС Π»ΠΎΠΊΠ°Π»ΠΈ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Accept-Language ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π’ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅ Π²Π΅Π΄Ρ‘Ρ‚ сСбя ΠΊΠ°ΠΊ true.
    β€’ true: ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²Π΅Π·Π΄Π΅.
    β€’ false: ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ Π»ΠΎΠΊΠ°Π»Π΅ΠΉ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π°. Π’ Next.js middleware intlayerProxy становится сквозным.
    storageΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ хранСния языка Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅.false |
    'cookie' |
    'localStorage' |
    'sessionStorage' |
    'header' |
    CookiesAttributes |
    StorageAttributes |
    Array
    ['cookie', 'header']'localStorage'
    [{ type: 'cookie', name: 'custom-locale', secure: true }]
    Π‘ΠΌ. Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² хранСния Π½ΠΈΠΆΠ΅.
    basePathΠ‘Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ для URL-адрСсов прилоТСния.string'''/my-app'Если ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ находится ΠΏΠΎ адрСсу https://example.com/my-app, basePath - '/my-app', Π° URL становятся https://example.com/my-app/en.
    rewriteΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° пСрСзаписи URL, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ€Π΅ΠΆΠΈΠΌ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ динамичСскиС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ [param].Record<string, StrictModeLocaleMap<string>>undefinedΠ‘ΠΌ. ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΈΠΆΠ΅β€’ ΠŸΡ€Π°Π²ΠΈΠ»Π° пСрСзаписи ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π½Π°Π΄ mode.
    β€’ Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Next.js ΠΈ Vite.
    β€’ getLocalizedUrl() автоматичСски примСняСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°.
    β€’ Π‘ΠΌ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ пСрСзаписи URL.
    domainsБопоставляСт Π»ΠΎΠΊΠ°Π»ΠΈ с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ хостов Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² для ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° основС Π΄ΠΎΠΌΠ΅Π½ΠΎΠ². Когда установлСно, URL-адрСса для Π»ΠΎΠΊΠ°Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ этот Π΄ΠΎΠΌΠ΅Π½ Π² качСствС Π±Π°Π·Ρ‹ (Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ URL), ΠΈ ΠΊ ΠΏΡƒΡ‚ΠΈ Π½Π΅ добавляСтся прСфикс Π»ΠΎΠΊΠ°Π»ΠΈ.Partial<Record<Locale, string>>undefined{ zh: 'intlayer.zh', fr: 'intlayer.org' }β€’ ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - https://, Ссли ΠΎΠ½ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ Π² ΠΈΠΌΠ΅Π½ΠΈ хоста.
    β€’ Π‘Π°ΠΌ Π΄ΠΎΠΌΠ΅Π½ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ локаль, поэтому прСфикс /zh/ Π½Π΅ добавляСтся.
    β€’ getLocalizedUrl('/', 'zh') Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ https://intlayer.zh/.

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ rewrite:

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

    ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ хранСния (Storage)

    Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
    'cookie'β€’ Для соотвСтствия GDPR ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΡŒΡ‚Π΅ Π½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰Π΅Π΅ согласиС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.
    β€’ НастраиваСтся Ρ‡Π΅Ρ€Π΅Π· CookiesAttributes ({ type: 'cookie', name: 'custom-locale', secure: true, httpOnly: false }).
    Π₯Ρ€Π°Π½ΠΈΡ‚ язык Π² ΠΊΡƒΠΊΠ°Ρ… - доступно ΠΊΠ°ΠΊ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅, Ρ‚Π°ΠΊ ΠΈ Π½Π° сСрвСрС.
    'localStorage'β€’ НС истСкаСт, Ссли Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ явно ΠΎΡ‡ΠΈΡ‰Π΅Π½ΠΎ.
    β€’ ΠŸΡ€ΠΎΠΊΡΠΈ Intlayer Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ этому доступ.
    β€’ НастраиваСтся Ρ‡Π΅Ρ€Π΅Π· StorageAttributes ({ type: 'localStorage', name: 'custom-locale' }).
    Π₯Ρ€Π°Π½ΠΈΡ‚ язык Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Π±Π΅Π· ограничСния срока - Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.
    'sessionStorage'β€’ ΠžΡ‡ΠΈΡ‰Π°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ/ΠΎΠΊΠ½Π°.
    β€’ ΠŸΡ€ΠΎΠΊΡΠΈ Intlayer Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ этому доступ.
    β€’ НастраиваСтся Ρ‡Π΅Ρ€Π΅Π· StorageAttributes ({ type: 'sessionStorage', name: 'custom-locale' }).
    Π₯Ρ€Π°Π½ΠΈΡ‚ язык Π½Π° врСмя сСссии страницы - Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.
    'header'β€’ ПолСзно для Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² API.
    β€’ Π‘Ρ‚ΠΎΡ€ΠΎΠ½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ.
    β€’ НастраиваСтся Ρ‡Π΅Ρ€Π΅Π· StorageAttributes ({ type: 'header', name: 'custom-locale' }).
    Π₯Ρ€Π°Π½ΠΈΡ‚ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ язык Ρ‡Π΅Ρ€Π΅Π· HTTP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ - Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° сторонС сСрвСра.

    Атрибуты ΠΊΡƒΠΊΠΈ (Cookies Attributes)

    ΠŸΡ€ΠΈ использовании хранСния Π² ΠΊΡƒΠΊΠ°Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹:

    ПолСОписаниСВип
    nameИмя ΠΊΡƒΠΊΠΈ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: 'INTLAYER_LOCALE'string
    domainΠ”ΠΎΠΌΠ΅Π½ ΠΊΡƒΠΊΠΈ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: undefinedstring
    pathΠŸΡƒΡ‚ΡŒ ΠΊΡƒΠΊΠΈ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: undefinedstring
    secureΠ’Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ HTTPS. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: undefinedboolean
    httpOnlyΠ€Π»Π°Π³ HTTP-only. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: undefinedboolean
    sameSiteΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° SameSite.'strict' |
    'lax' |
    'none'
    expiresЧисло прСдставляСт Π΄Π½ΠΈ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° создания; Π΄Π°Ρ‚Π° (ΠΈΠ»ΠΈ строка Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ISO) являСтся Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠΉ Π΄Π°Ρ‚ΠΎΠΉ истСчСния. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: undefinedDate |
    number |
    string
    maxAgeВрСмя ΠΆΠΈΠ·Π½ΠΈ Π² сСкундах с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° создания. Π˜ΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π½Π°Π΄ expires. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: undefinednumber

    Атрибуты Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° (Storage Attributes)

    ΠŸΡ€ΠΈ использовании localStorage ΠΈΠ»ΠΈ sessionStorage:

    ПолСОписаниСВип
    typeΠ’ΠΈΠΏ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°.'localStorage' |
    'sessionStorage'
    nameИмя ΠΊΠ»ΡŽΡ‡Π° Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: 'INTLAYER_LOCALE'string

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ

    Π’ΠΎΡ‚ нСсколько распространСнных ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ для Π½ΠΎΠ²ΠΎΠΉ структуры ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ v7:

    Базовая конфигурация (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ):

    typescript
    import { Locales, type IntlayerConfig } from "intlayer";
    // intlayer.config.ts
    const 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.ts
    const 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.ts
    const config: IntlayerConfig = {
      internationalization: {
        locales: ["en", "fr", "es"],
        defaultLocale: "en",
      },
      routing: {
        mode: "search-params",
        storage: "localStorage",
        basePath: "",
      },
    };
    
    export default config;
    

    Π Π΅ΠΆΠΈΠΌ Π±Π΅Π· прСфикса с кастомным Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ:

    typescript
    import { Locales, type IntlayerConfig } from "intlayer";
    // intlayer.config.ts
    const 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.ts
    import { 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 ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ измСнСния Π² Ρ„Π°ΠΉΠ»Π°Ρ… Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° для пСрСсборки словарСй.booleantrue
    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.stringundefined'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).

    ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ систСмы

    ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, связанныС с Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌΠΈ путями ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Intlayer. Π­Ρ‚ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌΠΈ ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ измСнСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

    FieldDescriptionTypeDefaultExampleNote
    baseDirБазовая дирСктория для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.stringprocess.cwd()'/path/to/project'Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ всСх Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ, связанных с Intlayer.
    dictionariesDirΠŸΡƒΡ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ для хранСния словарСй Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.string'.intlayer/dictionary'
    moduleAugmentationDirДирСктория для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π°Ρ Π»ΡƒΡ‡ΡˆΠΈΠ΅ прСдлоТСния IDE ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚ΠΈΠΏΠΎΠ².string'.intlayer/types''intlayer-types'Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ это Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π² tsconfig.json.
    unmergedDictionariesDirДирСктория для хранСния нСслитых словарСй.string'.intlayer/unmerged_dictionary'
    typesDirДирСктория для хранСния Ρ‚ΠΈΠΏΠΎΠ² словарСй.string'.intlayer/types'
    mainDirДирСктория, Π³Π΄Π΅ хранятся основныС Ρ„Π°ΠΉΠ»Ρ‹ прилоТСния.string'.intlayer/main'
    configDirДирСктория, Π³Π΄Π΅ хранятся Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.string'.intlayer/config'
    cacheDirДирСктория, Π³Π΄Π΅ хранятся Ρ„Π°ΠΉΠ»Ρ‹ кСша.string'.intlayer/cache'

    ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ словарСй (Dictionary)

    ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ опСрациями со словарями, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ автоматичСского заполнСния ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°.

    Π­Ρ‚Π° конфигурация словаря слуТит Π΄Π²ΡƒΠΌ основным цСлям:

    1. Default Values: ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈ создании Ρ„Π°ΠΉΠ»ΠΎΠ² объявлСния ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°
    2. Fallback Behavior: ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹Π΅ значСния, ΠΊΠΎΠ³Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ поля Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹, позволяя Π²Π°ΠΌ глобально ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ словаря

    Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ„Π°ΠΉΠ»Π°Ρ… объявлСния ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° ΠΈ способС примСнСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ см. Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°.

    ПолСОписаниСВипПо ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
    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 ΠΏΠΎΠ½ΡΡ‚ΡŒ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ словаря. Π’Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ контСкст для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ИИ.stringundefined'User profile section'
    localeΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ языка. КаТдоС объявлСнноС ΠΏΠΎΠ»Π΅ становится ΡƒΠ·Π»ΠΎΠΌ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π°. Если отсутствуСт, ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ считаСтся многоязычным.LocalesValuesundefined'en'Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ это, Ссли ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ языка, Π° Π½Π΅ содСрТит ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‹ для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ….
    contentAutoTransformationАвтоматичСски ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ строки ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° Π² Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΡƒΠ·Π»Ρ‹ (markdown, HTML ΠΈΠ»ΠΈ вставка).boolean |
    { markdown?: boolean; html?: boolean; insertion?: boolean }
    falsetrueβ€’ 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 ΠΈ Ρ‚.Π΄.
    formatΠ€ΠΎΡ€ΠΌΠ°Ρ‚ сообщСний ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для всСх словарСй Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅.'intlayer' |
    'icu' |
    'i18next' |
    'vue-i18n' |
    'po'
    'intlayer''icu'β€’ 'intlayer': БобствСнный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ intlayer.
    β€’ 'icu': Π€ΠΎΡ€ΠΌΠ°Ρ‚ сообщСний ICU.
    β€’ 'i18next': Π€ΠΎΡ€ΠΌΠ°Ρ‚ i18next.
    β€’ 'vue-i18n': Π€ΠΎΡ€ΠΌΠ°Ρ‚ Vue I18n.
    β€’ 'po': Π€ΠΎΡ€ΠΌΠ°Ρ‚ GNU Gettext PO.
    priorityΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ словаря. Π‘ΠΎΠ»Π΅Π΅ высокиС значСния ΠΏΠΎΠ±Π΅ΠΆΠ΄Π°ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΈΠ΅ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ словарями.numberundefined1
    liveУстарСло - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ importMode: 'fetch'. Π£ΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΎ, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ словаря ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒΡΡ динамичСски Ρ‡Π΅Ρ€Π΅Π· Live Sync API.booleanundefinedΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΎ Π² importMode: 'fetch' Π² v8.0.0.
    schemaГСнСрируСтся автоматичСски Intlayer для Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ JSON-схСмы.'https://intlayer.org/schema.json'Π°Π²Ρ‚ΠΎ-гСнСрацияНС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.
    titleΠŸΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΈ CMS.stringundefined'User Profile'
    tagsΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ словари ΠΈ прСдоставляСт контСкст ΠΈΠ»ΠΈ инструкции для Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΈ ИИ.string[]undefined['user', 'profile']
    versionВСрсия ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ словаря; ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ.stringundefined'1.0.0'β€’ УправляСтся Π² CMS.
    β€’ НС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ локально.

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ fill:

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

    ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Π»ΠΎΠ³Π³Π΅Ρ€Π° (Log)

    ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для настройки Π²Ρ‹Π²ΠΎΠ΄Π° Π»ΠΎΠ³ΠΎΠ² Intlayer.

    ПолСОписаниСВипПо ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
    modeΠ£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π΅ΠΆΠΈΠΌ Π»ΠΎΠ³Π³Π΅Ρ€Π°.'default' |
    'verbose' |
    'disabled'
    'default''verbose'β€’ 'verbose': Π»ΠΎΠ³ΠΈΡ€ΡƒΠ΅Ρ‚ большС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.
    β€’ 'disabled': ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π»ΠΎΠ³Π³Π΅Ρ€.
    prefixΠŸΡ€Π΅Ρ„ΠΈΠΊΡ для всСх сообщСний Π² Π»ΠΎΠ³Π΅.string'[intlayer] ''[my prefix] '

    ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ИИ (AI)

    Настройки, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ИИ-функциями Intlayer, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π°, модСль ΠΈ API-ΠΊΠ»ΡŽΡ‡.

    Π­Ρ‚Π° конфигурация ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°, Ссли Π²Ρ‹ зарСгистрированы Π² Intlayer Dashboard с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ доступа. Intlayer Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивным ΠΈ экономичным Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ИИ для Π²Π°ΡˆΠΈΡ… Π½ΡƒΠΆΠ΄. ИспользованиС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π»ΡƒΡ‡ΡˆΡƒΡŽ Π΄ΠΎΠ»Π³ΠΎΡΡ€ΠΎΡ‡Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Intlayer постоянно обновляСтся для использования Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ.

    Если Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ собствСнный API-ΠΊΠ»ΡŽΡ‡ ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ модСль, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ свою ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ИИ. Π­Ρ‚Π° конфигурация ИИ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ глобально Π² вашСй срСдС Intlayer. ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ CLI Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти настройки ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Ρ‚Π°ΠΊΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠ°ΠΊ fill, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ SDK, Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈ CMS. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ эти значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… случаСв использования Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄.

    Intlayer ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ нСсколько ИИ-ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ² для максимальной гибкости. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Ρ‹:

    • OpenAI (По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ)
    • Anthropic Claude
    • Mistral AI
    • DeepSeek
    • Google Gemini
    • Google AI Studio
    • Google Vertex
    • Meta Llama
    • Ollama
    • OpenRouter
    • Alibaba Cloud
    • Fireworks
    • Hugging Face
    • Groq
    • Amazon Bedrock
    • Together.ai
    • LM Studio
    ПолСОписаниСВипПо ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
    providerΠŸΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для ИИ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Intlayer.'openai' |
    'anthropic' |
    'mistral' |
    'deepseek' |
    'gemini' |
    'ollama' |
    'openrouter' |
    'alibaba' |
    'fireworks' |
    'groq' |
    'huggingface' |
    'bedrock' |
    'googleaistudio' |
    'googlevertex' |
    'togetherai' |
    'lmstudio' |
    'moonshotai'
    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УправляСт Ρ‚Π΅ΠΌ, Π΄ΠΎΠ»ΠΆΠ½Π° Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ оптимизация сборки.booleanundefinedprocess.env.NODE_ENV === 'production'β€’ Если Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ, оптимизация запускаСтся ΠΏΡ€ΠΈ сборкС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° (Vite/Next.js).
    β€’ true форсируСт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ Π΄Π°ΠΆΠ΅ Π² dev Ρ€Π΅ΠΆΠΈΠΌΠ΅.
    β€’ false ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π΅Π΅.
    β€’ Если Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ, замСняСт Π²Ρ‹Π·ΠΎΠ²Ρ‹ словарСй для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‡Π°Π½ΠΊΠΈΠ½Π³Π°.
    β€’ Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ @intlayer/babel ΠΈ @intlayer/swc.
    minifyΠœΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ словари для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π±Π°Π½Π΄Π»Π°.booleanfalseβ€’ Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ Π±Π°Π½Π΄Π» Π±Ρ‹Ρ‚ΡŒ ΠΌΠΈΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½.
    β€’ По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: true Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅.
    β€’ Π­Ρ‚Π° опция Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π°, Ссли optimize ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π°.
    β€’ Π­Ρ‚Π° опция Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π°, Ссли editor.enabled ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true.
    purgeΠ£Π΄Π°Π»ΠΈΡ‚ΡŒ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ Π² словарях.booleanfalseβ€’ Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ Π±Π°Π½Π΄Π» Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡ΠΈΡ‰Π΅Π½.
    β€’ По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: true Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅.
    β€’ Π­Ρ‚Π° опция Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π°, Ссли optimize ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π°.
    checkTypesΠ£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π΄ΠΎΠ»ΠΆΠ½Π° Π»ΠΈ сборка ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ TypeScript ΠΈ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ошибки.booleanfalseΠœΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ процСсс сборки.
    chunkGroupingΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚, слСдуСт Π»ΠΈ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π°Π½ΠΊΠΈ словарСй ΠΏΠΎ Π»ΠΎΠΊΠ°Π»ΠΈ Π² соотвСтствии с Π³Ρ€Π°Π½ΠΈΡ†Π΅ΠΉ раздСлСния ΠΊΠΎΠ΄Π°, которая ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚.booleantrueβ€’ Π‘Π΅Π· Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ страница, собранная ΠΈΠ· мноТСства ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², отправляСт ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ запросу Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ.
    β€’ Π‘Π»ΠΎΠ²Π°Ρ€ΠΈ, достиТимыС ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π³Ρ€Π°Π½ΠΈΡ†, пСрСносятся Π² ΠΎΠ±Ρ‰ΠΈΠΉ Ρ‡Π°Π½ΠΊ, поэтому Π½ΠΈ ΠΎΠ΄Π½Π° страница Π½Π΅ содСрТит ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ.
    β€’ ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ словарям с importMode: 'dynamic'.
    β€’ ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ клиСнтской сборкС ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π±Π°Π½Π΄Π»ΠΈΠ½Π³Π΅ (Π½Π΅ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ).
    dictionariesPreloadΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ вмСстС с Ρ‡Π°Π½ΠΊΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚, вмСсто получСния послС отрисовки этого Ρ‡Π°Π½ΠΊΠ°.booleantrueβ€’ БгСнСрированная Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ локаль просмотра Π½Π° Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, поэтому Π»Π΅Π½ΠΈΠ²ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹ΠΉ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ Π½Π΅ считаСтся Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌ, ΠΏΠΎΠΊΠ° Π΅Π³ΠΎ содСрТимоС Π½Π΅ Π³ΠΎΡ‚ΠΎΠ²ΠΎ.
    β€’ ЧтСния ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ синхронно вмСсто приостановки, поэтому ΠΏΡ€ΠΈ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ большС Π½Π΅ ΠΌΠ΅Π»ΡŒΠΊΠ°Π΅Ρ‚ состояниС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.
    β€’ ΠžΠΆΠΈΠ΄Π°Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΡ‘Π½Π½Π°Ρ локаль, поэтому страница Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ лишь Ρ‚ΠΎΡ‚ язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚.
    β€’ ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ словарям с importMode: 'dynamic' Π² клиСнтской сборкС.
    β€’ ВрСбуСтся сборщик с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ top-level await (Vite, esbuild).
    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.

    ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ компилятора (Compiler)

    Настройки, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ компилятором Intlayer, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ словари Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ· Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

    ПолСОписаниСВипПо ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
    enabledΠ£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ компилятор Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ для извлСчСния словарСй.boolean |
    'build-only'
    true'build-only''build-only' пропускаСт компилятор ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ для ускорСния сборки; выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… сборки.
    dictionaryKeyPrefixΠŸΡ€Π΅Ρ„ΠΈΠΊΡ для ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ словарСй.string'''my-prefix-'ДобавляСтся ΠΊ сгСнСрированному ΠΊΠ»ΡŽΡ‡Ρƒ (Π½Π° основС ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°) для прСдотвращСния ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ².
    saveComponentsΠ”ΠΎΠ»ΠΆΠ½Ρ‹ Π»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒΡΡ послС ΠΈΡ… прСобразования.booleanfalseβ€’ Если 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, компилятор опускаСт ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ словаря (ΠΊΠ»ΡŽΡ‡, ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΡƒ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°) ΠΈΠ· Π²Ρ‹Π²ΠΎΠ΄Π°.booleanfalsefalse β†’ {"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[]

    Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы

    Π’ ΠΊΠΎΡ€Π½Π΅ вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, рядом с package.json. Intlayer Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ intlayer.config.js, intlayer.config.mjs, intlayer.config.cjs ΠΈ JSON, поэтому Ρ„Π°ΠΉΠ» соотвСтствуСт Ρ‚ΠΎΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ систСмС, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

    Π“ΠΎΡ€Π°Π·Π΄ΠΎ мСньшС, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ Π½Π° основС пространств ΠΈΠΌΡ‘Π½, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ страница Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚. Π Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ°, отрСндСрСнная Π½Π° сСрвСрС, Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ свой ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° сСрвСрС, ΠΈ компилятор Π²ΠΎ врСмя сборки замСняСт Π²Ρ‹Π·ΠΎΠ²Ρ‹ useIntlayer Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ записями словаря, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, поэтому Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ ΠΈ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ языки ΠΎΡ‚Π±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‚ΡΡ. ДинамичСскиС словари Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎ локалям. По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π°ΠΌΠΈ Intlayer сокращаСт Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±Π°Π½Π΄Π»Π° ΠΈ страницы Π΄ΠΎ 50%. Π‘ΠΌ. ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ Π±Π°Π½Π΄Π»Π° ΠΈ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊ.

    Π”Π°, ΠΈ Π΅ΡΡ‚ΡŒ Π΄Π²Π° ΠΏΡƒΡ‚ΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΌΠΈΠ³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ постСпСнно с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ руководства ΠΏΠΎ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ с i18next ΠΈΠ»ΠΈ руководства ΠΏΠΎ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ с next-intl. Или Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ свой Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ API: Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Ρ‹ совмСстимости ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ API, ΠΊΠ°ΠΊ i18next, react-i18next, next-intl, next-i18next, react-intl, use-intl, vue-i18n ΠΈ Lingui, Π½ΠΎ обслуТиваСмый словарями Intlayer, поэтому ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹, Π° ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² - Π½Π΅Ρ‚.

    Π”Π°. Плагин синхронизации JSON сохраняСт ваши Ρ„Π°ΠΉΠ»Ρ‹ /messages/{locale}/{namespace}.json ΠΊΠ°ΠΊ источник истины ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠ· Π½ΠΈΡ… словари Intlayer, Π² ΠΎΠ±ΠΎΠΈΡ… направлСниях. Плагин синхронизации PO Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅ самоС для ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² gettext, Π° Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎ Π»ΠΎΠΊΠ°Π»ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ ΠΏΠΎ языкам вмСсто Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ Π»ΠΎΠΊΠ°Π»Π΅ΠΉ Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅.

    НСт. ЗапуститС npx intlayer extract, ΠΈ Intlayer ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚ ваши исходныС Ρ„Π°ΠΉΠ»Ρ‹, ΠΈΠ·Π²Π»Π΅Ρ‡Ρ‘Ρ‚ строки, Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, ΠΈ Π·Π°ΠΏΠΈΡˆΠ΅Ρ‚ Ρ„Π°ΠΉΠ» .content рядом с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΈΠ· Π½ΠΈΡ…, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ просматриваСтС diff вмСсто копирования строк Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ. Π‘ΠΌ. ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ extract.

    Для ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Intlayer Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅ самоС Π²ΠΎ врСмя сборки Π½Π° исходном ΠΊΠΎΠ΄Π΅ JSX, TSX, Vue ΠΈ Svelte, гСнСрируя словари ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ, поэтому Π½Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Он Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‡Π΅Ρ€Π΅Π· статичСский Π°Π½Π°Π»ΠΈΠ·, поэтому строки, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎ врСмя выполнСния, ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ нСдоступными, ΠΈ Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ нСсколько Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒ тСкст, Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, ΠΎΡ‚ Π»ΠΎΠ³ΠΈΠΊΠΈ прилоТСния.

    ΠŸΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², всС ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅:

    • Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ для VS Code: ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΎΡ‚ ΠΊΠ»ΡŽΡ‡Π° useIntlayer ΠΊ Ρ„Π°ΠΉΠ»Ρƒ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Π³ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚, ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΈ запуск build, fill, test, push ΠΈ pull ΠΈΠ· ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈΠ»ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ Intlayer.
    • LSP-сСрвСр: Ρ‚Π° ΠΆΠ΅ ΠΎΡΠ²Π΅Π΄ΠΎΠΌΠ»Ρ‘Π½Π½ΠΎΡΡ‚ΡŒ Π² любом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π½Π° LSP, с ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠΌ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ, поиском всСх ссылок, прСдпросмотром ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ значСния ΠΏΡ€ΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ, Π°Π²Ρ‚ΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΊΠ»ΡŽΡ‡ Π½ΠΈΠ³Π΄Π΅ Π½Π΅ объявлСн. Он Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π²Ρ‹Π·ΠΎΠ²Ρ‹ i18next, react-i18next, next-intl ΠΈ use-intl, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΡ€ΠΈ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ.
    • MCP-сСрвСр: прСдоставляСт Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΈ CLI Intlayer для Cursor, VS Code, Claude Desktop, Claude Code ΠΈ ChatGPT, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ассистСнт ΠΎΡ‚Π²Π΅Ρ‡Π°Π» ΠΏΠΎ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π° Π½Π΅ Π³Π°Π΄Π°Π», ΠΈ ΠΌΠΎΠ³ сам Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ€ΠΎΠ΄Π΅ intlayer fill.
    • Навыки Π°Π³Π΅Π½Ρ‚ΠΎΠ²: сфокусированныС Π½Π°Π²Ρ‹ΠΊΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ intlayer-config, intlayer-cli ΠΈ intlayer-content, плюс ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π½Π° Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‚ Π°Π³Π΅Π½Ρ‚Π° вашСй настройкС ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Ρ‚ΠΈΠΏΠ°ΠΌ ΡƒΠ·Π»ΠΎΠ² ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°.
    • Плагин ESLint: no-raw-text ΠΏΠΎΠΌΠ΅Ρ‡Π°Π΅Ρ‚ Тёстко Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ строки, с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ для статичСских ΠΊΠ»ΡŽΡ‡Π΅ΠΉ словаря ΠΈ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°.