আন্তর্জাতিকীকরণ (i18n) পুনর্লিখন কনফিগার করুন

ব্যবহারকারীর দেশ বা পছন্দের ভাষার উপর নির্ভর করে বিভিন্ন কন্টেন্ট পরিবেশন করতে আন্তর্জাতিকীকরণ পুনর্লিখন ("i18n পুনর্লিখন") ব্যবহার করুন। এখানে কিছু উদাহরণ কনফিগারেশন দেওয়া হল যা আপনি সেট আপ করতে পারেন:

  • ফরাসি ভাষা পছন্দ করেন এমন সকল ব্যবহারকারীকে (দেশ নির্বিশেষে) একই ফরাসি বিষয়বস্তু পরিবেশন করুন।
    উদাহরণ: ফরাসি লেখা সহ একটি হোমপেজ

  • যারা ফরাসি ভাষা পছন্দ করেন তাদের জন্য স্ট্যান্ডার্ড ফরাসি কন্টেন্ট পরিবেশন করুন, কিন্তু যারা ফরাসি ভাষা পছন্দ করেন তাদের জন্য কানাডিয়ান ফরাসি কন্টেন্ট পরিবেশন করুন।
    উদাহরণ: স্ট্যান্ডার্ড ফরাসি বাক্যাংশ সহ একটি হোমপেজ বনাম কানাডিয়ান ফরাসি বাক্যাংশ সহ একটি হোমপেজ

  • সমস্ত কানাডিয়ান ব্যবহারকারীদের (তাদের ভাষা পছন্দ নির্বিশেষে) একই বিষয়বস্তু পরিবেশন করুন।
    উদাহরণ: আপনার সাইটের "ডিফল্ট" ভাষা সহ একটি হোমপেজ কিন্তু কানাডা-নির্দিষ্ট বৈশিষ্ট্য সহ (যেমন ছুটির থিম)

  • ফরাসি ভাষা পছন্দ করেন এমন কানাডিয়ান ব্যবহারকারীদের জন্য কানাডিয়ান ফরাসি কন্টেন্ট পরিবেশন করুন।
    উদাহরণ: কানাডিয়ান ফরাসি শব্দবন্ধ এবং কানাডা-নির্দিষ্ট বৈশিষ্ট্য সহ একটি হোমপেজ (যেমন একটি ছুটির থিম)

Firebase Hosting ব্যবহারকারীর দেশ তাদের আইপি ঠিকানা থেকে এবং ব্যবহারকারীর ভাষা পছন্দগুলি Accept-Language অনুরোধ শিরোনাম থেকে নির্ধারণ করে (সাধারণত তাদের ওয়েব ব্রাউজার দ্বারা স্বয়ংক্রিয়ভাবে সেট করা হয় )।

i18n পুনর্লিখন সেট আপ করুন

আপনার Hosting সাইটের জন্য i18n পুনর্লিখন সেট আপ করতে, আপনার সমস্ত স্থানীয়কৃত কন্টেন্টের জন্য একটি "i18n কন্টেন্ট" ডিরেক্টরি তৈরি করতে হবে, তারপর আপনার নতুন "i18n কন্টেন্ট" ডিরেক্টরিতে নির্দেশ করার জন্য আপনার firebase.json ফাইলে i18n অ্যাট্রিবিউট যোগ করতে হবে।

এখানে বিস্তারিত পদক্ষেপগুলি দেওয়া হল:

  1. আপনার স্থানীয় অ্যাপ ডিরেক্টরির 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

    localized-files/ ডিরেক্টরিতে আপনার সাইট দ্বারা সমর্থিত প্রতিটি ভাষা এবং দেশের সমন্বয়ের জন্য পৃথক সাবফোল্ডার রয়েছে। প্রতিটি সাবফোল্ডারের নামকরণের ধরণটি এই ফর্ম্যাটগুলির যেকোনো একটি অনুসরণ করতে হবে:

    • languageCode_countryCode : সেই ভাষা পছন্দ এবং দেশের কোড ব্যবহারকারীদের জন্য নির্দিষ্ট কন্টেন্ট ধারণ করে

    • languageCode : যেসব ব্যবহারকারীর ভাষা পছন্দ, তাদের জন্য নির্দিষ্ট কন্টেন্ট থাকে, কিন্তু কন্টেন্টটি দেশ-নির্দিষ্ট নয়; মূলত languageCode_ALL এর সমতুল্য

    এই কোডগুলি সম্পর্কে আরও বিস্তারিত জানার জন্য নীচের দেশ এবং ভাষা কোড উপবিভাগটি দেখুন। আপনি যেকোনো দেশ (যেমন es_ALL/ ) বা যেকোনো ভাষা (যেমন ALL_ca/ ) নির্দেশ করতে ALL (কেস-সংবেদনশীল) এর মান ব্যবহার করতে পারেন।

    একটি সাবফোল্ডারের ফাইলগুলির public ডিরেক্টরি বা অন্যান্য সাবফোল্ডারে অনুরূপ ফাইল থাকার প্রয়োজন নেই। আপনি এমন সামগ্রী তৈরি করতে পারেন যা সম্পূর্ণরূপে একটি ভাষা এবং/অথবা দেশের জন্য নির্দিষ্ট।

  2. আপনার 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 মানের লিডিং এবং ট্রেলিং স্ল্যাশ ঐচ্ছিক।

  3. আপনার "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 ব্যবহার করতে পারেন।

    আপনি যদি নির্দিষ্ট আঞ্চলিক বা দেশের কন্টেন্ট পরিবেশন করতে চান, তাহলে আপনি এমন সাবফোল্ডার তৈরি করতে পারেন যাতে আপনি যে নির্দিষ্ট ভাষা-দেশের কন্টেন্ট সমর্থন করতে চান তা থাকে।

"i18n কন্টেন্ট" এর জন্য অগ্রাধিকার ক্রম

যদি আপনি i18n পুনর্লিখন সেট আপ করেন, তাহলে Hosting নিম্নলিখিত অগ্রাধিকার ক্রম অনুসারে সামগ্রী পরিবেশন করে:

  1. /__/* পাথ সেগমেন্ট দিয়ে শুরু হওয়া সংরক্ষিত নেমস্পেস

  2. কনফিগার করা পুনঃনির্দেশনা

  3. হুবহু মিলে যাওয়া স্ট্যাটিক কন্টেন্ট

    1. ভাষা কোড + দেশের কোড (উদাহরণস্বরূপ, fr_ca/ থেকে প্রাপ্ত বিষয়বস্তু)
      অর্ডারটি অনুরোধের Accept-Language হেডারে প্রতিটি ভাষার জন্য মানের মান অনুসরণ করে।

    2. শুধুমাত্র দেশের কোড (উদাহরণস্বরূপ, ALL_ca/ থেকে প্রাপ্ত সামগ্রী)

    3. শুধুমাত্র ভাষা কোড (উদাহরণস্বরূপ, fr/ অথবা es_ALL/ থেকে প্রাপ্ত সামগ্রী)
      অর্ডারটি অনুরোধের Accept-Language হেডারে প্রতিটি ভাষার জন্য মানের মান অনুসরণ করে।

    4. "ডিফল্ট" হুবহু মিলে যাওয়া স্ট্যাটিক কন্টেন্ট
      এটি এমন কন্টেন্ট যা "i18n কন্টেন্ট" ডিরেক্টরির বাইরে, যেমন public ডিরেক্টরির রুটে।

  4. কনফিগার করা পুনর্লিখন

  5. ৪০৪ হ্যান্ডলিং

    1. i18n ৪০৪ পৃষ্ঠা
      এটি হুবহু মিলে যাওয়া স্ট্যাটিক কন্টেন্টের জন্য উপরে তালিকাভুক্ত একই অগ্রাধিকার ক্রম অনুসরণ করে।

    2. কাস্টম 404 পৃষ্ঠা

    3. ডিফল্ট 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 নিম্নলিখিত ক্রমে একটি অনুরোধকৃত পৃষ্ঠার জন্য ডিরেক্টরিগুলি অনুসন্ধান করবে।

  1. public/localized-files/fr_ca/

  2. public/localized-files/en_ca/

  3. public/localized-files/ALL_ca/

  4. public/localized-files/fr_ALL/

  5. public/localized-files/fr/

  6. public/localized-files/en_ALL/

  7. public/localized-files/en/

  8. public/

  9. ৪০৪ হ্যান্ডলিং

ব্যবহারকারীকে কোন পৃষ্ঠাটি পরিবেশন করা হবে?

  • অনুরোধ করা পৃষ্ঠা: 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/ নামক সাবফোল্ডারগুলি সমতুল্য। তবে, যদি উভয় সাবফোল্ডারই বিদ্যমান থাকে, তাহলে Hosting fr/ কন্টেন্টের আগে 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";

ভাষা কুকি ওভাররাইডগুলি অবশ্যই পছন্দের ক্রম অনুসারে ভাষা কোডগুলির একটি কমা দ্বারা পৃথক তালিকা হতে হবে, সাবট্যাগ বা মানের মান ছাড়াই।

কুকি ওভাররাইড লগে প্রতিফলিত হয় না।