5 पॉइंट द्वारा GN⁺ 2025-05-20 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • IP-आधारित भाषा सेटिंग एक गलत धारणा पर आधारित सुविधा है
  • IP address केवल लोकेशन बताता है, यह उपयोगकर्ता की वास्तविक भाषा पसंद को नहीं दर्शाता
  • Accept-Language header भाषा वरीयताओं की जानकारी अधिक सटीक रूप से देता है
  • UI भाषा को विश्वसनीय संकेत यानी browser header के आधार पर सेट किया जाना चाहिए
  • उपयोगकर्ता की भाषा चुनने की स्वतंत्रता और अनुभव का सम्मान सबसे महत्वपूर्ण सिद्धांत है

IP से अनुमानित भाषा सेटिंग की सीमाएँ

  • आज भी IP geolocation (GeoIP) से उपयोग की भाषा तय करना गलत धारणा पर आधारित है
  • IP address केवल request location information देता है
  • यह उपयोगकर्ता वास्तव में कौन-सी भाषा पसंद करता है या समझता है, यह नहीं बता सकता
  • VPN, विदेश यात्रा, विदेश में रहना, एक से अधिक आधिकारिक भाषाओं वाले देश जैसी कई स्थितियों में यह अक्सर विफल होता है
  • यह तरीका स्मार्ट नहीं, बल्कि असुविधा और भ्रम पैदा करने वाला है

आधिकारिक भाषाओं की संख्या और वास्तविकता के बीच अंतर

  • देश और IP जानकारी का भाषा से 1:1 mapping नहीं होता
    • Belgium में 3, Switzerland में 4, India में 22, Canada में आधिकारिक रूप से 2 भाषाएँ हैं, और व्यवहार में यह एक बहुभाषी देश है
  • उपयोगकर्ता उस देश में रह सकता है, घूमने आया हो सकता है, या संयोग से उसका traffic उस देश से होकर गुज़र सकता है
  • सिर्फ देश की जानकारी के आधार पर एक ही UI भाषा जबरन दिखाना गलत व्यवहार है

खराब engineering का उदाहरण

  • गलत data पर निर्भर रहना आलसी development approach है
  • “बड़ी websites भी ऐसा करती हैं” यह सही बहाना नहीं है
  • अगर सटीक तरीके से नहीं कर सकते, तो कुछ भी न करना बेहतर है

Accept-Language header का महत्व

  • कई उपयोगकर्ता VPN इस्तेमाल करने आदि के कारण नई भाषा जबरन दिखाए जाने से असुविधा झेलते हैं
  • हर browser Accept-Language header भेजता है
    • उपयोगकर्ता की OS या browser settings के अनुसार भाषा वरीयताएँ तय होती हैं
    • उपयोगकर्ता चाहे तो इस value को सीधे सेट या बदल सकता है
    • उदाहरण: Accept-Language: en-US,en;q=0.9,de;q=0.8
  • यह header सटीक, मुफ्त और पहले से built-in जानकारी देता है, जिसके लिए license या अतिरिक्त maintenance की ज़रूरत नहीं होती

भाषा को सही तरीके से संभालने का तरीका

  • स्क्रीन resolution या color की तरह, भाषा भी उपयोगकर्ता के environment का सम्मान करे
  • जैसे किसी अंग्रेज़ी उपयोगकर्ता को फ्रांस में अंग्रेज़ी दिखे, ब्रुसेल्स में फ़्रेंच उपयोगकर्ता को डच दिखे, या हांगकांग VPN उपयोगकर्ता को चीनी दिखे — ऐसी गलत भाषा assignments बार-बार हो सकती हैं
  • इससे उपयोगकर्ता शिकायतें, सेवा छोड़ना, या UI में रास्ता खोजते-खोजते अस्थायी समाधान ढूँढने जैसी समस्याएँ पैदा होती हैं
  • ऐसी गलतियाँ इसलिए होती हैं क्योंकि अविश्वसनीय IP data को भाषा तय करने का आधार बना लिया जाता है

व्यावहारिक समाधान

  • Accept-Language पढ़ें
  • इस value का सम्मान करें
  • यदि उपयोगकर्ता चाहे, तो उसे सीधे भाषा बदलने की सुविधा दें (विकल्प को cookie या URL parameter में सहेजा जा सकता है)
  • GeoIP जानकारी का उपयोग केवल currency, shipping, legal requirements के लिए करें और भाषा पर लागू न करें

निष्कर्ष

  • अगर software इंसानों के लिए है, तो उपयोगकर्ता की पसंद का अनुमान नहीं लगाना चाहिए
  • या तो इसे सटीक रूप से लागू करें, या भाषा निर्धारित करने की सुविधा बिल्कुल न दें

1 टिप्पणियां

 
GN⁺ 2025-05-20
Hacker News राय
  • मुझे लगता है कि जो वेबसाइटें Accept-Language हेडर को नज़रअंदाज़ करती हैं, वे सच में बहुत परेशान करने वाली हैं। बहुभाषी वेबसाइटें अक्सर language switch button या language list तक को भी मौजूदा भाषा में अनुवाद कर देती हैं, जिससे भ्रम पैदा होता है। इस मामले में मुझे लगता है कि Wikipedia एक मानक उदाहरण है। Wikipedia एक स्पष्ट multilingual icon इस्तेमाल करता है, हर भाषा का नाम उसी भाषा में दिखाने वाली सूची देता है, और सबसे ऊपर recommended languages दिखाता है। भाषा को पहले से तय मानकर अनुमान नहीं लगाना चाहिए। Wikipedia जैसा तरीका मददगार है

    • जब search engine के ज़रिए किसी मनचाहे पेज पर पहुँचते हैं, और अचानक देश चुनने वाला modal popup आ जाता है, फिर उसे चुनते ही regional site के homepage पर जबरन redirect कर दिया जाता है, तो यह अनुभव मुझे नापसंद है। कुछ साइटों में close button (X) होता है, लेकिन कई में वह भी नहीं होता, जो और भी चिढ़ाता है

    • Wikipedia की language list ज़रूरी नहीं कि पूरी तरह "alphabetical order" में हो। उदाहरण के लिए कभी recommended languages में "中文", "Italiano" ऊपर आते हैं, और बाकी भाषाएँ शायद geography या script के आधार पर grouped लगती हैं। भले ही यह हर भाषा की सख्त alphabetical order न हो, Wikipedia localization अच्छी तरह करता है। अहम बात यह है कि जब भाषाओं के नाम उन्हीं भाषाओं में दिखाए जाते हैं, तब "सही" alphabetical order का विचार काफ़ी जटिल हो जाता है

    • Wikipedia उपयोगकर्ता द्वारा पहले चुनी गई भाषा को याद रखता है और उसे सबसे ऊपर दिखाता है। यही असली user experience है

    • मेरे साथ YouTube app में भाषा अचानक Amharic में बदल जाने का अनुभव हुआ है। Google support document में English button का ज़िक्र होता है, लेकिन मुझे Amharic नहीं आती, इसलिए वह निर्देश मेरे लिए बेकार थे। iPhone translation app भी इस भाषा को पहचान नहीं पाया। अगर सिर्फ़ एक universal multilingual icon होता, तो ऐसी स्थिति आसानी से सुलझ सकती थी

    • विडंबना यह है कि Universal Language Selector (U.S.L) भी आख़िरकार उपयोगकर्ता के IP-आधारित देश की जानकारी से ही recommended language तय करता है। यह तरीका अक्सर सटीक नहीं होता। U.S.L FAQ के मुताबिक, IP से origin country तय करके फिर प्रमुख language candidates सुझाए जाते हैं

  • मुझे ऐसे design से नफ़रत है जो मानकर चलते हैं कि हर कोई सिर्फ़ एक ही भाषा इस्तेमाल करता है। मैं चार भाषाओं में आराम से पढ़ सकता हूँ, और आम तौर पर translation की बजाय original language पसंद करता हूँ। IP-आधारित language prediction बहुत बार ग़लत निकलती है। मैंने अगर पहले से supported languages सेट की हैं, तो उनका सम्मान होना चाहिए। YouTube में automatic AI dubbing default रूप से लागू हो जाती है, और मुझे आधा सुनने के बाद वापस जाकर उसे बंद करना पड़ता है। इसमें ज़्यादा समय नहीं लगता, लेकिन यह सच में बहुत irritate करने वाला अनुभव है

    • YouTube AI dubbing की quality सच में बहुत ख़राब है। 5 मिनट बाद जाकर मुश्किल से समझ आया कि वीडियो की आवाज़ असल main audio थी। मुझे वीडियो title का translate होना भी पसंद नहीं। मैं अंग्रेज़ी में बोले गए वीडियो देख रहा हूँ, लेकिन title किसी अजीब दूसरी भाषा में दिखता है

    • Google में Spanish को preferred language सेट करने पर भी YouTube सब कुछ अपने आप English में translate कर देता है। मैं Spanish improve करने के लिए original content देखना चाहता हूँ, लेकिन YouTube इसे मुश्किल बना देता है

  • YouTube में वीडियो title को मेरी set language में automatically translate करने वाला feature बहुत परेशान करता है। मुझे English समझ आती है, तो बेवजह translation की ज़रूरत नहीं लगती

    • अगर मुझे किसी भाषा का लिखा हुआ समझ ही नहीं आता, तो शायद वह वीडियो मूल रूप से मेरे लिए था ही नहीं। ज़्यादातर international videos English में उपलब्ध होते हैं, इसलिए अगर creator चाहता तो शायद खुद उसका translation दे चुका होता। और video titles में context कम होता है, इसलिए उनका सही translation भी मुश्किल है। पहले एक Portuguese title "Vamos assistir uma conexão com o passado" वाले वीडियो का असली मतलब "Let's play A Link to the Past" निकला था, और English title समझने के लिए मुझे उसे फिर से translate करके अंदाज़ा लगाना पड़ा। ऐसा feature accessibility बढ़ा सकता है, लेकिन कम से कम इसे बंद करने का option तो होना ही चाहिए

    • YouTube algorithm शायद ऐसे features के इस्तेमाल को बढ़ावा देता हो, और content accessibility के नाम पर reward भी करता हो, लेकिन मुझे बदसूरत machine-translated Norwegian title की बजाय English title पसंद है। मेरे अनुभव में जब ऐसे machine-translated titles दिखते हैं, तो मैं उस channel को recommend न करने की सेटिंग कर देता हूँ

    • मेरा computer Germany का है लेकिन मैंने उसे English में set किया है। फिर भी YouTube मुझे machine-translated audio सुनाता है, या German videos/ads को अजीब ढंग से English में translate करके दिखाता है। यह सच में बहुत weird और awkward होता है

    • समस्या सिर्फ़ title तक सीमित नहीं है, audio tracks भी translate हो रहे हैं। जब कोई YouTuber जिसे मैं अक्सर देखता हूँ कई भाषाओं में fan-made audio tracks देता है, तो मुझे हर बार manually original language पर वापस जाना पड़ता है। Machine translation की वजह से language play और cultural nuances अक्सर ग़ायब हो जाते हैं। कभी-कभी language track बदलने के लिए वीडियो को शुरुआत तक वापस ले जाना पड़ता है, और browser extensions के साथ conflict भी होता है। अच्छा होता अगर ऐसे translations default न हों, बल्कि freely toggle करने वाला interface हो

    • अब Google, Kagi आदि में भी Reddit search results translate होकर आते हैं। मुझे लगा था कि मुझे मेरी भाषा में जवाब मिला है, लेकिन असल में वह machine-translated English post निकला

  • सबसे बढ़कर, किसी भी स्थिति में automatic translation को default नहीं बनाना चाहिए। सिर्फ़ उन भाषाओं की सूची साफ़-साफ़ दिखाना काफ़ी है जिनमें वास्तव में translation मौजूद है। Translation button तो browser में पहले से होता है, इसलिए उपयोगकर्ता चाहें तो खुद लगा सकते हैं। English मेरी पहली या दूसरी भाषा नहीं है, लेकिन मैं उसे अच्छी तरह पढ़ सकता हूँ। मुझे original English ढूँढने के लिए automatic translation के ढेर में button खोजने की मेहनत नहीं करनी चाहिए। दूसरी locales में यह समस्या इतनी कम दिखती है, लेकिन English के साथ यह बहुत ज़्यादा होती है। अगर machine translation का इस्तेमाल करना ही है, तो कम से कम उसे चलाकर देखना चाहिए कि इरादा और नतीजा मेल खाते हैं या नहीं

    • Reddit मुझे French में auto-translated content दिखाता है, लेकिन Reddit की अपनी style तो इंसान के लिए भी सही तरह से translate करना लगभग असंभव है। चाहे किसी को English बिल्कुल न आती हो, ऐसे automatic translations पढ़ने लायक नहीं होते। Original text देखने या भाषा बदलने का feature भी device या app के हिसाब से ढूँढना मुश्किल होता है, और ऊपर से Reddit बार-बार app install करने के लिए उकसाता रहता है

    • Machine translation पिछले कुछ सालों में इतनी बेहतर हुई है कि कभी-कभी native speakers भी समझ नहीं पाते कि यह अनुवाद है

  • मुझे सबसे ज़्यादा असुविधाजनक Google लगता है। Google मेरी पहचान, यात्रा की स्थिति, और preferred language (English) तक जानता है, फिर भी कुछ pages पर regional language दिखाता है। जैसे Google मेरी जानकारी tracking के लिए इस्तेमाल करता है, वैसे ही उसे user experience बेहतर करने के लिए भी इस्तेमाल करना चाहिए

    • मैं Catalan user हूँ, लेकिन Spanish कभी भी मेरे Google account या system/browser language में registered नहीं रही, फिर भी मुझे हमेशा Spanish मजबूरन दिखाई जाती है। मैं अमेरिका में रहता हूँ, लेकिन Catalan से जुड़ी searches में भी Spanish Wikipedia पहले दिखता है। Search engine का यह व्यवहार हमेशा ख़राब लगा है। यह मेरे बच्चों जैसे उन लोगों के लिए भी समस्या है जिन्हें Spanish नहीं आती, और उन Catalan-speaking regions के लिए भी जो Spain में नहीं हैं। ख़ास तौर पर Google Gemini तो Catalan content को risky मानकर conversation block कर देता है। पहले Google diversity के मामले में काफ़ी संवेदनशील था, लेकिन अब ऐसा नहीं लगता

    • हाल में Google map reviews जैसी जगहों पर local language को English में translate किए बिना सीधे दिखा देता है। शायद यह मानता है कि मैं उस देश में कुछ समय रहा हूँ, तो मुझे वह भाषा आती होगी, जबकि कई बार सच में English की ज़रूरत होती है। Search results में भी यही होता है। Local language का इस्तेमाल करने का मतलब सिर्फ़ स्थानीय जानकारी ढूँढना हो सकता है, लेकिन Google ऐसे user patterns को ठीक से reflect नहीं कर पाता

    • मैंने Google developer से इस पर सीधे बहस की थी। उसका कहना था कि Google main page पर double rendering process की वजह से अभी user info इस्तेमाल नहीं कर सकता, इसलिए language preference लागू नहीं होती। लेकिन Accept-Language हेडर तो initial request में पहले से शामिल होता है, इसलिए यह बात मुझे तर्कसंगत नहीं लगी

    • Google जानता है कि मैं UK में रहता हूँ और English इस्तेमाल करता हूँ। फिर भी जब मैं Spain के hotel TV पर login करके English YouTube videos देखता हूँ, तो वह मुझे Spanish ads दिखाता है। ऐसा लगता है कि Google जानते हुए भी कि मैं वह भाषा नहीं समझता, advertisers के लिए ऐसा कर रहा है

    • जैसे ही मैं नया device या browser इस्तेमाल करता हूँ, Google और उसकी services Hebrew में शुरू होती हैं। मैं हर बार उन्हें English में बदलता हूँ, लेकिन बार-बार यही करना पड़ता है। मैं Hebrew पढ़ सकता हूँ, फिर भी universal language के तौर पर English बेहतर लगती है

  • सभी browsers Accept-Language हेडर भेज सकते हैं ताकि user की preferred languages बताई जा सकें, और दिलचस्पी हो तो उपयोगकर्ता खुद इसे modify भी कर सकते हैं। लेकिन Accept-Language सब कुछ हल नहीं करता। वजह यह है कि बहुभाषी उपयोगकर्ताओं की प्राथमिकताएँ अक्सर absolute ranking की तरह नहीं बल्कि topic-specific होती हैं। उदाहरण के लिए, किसी को French अच्छी तरह आती हो, फिर भी वह English news का French translation नहीं चाहता होगा। Site operators को ज़बरदस्ती complex features बनाने की ज़रूरत नहीं है; साफ़ और तेज़ language switching interface काफ़ी है। Wikipedia यह काम अच्छे से करता है

    • वास्तव में Accept-Language जैसी सुविधाओं से भी ज़्यादा महत्वपूर्ण बात यह है कि आधे-अधूरे automatic translation की बजाय high-quality translation उपलब्ध हो। UI और first-party content के लिए official translations बनाए रखना अच्छा है, लेकिन user-generated content को automatic translation से नहीं, बल्कि browser translation button जैसी opt-in व्यवस्था से दिखाना चाहिए। Accept-Language से प्राथमिक भाषा चुनें, और साथ में साफ़ language switch option भी दें। Wikipedia के हर language version में content अलग-अलग site की तरह अलग से लिखा जाता है

    • Accept-Language में हर भाषा के लिए weight (q value) भी सेट किया जा सकता है। वेबसाइटों को यह सुविधा देनी चाहिए कि उपयोगकर्ता browser request language override कर सकें, और browsers को भी site-specific options देने चाहिए जैसे "site default", "system language", "request English" आदि। आदर्श रूप से वेबसाइट अपनी supported languages की सूची manifest.json जैसी जगह पर साफ़-साफ़ publish करे, और client side पर language selection handle हो

    • यह मान लेना कमज़ोर धारणा है कि उपयोगकर्ता व्यवहारिक रूप से सबसे आरामदायक भाषा के हिसाब से Accept-Language सेट करते हैं। ज़्यादातर साइटें Accept-Language को ठीक से support ही नहीं करतीं, इसलिए यह नहीं लगता कि उपयोगकर्ता यह setting किसी बड़ी रणनीति के तहत करते होंगे

  • मैंने government-related sites में multilingual और accessibility support के लिए Accept-Language आधारित default language selection system लागू किया था। लेकिन PM ने इस फैसले को नज़रअंदाज़ करके सिर्फ़ EN (English) को default पर फिक्स कर दिया। Accessibility auditor ने Accept-Language इस्तेमाल करने की माँग की, और जब उसे पता चला कि लागू किए गए सिस्टम को वापस पलट दिया गया है, तो उसने कड़ी आपत्ति जताई। आख़िरकार ऐसी बेतुकी चीज़ों की वजह से मुझे कुछ हफ़्ते और contract work मिला

  • मैं अपनी language complaint भी बताना चाहता हूँ। मेरे परिवार में कोई सिर्फ़ Japanese बोलता है। मेरे Apple account का country Finland है। मैं परिवार के साथ The Martian देखना चाहता था, लेकिन क्योंकि account country में supported languages के आधार पर ही audio tracks दिखाए जाते हैं, इसलिए Japanese dubbing चुनना संभव नहीं था। Apple account country तब नहीं बदला जा सकता जब सक्रिय Apple TV subscription हो। नतीजा यह हुआ कि परिवार साथ में फिल्म नहीं देख पाया

    • शायद यह regional licensing issue की वजह से होगा। संभव है कि वह dubbed language Finland में इस्तेमाल के लिए licensed न हो

    • Netflix में भी ऐसा ही हुआ था। Finland में Kim's Convenience देखने के लिए account language को English पर सेट करना पड़ता था। यहाँ तक कि English subtitles इस्तेमाल करने की स्थिति में भी, Finnish UI में उस content तक पहुँचना ही संभव नहीं था

  • मैंने Accept-Language के आधार पर accessibility के लिए सबसे नज़दीकी translation देने वाला system खुद बनाया था। जैसे अगर Portuguese (Portugal) उपलब्ध न हो तो Brazilian Portuguese अपने आप दे देना। तकनीकी रूप से यह अच्छी तरह काम करता था और इसे बनाना मज़ेदार भी था, लेकिन व्यवहार में ज़्यादातर users Accept-Language की परवाह किए बिना सिर्फ़ English चाहते थे। Language switch option footer में था, लेकिन काफ़ी visible नहीं था। इसलिए अब हमने सीधे भाषा पूछने का तरीका अपना लिया, और user satisfaction काफ़ी बढ़ गई

    • सीधे पूछने का मतलब क्या यह है कि जब भी cookie save न हो और मैं साइट पर आऊँ, तो हर बार language selection popup ज़रूर दिखे? ऐसे popups inconsistent होते हैं, और अगर सिर्फ़ X button भी हो तो गनीमत लगती है। 100 में से 95 बार जिस भाषा वाले link पर मैंने क्लिक किया है, वही मेरे लिए काफ़ी है। ज़रूरत हो तो top right या page footer में language selector दे देना ही बेहतर है। Popup या modal न हों तो अच्छा है

    • Accept-Language को default के रूप में रखना और साथ में user choice देना बेहतर है। Language switch design में icon हटाने के पक्ष में हूँ, लेकिन कई regions को एक ही भाषा में समेट देना थोड़ा निराशाजनक है

    • ज़्यादातर users OS की default language के साथ ही बने रहते हैं, उन्हें यह भी नहीं पता होता कि उसे बदलना कैसे है, और वे उसी के आदी हो जाते हैं

  • विदेश में यह समस्या सच में हास्यास्पद लगती है, और अपने देश में भी programming docs जैसे localized versions में content अलग होता है और translation quality कमज़ोर होती है। आदर्श रूप से मैं original English देखना चाहता हूँ। हाल में search results में भी machine-translated content बढ़ता जा रहा है। Reddit ने भी हाल ही में यही तरीका अपनाया है। मैं जब जानबूझकर English के अलावा किसी और भाषा में search करता हूँ, तो मेरा मकसद उसी भाषा की विशेष जानकारी पाना होता है

    • लगता है Reddit team ने feature बनाते समय यह मान लिया कि उपयोगकर्ता सिर्फ़ अपनी native language ही जानते हैं। दुनिया भर में लोग कई भाषाएँ समझते हैं, इसलिए ऐसा मानने की ज़रूरत नहीं है

    • MongoDB docs में language-based automatic switching की वजह से भी मैं गुस्सा हुआ था। Search results में पेज English में आता है, लेकिन खोलते ही JS उसे Brazilian Portuguese में बदल देता है। फिर पूरा load होने पर वह दोबारा English में लौट आता है, जबकि URL अभी भी /pt-br/ ही रहता है। ऊपर से translation quality साफ़ तौर पर automated लगती है। मैं Portugal Portuguese user हूँ, इसलिए ये बारीक अंतर मुझे और भी ज़्यादा खटकते हैं