Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

अंतर्राष्ट्रीयकरण कॉन्फ़िगर करें (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 अनुरोध शीर्षलेख से प्राप्त किए जाते हैं (आमतौर पर उनके वेब ब्राउज़र द्वारा स्वचालित रूप से सेट किया जाता है )। वे आईएसओ 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_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";

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

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