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