Internationalization with Intlayer and i18next

    i18next एक ओपन-सोर्स अंतर्राष्ट्रीयकरण (i18n) ढांचा है जिसे जावास्क्रिप्ट अनुप्रयोगों के लिए डिज़ाइन किया गया है। इसका उपयोग सॉफ्टवेयर परियोजनाओं में अनुवाद, स्थानीयकरण, और भाषा स्विचिंग प्रबंधित करने के लिए व्यापक रूप से किया जाता है। हालांकि, इसमें कुछ सीमाएं हैं जो स्केलेबिलिटी और विकास को जटिल बना सकती हैं।

    Intlayer एक अन्य अंतर्राष्ट्रीयकरण ढांचा है जो इन सीमाओं का समाधान करता है, और सामग्री घोषणा और प्रबंधन के लिए एक अधिक लचीला दृष्टिकोण प्रदान करता है। चलिए, i18next और Intlayer के बीच कुछ प्रमुख भिन्नताओं की खोज करते हैं, और दोनों को अनुकूल अंतर्राष्ट्रीयकरण के लिए कैसे कॉन्फ़िगर करें।

    Intlayer vs. i18next: Key Differences

    1. सामग्री की घोषणा

    i18next के साथ, अनुवाद शब्दकोशों को एक विशिष्ट फ़ोल्डर में घोषित किया जाना चाहिए, जो अनुप्रयोग की स्केलेबिलिटी को जटिल बना सकता है। इसके विपरीत, Intlayer को आपके घटक के साथ ही निर्देशिका में सामग्री घोषित करने की अनुमति देता है। इसके कई लाभ हैं:

    • सरल सामग्री संपादन: उपयोगकर्ताओं को संपादित करने के लिए सही शब्दकोश खोजने की आवश्यकता नहीं है, जिससे गलतियों की संभावना कम होती है।
    • स्वचालित अनुकूलन: यदि कोई घटक स्थान बदलता है या हटा दिया जाता है, तो Intlayer स्वचालित रूप से पता लगाता है और अनुकूलित करता है।

    2. कॉन्फ़िगरेशन की जटिलता

    i18next को कॉन्फ़िगर करना जटिल हो सकता है, विशेषकर जब सर्वर-साइड घटकों के साथ एकीकरण या Next.js जैसे ढाँचों के लिए मिडलवेयर कॉन्फ़िगर करना हो। Intlayer इस प्रक्रिया को आसान बनाता है, अधिक सीधे कॉन्फ़िगरेशन की पेशकश करता है।

    3. अनुवाद शब्दकोशों की स्थिरता

    भिन्न भाषाओं में अनुवादित शब्दकोशों की स्थिरता सुनिश्चित करना i18next के साथ चुनौतीपूर्ण हो सकता है। यदि इसे ठीक से प्रबंधित नहीं किया गया, तो यह अनुप्रयोग की क्रैश का कारण बन सकता है। Intlayer इसे अनुवादित सामग्री पर बाधाएं लागू करके संबोधित करता है, यह सुनिश्चित करता है कि कोई अनुवाद छूट न जाए और अनुवादित सामग्री सटीक हो।

    4. TypeScript एकीकरण

    Intlayer बेहतर TypeScript के साथ एकीकरण प्रदान करता है, जिससे आपकी कोड में सामग्री के ऑटो-सुझाव मिलते हैं, इस प्रकार विकास की कार्यक्षमता बढ़ती है।

    5. अनुप्रयोगों के बीच सामग्री साझा करना

    Intlayer विभिन्न अनुप्रयोगों और साझा लाइब्रेरीज़ के बीच सामग्री घोषणा फ़ाइलों को साझा करने की सुविधा देता है। यह सुविधा एक बड़े कोडबेस में लगातार अनुवाद बनाए रखना आसान बनाती है।

    i18next शब्दकोशों को Intlayer के साथ कैसे उत्पन्न करें

    i18next शब्दकोशों को निर्यात करने के लिए Intlayer को कॉन्फ़िगर करना

    महत्वपूर्ण नोट्स i18next शब्दकोशों का निर्यात वर्तमान में बीटा में है और अन्य ढाँचों के साथ 1: 1 संगतता सुनिश्चित नहीं करता है। मुद्दों को कम करने के लिए Intlayer पर आधारित कॉन्फ़िगरेशन पर निर्भर रहना अनुशंसित है।

    i18next शब्दकोशों को निर्यात करने के लिए, आपको Intlayer को उपयुक्त रूप से कॉन्फ़िगर करना होगा। नीचे एक उदाहरण दिया गया है कि कैसे Intlayer को दोनों Intlayer और i18next शब्दकोशों को निर्यात करने के लिए सेट करें।

    typescript
    // intlayer.config.ts
    
    import { Locales, type IntlayerConfig } from "intlayer";
    
    const config: IntlayerConfig = {
      content: {
        // दर्शाता है कि Intlayer दोनों Intlayer और i18next शब्दकोशों को निर्यात करेगा
        dictionaryOutput: ["intlayer", "i18next"],
        // परियोजना की जड़ से उस निर्देशिका के लिए सापेक्ष पथ जहां i18n शब्दकोश निर्यात किए जाएंगे
        i18nDictionariesDir: "./i18n/dictionaries",
      },
    };
    
    export default config;
    

    कॉन्फ़िगरेशन में 'i18next' को शामिल करके, Intlayer विशेष i18next शब्दकोश उत्पन्न करता है इसके अलावा Intlayer शब्दकोशों के। ध्यान दें कि कॉन्फ़िगरेशन से 'intlayer' को हटा देने से React-Intlayer या Next-Intlayer के साथ संगतता बाधित हो सकती है।

    अपने i18next कॉन्फ़िगरेशन में शब्दकोशों को आयात करना

    आपके i18next कॉन्फ़िगरेशन में उत्पन्न शब्दकोशों को आयात करने के लिए, आप 'i18next-resources-to-backend' का उपयोग कर सकते हैं। यहाँ आपके i18next शब्दकोशों को आयात करने का एक उदाहरण है:

    typescript
    // i18n/client.ts
    
    import i18next from "i18next";
    import resourcesToBackend from "i18next-resources-to-backend";
    
    i18next
      // आपका i18next कॉन्फ़िगरेशन
      .use(
        resourcesToBackend(
          (language: string, namespace: string) =>
            import(`../i18n-dictionaries/${language}/${namespace}.json`)
        )
      );
    

    अगर आपके पास इस दस्तावेज़ को सुधारने के लिए कोई विचार है, तो कृपया GitHub पर एक पुल अनुरोध सबमिट करके योगदान देने में संकोच न करें।

    दस्तावेज़ के लिए GitHub लिंक