Creation:2026-05-10Last update:2026-05-10

    Sync PO (i18n ब्रिज) - ICU / i18next समर्थन के साथ Sync PO

    अपने मौजूदा i18n स्टैक के ऐड-ऑन के रूप में Intlayer का उपयोग करें। यह प्लगइन आपके Gettext PO संदेशों को Intlayer शब्दकोशों के साथ सिंक में रखता है ताकि आप:

    • अपने मौजूदा PO-आधारित अनुवाद वर्कफ़्लो को बनाए रख सकें।
    • अपने ऐप को रिफैक्टर किए बिना Intlayer (CLI, CI, प्रदाता, CMS) के साथ अपने संदेशों को प्रबंधित और अनुवाद कर सकें।
    • प्रत्येक पारिस्थितिकी तंत्र को लक्षित करते हुए ट्यूटोरियल और SEO सामग्री भेज सकें, जबकि Intlayer को PO प्रबंधन परत के रूप में सुझा सकें।

    नोट्स और वर्तमान दायरा:

    • CMS के लिए बाहरीकरण अनुवादों और क्लासिक टेक्स्ट के लिए काम करता है।
    • PO प्रविष्टियों के भीतर प्रविष्टि, बहुवचन/ICU, या अन्य पुस्तकालयों की उन्नत रनटाइम सुविधाओं के लिए अभी तक कोई समर्थन नहीं है।
    • विज़ुअल एडिटर अभी तक तृतीय-पक्ष i18n आउटपुट के लिए समर्थित नहीं है।

    इस प्लगइन का उपयोग कब करें

    • आप पहले से ही अपने अनुवादों के लिए Gettext PO फ़ाइलों का उपयोग करते हैं।
    • आप अपने रेंडरिंग रनटाइम को बदले बिना AI-सहायता प्राप्त फिल, CI में टेस्ट और कंटेंट ऑप्स चाहते हैं।

    इंस्टॉलेशन

    bash
    pnpm add -D @intlayer/sync-po-plugin# याnpm i -D @intlayer/sync-po-plugin

    प्लगइन्स

    यह पैकेज दो प्लगइन्स प्रदान करता है:

    • loadPO: Intlayer शब्दकोशों में PO फ़ाइलें लोड करें।

      • इस प्लगइन का उपयोग स्रोत से PO फ़ाइलों को लोड करने के लिए किया जाता है और इसे Intlayer शब्दकोशों में लोड किया जाएगा। यह पूरे कोडबेस को स्कैन कर सकता है और विशिष्ट PO फ़ाइलों को खोज सकता है। इस प्लगइन का उपयोग किया जा सकता है:
        • यदि आप एक i18n लाइब्रेरी का उपयोग करते हैं जो आपकी PO फ़ाइलों को लोड करने के लिए एक विशिष्ट स्थान लागू करती है, लेकिन आप अपनी सामग्री घोषणा को अपने कोड बेस में जहां चाहें वहां रखना चाहते हैं।
        • इसका उपयोग तब भी किया जा सकता है जब आप रिमोट स्रोत (जैसे: CMS, एक API, आदि) से अपने संदेश प्राप्त करना चाहते हैं और अपने संदेशों को PO फ़ाइलों में संग्रहीत करना चाहते हैं।

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

    • syncPO: Intlayer शब्दकोशों के साथ PO फ़ाइलों को सिंक्रनाइज़ करें।

      • इस प्लगइन का उपयोग Intlayer शब्दकोशों के साथ PO फ़ाइलों को सिंक्रनाइज़ करने के लिए किया जाता है। यह दिए गए स्थान को स्कैन कर सकता है और विशिष्ट PO फ़ाइलों के पैटर्न से मेल खाने वाले PO को लोड कर सकता है। यदि आप दूसरी i18n लाइब्रेरी का उपयोग करते हुए Intlayer के लाभ प्राप्त करना चाहते हैं तो यह प्लगइन उपयोगी है।

    दोनों प्लगइन्स का उपयोग करना

    intlayer.config.ts
    import { Locales, type IntlayerConfig } from "intlayer";import { loadPO, syncPO } from "@intlayer/sync-po-plugin";const config: IntlayerConfig = {  internationalization: {    locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],    defaultLocale: Locales.ENGLISH,  },  // अपनी वर्तमान PO फ़ाइलों को Intlayer शब्दकोशों के साथ सिंक में रखें  plugins: [    /**     * src में उन सभी PO फ़ाइलों को लोड करेगा जो {key}.i18n.po पैटर्न से मेल खाती हैं     */    loadPO({      source: ({ key }) => `./src/**/${key}.i18n.po`,      locale: Locales.ENGLISH,      priority: 1, // यह सुनिश्चित करता है कि ये PO फ़ाइलें `./locales/en/${key}.po` की फ़ाइलों पर प्राथमिकता लें    }),    /**     * लोड करेगा, और आउटपुट और अनुवादों को वापस locales निर्देशिका में PO फ़ाइलों में लिखेगा     */    syncPO({      source: ({ key, locale }) => `./locales/${locale}/${key}.po`,      priority: 0,    }),  ],};export default config;

    syncPO प्लगइन

    त्वरित शुरुआत

    प्लगइन को अपने intlayer.config.ts में जोड़ें और इसे अपनी मौजूदा PO संरचना पर इंगित करें।

    intlayer.config.ts
    import { Locales, type IntlayerConfig } from "intlayer";import { syncPO } from "@intlayer/sync-po-plugin";const config: IntlayerConfig = {  internationalization: {    locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],    defaultLocale: Locales.ENGLISH,  },  // अपनी वर्तमान PO फ़ाइलों को Intlayer शब्दकोशों के साथ सिंक में रखें  plugins: [    syncPO({      // प्रति-लोकेल, प्रति-नेमस्पेस लेआउट      source: ({ key, locale }) => `./locales/${locale}/${key}.po`,    }),  ],};export default config;

    वैकल्पिक: प्रति लोकेल एकल फ़ाइल:

    intlayer.config.ts
    import { Locales, type IntlayerConfig } from "intlayer";import { syncPO } from "@intlayer/sync-po-plugin";const config: IntlayerConfig = {  internationalization: {    locales: [Locales.ENGLISH, Locales.FRENCH],    defaultLocale: Locales.ENGLISH,  },  plugins: [    syncPO({      source: ({ locale }) => `./locales/${locale}.po`,    }),  ],};export default config;

    यह कैसे काम करता है

    • पढ़ें: प्लगइन आपके source बिल्डर से PO फ़ाइलों की खोज करता है और उन्हें Intlayer शब्दकोशों के रूप में लोड करता है।
    • लिखें: बिल्ड और फिल के बाद, यह स्थानीयकृत PO को वापस उन्हीं पथों पर लिखता है (उचित Gettext हेडर के साथ)।
    • ऑटो-फिल: प्लगइन प्रत्येक शब्दकोश के लिए एक autoFill पथ घोषित करता है। intlayer fill चलाने से डिफ़ॉल्ट रूप से आपकी PO फ़ाइलों में केवल गायब अनुवाद अपडेट होते हैं।

    API:

    ts
    syncPO({  source: ({ key, locale }) => string, // आवश्यक  location?: string, // वैकल्पिक लेबल, डिफ़ॉल्ट: "sync-po::path/to/source"  priority?: number, // संघर्ष समाधान के लिए वैकल्पिक प्राथमिकता, डिफ़ॉल्ट: 0});

    एकाधिक PO स्रोत और प्राथमिकता

    आप विभिन्न PO स्रोतों को सिंक्रनाइज़ करने के लिए एकाधिक syncPO प्लगइन्स जोड़ सकते हैं। यह तब उपयोगी होता है जब आपके प्रोजेक्ट में कई अनुवाद स्रोत या अलग-अलग PO संरचनाएं हों।

    प्राथमिकता प्रणाली

    जब कई प्लगइन्स एक ही शब्दकोश कुंजी को लक्षित करते हैं, तो priority पैरामीटर यह निर्धारित करता है कि कौन सा प्लगइन प्राथमिकता लेता है:

    • उच्च प्राथमिकता संख्याएँ कम प्राथमिकता वाली संख्याओं पर जीतती हैं
    • .content फ़ाइलों की डिफ़ॉल्ट प्राथमिकता 0 है
    • प्लगइन्स की डिफ़ॉल्ट प्राथमिकता 0 है
    • समान प्राथमिकता वाले प्लगइन्स को कॉन्फ़िगरेशन में दिखाई देने वाले क्रम में संसाधित किया जाता है
    intlayer.config.ts
    import { Locales, type IntlayerConfig } from "intlayer";import { syncPO } from "@intlayer/sync-po-plugin";const config: IntlayerConfig = {  internationalization: {    locales: [Locales.ENGLISH, Locales.FRENCH],    defaultLocale: Locales.ENGLISH,  },  plugins: [    // प्राथमिक PO स्रोत (उच्चतम प्राथमिकता)    syncPO({      source: ({ key, locale }) => `./locales/${locale}/${key}.po`,      location: "main-translations",      priority: 10,    }),    // फॉलबैक PO स्रोत (कम प्राथमिकता)    syncPO({      source: ({ locale }) => `./fallback-locales/${locale}.po`,      location: "fallback-translations",      priority: 5,    }),    // लीगेसी PO स्रोत (सबसे कम प्राथमिकता)    syncPO({      source: ({ locale }) => `/my/other/app/legacy/${locale}/messages.po`,      location: "legacy-translations",      priority: 1,    }),  ],};export default config;

    Load PO प्लगइन

    त्वरित शुरुआत

    मौजूदा PO फ़ाइलों को Intlayer शब्दकोशों के रूप में प्राप्त करने के लिए प्लगइन को अपने intlayer.config.ts में जोड़ें। यह प्लगइन केवल पढ़ने के लिए है (डिस्क पर कोई लेखन नहीं):

    intlayer.config.ts
    import { Locales, type IntlayerConfig } from "intlayer";import { loadPO } from "@intlayer/sync-po-plugin";const config: IntlayerConfig = {  internationalization: {    locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],    defaultLocale: Locales.ENGLISH,  },  plugins: [    // अपने स्रोत ट्री में कहीं भी स्थित PO संदेशों को प्राप्त करें    loadPO({      source: ({ key }) => `./src/**/${key}.i18n.po`,      // प्रति प्लगइन इंस्टेंस एक एकल लोकेल लोड करें (कॉन्फ़िगरेशन defaultLocale के लिए डिफ़ॉल्ट)      locale: Locales.ENGLISH,      priority: 0,    }),  ],};export default config;

    वैकल्पिक: प्रति-लोकेल लेआउट, अभी भी केवल-पढ़ने के लिए (केवल चयनित लोकेल लोड किया गया है):

    intlayer.config.ts
    import { Locales, type IntlayerConfig } from "intlayer";import { loadPO } from "@intlayer/sync-po-plugin";const config: IntlayerConfig = {  internationalization: {    locales: [Locales.ENGLISH, Locales.FRENCH],    defaultLocale: Locales.ENGLISH,  },  plugins: [    loadPO({      // इस पैटर्न से केवल Locales.FRENCH के लिए फ़ाइलें प्राप्त की जाएंगी      source: ({ key, locale }) => `./locales/${locale}/${key}.po`,      locale: Locales.FRENCH,    }),  ],};export default config;

    यह कैसे काम करता है

    • खोज: आपके source बिल्डर से एक ग्लब बनाता है और मिलान करने वाली PO फ़ाइलें एकत्र करता है।
    • प्राप्ति: प्रत्येक PO फ़ाइल को प्रदान किए गए locale के साथ Intlayer शब्दकोश के रूप में लोड करता है।
    • केवल-पढ़ने के लिए: आउटपुट फ़ाइलों को लिखता या प्रारूपित नहीं करता है; यदि आपको राउंड-ट्रिप सिंक की आवश्यकता है तो syncPO का उपयोग करें।
    • ऑटो-फिल तैयार: एक fill पथ परिभाषित करता है ताकि intlayer content fill गायब कुंजियों को पॉप्युलेट कर सके।

    API

    ts
    loadPO({  // आपके PO के पथ बनाएं। `locale` वैकल्पिक है यदि आपकी संरचना में कोई लोकेल सेगमेंट नहीं है  source: ({ key, locale }) => string,  // इस प्लगइन इंस्टेंस द्वारा लोड किए गए शब्दकोशों के लिए लक्षित लोकेल  // कॉन्फ़िगरेशन configuration.internationalization.defaultLocale के लिए डिफ़ॉल्ट  locale?: Locale,  // स्रोत की पहचान करने के लिए वैकल्पिक लेबल  location?: string, // डिफ़ॉल्ट: "plugin"  // अन्य स्रोतों के खिलाफ संघर्ष समाधान के लिए उपयोग की जाने वाली प्राथमिकता  priority?: number, // डिफ़ॉल्ट: 0});

    व्यवहार और परंपराएं

    • यदि आपके source मास्क में लोकेल प्लेसहोल्डर शामिल है, तो केवल चयनित locale की फ़ाइलें प्राप्त की जाती हैं।
    • यदि आपके मास्क में कोई {key} सेगमेंट नहीं है, तो डिक्शनरी कुंजी "index" है।
    • कुंजियाँ आपके source बिल्डर में {key} प्लेसहोल्डर को प्रतिस्थापित करके फ़ाइल पथों से ली गई हैं।
    • प्लगइन केवल खोजी गई फ़ाइलों का उपयोग करता है और गायब लोकेल या कुंजियों का निर्माण नहीं करता है।
    • fill पथ आपके source से अनुमानित है और जब आप ऑप्ट-इन करते हैं तो CLI के माध्यम से गायब मानों को अपडेट करने के लिए उपयोग किया जाता है।

    संघर्ष समाधान

    जब एक ही अनुवाद कुंजी कई PO स्रोतों में मौजूद होती है:

    1. उच्चतम प्राथमिकता वाला प्लगइन अंतिम मान निर्धारित करता है
    2. गायब कुंजियों के लिए निम्न प्राथमिकता स्रोतों का उपयोग फॉलबैक के रूप में किया जाता है
    3. यह आपको नई संरचनाओं में धीरे-धीरे माइग्रेट करते हुए लीगेसी अनुवादों को बनाए रखने की अनुमति देता है

    CLI

    सिंक्रनाइज़ की गई PO फ़ाइलों को अन्य .content फ़ाइलों की तरह माना जाएगा। इसका मतलब है, सिंक्रनाइज़ की गई PO फ़ाइलों के लिए सभी intlayer कमांड उपलब्ध होंगे। इसमें शामिल हैं:

    • गायब अनुवाद हैं या नहीं, यह परीक्षण करने के लिए intlayer content test
    • सिंक्रनाइज़ की गई PO फ़ाइलों को सूचीबद्ध करने के लिए intlayer content list
    • गायब अनुवादों को भरने के लिए intlayer content fill
    • सिंक्रनाइज़ की गई PO फ़ाइलों को पुश करने के लिए intlayer content push
    • सिंक्रनाइज़ की गई PO फ़ाइलों को पुल करने के लिए intlayer content pull

    अधिक जानकारी के लिए Intlayer CLI देखें।

    सीमाएँ (वर्तमान)

    • तृतीय-पक्ष पुस्तकालयों को लक्षित करते समय कोई प्रविष्टि या बहुवचन/ICU समर्थन नहीं।
    • विज़ुअल एडिटर अभी तक गैर-Intlayer रनटाइम के लिए उपलब्ध नहीं है।
    • केवल PO सिंक्रनाइज़ेशन; गैर-PO कैटलॉग प्रारूप समर्थित नहीं हैं।

    यह क्यों मायने रखता है

    • हम स्थापित i18n समाधानों की सिफारिश कर सकते हैं और Intlayer को ऐड-ऑन के रूप में स्थान दे सकते हैं।
    • हम उनके SEO/कीवर्ड्स का लाभ उठाते हैं ट्यूटोरियल्स के साथ जो PO को प्रबंधित करने के लिए Intlayer का सुझाव देते हुए समाप्त होते हैं।
    • लक्षित दर्शकों को "नए प्रोजेक्ट" से "i18n का उपयोग करने वाली किसी भी टीम" तक विस्तारित करता है।