ব্যবহারকারীর দেশ বা পছন্দের ভাষার উপর নির্ভর করে বিভিন্ন বিষয়বস্তু পরিবেশন করতে আন্তর্জাতিকীকরণ পুনর্লিখন ("i18n পুনর্লিখন") ব্যবহার করুন। এখানে কিছু উদাহরণ কনফিগারেশন রয়েছে যা আপনি সেট আপ করতে পারেন:
ফ্রেঞ্চ পছন্দ করে এমন সমস্ত ব্যবহারকারীদের কাছে একই ফরাসি সামগ্রী পরিবেশন করুন (দেশ নির্বিশেষে)।
উদাহরণ: ফরাসি পাঠ্য সহ একটি হোমপেজযারা ফ্রেঞ্চ পছন্দ করেন তাদের কাছে স্ট্যান্ডার্ড ফ্রেঞ্চ সামগ্রী পরিবেশন করুন, কিন্তু কানাডিয়ান ব্যবহারকারী যারা ফ্রেঞ্চ পছন্দ করেন তাদের পরিবর্তে কানাডিয়ান ফ্রেঞ্চ সামগ্রী পরিবেশন করুন।
উদাহরণ: স্ট্যান্ডার্ড ফ্রেঞ্চ বাক্যাংশ সহ একটি হোমপেজ বনাম কানাডিয়ান ফরাসি বাক্যাংশ সহ একটি হোমপেজসমস্ত কানাডিয়ান ব্যবহারকারীদের (তাদের ভাষা পছন্দ নির্বিশেষে) একই সামগ্রী পরিবেশন করুন।
উদাহরণ: আপনার সাইটের "ডিফল্ট" ভাষা সহ একটি হোমপেজ কিন্তু কানাডা-নির্দিষ্ট বৈশিষ্ট্য সহ (যেমন ছুটির থিম)ফ্রেঞ্চ পছন্দ করে এমন কানাডিয়ান ব্যবহারকারীদের কানাডিয়ান ফ্রেঞ্চ সামগ্রী পরিবেশন করুন।
উদাহরণ: কানাডিয়ান ফরাসি বাক্যাংশ সহ একটি হোমপেজ এবং একটি কানাডা-নির্দিষ্ট বৈশিষ্ট্য (যেমন ছুটির থিম)
Firebase Hosting একটি ব্যবহারকারীর দেশকে তাদের IP ঠিকানা থেকে এবং ব্যবহারকারীর ভাষা পছন্দ নির্ধারণ করে 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.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 সামগ্রী" স্থাপন করুন এবং আপনার Hosting সাইটে কনফিগার করুন।
আপনি কুকি ওভাররাইড ব্যবহার করে আপনার সেটআপ পরীক্ষা করতে পারেন।
দেশ এবং ভাষার কোড
"i18n বিষয়বস্তু" সাবফোল্ডার নামকরণ করার সময়, আপনাকে অবশ্যই দেশ এবং ভাষা উভয় কোডের জন্য ছোট হাতের অক্ষর ব্যবহার করতে হবে। আপনি যেকোনো দেশ (যেমন es_ALL/
) বা যেকোনো ভাষা (যেমন ALL_ca/
) নির্দেশ করতে ALL
(কেস-সংবেদনশীল) এর মান ব্যবহার করতে পারেন।
Hosting ব্যবহারকারীর আইপি ঠিকানা থেকে দেশের কোড পায়। দেশের কোড হল দুই-অক্ষরের ISO 3166-1 alpha-2 কোড ।
ভাষার কোডগুলি ব্যবহারকারীর Accept-Language
অনুরোধ শিরোনাম থেকে প্রাপ্ত হয় (সাধারণত তাদের ওয়েব ব্রাউজার দ্বারা স্বয়ংক্রিয়ভাবে সেট করা হয় )। এগুলো হল ISO 639-1 কোড । ভাষা কোড ব্যবহার করার সময় নিম্নলিখিত মনে রাখবেন:
যখন Hosting সার্চ করে কোন "i18n বিষয়বস্তু" পরিবেশন করা হবে, তখন এটি
Accept-Language
হেডারে মানসম্পন্ন মানগুলির উপর ভিত্তি করে ভাষাগুলিকে অর্ডার করে৷Hosting
Accept-Language
হেডারে যেকোনো আঞ্চলিক এবং দেশীয় সাবট্যাগ ফেলে দেয়, তাই "i18n কন্টেন্ট" সাবফোল্ডার নামের ভাষার কোডে এই সাবট্যাগগুলি থাকতে পারে না। উদাহরণস্বরূপ, আপনি একটি সাবফোল্ডার নামের একটি ভাষা কোড হিসাবেes-419
বাes-US
ব্যবহার করতে পারবেন না, তবে আপনিes
ব্যবহার করতে পারেন।আপনি যদি নির্দিষ্ট আঞ্চলিক বা দেশের বিষয়বস্তু পরিবেশন করতে চান, আপনি সাবফোল্ডার তৈরি করতে পারেন যাতে আপনি সমর্থন করতে চান এমন নির্দিষ্ট ভাষা-দেশের সামগ্রী রয়েছে৷
এই উদাহরণে,
es
,es-es
, এমনকিes-419
এর ভাষা অগ্রাধিকার সহ স্পেনের একটি অনুরোধes_es/
সাবফোল্ডার থেকে বিষয়বস্তু পাবে কারণ Hosting সেই সমস্ত ভাষার কোডগুলিকেes
হিসাবে বিবেচনা করে।ইউনাইটেড স্টেটস, মেক্সিকো, বা অন্য কোন দেশ থেকে
es-419
এর ভাষা পছন্দের অনুরোধes_ALL/
সাবফোল্ডার থেকে সামগ্রী পাবে কারণ Hostinges-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/
সাবফোল্ডার থেকে বিষয়বস্তু পাবে কারণ Hosting ভাষা কোডes-419
কেes
হিসাবে বিবেচনা করে।যাইহোক,
es-419
এর ভাষা পছন্দের সাথে মার্কিন যুক্তরাষ্ট্রের একটি অনুরোধes_ALL/
সাবফোল্ডার থেকে বিষয়বস্তু গ্রহণ করবে কারণ Hostinges-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 পুনর্লিখন সেট আপ করেন, 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
fr_ca/
সাবফোল্ডার থেকেindex.html
যেহেতু Hosting প্রথমে
fr_ca/
সাবফোল্ডারটি অনুসন্ধান করে, এটি সেই সাবফোল্ডারেindex.html
এর জন্য সঠিক-মিল খুঁজে পাবে।অনুরোধ করা পৃষ্ঠা:
awesome-page.html
fr/
সাবফোল্ডার থেকে404.html
Hosting প্রথমে সম্পূর্ণ ডিরেক্টরি (সমস্ত "i18n বিষয়বস্তু" সাবফোল্ডার এবং রুট ডিরেক্টরি সহ) একটি সঠিক-মিলের জন্য অগ্রাধিকার ক্রমে অনুসন্ধান করে, কিন্তু
awesome-page.html
জন্য কোনও সঠিক-মিল নেই।সুতরাং, Hosting তার 404 হ্যান্ডলিং শুরু করবে, যা সঠিক-মিল অনুসন্ধানের মতো একই i18n অগ্রাধিকার ক্রম অনুসরণ করে।
fr/
সাবফোল্ডার হল প্রথম অনুসন্ধান করা সাবফোল্ডার যেটিতে একটি 404 পৃষ্ঠা রয়েছে।
"i18n বিষয়বস্তু" ডিরেক্টরির এই অনুসন্ধান এবং পরিবেশন সম্পর্কে নিম্নলিখিতগুলি নোট করুন:
localized-files/
ডিরেক্টরিতে আসলেen_ca/
,en_ALL/
, বাen/
সাবফোল্ডার থাকে না, তাই Hosting শুধুমাত্র অগ্রাধিকার তালিকাটি এড়িয়ে যাবে যতক্ষণ না এটি অনুরোধের ভাষা-দেশের সমন্বয়ের জন্য একটি মিলে যাওয়া সাবফোল্ডার খুঁজে পায়।যদিও
localized-files/
ডিরেক্টরিতে একটিes_ALL/
সাবফোল্ডার রয়েছে, উপরের উদাহরণের অনুরোধে একটিes
বাes-foo
ভাষার কোড অন্তর্ভুক্ত নয়, তাই Hostinges
সাথে মেলে এমন "i18n সামগ্রী" অনুসন্ধান করবে না।fr/
এবংfr_ALL/
নামক সাবফোল্ডারগুলি ব্যবহারকারীর দেশ এবং ভাষা পছন্দের দৃষ্টিকোণ থেকে সমতুল্য। যাইহোক, উভয় সাবফোল্ডার থাকলে, Hostingfr/
content এর আগেfr_ALL/
সামগ্রী পরিবেশন করবে।
কুকিজ দিয়ে ভাষা এবং দেশের কোড ওভাররাইড করুন
আপনি দেশ এবং ভাষার শিরোনাম ওভাররাইড করতে কুকিজ ব্যবহার করে কোন সামগ্রী পরিবেশন করা হয় তা পরিবর্তন করতে পারেন৷
এখানে কিছু উপায় রয়েছে যা আপনি কুকি ওভাররাইড ব্যবহার করতে পারেন:
কোন বিষয়বস্তু পরিবেশিত হয় তা পরীক্ষা করতে বিভিন্ন ভাষা/দেশের সমন্বয় সহ একটি বৈশিষ্ট্য পরীক্ষা করুন।
আপনার ব্যবহারকারীরা যে বিষয়বস্তু দেখেন তা পরিবর্তন করতে সক্ষম করুন। উদাহরণস্বরূপ, আপনি একটি ভাষা চয়নকারী প্রয়োগ করতে পারেন, তারপর সেই অনুযায়ী ব্যবহারকারীর
firebase-language-override
কুকি সেট করুন৷
কুকি ওভাররাইড কনফিগার করতে, এই দুটি বা যেকোনো একটি নামের সাথে কুকি সেট করুন: firebase-country-override
এবং firebase-language-override
। উদাহরণস্বরূপ, নিম্নলিখিত জাভাস্ক্রিপ্ট কোড স্নিপেট কান্ট্রি কোডকে ওভাররাইড করে ca
এবং Accept-Language
হেডার হতে fr,en
:
document.cookie = "firebase-country-override=ca";
document.cookie = "firebase-language-override=fr,en";
ভাষা কুকি ওভাররাইডগুলি অবশ্যই সাবট্যাগ বা গুণমানের মান ছাড়াই পছন্দ অনুসারে ভাষার কোডগুলির একটি কমা দ্বারা পৃথক করা তালিকা হতে হবে৷
কুকি ওভাররাইডগুলি লগগুলিতে প্রতিফলিত হয় না।