इंटरनैशनलाइजेशन (i18n) रीराइट को कॉन्फ़िगर करें

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

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

  • फ़्रेंच भाषा में पसंद करने वाले उपयोगकर्ताओं को स्टैंडर्ड फ़्रेंच कॉन्टेंट दिखाएं. हालांकि, फ़्रेंच भाषा बोलने वाले कनेडियन उपयोगकर्ताओं को फ़्रेंच भाषा में कॉन्टेंट दिखाने के बजाय, वे कैनेडियन फ़्रेंच कॉन्टेंट पेश करते हैं.
    उदाहरण: स्टैंडर्ड फ़्रेंच भाषा वाले वाक्यांशों वाला होम पेज बनाम कनाडियन फ़्रेंच भाषा वाले वाक्यांशों वाला होम पेज

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

  • कनाडा में रहने वाले उन लोगों को फ़्रेंच कॉन्टेंट दिखाना जो फ़्रेंच भाषा पसंद करते हैं.
    उदाहरण: कनाडा के फ़्रेंच भाषा वाले वाक्यांश और कनाडा के हिसाब से बनाई गई सुविधा (जैसे, छुट्टियों की थीम) वाला होम पेज

Firebase Hosting, उपयोगकर्ता के आईपी पते और भाषा की सेटिंग के आधार पर, उपयोगकर्ता के देश का पता लगाता है. यह हेडर, Accept-Language अनुरोध हेडर है. आम तौर पर, यह आपके वेब ब्राउज़र से अपने-आप सेट हो जाता है.

i18n रीराइट सेट अप करना

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

यहां इस बारे में ज़्यादा जानकारी दी गई है:

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

    हर सब-फ़ोल्डर में, उस कॉम्बिनेशन के हिसाब से कॉन्टेंट जोड़ें. जैसे, छुट्टियों के थीम वाले होम पेज या भाषा के हिसाब से 404 पेज.

    यहां localized-files नाम की "i18n कॉन्टेंट" डायरेक्ट्री का उदाहरण दिया गया है:

    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 के बराबर होता है

    इन कोड के बारे में ज़्यादा जानकारी के लिए, यहां दिया गया देश और भाषा के कोड सबसेक्शन देखें. ALL की वैल्यू का इस्तेमाल करके, किसी देश (जैसे कि es_ALL/) या किसी भाषा (जैसे कि ALL_ca/) के बारे में बताया जा सकता है. वैल्यू केस-सेंसिटिव होती है.

    किसी सबफ़ोल्डर में मौजूद फ़ाइलों के लिए ज़रूरी नहीं है कि वे 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. अपनी Hosting साइट पर "i18n कॉन्टेंट" और कॉन्फ़िगरेशन को डिप्लॉय करें.

कुकी बदलने की सुविधा का इस्तेमाल करके, अपने सेटअप की जांच की जा सकती है.

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

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

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

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

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

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

    अगर आपको किसी खास इलाके या देश के हिसाब से कॉन्टेंट दिखाना है, तो ऐसे सब-फ़ोल्डर बनाए जा सकते हैं जिनमें उस भाषा और देश के हिसाब से कॉन्टेंट हो जिसे आपको दिखाना है.

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

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

  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 (कनाडा)

एग्ज़ैक्ट मैच की प्राथमिकता के क्रम और भाषा की प्राथमिकताओं के लिए क्वालिटी वैल्यू के हिसाब से, Hosting अनुरोध किए गए पेज के लिए डायरेक्ट्री को इस क्रम में खोजेगा.

  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/ सब-फ़ोल्डर नहीं होते. इसलिए, Hosting प्राथमिकता सूची में नीचे की ओर तब तक स्किप करता रहेगा, जब तक उसे अनुरोध की भाषा-देश के कॉम्बिनेशन से मैच होने वाला सब-फ़ोल्डर नहीं मिल जाता.

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

  • fr/ और fr_ALL/ नाम के सब-फ़ोल्डर, उपयोगकर्ता के देश और भाषा की प्राथमिकताओं के हिसाब से एक जैसे होते हैं. हालांकि, अगर दोनों सब-फ़ोल्डर मौजूद हैं, तो Hosting, fr/ कॉन्टेंट से पहले fr_ALL/ कॉन्टेंट दिखाएगा.

देश और भाषा के हेडर बदलने के लिए, कुकी का इस्तेमाल करके यह तय किया जा सकता है कि कौनसा कॉन्टेंट दिखाया जाए.

कुकी बदलने की सुविधा का इस्तेमाल करने के कुछ तरीके यहां दिए गए हैं:

  • किसी सुविधा को अलग-अलग भाषा/देश के कॉम्बिनेशन के साथ टेस्ट करके देखें कि कौनसा कॉन्टेंट दिखाया जाता है.

  • अपने उपयोगकर्ताओं को, दिखने वाले कॉन्टेंट को बदलने की सुविधा दें. उदाहरण के लिए, लैंग्वेज पिकर का इस्तेमाल किया जा सकता है. इसके बाद, उपयोगकर्ता की firebase-language-override कुकी को ज़रूरत के हिसाब से सेट किया जा सकता है.

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

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

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

कुकी ओवरराइड, लॉग में नहीं दिखते.