Catch up on highlights from Firebase at Google I/O 2023. Learn more

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

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

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

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

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

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

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

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

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

यहाँ विस्तृत कदम हैं:

  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 (केस-संवेदी) के मान का उपयोग कर सकते हैं।

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

भाषा कोड उपयोगकर्ता के Accept-Language अनुरोध शीर्षलेख से प्राप्त किए जाते हैं (आमतौर पर उनके वेब ब्राउज़र द्वारा स्वचालित रूप से सेट किए जाते हैं )। वे आईएसओ 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 पृष्ठ (Firebase द्वारा प्रदान किया गया)

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

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

  • एक "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_ALL/ सामग्री को fr/ सामग्री से पहले पेश करेगी।

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

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

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

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

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

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

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

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