ব্যবহারকারীর দেশ বা পছন্দের ভাষার উপর নির্ভর করে বিভিন্ন কন্টেন্ট পরিবেশন করতে আন্তর্জাতিকীকরণ পুনর্লিখন ("i18n পুনর্লিখন") ব্যবহার করুন। এখানে কিছু উদাহরণ কনফিগারেশন দেওয়া হল যা আপনি সেট আপ করতে পারেন:
ফরাসি ভাষা পছন্দ করেন এমন সকল ব্যবহারকারীকে (দেশ নির্বিশেষে) একই ফরাসি বিষয়বস্তু পরিবেশন করুন।
উদাহরণ: ফরাসি লেখা সহ একটি হোমপেজযারা ফরাসি ভাষা পছন্দ করেন তাদের জন্য স্ট্যান্ডার্ড ফরাসি কন্টেন্ট পরিবেশন করুন, কিন্তু যারা ফরাসি ভাষা পছন্দ করেন তাদের জন্য কানাডিয়ান ফরাসি কন্টেন্ট পরিবেশন করুন।
উদাহরণ: স্ট্যান্ডার্ড ফরাসি বাক্যাংশ সহ একটি হোমপেজ বনাম কানাডিয়ান ফরাসি বাক্যাংশ সহ একটি হোমপেজসমস্ত কানাডিয়ান ব্যবহারকারীদের (তাদের ভাষা পছন্দ নির্বিশেষে) একই বিষয়বস্তু পরিবেশন করুন।
উদাহরণ: আপনার সাইটের "ডিফল্ট" ভাষা সহ একটি হোমপেজ কিন্তু কানাডা-নির্দিষ্ট বৈশিষ্ট্য সহ (যেমন ছুটির থিম)ফরাসি ভাষা পছন্দ করেন এমন কানাডিয়ান ব্যবহারকারীদের জন্য কানাডিয়ান ফরাসি কন্টেন্ট পরিবেশন করুন।
উদাহরণ: কানাডিয়ান ফরাসি শব্দবন্ধ এবং কানাডা-নির্দিষ্ট বৈশিষ্ট্য সহ একটি হোমপেজ (যেমন একটি ছুটির থিম)
Firebase Hosting ব্যবহারকারীর দেশ তাদের আইপি ঠিকানা থেকে এবং ব্যবহারকারীর ভাষা পছন্দগুলি Accept-Language
অনুরোধ শিরোনাম থেকে নির্ধারণ করে (সাধারণত তাদের ওয়েব ব্রাউজার দ্বারা স্বয়ংক্রিয়ভাবে সেট করা হয় )।
i18n পুনর্লিখন সেট আপ করুন
আপনার Hosting সাইটের জন্য i18n পুনর্লিখন সেট আপ করতে, আপনার সমস্ত স্থানীয়কৃত কন্টেন্টের জন্য একটি "i18n কন্টেন্ট" ডিরেক্টরি তৈরি করতে হবে, তারপর আপনার নতুন "i18n কন্টেন্ট" ডিরেক্টরিতে নির্দেশ করার জন্য আপনার firebase.json
ফাইলে i18n
অ্যাট্রিবিউট যোগ করতে হবে।
এখানে বিস্তারিত পদক্ষেপগুলি দেওয়া হল:
আপনার স্থানীয় অ্যাপ ডিরেক্টরির
public
ফোল্ডারের মধ্যে, আপনার "i18n কন্টেন্ট" এর জন্য একটি পৃথক ডিরেক্টরি তৈরি করুন, তারপর আপনার সাইট দ্বারা সমর্থিত প্রতিটি ভাষা এবং দেশের সমন্বয়ের জন্য সাবফোল্ডার তৈরি করুন।প্রতিটি সাবফোল্ডারে, সেই সংমিশ্রণের জন্য নির্দিষ্ট বিষয়বস্তু যোগ করুন, যেমন ছুটির দিন-থিমযুক্ত হোমপেজ বা ভাষা-নির্দিষ্ট 404 পৃষ্ঠা।
এখানে "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
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 আলফা-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
ডিরেক্টরির রুটে।
কনফিগার করা পুনর্লিখন
৪০৪ হ্যান্ডলিং
i18n ৪০৪ পৃষ্ঠা
এটি হুবহু মিলে যাওয়া স্ট্যাটিক কন্টেন্টের জন্য উপরে তালিকাভুক্ত একই অগ্রাধিকার ক্রম অনুসরণ করে।কাস্টম 404 পৃষ্ঠা
ডিফল্ট 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
অনুরোধের তথ্যের উদাহরণ
ভাষা কোড:
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/
৪০৪ হ্যান্ডলিং
ব্যবহারকারীকে কোন পৃষ্ঠাটি পরিবেশন করা হবে?
অনুরোধ করা পৃষ্ঠা:
index.html
fr_ca/
সাবফোল্ডার থেকেindex.html
যেহেতু Hosting প্রথমে
fr_ca/
সাবফোল্ডারটি অনুসন্ধান করে, তাই এটি সেই সাবফোল্ডারেindex.html
এর জন্য সঠিক মিল খুঁজে পাবে।অনুরোধ করা পৃষ্ঠা:
awesome-page.html
fr/
সাবফোল্ডার থেকে404.html
Hosting প্রথমে সম্পূর্ণ ডিরেক্টরি (সমস্ত "i18n কন্টেন্ট" সাবফোল্ডার এবং রুট ডিরেক্টরি সহ) অগ্রাধিকার ক্রমে অনুসন্ধান করে একটি exact-match এর জন্য, কিন্তু
awesome-page.html
জন্য কোন exact-match নেই।সুতরাং, Hosting তার 404 হ্যান্ডলিং শুরু করবে, যা exact-match অনুসন্ধানের মতো একই 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/
কন্টেন্টের আগেfr_ALL/
কন্টেন্ট পরিবেশন করবে।
কুকিজ দিয়ে ভাষা এবং দেশের কোড ওভাররাইড করুন
দেশ এবং ভাষার শিরোনাম ওভাররাইড করার জন্য কুকিজ ব্যবহার করে আপনি কোন সামগ্রী পরিবেশিত হবে তা পরিবর্তন করতে পারেন।
কুকি ওভাররাইড ব্যবহার করার কিছু উপায় এখানে দেওয়া হল:
কোন কন্টেন্ট পরিবেশিত হচ্ছে তা পরীক্ষা করার জন্য বিভিন্ন ভাষা/দেশের সমন্বয়ে একটি বৈশিষ্ট্য পরীক্ষা করুন।
আপনার ব্যবহারকারীদের তাদের দেখা কন্টেন্ট পরিবর্তন করতে সক্ষম করুন। উদাহরণস্বরূপ, আপনি একটি ভাষা চয়নকারী প্রয়োগ করতে পারেন, তারপর সেই অনুযায়ী ব্যবহারকারীর
firebase-language-override
কুকি সেট করতে পারেন।
কুকি ওভাররাইড কনফিগার করতে, এই দুটি অথবা যেকোনো একটি নামের সাথে কুকি সেট করুন: firebase-country-override
এবং firebase-language-override
। উদাহরণস্বরূপ, নিম্নলিখিত জাভাস্ক্রিপ্ট কোড স্নিপেটটি দেশের কোডকে ca
এবং Accept-Language
হেডারকে fr,en
en ওভাররাইড করে:
document.cookie = "firebase-country-override=ca";
document.cookie = "firebase-language-override=fr,en";
ভাষা কুকি ওভাররাইডগুলি অবশ্যই পছন্দের ক্রম অনুসারে ভাষা কোডগুলির একটি কমা দ্বারা পৃথক তালিকা হতে হবে, সাবট্যাগ বা মানের মান ছাড়াই।
কুকি ওভাররাইড লগে প্রতিফলিত হয় না।