अंतर्राष्ट्रीयकरण (i18n) पुनर्लेखन कॉन्फ़िगर करें

उपयोगकर्ता के देश या पसंदीदा भाषा के आधार पर विभिन्न सामग्री परोसने के लिए अंतर्राष्ट्रीयकरण पुनर्लेखन ("i18n पुनर्लेखन") का उपयोग करें। यहां कुछ उदाहरण कॉन्फ़िगरेशन दिए गए हैं जिन्हें आप सेट अप कर सकते हैं:

  • उन सभी उपयोगकर्ताओं को समान फ़्रेंच सामग्री परोसें जो फ़्रेंच पसंद करते हैं (देश की परवाह किए बिना)।
    उदाहरण: फ़्रेंच पाठ वाला एक मुखपृष्ठ

  • उन उपयोगकर्ताओं को मानक फ़्रेंच सामग्री परोसें जो फ़्रेंच पसंद करते हैं, लेकिन उन कनाडाई उपयोगकर्ताओं को जो फ़्रेंच पसंद करते हैं, इसके बजाय कनाडाई फ़्रेंच सामग्री परोसें।
    उदाहरण: मानक फ़्रेंच फ़्रेज़िंग वाला मुखपृष्ठ बनाम कनाडाई फ़्रेंच फ़्रेज़िंग वाला मुखपृष्ठ

  • सभी कनाडाई उपयोगकर्ताओं को समान सामग्री परोसें (उनकी भाषा प्राथमिकता की परवाह किए बिना)।
    उदाहरण: आपकी साइट की "डिफ़ॉल्ट" भाषा वाला एक मुखपृष्ठ लेकिन कनाडा-विशिष्ट सुविधा के साथ (जैसे छुट्टियों की थीम)

  • उन कनाडाई उपयोगकर्ताओं को कनाडाई फ़्रेंच सामग्री परोसें जो फ़्रेंच पसंद करते हैं।
    उदाहरण: कैनेडियन फ़्रेंच वाक्यांश और कनाडा-विशिष्ट सुविधा वाला एक मुखपृष्ठ (छुट्टियों की थीम की तरह)

फायरबेस होस्टिंग उपयोगकर्ता के देश को उनके आईपी पते से और उपयोगकर्ता की भाषा प्राथमिकताओं को Accept-Language अनुरोध हेडर (आमतौर पर उनके वेब ब्राउज़र द्वारा स्वचालित रूप से सेट ) से निर्धारित करता है।

i18n पुनर्लेखन सेट करें

अपनी होस्टिंग साइट के लिए i18n रीराइट सेट अप करने के लिए, आपको अपनी सभी स्थानीयकृत सामग्री के लिए एक "i18n सामग्री" निर्देशिका बनानी होगी, फिर अपनी नई "i18n सामग्री" निर्देशिका को इंगित करने के लिए अपनी firebase.json फ़ाइल में i18n विशेषता जोड़ें।

यहां विस्तृत चरण दिए गए हैं:

  1. अपनी स्थानीय ऐप निर्देशिका के public फ़ोल्डर में, अपनी "i18n सामग्री" के लिए एक अलग निर्देशिका बनाएं, फिर अपनी साइट द्वारा समर्थित प्रत्येक भाषा और देश संयोजन के लिए सबफ़ोल्डर बनाएं।

    प्रत्येक सबफ़ोल्डर में, उस संयोजन के लिए विशिष्ट सामग्री जोड़ें, जैसे अवकाश-थीम वाले मुखपृष्ठ या भाषा-विशिष्ट 404 पृष्ठ।

    यहां "i18n सामग्री" निर्देशिका का एक उदाहरण दिया गया है जिसे localized-files कहा जाता है:

    public/
        index.html  // your site's default homepage
        404.html  // your site's custom 404 page
    
        localized-files/
            ALL_ca/
                index.html
            es_ALL/
                index.html
                404.html
            fr/
                index.html
                404.html
            fr_ca/
                index.html
    

    localized-files/ निर्देशिका में आपकी साइट द्वारा समर्थित प्रत्येक भाषा और देश संयोजन के लिए अलग-अलग सबफ़ोल्डर होते हैं। प्रत्येक सबफ़ोल्डर के नामकरण पैटर्न को इनमें से किसी एक प्रारूप का पालन करना होगा:

    • languageCode_countryCode : इसमें उन उपयोगकर्ताओं के लिए विशिष्ट सामग्री शामिल है जिनके पास वह भाषा प्राथमिकता और वह देश कोड है

    • languageCode : इसमें उन उपयोगकर्ताओं के लिए विशिष्ट सामग्री शामिल है जिनकी भाषा प्राथमिकता है, लेकिन सामग्री देश-विशिष्ट नहीं है; मूलतः languageCode_ALL के समतुल्य

    इन कोडों के बारे में अधिक जानकारी के लिए नीचे उपधारा देश और भाषा कोड देखें। आप किसी भी देश (जैसे es_ALL/ ) या किसी भाषा (जैसे ALL_ca/ ) को इंगित करने के लिए ALL (केस-सेंसिटिव) के मान का उपयोग कर सकते हैं।

    सबफ़ोल्डर की फ़ाइलों को public निर्देशिका या अन्य सबफ़ोल्डर्स में अनुरूप फ़ाइलों की आवश्यकता नहीं होती है। आप ऐसी सामग्री बना सकते हैं जो पूरी तरह से किसी भाषा और/या देश के लिए विशिष्ट हो।

  2. अपनी firebase.json फ़ाइल में i18n विशेषता जोड़ें और वह निर्देशिका निर्दिष्ट करें जिसमें आपकी "i18n सामग्री" शामिल है। हमारा उदाहरण जारी रखते हुए:

    // firebase.json
    
    "hosting": {
    
      "public": "public",
    
      "ignore": [
        "firebase.json",
        "**/.*",
        "**/node_modules/**"
      ],
    
      "i18n": {
        "root": "/localized-files"  // directory that contains your "i18n content"
      }
    
      ...
    }
    

    root के लिए निर्दिष्ट निर्देशिका उस निर्देशिका का नाम होना चाहिए जिसमें आपके सभी "i18n सामग्री" सबफ़ोल्डर शामिल हों। यदि आपने अपने सभी "i18n कंटेंट" सबफ़ोल्डर्स को अपनी public निर्देशिका के रूट पर रखा है, तो root के मान के लिए / उपयोग करें। root मान में अग्रणी और अनुगामी स्लैश वैकल्पिक हैं।

  3. अपनी "i18n सामग्री" और कॉन्फ़िगरेशन को अपनी होस्टिंग साइट पर तैनात करें।

आप कुकी ओवरराइड का उपयोग करके अपने सेटअप का परीक्षण कर सकते हैं।

देश और भाषा कोड

"i18n सामग्री" सबफ़ोल्डर्स का नामकरण करते समय, आपको देश और भाषा कोड दोनों के लिए लोअरकेस का उपयोग करना होगा। आप किसी भी देश (जैसे es_ALL/ ) या किसी भाषा (जैसे ALL_ca/ ) को इंगित करने के लिए ALL (केस-सेंसिटिव) के मान का उपयोग कर सकते हैं।

होस्टिंग उपयोगकर्ता के आईपी पते से देश कोड प्राप्त करता है। देश कोड दो अक्षर वाले आईएसओ 3166-1 अल्फा-2 कोड हैं।

भाषा कोड उपयोगकर्ता के Accept-Language अनुरोध हेडर (आमतौर पर उनके वेब ब्राउज़र द्वारा स्वचालित रूप से सेट ) से प्राप्त किए जाते हैं। वे ISO 639-1 कोड हैं। भाषा कोड का उपयोग करते समय निम्नलिखित को ध्यान में रखें:

  • जब होस्टिंग यह खोजती है कि कौन सी "i18n सामग्री" परोसी जाए, तो यह Accept-Language हेडर में गुणवत्ता मूल्यों के आधार पर भाषाओं को ऑर्डर करती है।

  • होस्टिंग Accept-Language हेडर में किसी भी क्षेत्रीय और देश उपटैग को हटा देता है, इसलिए "i18n सामग्री" सबफ़ोल्डर नाम में भाषा कोड में ये उपटैग नहीं हो सकते हैं। उदाहरण के लिए, आप सबफ़ोल्डर नाम में भाषा कोड के रूप में es-419 या es-US का उपयोग नहीं कर सकते, लेकिन आप es उपयोग कर सकते हैं।

    यदि आप विशिष्ट क्षेत्रीय या देश की सामग्री परोसना चाहते हैं, तो आप सबफ़ोल्डर बना सकते हैं जिसमें वह विशिष्ट भाषा-देश सामग्री शामिल है जिसका आप समर्थन करना चाहते हैं।

"i18n सामग्री" के लिए प्राथमिकता क्रम

यदि आप i18n पुनर्लेखन सेट करते हैं, तो होस्टिंग निम्नलिखित प्राथमिकता क्रम के आधार पर सामग्री प्रदान करता है:

  1. आरक्षित नामस्थान जो /__/* पथ खंड से शुरू होते हैं

  2. कॉन्फ़िगर किया गया रीडायरेक्ट

  3. सटीक-मिलान स्थैतिक सामग्री

    1. भाषा कोड + देश कोड (उदाहरण के लिए, fr_ca/ से सामग्री)
      आदेश अनुरोध के Accept-Language हेडर में प्रत्येक भाषा के लिए गुणवत्ता मूल्यों का पालन करता है।

    2. केवल देश कोड (उदाहरण के लिए, ALL_ca/ से सामग्री)

    3. केवल भाषा कोड (उदाहरण के लिए, fr/ या es_ALL/ से सामग्री)
      आदेश अनुरोध के Accept-Language हेडर में प्रत्येक भाषा के लिए गुणवत्ता मूल्यों का पालन करता है।

    4. "डिफ़ॉल्ट" सटीक-मिलान स्थैतिक सामग्री
      यह वह सामग्री है जो "i18n सामग्री" निर्देशिका के बाहर है, जैसे public निर्देशिका के मूल में।

  4. पुनः कॉन्फ़िगर किया गया

  5. 404 हैंडलिंग

    1. i18n 404 पृष्ठ
      यह सटीक-मिलान स्थिर सामग्री के लिए ऊपर सूचीबद्ध समान प्राथमिकता क्रम का पालन करता है।

    2. कस्टम 404 पेज

    3. डिफ़ॉल्ट 404 पृष्ठ (फ़ायरबेस द्वारा प्रदान किया गया)

प्राथमिकता क्रम का उदाहरण

आइए ऊपर से अपना उदाहरण जारी रखें। हम उसी उदाहरण निर्देशिका और एक उदाहरण अनुरोध का उपयोग करेंगे।

  • "i18n सामग्री" निर्देशिका के साथ स्थानीय परियोजना निर्देशिका का उदाहरण (जिसे localized-files कहा जाता है)

    public/
        index.html  // your site's default homepage
        404.html  // your site's custom 404 page
    
        localized-files/
            ALL_ca/
                index.html
            es_ALL/
                index.html
                404.html
            fr/
                index.html
                404.html
            fr_ca/
                index.html
    
  • उदाहरण अनुरोध जानकारी

    • भाषा कोड: fr , en (फ़्रेंच, फिर अंग्रेज़ी)
      भाषा कोड को Accept-Language हेडर में गुणवत्ता मूल्यों के आधार पर क्रमबद्ध किया जाता है।

    • देश कोड: ca (कनाडा)

सटीक-मिलान प्राथमिकता क्रम और भाषा प्राथमिकताओं के लिए गुणवत्ता मूल्यों के अनुसार, होस्टिंग निम्नलिखित क्रम में अनुरोधित पृष्ठ के लिए निर्देशिकाओं की खोज करेगा।

  1. public/localized-files/fr_ca/

  2. public/localized-files/en_ca/

  3. public/localized-files/ALL_ca/

  4. public/localized-files/fr_ALL/

  5. public/localized-files/fr/

  6. public/localized-files/en_ALL/

  7. public/localized-files/en/

  8. public/

  9. 404 हैंडलिंग

उपयोगकर्ता को कौन सा पेज परोसा जाएगा?

  • अनुरोधित पृष्ठ: index.html

  • अनुरोधित पृष्ठ: awesome-page.html

"i18n सामग्री" निर्देशिका की इस खोज-और-सेवा के बारे में निम्नलिखित पर ध्यान दें:

  • localized-files/ निर्देशिका में वास्तव में en_ca/ , en_ALL/ , या en/ सबफ़ोल्डर शामिल नहीं हैं, इसलिए होस्टिंग प्राथमिकता सूची को तब तक नीचे छोड़ देगी जब तक उसे अनुरोध के भाषा-देश संयोजन के लिए एक मिलान सबफ़ोल्डर नहीं मिल जाता।

  • भले ही localized-files/ निर्देशिका में एक es_ALL/ सबफ़ोल्डर शामिल है, ऊपर दिए गए उदाहरण अनुरोध में es या es-foo भाषा कोड शामिल नहीं है, इसलिए होस्टिंग es से मेल खाने वाली "i18n सामग्री" की खोज नहीं करेगी।

  • fr/ और fr_ALL/ कहे जाने वाले सबफ़ोल्डर उपयोगकर्ता के देश और भाषा प्राथमिकताओं के दृष्टिकोण से समतुल्य हैं। हालाँकि, यदि दोनों सबफ़ोल्डर मौजूद हैं, तो होस्टिंग fr/ सामग्री से पहले fr_ALL/ सामग्री परोसेगी।

आप देश और भाषा शीर्षलेखों को ओवरराइड करने के लिए कुकीज़ का उपयोग करके यह बदल सकते हैं कि कौन सी सामग्री परोसी जाए।

यहां कुछ तरीके दिए गए हैं जिनसे आप कुकी ओवरराइड का उपयोग कर सकते हैं:

  • यह जांचने के लिए कि कौन सी सामग्री परोसी गई है, विभिन्न भाषा/देश संयोजनों के साथ एक सुविधा का परीक्षण करें।

  • अपने उपयोगकर्ताओं को उनके द्वारा देखी जाने वाली सामग्री को बदलने में सक्षम करें। उदाहरण के लिए, आप एक भाषा पिकर लागू कर सकते हैं, फिर उपयोगकर्ता की firebase-language-override कुकी को तदनुसार सेट कर सकते हैं।

कुकी ओवरराइड को कॉन्फ़िगर करने के लिए, कुकीज़ को दोनों या इनमें से किसी एक नाम से सेट करें: firebase-country-override और firebase-language-override । उदाहरण के लिए, निम्नलिखित जावास्क्रिप्ट कोड स्निपेट देश कोड को ca और Accept-Language हेडर को fr,en ओवरराइड करता है:

document.cookie = "firebase-country-override=ca";
document.cookie = "firebase-language-override=fr,en";

भाषा कुकी ओवरराइड, उपटैग या गुणवत्ता मानों के बिना, वरीयता के क्रम में भाषा कोड की अल्पविराम से अलग की गई सूची होनी चाहिए।

कुकी ओवरराइड लॉग में प्रतिबिंबित नहीं होते हैं।