ভাষা শনাক্তকরণ: গতিশীল বহুভাষিক সমর্থন
এই নিবন্ধটি ব্যাখ্যা করে কিভাবে আমরা স্বয়ংক্রিয়ভাবে ব্যবহারকারীর পছন্দের ভাষা শনাক্ত করে সেই ভাষায় কন্টেন্ট পরিবেশন করি।
সমস্যা: বৈশ্বিক ব্যবহারকারী পরিবেশন
বিভিন্ন দেশ থেকে বিভিন্ন ভাষায় কথা বলা ব্যবহারকারীরা আসেন:
-
ভারত: হিন্দি, বাংলা, তামিল, তেলেগু, গুজরাটি, মারাঠি, কন্নড়, মালয়ালম, পাঞ্জাবি, উর্দু
-
ইউরোপ: জার্মান, ফরাসি, স্প্যানিশ, ইতালিয়ান, পর্তুগিজ, রাশিয়ান
-
এশিয়া: জাপানি, কোরিয়ান, চাইনিজ
আমাদের তাদের ভাষার পছন্দ শনাক্ত করে স্বয়ংক্রিয়ভাবে অনূদিত কন্টেন্ট পরিবেশন করতে হবে।
শনাক্তকরণ অগ্রাধিকার
আমরা ক্রমানুসারে একাধিক উৎস পরীক্ষা করি:
১. ইউআরএল প্যারামিটার (?lang=hi)
২. সেশন (প্রথম শনাক্তকরণের পরে সংরক্ষিত)
৩. কুকি (translation_lang বা lang)
৪. ব্রাউজার অ্যাকসেপ্ট-ল্যাঙ্গুয়েজ হেডার (ভবিষ্যতে)
৫. ডিফল্ট (ইংরেজি)
এই ক্রম কেন?
ইউআরএল প্যারামিটার প্রথম: স্পষ্ট ভাষা পরিবর্তনের অনুমতি দেয়
সেশন দ্বিতীয়: ব্রাউজিং সেশনের সময় স্থায়ী থাকে
কুকি তৃতীয়: সেশন জুড়ে স্থায়ী হয় (৩০ দিন)
ডিফল্ট শেষ: নতুন ব্যবহারকারীদের জন্য ফলব্যাক
বাস্তবায়ন
def get_locale():
# 1. Check URL parameter
lang_param = request.args.get("lang")
if lang_param in valid_langs:
return lang_param
# 2. Check session
if "translation_lang" in session:
return session["translation_lang"]
# 3. Check cookie
# ... (implementation details omitted)
ভাষা পরিবর্তন
ব্যবহারকারীরা ইউআরএলের মাধ্যমে ভাষা পরিবর্তন করতে পারেন:
/p/Treo-N100-8-256?lang=hi
এটি ট্রিগার করে:
১. সেশন সেট: session["translation_lang"] = "hi"
২. কুকি সেট: translation_lang=hi; Max-Age=2592000 (৩০ দিন)
৩. রিডাইরেক্ট: ইউআরএল থেকে lang প্যারামিটার সরান
সুবিধা: ভাষা নির্বাচনের পর পরিষ্কার ইউআরএল
সমর্থিত ভাষাসমূহ
আমরা ২০টি ভাষা সমর্থন করি:
ভারতীয় ভাষা (১০টি):
-
হিন্দি (hi)
-
বাংলা (bn)
-
তামিল (ta)
-
তেলেগু (te)
-
গুজরাটি (gu)
-
মারাঠি (mr)
-
কন্নড় (kn)
-
মালয়ালম (ml)
-
পাঞ্জাবি (pa)
-
উর্দু (ur)
ইউরোপীয় ভাষা (৭টি):
-
জার্মান (de)
-
ফরাসি (fr)
-
স্প্যানিশ (es)
-
ইতালিয়ান (it)
-
পর্তুগিজ (pt)
-
রাশিয়ান (ru)
এশীয় ভাষা (৩টি):
-
জাপানি (ja)
-
কোরিয়ান (ko)
-
চাইনিজ (zh)
কন্টেন্ট অনুবাদ
বিভিন্ন ধরনের কন্টেন্ট বিভিন্ন অনুবাদ পদ্ধতি ব্যবহার করে:
স্ট্যাটিক টেমপ্লেট (Flask-Babel)
নেভিগেশন, বাটন, লেবেল .po ফাইলের মাধ্যমে অনূদিত:
{{ _('Add to Cart') }} → "কার্টে যোগ করুন" (বাংলা)
গতিশীল কন্টেন্ট (TranslationManager)
পণ্যের নাম, বৈশিষ্ট্যগুলো ফ্রেজ টেবিলের মাধ্যমে অনূদিত:
"Mini PC" → "মিনি পিসি" (বাংলা)
দীর্ঘ কন্টেন্ট (DeepSeek AI)
পণ্যের বিবরণ, নিবন্ধসমূহ এআই-এর মাধ্যমে অনূদিত:
"Compact office computer..." → "কমপ্যাক্ট অফিস কম্পিউটার..." (বাংলা)
দেখুন: বিস্তারিত জানতে অনুবাদ ব্যবস্থা
আঞ্চলিক ফরম্যাটিং
ভাষা নির্বাচন ফরম্যাটিংকেও প্রভাবিত করে:
সংখ্যা ফরম্যাট
ইংরেজি: 1,234.56
ইউরোপীয়: 1.234,56 (বিপরীত সেপারেটর)
ভারতীয়: 1,23,456 (লাখ/কোটি গ্রুপিং)
তারিখ ফরম্যাট
ইংরেজি: Feb 18, 2026
ইউরোপীয়: 18.02.2026
ভারতীয়: 18/02/2026
মুদ্রা
ইংরেজি: ₹1,234
ইউরোপীয়: €1.234
আন্তর্জাতিক: $1,234
ভাষা নির্বাচক UI
ব্যবহারকারীরা ড্রপডাউনের মাধ্যমে ভাষা পরিবর্তন করতে পারেন:
অবস্থান: শীর্ষ নেভিগেশন বার
প্রদর্শন: পতাকা আইকন + ভাষার নাম
আচরণ: ?lang=<code> সহ পৃষ্ঠা রিলোড
এসইও বিবেচনা
ইউআরএল কাঠামো
আমরা একক ইউআরএল ব্যবহার করি সমস্ত ভাষার জন্য (কোন /hi/, /de/ উপসর্গ নেই):
সুবিধা: সহজ স্থাপত্য, ডুপ্লিকেট কন্টেন্ট সমস্যা নেই
ট্রেড-অফ: ভাষা প্রতি কম এসইও মান
Hreflang ট্যাগ
আমরা বিকল্প ভাষার লিঙ্ক যোগ করি:
<link rel="alternate" hreflang="en" href="https://www.thinvent.in/p/Treo-N100">
<link rel="alternate" hreflang="hi" href="https://www.thinvent.in/p/Treo-N100?lang=hi">
<link rel="alternate" hreflang="de" href="https://www.thinvent.in/p/Treo-N100?lang=de">
সুবিধা: গুগল জানে কোন ভাষার সংস্করণ দেখাতে হবে
ফলব্যাক কৌশল
যদি নির্বাচিত ভাষার জন্য অনুবাদ অনুপস্থিত থাকে:
১. ইংরেজি চেষ্টা করুন: বেশিরভাগ কন্টেন্টের ইংরেজি সংস্করণ আছে
২. মূল দেখান: কিছু না দেখানোর চেয়ে ভাল
৩. অনুবাদের জন্য সারিবদ্ধ করুন: ব্যাচ প্রক্রিয়াকরণের জন্য অনুবাদ সারিতে যোগ করুন
কর্মদক্ষতা
ক্যাশিং
অনুবাদ মেমরিতে ক্যাশ করা হয়:
ফ্রেজ টেবিল: শুরুতে একবার লোড হয়
এআই অনুবাদ: ডাটাবেজে ক্যাশ করা হয়
সুবিধা: অনুরোধ প্রতি কোন অনুবাদ ওভারহেড নেই
লেইজি লোডিং
অনুবাদ শুধুমাত্র প্রয়োজন হলে লোড হয়:
পণ্যের বিবরণ: পণ্য পৃষ্ঠা দেখার সময় লোড হয়
কোয়েরি পৃষ্ঠা কন্টেন্ট: কোয়েরি পৃষ্ঠা দেখার সময় লোড হয়
সুবিধা: দ্রুত প্রাথমিক পৃষ্ঠা লোড
তথ্যসূত্র
প্রযুক্তিগত ধারণা
-
Internationalization (i18n) - উইকিপিডিয়া
-
Content negotiation - উইকিপিডিয়া
লাইব্রেরি
-
Flask-Babel - টেমপ্লেট অনুবাদ
-
Babel - আন্তর্জাতিকীকরণ লাইব্রেরি
সম্পর্কিত নিবন্ধ
-
অনুবাদ ব্যবস্থা - তিন-প্রযুক্তি হাইব্রিড পদ্ধতি
-
কন্টেন্ট এআই জেনারেশন - DeepSeek অনুবাদ
সারসংক্ষেপ
ভাষা শনাক্তকরণ একটি অগ্রাধিকার ব্যবস্থা ব্যবহার করে:
শনাক্তকরণ ক্রম:
-
✅ ইউআরএল প্যারামিটার (
?lang=hi) -
✅ সেশন (ব্রাউজিংয়ের সময়)
-
✅ কুকি (৩০ দিন)
-
✅ ডিফল্ট (ইংরেজি)
সমর্থিত:
-
✅ ২০টি ভাষা (১০টি ভারতীয়, ৭টি ইউরোপীয়, ৩টি এশীয়)
-
✅ আঞ্চলিক ফরম্যাটিং (সংখ্যা, তারিখ, মুদ্রা)
-
✅ এসইও hreflang ট্যাগ
অনুবাদ পদ্ধতি:
-
✅ Flask-Babel (স্ট্যাটিক টেমপ্লেট)
-
✅ TranslationManager (পণ্যের নাম, বৈশিষ্ট্য)
-
✅ DeepSeek AI (বিবরণ, নিবন্ধ)
কর্মদক্ষতা:
-
✅ মেমরি ক্যাশিং
-
✅ লেইজি লোডিং
-
✅ এআই অনুবাদের জন্য ডাটাবেজ ক্যাশিং
এটি স্বয়ংক্রিয় ভাষা শনাক্তকরণ এবং নিরবিচ্ছিন্ন বহুভাষিক অভিজ্ঞতা সক্ষম করে।