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