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

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

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

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

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

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

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

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

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

यहां सिलसिलेवार तरीके से बताया गया है:

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

    हर सब-फ़ोल्डर में, उस कॉम्बिनेशन के लिए खास कॉन्टेंट जोड़ें, जैसे छुट्टियों की थीम वाले होम पेज या किसी खास भाषा में 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 के बराबर

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

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

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

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

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

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

  • जब Hosting "i18n content" को खोजता है करने के लिए, यह 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 "i18n content" नहीं खोजेगा वह es से मेल खाता है.

  • 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";

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

कुकी बदलने की सुविधा, लॉग में नहीं दिखती.