उपयोगकर्ता के देश या पसंदीदा भाषा के आधार पर अलग-अलग कॉन्टेंट दिखाने के लिए, अंतरराष्ट्रीय स्तर पर कॉन्टेंट को फिर से लिखने की सुविधा ("i18n रीराइट") का इस्तेमाल करें. यहां कुछ ऐसे कॉन्फ़िगरेशन के उदाहरण दिए गए हैं जिन्हें सेट अप किया जा सकता है:
फ़्रेंच भाषा पसंद करने वाले सभी उपयोगकर्ताओं को एक जैसा फ़्रेंच कॉन्टेंट दिखाएं. भले ही, वे किसी भी देश में हों.
उदाहरण: फ़्रेंच टेक्स्ट वाला होम पेजफ़्रेंच भाषा पसंद करने वाले उपयोगकर्ताओं को स्टैंडर्ड फ़्रेंच कॉन्टेंट दिखाएं. हालांकि, कनाडा में रहने वाले ऐसे उपयोगकर्ताओं को कैनेडियन फ़्रेंच कॉन्टेंट दिखाएं जो फ़्रेंच भाषा पसंद करते हैं.
उदाहरण: स्टैंडर्ड फ़्रेंच भाषा में लिखा गया होम पेज बनाम कनाडियन फ़्रेंच भाषा में लिखा गया होम पेजकनाडा के सभी उपयोगकर्ताओं को एक जैसा कॉन्टेंट दिखाएं. भले ही, उनकी पसंदीदा भाषा कुछ भी हो.
उदाहरण: ऐसा होम पेज जिस पर आपकी साइट की "डिफ़ॉल्ट" भाषा का इस्तेमाल किया गया हो, लेकिन उस पर कनाडा के हिसाब से बनाई गई सुविधा (जैसे, छुट्टियों की थीम) मौजूद होकनाडा में रहने वाले उन उपयोगकर्ताओं को कैनेडियन फ़्रेंच कॉन्टेंट दिखाएं जो फ़्रेंच भाषा पसंद करते हैं.
उदाहरण: कनाडा के फ़्रेंच भाषा वाले वाक्यांश और कनाडा के हिसाब से बनाई गई सुविधा (जैसे, छुट्टियों की थीम) वाला होम पेज
Firebase Hosting, उपयोगकर्ता के आईपी पते से उसके देश की जानकारी और Accept-Language
अनुरोध हेडर से उपयोगकर्ता की भाषा की प्राथमिकताओं का पता लगाता है. आम तौर पर, वेब ब्राउज़र इसे अपने-आप सेट करता है.
i18n रीराइट सेट अप करना
अपनी Hosting साइट के लिए i18n रीराइट सेट अप करने के लिए, आपको अपने सभी स्थानीय कॉन्टेंट के लिए "i18n कॉन्टेंट" डायरेक्ट्री बनानी होगी. इसके बाद, अपनी नई "i18n कॉन्टेंट" डायरेक्ट्री पर ले जाने के लिए, अपनी firebase.json
फ़ाइल में i18n
एट्रिब्यूट जोड़ें.
यहां इस बारे में ज़्यादा जानकारी दी गई है:
अपने स्थानीय ऐप्लिकेशन डायरेक्ट्री के
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
हर सब-फ़ोल्डर के कॉन्टेंट के लिए, मिलते-जुलते अनुरोध देखना
public/ // matches requests that aren't specified by your "i18n content" subfolders // example: display your homepage in the "default" language for your site with no country-specific features index.html // your site's default homepage 404.html // your site's custom 404 page localized-files/ // matches requests from Canada with any language preference // example: display your homepage in the "default" language for your site with a Canada-specific feature ALL_ca/ index.html // matches requests from any country with a language preference of `es` or `es-foo` // example: display your homepage in Spanish with no country-specific features es_ALL/ index.html 404.html // your site's custom 404 page in Spanish // matches requests from any country with a language preference of `fr` or `fr-foo` // example: display your homepage in Standard French with no country-specific features fr/ index.html 404.html // your site's custom 404 page in French // matches requests from Canada with a language preference of `fr` or `fr-foo` // example: display your homepage in Canadian French and/or with a Canada-specific feature fr_ca/ index.html
localized-files/
डायरेक्ट्री में, आपकी साइट पर काम करने वाली हर भाषा और देश के कॉम्बिनेशन के लिए अलग-अलग सबफ़ोल्डर होते हैं. हर सब-फ़ोल्डर के नाम का पैटर्न, इनमें से किसी एक फ़ॉर्मैट में होना चाहिए:languageCode_countryCode
: इसमें उन उपयोगकर्ताओं के लिए कॉन्टेंट होता है जिनकी पसंदीदा भाषा और देश कोड, दोनों एक जैसे होंlanguageCode
: इसमें उन उपयोगकर्ताओं के लिए कॉन्टेंट होता है जिन्होंने उस भाषा को अपनी पसंदीदा भाषा के तौर पर चुना है. हालांकि, यह कॉन्टेंट किसी देश के हिसाब से नहीं होता. यहlanguageCode_ALL
से मिलता-जुलता है
इन कोड के बारे में ज़्यादा जानकारी के लिए, यहां दिया गया देश और भाषा के कोड सबसेक्शन देखें.
ALL
(बड़े और छोटे अक्षरों में अंतर) की वैल्यू का इस्तेमाल करके, किसी देश (जैसे,es_ALL/
) या किसी भाषा (जैसे,ALL_ca/
) के बारे में बताया जा सकता है.किसी सबफ़ोल्डर में मौजूद फ़ाइलों के लिए ज़रूरी नहीं है कि वे
public
डायरेक्ट्री या अन्य सबफ़ोल्डर में मौजूद मिलती-जुलती फ़ाइलों से मेल खाएं. आपके पास किसी भाषा और/या देश के हिसाब से कॉन्टेंट बनाने का विकल्प होता है.अपनी
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
वैल्यू में, स्लैश के पहले और बाद में स्पेस देना ज़रूरी नहीं है.अपनी 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 content" सबफ़ोल्डर के नाम में भाषा कोड में ये सबटैग नहीं हो सकते. उदाहरण के लिए, सब-फ़ोल्डर के नाम में भाषा कोड के तौर परes-419
याes-US
का इस्तेमाल नहीं किया जा सकता. हालांकि,es
का इस्तेमाल किया जा सकता है.अगर आपको किसी खास इलाके या देश के हिसाब से कॉन्टेंट दिखाना है, तो ऐसे सब-फ़ोल्डर बनाए जा सकते हैं जिनमें उस भाषा और देश के हिसाब से कॉन्टेंट हो जिसे आपको दिखाना है.
किसी खास इलाके या देश के हिसाब से कॉन्टेंट दिखाने के लिए उदाहरण देखना
स्पेन के लिए लागू स्पैनिश कॉन्टेंट दिखाएं, न कि किसी दूसरे देश के लिए (
es-419
के व्यवहार की नकल करें)इस उदाहरण में, स्पेन से
es
,es-es
याes-419
भाषा के लिए किए गए अनुरोध पर,es_es/
सब-फ़ोल्डर से कॉन्टेंट दिखाया जाएगा. इसकी वजह यह है कि Hosting उन सभी भाषा कोड कोes
के तौर पर इस्तेमाल करता है.अमेरिका, मेक्सिको या किसी भी ऐसे देश से मिले अनुरोध के लिए जिसकी भाषा की प्राथमिकता
es-419
है,es_ALL/
सब-फ़ोल्डर से कॉन्टेंट दिखाया जाएगा. इसकी वजह यह है कि Hosting,es-419
कोes
के तौर पर इस्तेमाल करता है.public/ // matches requests that aren't specified by your "i18n content" subfolders index.html // the site's default homepage localized-files/ // matches requests from Spain with a language preference of `es` or `es-foo` es_es/ index.html // matches requests from any other country with a language preference of `es` or `es-foo` es_ALL/ index.html
चुनिंदा देशों के लिए, स्पैनिश भाषा में कॉन्टेंट दिखाना
इस उदाहरण में, मेक्सिको से
es-419
भाषा के लिए किए गए अनुरोध पर,es_mx/
सब-फ़ोल्डर का कॉन्टेंट दिखाया जाएगा. ऐसा इसलिए, क्योंकि Hosting, भाषा कोडes-419
कोes
के तौर पर इस्तेमाल करता है.हालांकि, अमेरिका से
es-419
भाषा के लिए किए गए अनुरोध पर,es_ALL/
सब-फ़ोल्डर का कॉन्टेंट दिखाया जाएगा. ऐसा इसलिए, क्योंकि Hosting,es-419
कोes
के तौर पर इस्तेमाल करता है औरes_us/
सब-फ़ोल्डर मौजूद नहीं है.public/ // matches requests that aren't specified by your "i18n content" subfolders index.html // the site's default homepage localized-files/ // matches requests from Argentina with a language preference of `es` or `es-foo` (mimics behavior of `es-ar` header tag) es_ar/ index.html // matches requests from Spain with a language preference of `es` or `es-foo` (mimics behavior of `es-es` header tag) es_es/ index.html // matches requests from Mexico with a language preference of `es` or `es-foo` (mimics behavior of `es-mx` header tag) es_mx/ index.html // matches requests from any other country with a language preference of `es` or `es-foo` (mimics behavior of `es-419` header tag) es_ALL/ index.html
"i18n कॉन्टेंट" के लिए प्राथमिकता का क्रम
अगर आपने i18n रीराइट सेट अप किया है, तो Hosting कॉन्टेंट को प्राथमिकता के इस क्रम के आधार पर दिखाता है:
/__/*
पाथ सेगमेंट से शुरू होने वाले रिज़र्व किए गए नेमस्पेसकॉन्फ़िगर किए गए रीडायरेक्ट
एग्ज़ैक्ट मैच वाला स्टैटिक कॉन्टेंट
भाषा कोड + देश कोड (उदाहरण के लिए,
fr_ca/
का कॉन्टेंट)
यह क्रम, अनुरोध केAccept-Language
हेडर में हर भाषा के लिए क्वालिटी वैल्यू के हिसाब से होता है.सिर्फ़ देश का कोड (उदाहरण के लिए,
ALL_ca/
से कॉन्टेंट)सिर्फ़ भाषा कोड (उदाहरण के लिए,
fr/
याes_ALL/
का कॉन्टेंट)
ऑर्डर, अनुरोध केAccept-Language
हेडर में हर भाषा के लिए क्वालिटी वैल्यू के हिसाब से होता है.एग्ज़ैक्ट मैच वाला "डिफ़ॉल्ट" स्टैटिक कॉन्टेंट
यह ऐसा कॉन्टेंट है जो "i18n कॉन्टेंट" डायरेक्ट्री के बाहर होता है. जैसे,public
डायरेक्ट्री के रूट में.
कॉन्फ़िगर की गई रीराइट
404 कोड मैनेज करना
i18n 404 पेज
यह, एग्ज़ैक्ट मैच वाले स्टैटिक कॉन्टेंट के लिए ऊपर दिए गए प्राथमिकता क्रम का पालन करता है.डिफ़ॉल्ट 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 अनुरोध किए गए पेज के लिए डायरेक्ट्री को इस क्रम में खोजेगा.
public/localized-files/fr_ca/
public/localized-files/en_ca/
public/localized-files/ALL_ca/
public/localized-files/fr_ALL/
public/localized-files/fr/
public/localized-files/en_ALL/
public/localized-files/en/
public/
404 कोड मैनेज करना
उपयोगकर्ता को कौनसा पेज दिखाया जाएगा?
अनुरोध किया गया पेज:
index.html
जवाब दें
fr_ca/
सब-फ़ोल्डर सेindex.html
Hosting सबसे पहले
fr_ca/
सब-फ़ोल्डर में खोज करता है. इसलिए, उसे उस सब-फ़ोल्डर मेंindex.html
का एग्ज़ैक्ट मैच मिलेगा.अनुरोध किया गया पेज:
awesome-page.html
जवाब दें
fr/
सब-फ़ोल्डर से404.html
Hosting, एग्ज़ैक्ट मैच के लिए प्राथमिकता के क्रम में पूरी डायरेक्ट्री (इसमें सभी "i18n कॉन्टेंट" सबफ़ोल्डर और रूट डायरेक्ट्री शामिल हैं) को सबसे पहले खोजता है. हालांकि,
awesome-page.html
के लिए कोई एग्ज़ैक्ट मैच नहीं है.इसलिए, Hosting 404 को हैंडल करना शुरू कर देगा. यह एग्ज़ैक्ट मैच वाली खोजों के लिए तय किए गए i18n प्राथमिकता क्रम का पालन करता है.
fr/
सब-फ़ोल्डर, खोजा गया पहला सब-फ़ोल्डर है जिसमें 404 पेज मौजूद है.
"i18n कॉन्टेंट" डायरेक्ट्री को खोजने और दिखाने के इस तरीके के बारे में इन बातों का ध्यान रखें:
localized-files/
डायरेक्ट्री में असल मेंen_ca/
,en_ALL/
याen/
सब-फ़ोल्डर नहीं होते. इसलिए, Hosting प्राथमिकता सूची में नीचे की ओर तब तक स्किप करता रहेगा, जब तक उसे अनुरोध की भाषा-देश के कॉम्बिनेशन से मैच होने वाला सब-फ़ोल्डर नहीं मिल जाता.भले ही,
localized-files/
डायरेक्ट्री मेंes_ALL/
सब-फ़ोल्डर शामिल है, लेकिन ऊपर दिए गए अनुरोध के उदाहरण मेंes
याes-foo
भाषा कोड शामिल नहीं है. इसलिए, Hostinges
से मैच करने वाला "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";
भाषा की कुकी की सेटिंग में बदलाव, भाषा कोड की कॉमा से अलग की गई सूची होनी चाहिए. यह सूची, प्राथमिकता के क्रम में होनी चाहिए. इसमें सबटैग या क्वालिटी वैल्यू नहीं होनी चाहिए.
कुकी ओवरराइड, लॉग में नहीं दिखते.