किसी व्यक्ति के देश या उसकी पसंदीदा भाषा के हिसाब से अलग-अलग कॉन्टेंट दिखाने के लिए, अंतरराष्ट्रीयकरण के लिए फिर से लिखे गए यूआरएल ("i18n rewrites") का इस्तेमाल करें. यहां कुछ उदाहरण दिए गए हैं, जिन्हें कॉन्फ़िगर किया जा सकता है:
फ़्रेंच भाषा को प्राथमिकता देने वाले सभी उपयोगकर्ताओं को एक जैसा फ़्रेंच कॉन्टेंट दिखाएं. भले ही, वे किसी भी देश में रहते हों.
उदाहरण: फ़्रेंच टेक्स्ट वाला होम पेजफ़्रेंच भाषा को प्राथमिकता देने वाले लोगों को स्टैंडर्ड फ़्रेंच में कॉन्टेंट दिखाएं. हालांकि, फ़्रेंच भाषा को प्राथमिकता देने वाले कनाडा के लोगों को स्टैंडर्ड फ़्रेंच के बजाय, कैनेडियन फ़्रेंच में कॉन्टेंट दिखाएं.
उदाहरण: स्टैंडर्ड फ़्रेंच में लिखे गए होम पेज की तुलना में, कनाडाई फ़्रेंच में लिखा गया होम पेजकनाडा में रहने वाले सभी उपयोगकर्ताओं को एक जैसा कॉन्टेंट दिखाएं. भले ही, उन्होंने कोई भी भाषा चुनी हो.
उदाहरण: आपकी साइट का होम पेज "डिफ़ॉल्ट" भाषा में है, लेकिन इसमें कनाडा के लिए उपलब्ध कोई सुविधा (जैसे, छुट्टियों के लिए थीम) शामिल हैकनाडा में रहने वाले उन लोगों को कैनेडियन फ़्रेंच में कॉन्टेंट दिखाएं जिन्हें फ़्रेंच पसंद है.
उदाहरण: कनाडा में बोली जाने वाली फ़्रेंच भाषा में लिखा गया होम पेज और कनाडा के लिए उपलब्ध कोई सुविधा (जैसे, छुट्टियों के लिए थीम)
Firebase Hosting, उपयोगकर्ता के आईपी पते से उसके देश का पता लगाता है. साथ ही, Accept-Language
अनुरोध हेडर से उपयोगकर्ता की भाषा की प्राथमिकताओं का पता लगाता है. आम तौर पर, यह जानकारी वेब ब्राउज़र अपने-आप सेट करता है.
i18n रीराइट सेट अप करना
अपनी Hosting साइट के लिए i18n रीराइट सेट अप करने के लिए, आपको सभी स्थानीय भाषा में उपलब्ध कॉन्टेंट के लिए "i18n
content" डायरेक्ट्री बनानी होगी. इसके बाद, अपनी firebase.json
फ़ाइल में i18n
एट्रिब्यूट जोड़ना होगा, ताकि वह आपकी नई "i18n content" डायरेक्ट्री की ओर इशारा करे.
यहां रिस्पॉन्सिव साइट में बदलने के तरीके के बारे में ज़्यादा जानकारी दी गई है:
अपनी स्थानीय ऐप्लिकेशन डायरेक्ट्री के
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 कॉन्टेंट" वाले सबफ़ोल्डर का नाम रखते समय, आपको देश और भाषा, दोनों के कोड के लिए छोटे अक्षरों का इस्तेमाल करना होगा. 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 पेज
डिफ़ॉल्ट 404 पेज (Firebase की ओर से उपलब्ध कराया गया)
प्राथमिकता के हिसाब से ऑर्डर करने का उदाहरण
आइए, ऊपर दिए गए उदाहरण को आगे बढ़ाते हैं. हम यहां उदाहरण के तौर पर दी गई डायरेक्ट्री और अनुरोध का इस्तेमाल करेंगे.
"i18n content" डायरेक्ट्री (जिसे
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
भाषा का कोड शामिल नहीं है. इसलिए, Hosting "i18n कॉन्टेंट" को नहीं खोजेगा, जो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";
भाषा कुकी ओवरराइड, भाषा कोड की कॉमा-सेपरेटेड लिस्ट होनी चाहिए. इसमें भाषा कोड को प्राथमिकता के क्रम में रखा जाता है. इसमें सबटैग या क्वालिटी वैल्यू शामिल नहीं होती हैं.
कुकी के बदले गए मान, लॉग में नहीं दिखते.