Author:
    Creation:2024-08-13Last update:2026-08-22

    Intlayer कॉन्फ़िगरेशन दस्तावेज़

    अवलोकन

    Intlayer कॉन्फ़िगरेशन फ़ाइलें आपको प्लगइन के विभिन्न पहलुओं को अनुकूलित करने की अनुमति देती हैं, जैसे अंतर्राष्ट्रीयकरण, मिडलवेयर और कंटेंट प्रबंधन। यह दस्तावेज़ कॉन्फ़िगरेशन की प्रत्येक प्रॉपर्टी का विस्तृत विवरण प्रदान करता है।

    विषय सूची

    कॉन्फ़िगरेशन फ़ाइल समर्थन

    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": बिल्ड के दौरान स्थिर आयात।
         * - "dynamic": Suspense का उपयोग करके गतिशील आयात।
         * - "fetch": लाइव सिंक API के माध्यम से गतिशील फ़ेचिंग।
         * डिफ़ॉल्ट: "static"
         */
        importMode: "static",
    
        /**
         * AI का उपयोग करके अनुपस्थित अनुवादों को स्वचालित रूप से भरने की रणनीति।
         * एक बूलियन या भरे हुए कंटेंट को सहेजने के लिए एक पथ पैटर्न हो सकता है।
         * डिफ़ॉल्ट: true
         */
        fill: true,
    
        /**
         * डिक्शनरी फ़ाइलों का भौतिक स्थान।
         * - "local": स्थानीय फ़ाइल सिस्टम पर संग्रहीत।
         * - "remote": Intlayer CMS में संग्रहीत।
         * - "hybrid": स्थानीय और Intlayer CMS दोनों में संग्रहीत।
         * - "plugin" (या कोई कस्टम स्ट्रिंग): प्लगइन या कस्टम स्रोत द्वारा प्रदान किया गया।
         * डिफ़ॉल्ट: "local"
         */
        location: "local",
    
        /**
         * कंटेंट को स्वचालित रूप से रूपांतरित करना है या नहीं (जैसे मार्कडाउन को 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",
    
        /**
         * Intlayer लोकेल-रूटिंग प्रॉक्सी (मिडलवेयर) को सक्षम करता है।
         * dev, preview और SSR में लोकेल पहचान, रीडायरेक्ट और रीराइट संभालता है।
         * - अनसेट (auto): dev और preview सर्वर कुकीज़ तथा हेडर में संग्रहित लोकेल को
         *   अनदेखा करके रूटिंग को URL-आधारित रखते हैं। प्रीफ़िक्स अब भी हल होते हैं,
         *   लोकेल अब भी सहेजा जाता है, और 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 पूर्ण (absolute) होंगे (जैसे, 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",
    
        /**
         * Intlayer CMS का URL।
         * डिफ़ॉल्ट: "https://app.intlayer.org"
         */
        cmsURL: "https://app.intlayer.org",
    
        /**
         * बैकएंड API सर्वर का URL।
         * डिफ़ॉल्ट: "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,
    
        /**
         * रिकॉर्ड करने के लिए सत्रों (sessions) का अंश, 0 (कोई नहीं) से 1 (सभी) तक।
         * डिफ़ॉल्ट: 1
         */
        sampleRate: 1,
      },
    
      /**
       * AI का उपयोग करके अनुवाद और जनरेशन के लिए सेटिंग्स।
       */
      ai: {
        /**
         * उपयोग किया गया 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,
    
        /**
         * अनुवाद उत्पन्न करते समय AI का मार्गदर्शन करने के लिए वैश्विक संदर्भ।
         */
        applicationContext: "यह यात्रा बुकिंग के लिए एक एप्लिकेशन है।",
    
        /**
         * AI API के लिए बेस URL।
         */
        baseURL: "http://localhost:3000",
    
        /**
         * डेटा सीरियलाइज़ेशन
         *
         * विकल्प:
         * - "json": डिफ़ॉल्ट, विश्वसनीय; अधिक टोकन का उपयोग करता है।
         * - "toon": कम टोकन, JSON की तुलना में कम स्थिर।
         *
         * डिफ़ॉल्ट: "json"
         */
        dataSerialization: "json",
      },
    
      /**
       * बिल्ड और ऑप्टिमाइज़ेशन सेटिंग्स।
       */
      build: {
        /**
         * बिल्ड निष्पादन मोड।
         * - "auto": एप्लिकेशन बिल्ड के दौरान स्वचालित बिल्ड।
         * - "manual": स्पष्ट बिल्ड कमांड की आवश्यकता होती है।
         * डिफ़ॉल्ट: "auto"
         */
        mode: "auto",
    
        /**
         * अप्रयुक्त डिक्शनरी को हटाकर परिणामी बंडल को ऑप्टिमाइज़ करना है या नहीं।
         * डिफ़ॉल्ट: प्रोडक्शन में true
         */
        optimize: true,
    
        /**
         * बंडल आकार कम करने के लिए डिक्शनरी को मिनिअफ़ाइ (minify) करना है या नहीं।
         * डिफ़ॉल्ट: true
         */
        minify: true,
    
        /**
         * डिक्शनरी में अप्रयुक्त कीज़ (unused keys) को हटाना है या नहीं।
         * डिफ़ॉल्ट: true
         */
        prune: 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",
    
        /**
         * बिना मर्ज किए गए डिक्शनरी संग्रहीत करने के लिए निर्देशिका।
         */
        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(),
        }),
      },
    
      /**
       * शब्दकोश कॉन्फ़िगरेशन।
       */
      dictionary: {
        /**
         * यह नियंत्रित करता है कि शब्दकोश कैसे आयात किए जाते हैं।
         * - "static": निर्माण के समय स्थिर रूप से आयातित।
         * - "dynamic": सस्पेंस का उपयोग करके गतिशील रूप से आयातित।
         * - "fetch": लाइव सिंक एपीआई के माध्यम से गतिशील रूप से प्राप्त किया गया।
         */
        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 फ़ील्ड में परिभाषित हैं।
    strictModeTypeScript का उपयोग करके अंतर्राष्ट्रीयकृत कंटेंट का एक मजबूत कार्यान्वयन सुनिश्चित करता है।string'inclusive'• यदि "strict": t फ़ंक्शन को प्रत्येक घोषित लोकेल की परिभाषा की आवश्यकता होती है - यदि कोई अनुपस्थित है या घोषित नहीं है, तो त्रुटि उत्पन्न करता है।
    • यदि "inclusive": अनुपस्थित लोकेल के लिए चेतावनी देता है लेकिन मौजूदा अघोषित लोकेल के उपयोग की अनुमति देता है।
    • यदि "loose": किसी भी मौजूदा लोकेल को स्वीकार करता है।
    defaultLocaleअनुरोधित लोकेल नहीं मिलने की स्थिति में फ़ालबैक के रूप में उपयोग किया जाने वाला डिफ़ॉल्ट लोकेल।stringLocales.ENGLISH'en'लोकेल निर्धारित करने के लिए उपयोग किया जाता है जब इसे URL, कुकी या हेडर में निर्दिष्ट नहीं किया जाता है।

    एडिटर कॉन्फ़िगरेशन (Editor)

    अंतर्निहित विजुअल एडिटर के लिए सेटिंग्स को परिभाषित करता है, जिसमें सर्वर पोर्ट और इनेबल स्टेटस शामिल है।

    फ़ील्डविवरणटाइपडिफ़ॉल्टउदाहरणटिप्पणी
    applicationURLएप्लिकेशन का URL।stringundefined'http://localhost:3000'
    'https://example.com'
    process.env.INTLAYER_EDITOR_URL
    • सुरक्षा कारणों से एडिटर के ओरिजिन को प्रतिबंधित करने के लिए उपयोग किया जाता है।
    • यदि '*' पर सेट है, तो एडिटर किसी भी ओरिजिन से सुलभ है।
    portविजुअल एडिटर सर्वर द्वारा उपयोग किया जाने वाला पोर्ट।number8000
    editorURLएडिटर सर्वर का URL।string'http://localhost:8000''http://localhost:3000'
    'https://example.com'
    process.env.INTLAYER_EDITOR_URL
    • उन ओरिजिन को प्रतिबंधित करने के लिए उपयोग किया जाता है जो एप्लिकेशन के साथ संवाद कर सकते हैं।
    • यदि '*' पर सेट है, तो यह किसी भी ओरिजिन से सुलभ है।
    • यदि पोर्ट बदल दिया गया है या एडिटर किसी अन्य डोमेन पर होस्ट किया गया है, तो इसे सेट किया जाना चाहिए।
    cmsURLIntlayer CMS का URL।string'https://app.intlayer.org''https://app.intlayer.org'
    backendURLबैकएंड सर्वर का URL।stringhttps://back.intlayer.orghttp://localhost:4000
    enabledएप्लिकेशन को विजुअल एडिटर के साथ संवाद करना चाहिए या नहीं।booleanfalseprocess.env.NODE_ENV !== 'production'• यदि false, एडिटर एप्लिकेशन के साथ संवाद नहीं कर सकता।
    • कुछ परिवेशों के लिए अक्षम करना सुरक्षा बढ़ाता है।
    clientIdintlayer पैकेजों को oAuth2 के माध्यम से बैकएंड पर प्रमाणित करने की अनुमति देता है। अपना एक्सेस टोकन प्राप्त करने के लिए intlayer.org/project पर जाएँ।string |
    undefined
    undefinedइसे गुप्त रखा जाना चाहिए; पर्यावरण चरों (environment variables) का उपयोग करें।
    clientSecretintlayer पैकेजों को oAuth2 के माध्यम से बैकएंड पर प्रमाणित करने की अनुमति देता है। अपना एक्सेस टोकन प्राप्त करने के लिए intlayer.org/project पर जाएँ।string |
    undefined
    undefinedइसे गुप्त रखा जाना चाहिए; पर्यावरण चरों (environment variables) का उपयोग करें।
    dictionaryPriorityStrategyडिक्शनरी प्राथमिकता रणनीति जब स्थानीय और दूरस्थ डिक्शनरी दोनों मौजूद हों।string'local_first''distant_first''distant_first': स्थानीय डिक्शनरी पर दूरस्थ डिक्शनरी को प्राथमिकता देता है।
    'local_first': दूरस्थ डिक्शनरी पर स्थानीय डिक्शनरी को प्राथमिकता देता है।
    liveSyncएप्लिकेशन सर्वर को CMS
    विजुअल एडिटर
    बैकएंड सर्वर में परिवर्तनों का पता चलने पर तुरंत कंटेंट को पुनः लोड करना चाहिए या नहीं।
    booleantruetrue• डिक्शनरी जोड़ने/अपडेट करने पर एप्लिकेशन पेज कंटेंट को रिफ्रेश करता है।
    • लाइव सिंक कंटेंट को दूसरे सर्वर पर ले जाता है, जो प्रदर्शन को थोड़ा प्रभावित कर सकता है।
    • दोनों को एक ही मशीन पर होस्ट करने की अनुशंसा की जाती है।
    liveSyncPortलाइव सिंक सर्वर का पोर्ट।number40004000
    liveSyncURLलाइव सिंक सर्वर का URL।string'http://localhost:{liveSyncPort}''https://example.com'डिफ़ॉल्ट रूप से localhost की ओर इशारा करता है; दूरस्थ लाइव सिंक सर्वर की ओर इशारा करने के लिए बदला जा सकता है।

    एनालिटिक्स कॉन्फ़िगरेशन (Analytics)

    Intlayer एनालिटिक्स से संबंधित सेटिंग्स को परिभाषित करता है: उपयोगकर्ताओं को वास्तव में दिखाए जाने वाले कंटेंट (पेज व्यू, कंटेंट एक्सपोज़र) को एकत्र करना और कंटेंट पर A/B परीक्षण को सक्षम बनाना।

    एनालिटिक्स डिफ़ॉल्ट रूप से सक्षम है (ऑप्ट-आउट): @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सैंपलिंग प्रति सत्र निर्धारक (deterministic) है, इसलिए एक रिकॉर्ड किया गया सत्र अपने सभी इवेंट्स की रिपोर्ट करता है।

    राउटींग कॉन्फ़िगरेशन (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कुकी प्रबंधन या लोकेल स्टोरेज को प्रभावित नहीं करता है।
    enableProxyIntlayer लोकेल-रूटिंग प्रॉक्सी (मिडलवेयर) को सक्षम करता है।boolean |
    undefined
    undefined (auto)true• अनसेट (auto): dev और preview सर्वर कुकीज़/हेडर में संग्रहित लोकेल को रीडायरेक्ट स्रोत के रूप में अनदेखा करते हैं; प्रीफ़िक्स, सहेजना और Accept-Language पहचान अब भी लागू होती है। प्रोडक्शन में true जैसा व्यवहार।
    true: हर जगह पूर्ण व्यवहार।
    false: कोई लोकेल रूटिंग नहीं। Next.js में 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 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 हेडर के माध्यम से लोकेल संग्रहीत करता है या पास करता है - केवल सर्वर-साइड।

    कुकीज़ गुण (Cookies Attributes)

    कुकीज़ में स्टोरेज का उपयोग करते समय, अतिरिक्त गुण सेट किए जा सकते हैं:

    फ़ील्डविवरणटाइप
    nameकुकी का नाम। डिफ़ॉल्ट: 'INTLAYER_LOCALE'string
    domainकुकी डोमेन। डिफ़ॉल्ट: undefinedstring
    pathकुकी पाथ। डिफ़ॉल्ट: undefinedstring
    secureHTTPS की आवश्यकता। डिफ़ॉल्ट: undefinedboolean
    httpOnlyHTTP-only फ़्लैग। डिफ़ॉल्ट: undefinedboolean
    sameSiteSameSite पॉलिसी।'strict' |
    'lax' |
    'none'
    expiresएक number निर्माण से दिनों को दर्शाता है; एक Date (या ISO दिनांक स्ट्रिंग) एक पूर्ण समाप्ति है। डिफ़ॉल्ट: undefinedDate |
    number |
    string
    maxAgeनिर्माण से सेकंड में जीवनकाल। यह expires पर प्राथमिकता लेता है। डिफ़ॉल्ट: undefinednumber

    स्टोरेज गुण (Storage Attributes)

    localStorage या sessionStorage का उपयोग करते समय:

    फ़ील्डविवरणटाइप
    typeस्टोरेज का प्रकार।'localStorage' |
    'sessionStorage'
    nameस्टोरेज में की (key) का नाम। डिफ़ॉल्ट: '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/**']वर्तमान में उपयोग नहीं किया गया है; भविष्य के लिए नियोजित है।
    formatCommandIntlayer द्वारा स्थानीय रूप से कंटेंट फ़ाइलें लिखने समय उन्हें फ़ॉर्मेट करने का कमांड।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 का परीक्षण करता है)।

    System Configuration

    Intlayer के आंतरिक पथ और आउटपुट परिणामों से संबंधित सेटिंग्स। ये सेटिंग्स आम तौर पर आंतरिक हैं और उपयोगकर्ता द्वारा संशोधित करने की आवश्यकता नहीं होनी चाहिए।

    FieldDescriptionTypeDefaultExampleNote
    baseDirप्रोजेक्ट के लिए बेस डायरेक्टरी।stringprocess.cwd()'/path/to/project'सभी Intlayer-संबंधित डायरेक्टरी को resolve करने के लिए उपयोग किया जाता है।
    dictionariesDirलोकलाइजेशन डिक्शनरी को स्टोर करने के लिए डायरेक्टरी पथ।string'.intlayer/dictionary'
    moduleAugmentationDirModule augmentation के लिए डायरेक्टरी, जो बेहतर 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)

    डिक्शनरी संचालन को नियंत्रित करने वाले मापदंड, जिसमें ऑटो-फिल व्यवहार और कंटेंट जनरेशन शामिल है।

    यह dictionary configuration दो मुख्य उद्देश्यों को पूरा करता है:

    1. Default Values: content declaration files बनाते समय default values को define करें
    2. Fallback Behavior: जब specific fields define नहीं हों तो fallback values प्रदान करें, जिससे आप dictionary operation behavior को globally define कर सकें

    कंटेंट डिक्लेरेशन फ़ाइलों और कॉन्फ़िगरेशन वैल्यूज़ कैसे लागू की जाती हैं इसके बारे में अधिक जानकारी के लिए, कंटेंट फ़ाइल डॉक्यूमेंटेशन देखें।

    फ़ील्डविवरणटाइपडिफ़ॉल्टउदाहरणटिप्पणी
    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 का उपयोग करके अनुवाद उत्पन्न करने के लिए संदर्भ के रूप में भी उपयोग किया जाता है।stringundefined'User profile section'
    localeडिक्शनरी को किसी विशिष्ट लोकेल के प्रारूप में बदल देता है। प्रत्येक घोषित फ़ील्ड एक अनुवाद नोड बन जाता है। यदि अनुपस्थित है, तो डिक्शनरी को बहुभाषी माना जाता है।LocalesValuesundefined'en'यदि डिक्शनरी कई अनुवादों के बजाय एक विशिष्ट लोकेल के लिए है, तो इसका उपयोग करें।
    contentAutoTransformationकंटेंट स्ट्रिंग्स को स्वचालित रूप से टाइप किए गए नोड्स (मार्कडाउन, HTML या सम्मिलन) में रूपांतरित करता है।boolean |
    { markdown?: boolean; html?: boolean; insertion?: boolean }
    falsetrue• मार्कडाउन : ### Titlemd('### Title')
    • HTML : <div>Title</div>html('<div>Title</div>')
    • सम्मिलन : Hello {{name}}insert('Hello {{name}}')
    locationइंगित करता है कि डिक्शनरी फ़ाइलें कहाँ संग्रहीत हैं और वे CMS के साथ कैसे सिंक की जाती हैं।'local' |
    'remote' |
    'hybrid' |
    'plugin' |
    string
    'local''hybrid''local': केवल स्थानीय प्रबंधन।
    'remote': केवल दूरस्थ प्रबंधन (CMS)।
    'hybrid': स्थानीय और दूरस्थ प्रबंधन दोनों।
    'plugin' या कस्टम स्ट्रिंग: प्लगइन या कस्टम स्रोत द्वारा प्रबंधन।
    importModeडिक्शनरी कैसे आयात की जाती है, इसे नियंत्रित करता है।'static' |
    'dynamic' |
    'fetch'
    'static''dynamic''static': स्थिर आयात।
    'dynamic': Suspense के माध्यम से गतिशील आयात।
    'fetch': लाइव सिंक API के माध्यम से फ़ेच; विफल होने पर 'dynamic' पर वापस जाना।
    @intlayer/babel और @intlayer/swc प्लगइन्स की आवश्यकता होती है।
    • की (keys) को स्थिर रूप से घोषित किया जाना चाहिए।
    • यदि 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' का उपयोग करें। इंगित किया गया कि डिक्शनरी कंटेंट को लाइव सिंक API के माध्यम से गतिशील रूप से फ़ेच किया जाना चाहिए या नहीं।booleanundefinedv8.0.0 में नाम बदलकर importMode: 'fetch' कर दिया गया।
    schemaJSON स्कीमा सत्यापन के लिए Intlayer द्वारा स्वचालित रूप से जेनरेट किया गया।'https://intlayer.org/schema.json'ऑटो-जनरेशनमैन्युअल रूप से संपादित न करें।
    titleएडिटर और CMS में डिक्शनरी की पहचान करने में मदद करता है।stringundefined'User Profile'
    tagsडिक्शनरी को श्रेणीबद्ध करता है और एडिटर और AI के लिए संदर्भ या निर्देश प्रदान करता है।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 कॉन्फ़िगरेशन (AI)

    Intlayer की AI सुविधाओं को नियंत्रित करने वाली सेटिंग्स, जिनमें प्रदाता, मॉडल और API की (key) शामिल हैं।

    यह कॉन्फ़िगरेशन वैकल्पिक है यदि आप एक्सेस की (key) के साथ 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
    फ़ील्डविवरणटाइपडिफ़ॉल्टउदाहरणटिप्पणी
    providerIntlayer AI सुविधाओं के लिए उपयोग किया जाने वाला प्रदाता।'openai' |
    'anthropic' |
    'mistral' |
    'deepseek' |
    'gemini' |
    'ollama' |
    'openrouter' |
    'alibaba' |
    'fireworks' |
    'groq' |
    'huggingface' |
    'bedrock' |
    'googleaistudio' |
    'googlevertex' |
    'togetherai' |
    'lmstudio' |
    'moonshotai'
    undefined'anthropic'विभिन्न प्रदाताओं को विभिन्न API की की आवश्यकता होती है और उनकी कीमतें अलग होती हैं।
    modelAI सुविधाओं के लिए उपयोग किया जाने वाला मॉडल।stringकोई नहीं'gpt-4o-2024-11-20'विशिष्ट मॉडल प्रदाता पर निर्भर करता है।
    temperatureAI प्रतिक्रियाओं की यादृच्छिकता (randomness) को नियंत्रित करता है।numberकोई नहीं0.1उच्च तापमान = अधिक रचनात्मक और कम पूर्वानुमेय।
    apiKeyचुने गए प्रदाता के लिए आपकी API की।stringकोई नहींprocess.env.OPENAI_API_KEYइसे गुप्त रखा जाना चाहिए; पर्यावरण चरों का उपयोग करें।
    applicationContextAI को अधिक सटीक अनुवाद उत्पन्न करने में मदद करने के लिए आपके एप्लिकेशन के बारे में अतिरिक्त संदर्भ (डोमेन, लक्षित दर्शक, टोन, शब्दावली)।stringकोई नहीं'मेरा अपना एप्लिकेशन संदर्भ'नियम जोड़ने के लिए उपयोग किया जा सकता है (जैसे: "आपको URL को रूपांतरित नहीं करना चाहिए" )।
    baseURLAI API के लिए बेस URL।stringकोई नहीं'https://api.openai.com/v1'
    'http://localhost:5000'
    स्थानीय या कस्टम AI API एंडपॉइंट की ओर इशारा कर सकता है।
    dataSerializationAI सुविधाओं के लिए डेटा सीरियलाइज़ेशन प्रारूप।'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 देव मोड में भी ऑप्टिमाइज़ेशन को बाध्य करता है।
    false इसे बंद कर देता है।
    • चालू होने पर, चंकिंग ऑप्टिमाइज़ेशन के लिए डिक्शनरी कॉल को बदल देता है।
    @intlayer/babel और @intlayer/swc प्लगइन्स की आवश्यकता होती है।
    minifyइंगित करता है कि बंडल के आकार को कम करने के लिए डिक्शनरी को मिनिअफ़ाइ किया जाना चाहिए या नहीं।booleanfalse• बंडल को मिनिअफ़ाइ किया जाना चाहिए या नहीं।
    • डिफ़ॉल्ट: प्रोडक्शन में true
    optimize अक्षम होने पर यह विकल्प अनदेखा किया जाएगा।
    editor.enabled सत्य होने पर यह विकल्प अनदेखा किया जाएगा।
    pruneइंगित करता है कि डिक्शनरी में अप्रयुक्त कीज़ (unused keys) को हटाया जाना चाहिए या नहीं।booleantrue• बंडल को छोटा (pruned) किया जाना चाहिए या नहीं।
    • डिफ़ॉल्ट: प्रोडक्शन में true
    optimize अक्षम होने पर यह विकल्प अनदेखा किया जाएगा।
    checkTypesइंगित करता है कि बिल्ड को TypeScript टाइप्स की जाँच करनी चाहिए और त्रुटियों को लॉग करना चाहिए या नहीं।booleanfalseबिल्ड प्रक्रिया को धीमा कर सकता है।
    chunkGroupingक्या प्रति-लोकेल डिक्शनरी चंक्स को उस कोड-स्प्लिट सीमा के अनुसार समूहित किया जाए जो उनका उपयोग करती है।booleantrue• समूहीकरण के बिना, कई घटकों से बना पेज प्रत्येक डिक्शनरी के लिए एक अनुरोध भेजता है।
    • कई सीमाओं से पहुँची जाने वाली डिक्शनरियाँ साझा चंक में चली जाती हैं, इसलिए कोई पेज दूसरे पेज की सामग्री नहीं भेजता।
    • केवल importMode: 'dynamic' का उपयोग करने वाली डिक्शनरियों पर लागू होता है।
    • केवल क्लाइंट बिल्ड पर, और केवल बंडलिंग के समय लागू होता है (dev में नहीं)।
    dictionariesPreloadक्या डिक्शनरी को उस चंक के साथ लोड किया जाए जो उसका उपयोग करता है, बजाय उस चंक के रेंडर होने के बाद प्राप्त करने के।booleantrue• उत्पन्न एंट्री पॉइंट शीर्ष स्तर पर ब्राउज़िंग लोकेल की प्रतीक्षा करता है, इसलिए आलसी रूप से लोड होने वाला रूट तब तक लोड नहीं माना जाता जब तक उसकी सामग्री उपलब्ध न हो।
    • पठन सस्पेंड होने के बजाय समकालिक रूप से रेंडर होते हैं, इसलिए नेविगेशन में अब लोडिंग स्थिति नहीं झलकती।
    • केवल हल की गई लोकेल की प्रतीक्षा की जाती है, इसलिए पेज केवल वही भाषा डाउनलोड करता है जो वह दिखाता है।
    • केवल क्लाइंट बिल्ड में importMode: 'dynamic' का उपयोग करने वाली डिक्शनरियों पर लागू होता है।
    • टॉप-लेवल 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 बंद होता, तो अनदेखा कर दिया जाता।
    • ग्लोब पैटर्न का उपयोग करता है।

    कंपाइलर कॉन्फ़िगरेशन (Compiler)

    Intlayer कंपाइलर को नियंत्रित करने वाली सेटिंग्स, जो आपके घटकों से सीधे डिक्शनरी निकालती है।

    फ़ील्डविवरणटाइपडिफ़ॉल्टउदाहरणटिप्पणी
    enabledइंगित करता है कि डिक्शनरी निकालने के लिए कंपाइलर सक्षम होना चाहिए या नहीं।boolean |
    'build-only'
    true'build-only''build-only' तेज़ बिल्ड के लिए विकास के दौरान कंपाइलर को छोड़ देता है; केवल बिल्ड कमांड के दौरान निष्पादित होता है।
    dictionaryKeyPrefixनिकाली गई डिक्शनरी कीज़ के लिए प्रीफिक्स।string'''my-prefix-'संघर्षों से बचने के लिए जेनरेट की गई की (key) (फ़ाइल नाम के आधार पर) में जोड़ा जाता है।
    saveComponentsघटकों को उनके रूपांतरण के बाद सहेजना है या नहीं।booleanfalse• यदि true, मूल फ़ाइलों को उनके रूपांतरित संस्करणों के साथ अधिलेखित (overwrite) कर देता है।
    • कंपाइलर को एक बार चलाने के बाद हटाया जा सकता है।
    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, कंपाइलर आउटपुट से डिक्शनरी मेटाडेटा (की (key), कंटेंट रैपर) हटा देता है।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.ts, intlayer.config.js, intlayer.config.mjs, या intlayer.config.cjs के लिए कार्यशील निर्देशिका और मूल निर्देशिकाओं को स्कैन करता है। आप CLI कमांड में --config ध्वज के माध्यम से एक कस्टम पथ भी निर्दिष्ट कर सकते हैं।

    नेमस्पेस-आधारित सेटअपों की तुलना में बहुत कम, क्योंकि एक पृष्ठ कभी भी उस कैटलॉग को डाउनलोड नहीं करता है जिसे वह रेंडर नहीं करता है। सर्वर पर रेंडर किया गया मार्कअप सर्वर पर ही अपनी सामग्री को हल करता है, और बिल्ड-टाइम कंपाइलर useIntlayer कॉल को घटक द्वारा उपयोग की जाने वाली सटीक शब्दकोश प्रविष्टियों से बदल देता है, इसलिए अप्रयुक्त कुंजियों और भाषाओं को हटा दिया जाता है। गतिशील शब्दकोश शेष को प्रति लोकेल विभाजित करते हैं। पारंपरिक विकल्पों की तुलना में, Intlayer बंडल और पृष्ठ आकार को 50% तक कम करता है। बंडल अनुकूलन और बेंचमार्क देखें।

    हाँ, और इसके दो रास्ते हैं। आप i18next माइग्रेशन गाइड या next-intl माइग्रेशन गाइड के साथ सामग्री को धीरे-धीरे स्थानांतरित कर सकते हैं। या आप अपने वर्तमान API को पूरी तरह से बनाए रख सकते हैं: संगतता एडेप्टर i18next, react-i18next, next-intl, next-i18next, react-intl, use-intl, vue-i18n और Lingui के समान API प्रदान करते हैं, लेकिन Intlayer शब्दकोशों द्वारा संचालित होते हैं, जिससे केवल आयात बदलते हैं और घटक कोड समान रहता है।

    हाँ। sync JSON plugin आपकी /messages/{locale}/{namespace}.json फ़ाइलों को सत्य का स्रोत बनाए रखता है और दोनों दिशाओं में उनसे Intlayer dictionaries बनाता है। sync PO plugin gettext catalogs के लिए भी ऐसा ही करता है, और per locale files आपको locales को एक फ़ाइल में समूहीकृत करने के बजाय भाषा के अनुसार content को विभाजित करने देते हैं।

    नहीं। npx intlayer extract चलाएं और Intlayer आपकी source files को पढ़ता है, user facing strings को निकालता है और प्रत्येक के बगल में एक .content file लिखता है, इसलिए आप strings को एक catalog में एक-एक करके कॉपी करने के बजाय एक diff की समीक्षा करते हैं। extract command देखें।

    पूरी तरह से स्वचालित वर्कफ़्लो के लिए, Intlayer Compiler JSX, TSX, Vue और Svelte कोड पर निर्माण समय के दौरान भी यही करता है, प्रत्येक परिवर्तन पर शब्दकोश उत्पन्न करता है जिससे कुंजियों को मैन्युअल रूप से बनाए रखने की आवश्यकता समाप्त हो जाती है।

    पाँच उपकरण, सभी वैकल्पिक:

    • VS Code extension: useIntlayer कुंजी से उसे घोषित करने वाली सामग्री फ़ाइल पर जाएं, घटकों से सामग्री निकालें, और कमांड पैलेट या Intlayer टैब से build, fill, test, push और pull चलाएं।
    • LSP server: LSP का समर्थन करने वाले किसी भी संपादक में समान सुविधा, परिभाषा पर जाएं, अनुवादित मान का पूर्वावलोकन देखें, और कुंजी पूर्णता प्राप्त करें। i18next, react-i18next, next-intl और use-intl कॉल का भी समर्थन करता है।
    • MCP server: Cursor, VS Code, Claude Desktop, Claude Code और ChatGPT के लिए Intlayer दस्तावेज़ और CLI प्रदान करता है।
    • Agent skills: केंद्रित कौशल जैसे intlayer-config, intlayer-cli और intlayer-content
    • ESLint plugin: no-raw-text नियम हार्डकोडेड स्ट्रिंग्स को चिह्नित करता है।