उपयोगकर्ता के देश या पसंदीदा भाषा के आधार पर विभिन्न सामग्री की सेवा के लिए अंतर्राष्ट्रीयकरण पुनर्लेखन ("i18n पुनर्लेखन") का उपयोग करें। यहां कुछ उदाहरण कॉन्फ़िगरेशन दिए गए हैं जिन्हें आप सेट अप कर सकते हैं:
फ्रेंच पसंद करने वाले सभी उपयोगकर्ताओं को समान फ्रेंच सामग्री परोसें (देश की परवाह किए बिना)।
उदाहरण: फ्रेंच टेक्स्ट वाला एक होमपेजफ्रांसीसी पसंद करने वाले उपयोगकर्ताओं के लिए मानक फ्रेंच सामग्री परोसें, लेकिन फ्रेंच पसंद करने वाले कनाडाई उपयोगकर्ताओं के लिए इसके बजाय कनाडाई फ्रेंच सामग्री परोसें।
उदाहरण: मानक फ़्रेंच वाक्यांश वाला मुखपृष्ठ बनाम कनाडाई फ़्रेंच वाक्यांश वाला मुखपृष्ठसभी कनाडाई उपयोगकर्ताओं को समान सामग्री परोसें (उनकी भाषा वरीयता पर ध्यान दिए बिना)।
उदाहरण: आपकी साइट की "डिफ़ॉल्ट" भाषा वाला एक मुखपृष्ठ लेकिन कनाडा-विशिष्ट सुविधा के साथ (जैसे अवकाश थीम)कनाडाई फ्रेंच सामग्री उन कनाडाई उपयोगकर्ताओं को परोसें जो फ्रेंच पसंद करते हैं।
उदाहरण: कैनेडियन फ़्रेंच वाक्यांश वाला होमपेज और कनाडा-विशिष्ट विशेषता (जैसे हॉलिडे थीम)
फायरबेस होस्टिंग एक उपयोगकर्ता के देश को उनके आईपी पते से और एक उपयोगकर्ता की भाषा वरीयताओं को Accept-Language
अनुरोध हेडर से निर्धारित करता है (आमतौर पर उनके वेब ब्राउज़र द्वारा स्वचालित रूप से सेट किया जाता है )।
i18n पुनर्लेखन सेट अप करें
अपनी होस्टिंग साइट के लिए i18n पुनर्लेखन सेट अप करने के लिए, आपको अपनी सभी स्थानीयकृत सामग्री के लिए "i18n सामग्री" निर्देशिका बनाने की आवश्यकता है, फिर अपनी नई "i18n सामग्री" निर्देशिका को इंगित करने के लिए i18n
विशेषता को अपनी firebase.json
फ़ाइल में जोड़ें।
यहाँ विस्तृत कदम हैं:
अपनी स्थानीय ऐप निर्देशिका के
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.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
के समतुल्य
इन कोडों के बारे में अधिक विवरण के लिए नीचे उपखंड देश और भाषा कोड देखें। आप किसी भी देश (जैसे
es_ALL/
) या किसी भी भाषा (जैसेALL_ca/
) को इंगित करने के लिएALL
(केस-संवेदी) के मान का उपयोग कर सकते हैं।सबफ़ोल्डर की फ़ाइलों को
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
मान में अग्रणी और अनुगामी स्लैश वैकल्पिक हैं।अपनी "i18n सामग्री" तैनात करें और अपनी होस्टिंग साइट पर कॉन्फ़िगर करें।
आप कुकी ओवरराइड्स का उपयोग करके अपने सेटअप का परीक्षण कर सकते हैं।
देश और भाषा कोड
"i18n सामग्री" सबफ़ोल्डर का नामकरण करते समय, आपको देश और भाषा कोड दोनों के लिए लोअरकेस का उपयोग करना चाहिए। आप किसी भी देश (जैसे es_ALL/
) या किसी भी भाषा (जैसे ALL_ca/
) को इंगित करने के लिए ALL
(केस-संवेदी) के मान का उपयोग कर सकते हैं।
होस्टिंग उपयोगकर्ता के आईपी पते से देश का कोड प्राप्त करता है। देश कोड दो-अक्षर वाले ISO 3166-1 alpha-2 कोड हैं।
भाषा कोड उपयोगकर्ता के Accept-Language
अनुरोध शीर्षलेख से प्राप्त किए जाते हैं (आमतौर पर उनके वेब ब्राउज़र द्वारा स्वचालित रूप से सेट किए जाते हैं )। वे आईएसओ 639-1 कोड हैं। भाषा कोड का उपयोग करते समय निम्नलिखित बातों का ध्यान रखें:
जब होस्टिंग प्रस्तुत करने के लिए "i18n सामग्री" की खोज करती है, तो यह
Accept-Language
शीर्षलेख में गुणवत्ता मानों के आधार पर भाषाओं का आदेश देती है।होस्टिंग
Accept-Language
शीर्षलेख में किसी भी क्षेत्रीय और देश के सबटैग को छोड़ देता है, इसलिए "i18n सामग्री" सबफ़ोल्डर नाम में भाषा कोड में ये सबटैग नहीं हो सकते। उदाहरण के लिए, आप सबफ़ोल्डर नाम में भाषा कोड के रूप मेंes-419
याes-US
का उपयोग नहीं कर सकते, लेकिन आपes
उपयोग कर सकते हैं।यदि आप विशिष्ट क्षेत्रीय या देश की सामग्री परोसना चाहते हैं, तो आप ऐसे सबफ़ोल्डर बना सकते हैं जिनमें विशिष्ट भाषा-देश की सामग्री हो जिसका आप समर्थन करना चाहते हैं।
इस उदाहरण में,
es
,es-es
, या यहां तक किes-419
की भाषा वरीयता के साथ स्पेन से एक अनुरोधes_es/
सबफ़ोल्डर से सामग्री प्राप्त करेगा क्योंकि होस्टिंग उन सभी भाषा कोडों कोes
के रूप में मानती है।संयुक्त राज्य अमेरिका, मेक्सिको, या किसी अन्य देश से
es-419
की भाषा वरीयता के साथ एक अनुरोधes_ALL/
सबफ़ोल्डर से सामग्री प्राप्त करेगा क्योंकि होस्टिंग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/
सबफ़ोल्डर से सामग्री प्राप्त होगी क्योंकि होस्टिंग भाषा कोडes-419
कोes
मानता है।हालांकि, संयुक्त राज्य अमेरिका से
es-419
की भाषा वरीयता के साथ एक अनुरोधes_ALL/
सबफ़ोल्डर से सामग्री प्राप्त करेगा क्योंकि होस्टिंग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 पुनर्लेखन सेट अप करते हैं, तो होस्टिंग निम्न प्राथमिकता क्रम के आधार पर सामग्री प्रदान करती है:
आरक्षित नामस्थान जो एक
/__/*
पथ खंड से शुरू होते हैंकॉन्फ़िगर किए गए रीडायरेक्ट
सटीक-मिलान स्थिर सामग्री
भाषा कोड + देश कोड (उदाहरण के लिए,
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
(कनाडा)
सटीक-मिलान प्राथमिकता क्रम और भाषा वरीयताओं के लिए गुणवत्ता मानों के अनुसार, होस्टिंग निम्नलिखित क्रम में एक अनुरोधित पृष्ठ के लिए निर्देशिकाओं की खोज करेगी।
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
index.html
fr_ca/
सबफ़ोल्डर सेचूंकि होस्टिंग पहले
fr_ca/
सबफ़ोल्डर को खोजती है, इसलिए उसे उस सबफ़ोल्डर मेंindex.html
के लिए सटीक-मिलान मिलेगा।अनुरोधित पृष्ठ:
awesome-page.html
404.html
fr/
सबफ़ोल्डर सेहोस्टिंग सबसे पहले संपूर्ण निर्देशिका (सभी "i18n सामग्री" सबफ़ोल्डर और रूट निर्देशिका सहित) को सटीक-मिलान के लिए प्राथमिकता क्रम में खोजती है, लेकिन
awesome-page.html
के लिए सटीक-मिलान नहीं है।इसलिए, होस्टिंग अपनी 404 हैंडलिंग शुरू कर देगी, जो सटीक-मिलान खोजों के समान i18n प्राथमिकता क्रम का पालन करती है।
fr/
सबफ़ोल्डर खोजा गया पहला सबफ़ोल्डर है जिसमें 404 पृष्ठ हैं।
"I18n सामग्री" निर्देशिका की इस खोज-और-सेवा के बारे में निम्नलिखित पर ध्यान दें:
localized-files/
निर्देशिका में वास्तव मेंen_ca/
,en_ALL/
, याen/
सबफ़ोल्डर शामिल नहीं होते हैं, इसलिए होस्टिंग प्राथमिकता सूची को तब तक छोड़ देगी जब तक उसे अनुरोध के भाषा-देश संयोजन के लिए एक मेल खाने वाला सबफ़ोल्डर नहीं मिल जाता।भले ही
localized-files/
निर्देशिका मेंes_ALL/
सबफ़ोल्डर शामिल है, उपरोक्त उदाहरण अनुरोध मेंes
याes-foo
भाषा कोड शामिल नहीं है, इसलिए होस्टिंगes
से मेल खाने वाली "i18n सामग्री" की खोज नहीं करेगी।सबफ़ोल्डर जिन्हें
fr/
औरfr_ALL/
कहा जाता है, उपयोगकर्ता के देश और भाषा वरीयताओं के परिप्रेक्ष्य से समान हैं। हालाँकि, यदि दोनों सबफ़ोल्डर मौजूद हैं, तो होस्टिंगfr_ALL/
सामग्री कोfr/
सामग्री से पहले पेश करेगी।
कुकीज़ के साथ भाषा और देश कोड को ओवरराइड करें
आप देश और भाषा शीर्षलेखों को ओवरराइड करने के लिए कुकीज़ का उपयोग करके सामग्री को बदल सकते हैं।
कुकी ओवरराइड्स का उपयोग करने के कुछ तरीके यहां दिए गए हैं:
यह देखने के लिए कि कौन सी सामग्री परोसी जा रही है, विभिन्न भाषा/देश संयोजनों के साथ एक सुविधा का परीक्षण करें।
अपने उपयोगकर्ताओं को उनके द्वारा देखी जाने वाली सामग्री को बदलने में सक्षम करें। उदाहरण के लिए, आप एक भाषा पिकर लागू कर सकते हैं, फिर उसके अनुसार उपयोगकर्ता की
firebase-language-override
कुकी सेट कर सकते हैं।
कुकी ओवरराइड को कॉन्फ़िगर करने के लिए, कुकी को दोनों या इनमें से किसी एक नाम से सेट करें: firebase-country-override
और firebase-language-override
। उदाहरण के लिए, निम्नलिखित JavaScript कोड स्निपेट ca
होने के लिए देश कोड और fr,en
होने के लिए Accept-Language
शीर्षलेख को ओवरराइड करता है:
document.cookie = "firebase-country-override=ca";
document.cookie = "firebase-language-override=fr,en";
भाषा कुकी ओवरराइड वरीयता के क्रम में भाषा कोड की अल्पविराम से अलग की गई सूची होनी चाहिए, बिना उपटैग या गुणवत्ता मान के।
कुकी ओवरराइड्स लॉग में प्रतिबिंबित नहीं होते हैं।