भाषा पहचान: डायनामिक बहुभाषी सपोर्ट
यह लेख बताता है कि हम कैसे स्वचालित रूप से उपयोगकर्ता की पसंदीदा भाषा का पता लगाते हैं और सामग्री परोसते हैं।
समस्या: वैश्विक उपयोगकर्ताओं को सेवा देना
उपयोगकर्ता विभिन्न देशों से आते हैं और विभिन्न भाषाएं बोलते हैं:
-
भारत: हिंदी, बंगाली, तमिल, तेलुगु, गुजराती, मराठी, कन्नड़, मलयालम, पंजाबी, उर्दू
-
यूरोप: जर्मन, फ्रेंच, स्पेनिश, इतालवी, पुर्तगाली, रूसी
-
एशिया: जापानी, कोरियाई, चीनी
हमें उनकी भाषा प्राथमिकता का पता लगाना और स्वचालित रूप से अनुवादित सामग्री परोसने की आवश्यकता है।
पहचान प्राथमिकता
हम क्रम में कई स्रोतों की जांच करते हैं:
1. URL पैरामीटर (?lang=hi)
2. सत्र (पहली पहचान के बाद संग्रहीत)
3. कुकी (translation_lang या lang)
4. ब्राउज़र Accept-Language हेडर (भविष्य में)
5. डिफ़ॉल्ट (अंग्रेजी)
यह क्रम क्यों?
URL पैरामीटर पहले: स्पष्ट भाषा स्विचिंग की अनुमति देता है
सत्र दूसरा: ब्राउज़िंग सत्र के दौरान बना रहता है
कुकी तीसरा: सत्रों में बना रहता है (30 दिन)
डिफ़ॉल्ट अंतिम: नए उपयोगकर्ताओं के लिए फॉलबैक
कार्यान्वयन
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)
भाषा स्विचिंग
उपयोगकर्ता URL के माध्यम से भाषा बदल सकते हैं:
/p/Treo-N100-8-256?lang=hi
यह ट्रिगर करता है:
1. सत्र सेट करें: session["translation_lang"] = "hi"
2. कुकी सेट करें: translation_lang=hi; Max-Age=2592000 (30 दिन)
3. रीडायरेक्ट: URL से lang पैरामीटर हटाएं
लाभ: भाषा चयन के बाद साफ URL
समर्थित भाषाएं
हम 20 भाषाओं का समर्थन करते हैं:
भारतीय भाषाएं (10):
-
हिंदी (hi)
-
बंगाली (bn)
-
तमिल (ta)
-
तेलुगु (te)
-
गुजराती (gu)
-
मराठी (mr)
-
कन्नड़ (kn)
-
मलयालम (ml)
-
पंजाबी (pa)
-
उर्दू (ur)
यूरोपीय भाषाएं (7):
-
जर्मन (de)
-
फ्रेंच (fr)
-
स्पेनिश (es)
-
इतालवी (it)
-
पुर्तगाली (pt)
-
रूसी (ru)
एशियाई भाषाएं (3):
-
जापानी (ja)
-
कोरियाई (ko)
-
चीनी (zh)
सामग्री अनुवाद
विभिन्न सामग्री प्रकार विभिन्न अनुवाद विधियों का उपयोग करते हैं:
स्थिर टेम्प्लेट (Flask-Babel)
नेविगेशन, बटन, लेबल .po फ़ाइलों के माध्यम से अनुवादित:
{{ _('Add to Cart') }} → "कार्ट में जोड़ें" (Hindi)
गतिशील सामग्री (TranslationManager)
उत्पाद नाम, विशेषताएँ वाक्यांश तालिकाओं के माध्यम से अनुवादित:
"Mini PC" → "मिनी पीसी" (Hindi)
लंबी सामग्री (DeepSeek AI)
उत्पाद विवरण, लेख AI के माध्यम से अनुवादित:
"Compact office computer..." → "कॉम्पैक्ट ऑफिस कंप्यूटर..." (Hindi)
देखें: विवरण के लिए अनुवाद प्रणाली
क्षेत्रीय फ़ॉर्मेटिंग
भाषा चयन फ़ॉर्मेटिंग को भी प्रभावित करता है:
संख्या प्रारूप
अंग्रेजी: 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> के साथ पृष्ठ पुनः लोड करें
SEO विचार
URL संरचना
हम सभी भाषाओं के लिए एकल URL का उपयोग करते हैं (कोई /hi/, /de/ उपसर्ग नहीं):
लाभ: सरल आर्किटेक्चर, डुप्लिकेट सामग्री के मुद्दे नहीं
समझौता: प्रति भाषा कम SEO मूल्य
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">
लाभ: Google जानता है कि कौन सा भाषा संस्करण दिखाना है
फॉलबैक रणनीति
यदि चयनित भाषा के लिए अनुवाद गायब है:
1. अंग्रेजी आज़माएं: अधिकांश सामग्री में अंग्रेजी संस्करण है
2. मूल दिखाएं: कुछ नहीं से बेहतर
3. अनुवाद के लिए कतारबद्ध करें: बैच प्रसंस्करण के लिए अनुवाद कतार में जोड़ें
प्रदर्शन
कैशिंग
अनुवाद मेमोरी में कैश किए जाते हैं:
वाक्यांश तालिकाएं: स्टार्टअप पर एक बार लोड होती हैं
AI अनुवाद: डेटाबेस में कैश किए जाते हैं
लाभ: प्रति अनुरोध कोई अनुवाद ओवरहेड नहीं
लेज़ी लोडिंग
अनुवाद केवल आवश्यकता पड़ने पर लोड किए जाते हैं:
उत्पाद विवरण: उत्पाद पृष्ठ दृश्य पर लोड होते हैं
क्वेरी पृष्ठ सामग्री: क्वेरी पृष्ठ दृश्य पर लोड होती है
लाभ: तेज़ प्रारंभिक पृष्ठ लोड
संदर्भ
तकनीकी अवधारणाएं
-
अंतर्राष्ट्रीयकरण (i18n) - विकिपीडिया
-
सामग्री वार्ता - विकिपीडिया
लाइब्रेरीज़
-
Flask-Babel - टेम्प्लेट अनुवाद
-
Babel - अंतर्राष्ट्रीयकरण लाइब्रेरी
संबंधित लेख
-
अनुवाद प्रणाली - तीन-प्रौद्योगिकी संकर दृष्टिकोण
-
सामग्री AI जनरेशन - DeepSeek अनुवाद
सारांश
भाषा पहचान एक प्राथमिकता प्रणाली का उपयोग करती है:
पहचान क्रम:
-
✅ URL पैरामीटर (
?lang=hi) -
✅ सत्र (ब्राउज़िंग के दौरान)
-
✅ कुकी (30 दिन)
-
✅ डिफ़ॉल्ट (अंग्रेजी)
समर्थित:
-
✅ 20 भाषाएं (10 भारतीय, 7 यूरोपीय, 3 एशियाई)
-
✅ क्षेत्रीय फ़ॉर्मेटिंग (संख्या, तिथियाँ, मुद्रा)
-
✅ SEO hreflang टैग
अनुवाद विधियाँ:
-
✅ Flask-Babel (स्थिर टेम्प्लेट)
-
✅ TranslationManager (उत्पाद नाम, विशेषताएँ)
-
✅ DeepSeek AI (विवरण, लेख)
प्रदर्शन:
-
✅ इन-मेमोरी कैशिंग
-
✅ लेज़ी लोडिंग
-
✅ AI अनुवाद के लिए डेटाबेस कैशिंग
यह स्वचालित भाषा पहचान और सहज बहुभाषी अनुभव को सक्षम बनाता है।