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

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

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

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

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

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

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

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

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

এখানে বিস্তারিত পদক্ষেপ আছে:

  1. আপনার স্থানীয় অ্যাপ ডিরেক্টরির 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 ডিরেক্টরি বা অন্যান্য সাবফোল্ডারগুলিতে অনুরূপ ফাইল থাকা দরকার নেই। আপনি এমন সামগ্রী তৈরি করতে পারেন যা সম্পূর্ণরূপে একটি ভাষা এবং/অথবা দেশের জন্য নির্দিষ্ট।

  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 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/ সাবফোল্ডার থেকে সামগ্রী পাবে কারণ Hosting 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/ সাবফোল্ডার থেকে বিষয়বস্তু পাবে কারণ Hosting ভাষা কোড es-419 কে es হিসাবে বিবেচনা করে।

    যাইহোক, es-419 এর ভাষা পছন্দের সাথে মার্কিন যুক্তরাষ্ট্রের একটি অনুরোধ es_ALL/ সাবফোল্ডার থেকে বিষয়বস্তু গ্রহণ করবে কারণ Hosting 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 পুনর্লিখন সেট আপ করেন, Hosting নিম্নলিখিত অগ্রাধিকার ক্রমের উপর ভিত্তি করে সামগ্রী পরিবেশন করে:

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

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

  3. অবিকল স্থির সামগ্রী

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

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

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

    4. "ডিফল্ট" সঠিক-মেলে স্ট্যাটিক কন্টেন্ট
      এটি এমন সামগ্রী যা "i18n বিষয়বস্তু" ডিরেক্টরির বাইরে, যেমন public ডিরেক্টরির মূলে।

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

  5. 404 হ্যান্ডলিং

    1. i18n 404 পৃষ্ঠা
      এটি সঠিক-ম্যাচ স্ট্যাটিক সামগ্রীর জন্য উপরে তালিকাভুক্ত একই অগ্রাধিকার ক্রম অনুসরণ করে।

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

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

  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. 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 ভাষার কোড অন্তর্ভুক্ত নয়, তাই Hosting es সাথে মেলে এমন "i18n সামগ্রী" অনুসন্ধান করবে না।

  • fr/ এবং fr_ALL/ নামক সাবফোল্ডারগুলি ব্যবহারকারীর দেশ এবং ভাষা পছন্দের দৃষ্টিকোণ থেকে সমতুল্য। যাইহোক, উভয় সাবফোল্ডার থাকলে, Hosting fr/ 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";

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

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