সঠিক উপায়টি হ'ল সার্ভারে প্রেরিত HTTP স্বীকৃতি-ভাষা শিরোনাম। এটিতে ব্যবহারকারীরা তাদের ব্রাউজারটি পছন্দ করতে কনফিগার করেছেন এমন ভাষাগুলির অর্ডারযুক্ত, ভারিত তালিকা রয়েছে।
দুর্ভাগ্যক্রমে এই শিরোনামটি জাভাস্ক্রিপ্টের ভিতরে পড়ার জন্য উপলভ্য নয়; আপনি navigator.language
যা পেয়েছেন তা হ'ল যা আপনাকে জানায় যে ওয়েব ব্রাউজারের স্থানীয় রূপটি কী ইনস্টল করা হয়েছিল। এটি অগত্যা ব্যবহারকারীর পছন্দসই ভাষা (গুলি) হিসাবে একই জিনিস নয়। আই-এর পরিবর্তে আপনি systemLanguage
(ওএস ইনস্টল করা ভাষা), browserLanguage
(একই হিসাবে language
) এবং userLanguage
(ব্যবহারকারী কনফিগার করা ওএস অঞ্চল) পান যা এগুলি একইভাবে অপ্রয়োজনীয়।
যদি আমাকে এই বৈশিষ্ট্যগুলির মধ্যে চয়ন করতে হয় তবে আমি userLanguage
প্রথমে শুকিয়ে যাব language
এবং তার পরেই ফিরে যাব (যদি সেগুলি কোনও উপলভ্য ভাষার সাথে মেলে না) সেক্ষেত্রে browserLanguage
এবং অবশেষে systemLanguage
।
আপনি যদি নেটটিতে অন্য কোথাও একটি সার্ভার-সাইড স্ক্রিপ্ট রাখতে পারেন যা কেবল স্বীকার করুন-ভাষা শিরোনাম পড়ে এবং স্ট্রিংয়ের শিরোনামের মান সহ জাভাস্ক্রিপ্ট ফাইল হিসাবে এটি ফিরিয়ে আনে:
var acceptLanguage= 'en-gb,en;q=0.7,de;q=0.3';
তারপরে আপনি কোনও <স্ক্রিপ্ট src> অন্তর্ভুক্ত করতে পারেন যে এইচটিএমএলটিতে বাহ্যিক পরিষেবাটির দিকে নির্দেশ করে এবং ভাষা শিরোনামকে বিশ্লেষণ করতে জাভাস্ক্রিপ্ট ব্যবহার করতে পারেন। এটি করার জন্য আমি কোনও বিদ্যমান লাইব্রেরি কোড জানি না, যদিও স্বীকার করুন-ভাষা পার্সিং প্রায় সর্বদা সার্ভারের দিকে করা হয়।
আপনি যে কাজটি শেষ করেন না কেন অবশ্যই আপনার অবশ্যই একটি ব্যবহারকারী ওভাররাইডের প্রয়োজন কারণ এটি কিছু লোকের পক্ষে সর্বদা ভুল অনুমান করবে। ইউআরএলটিতে ভাষা সেটিংটি প্রায়শই সহজ (যেমন: http: //www.example.com/en/site বনাম http: //www.example.com/de/site), এবং ব্যবহারকারীকে ক্লিক করতে দিন দুজনের মধ্যে লিঙ্ক। কখনও কখনও আপনি উভয় ভাষার সংস্করণের জন্য একটি একক ইউআরএল চান, সেই ক্ষেত্রে আপনাকে কুকিগুলিতে সেটিংটি সংরক্ষণ করতে হবে তবে এটি ব্যবহারকারী এজেন্টদের কুকিজ এবং অনুসন্ধান ইঞ্জিনগুলির জন্য কোনও সমর্থন না দিয়ে বিভ্রান্ত করতে পারে।