उपयोगकर्ता के देश या पसंदीदा भाषा के आधार पर अलग-अलग कॉन्टेंट दिखाने के लिए, अंतरराष्ट्रीय स्तर पर कॉन्टेंट को फिर से लिखने की सुविधा ("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
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
का इस्तेमाल किया जा सकता है.अगर आपको किसी खास इलाके या देश के हिसाब से कॉन्टेंट दिखाना है, तो ऐसे सब-फ़ोल्डर बनाए जा सकते हैं जिनमें उस भाषा और देश के हिसाब से कॉन्टेंट हो जिसे आपको दिखाना है.
"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
अनुरोध किया गया पेज:
awesome-page.html
"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";
भाषा की कुकी की सेटिंग में बदलाव, भाषा कोड की कॉमा से अलग की गई सूची होनी चाहिए. यह सूची, प्राथमिकता के क्रम में होनी चाहिए. इसमें सबटैग या क्वालिटी वैल्यू नहीं होनी चाहिए.
कुकी बदलने की सेटिंग, लॉग में नहीं दिखती.