भाषा पहचान: डायनामिक बहुभाषी सपोर्ट

यह लेख बताता है कि हम कैसे स्वचालित रूप से उपयोगकर्ता की पसंदीदा भाषा का पता लगाते हैं और सामग्री परोसते हैं।

समस्या: वैश्विक उपयोगकर्ताओं को सेवा देना

उपयोगकर्ता विभिन्न देशों से आते हैं और विभिन्न भाषाएं बोलते हैं:

  • भारत: हिंदी, बंगाली, तमिल, तेलुगु, गुजराती, मराठी, कन्नड़, मलयालम, पंजाबी, उर्दू

  • यूरोप: जर्मन, फ्रेंच, स्पेनिश, इतालवी, पुर्तगाली, रूसी

  • एशिया: जापानी, कोरियाई, चीनी

हमें उनकी भाषा प्राथमिकता का पता लगाना और स्वचालित रूप से अनुवादित सामग्री परोसने की आवश्यकता है।

पहचान प्राथमिकता

हम क्रम में कई स्रोतों की जांच करते हैं:

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 अनुवाद: डेटाबेस में कैश किए जाते हैं

लाभ: प्रति अनुरोध कोई अनुवाद ओवरहेड नहीं

लेज़ी लोडिंग

अनुवाद केवल आवश्यकता पड़ने पर लोड किए जाते हैं:

उत्पाद विवरण: उत्पाद पृष्ठ दृश्य पर लोड होते हैं

क्वेरी पृष्ठ सामग्री: क्वेरी पृष्ठ दृश्य पर लोड होती है

लाभ: तेज़ प्रारंभिक पृष्ठ लोड

संदर्भ

तकनीकी अवधारणाएं

लाइब्रेरीज़

  • Flask-Babel - टेम्प्लेट अनुवाद

  • Babel - अंतर्राष्ट्रीयकरण लाइब्रेरी

संबंधित लेख

सारांश

भाषा पहचान एक प्राथमिकता प्रणाली का उपयोग करती है:

पहचान क्रम:

  • ✅ URL पैरामीटर (?lang=hi)

  • ✅ सत्र (ब्राउज़िंग के दौरान)

  • ✅ कुकी (30 दिन)

  • ✅ डिफ़ॉल्ट (अंग्रेजी)

समर्थित:

  • ✅ 20 भाषाएं (10 भारतीय, 7 यूरोपीय, 3 एशियाई)

  • ✅ क्षेत्रीय फ़ॉर्मेटिंग (संख्या, तिथियाँ, मुद्रा)

  • ✅ SEO hreflang टैग

अनुवाद विधियाँ:

  • ✅ Flask-Babel (स्थिर टेम्प्लेट)

  • ✅ TranslationManager (उत्पाद नाम, विशेषताएँ)

  • ✅ DeepSeek AI (विवरण, लेख)

प्रदर्शन:

  • ✅ इन-मेमोरी कैशिंग

  • ✅ लेज़ी लोडिंग

  • ✅ AI अनुवाद के लिए डेटाबेस कैशिंग

यह स्वचालित भाषा पहचान और सहज बहुभाषी अनुभव को सक्षम बनाता है।


← दस्तावेज़ीकरण सूचकांक पर वापस जाएँ