2013-08-19 8 views
6

परिदृश्यjQuery ब्राउज़र की भाषा का पता लगाने

मैं एक पेज बनाने की आवश्यकता में हूँ (क्लाइंट-साइड केवल) का पता लगाता है क्या भाषा ब्राउज़र का उपयोग कर और उस भाषा से संबंधित उपयुक्त वर्ग तत्व को प्रदर्शित करता है है, और खाल दूसरे।

अंग्रेजी डिफ़ॉल्ट भाषा होगी, इसलिए यदि सरणी में से कोई भी कक्ष मिलान नहीं होता है, तो यह प्रदर्शित होगा।

मैं navigator.language और navigator.userLanguage (IE) मान का उपयोग कर रहा हूं यह पता लगाने के लिए कि ब्राउज़र वर्तमान में किस भाषा का उपयोग कर रहा है।

मेरे पास वर्तमान में कुछ कोड है जो प्रगति पर है, लेकिन मुझे सभी संभावित संभावनाओं को शामिल करने का सर्वोत्तम तरीका सुनिश्चित नहीं है और फिर उन्हें सरणी का उपयोग करके चुनें।

देश के साथ एक से अधिक भाषा बंधे होने की संभावना भी है। उदाहरण के लिए अंग्रेजी के उदाहरण के रूप में कहें, en-us, en-uk आदि .. मैं इसे कैसे जोड़ूं?

कोड

एचटीएमएल

<ul class="text"> 
    <li class="en active">English: Some text in english</li> 
    <li class="fr">French: Some text in french</li> 
    <li class="de">German: Some text in german</li> 
    <li class="it">Italian: Some text in italian</li> 
    <li class="ja">Japanese: Some text in japanese</li> 
    <li class="es">Spanish: Some text in spanish</li> 
</ul> 

जे एस (WIP)

var userLang = navigator.language || navigator.userLanguage, 
    countries = ['fr', 'de', 'it', 'ja', 'es'], 
    languagues = ['fr', 'de', 'it', 'ja', 'es']; 

if (userLang === "fr") { 
    $('li').removeClass('active'); 
    $('.fr').addClass('active'); 
} 

उदाहरण

Fiddle

आपके समय के लिए धन्यवाद।


अद्यतन

पूर्ण समाधान है कि मेरे लिए काम किया प्रदान करने के लिए और अंत में भविष्य उपयोगकर्ताओं की मदद करने, मैं ऊपर से HTML का एक ही लेआउट का इस्तेमाल किया और putvande's jQuery solution के साथ संयुक्त।

Here is a working example

नोट: यह प्रभाव ब्राउज़र के लिए चुनी गई भाषा के आधार पर परिवर्तनों को ट्रिगर करता है। कैसे गूगल क्रोम में यह करने के लिए पर एक उदाहरण के रूप: सेटिंग के

  • जाओ - करने के लिए नीचे>
  • स्क्रॉल करें और क्लिक करें "उन्नत सेटिंग दिखाएं ..." ->
  • क्लिक करें "भाषा और इनपुट सेटिंग्स ... "->
  • फिर चुनें कि आप वांछित भाषा हैं, क्लिक करें और अपने ब्राउज़र को पुनरारंभ करें।

मुझे उम्मीद है कि इससे मदद मिलती है।

+0

क्लाइंट पक्ष पर अंतर्राष्ट्रीयकरण करने के लिए असामान्य। संभवतः सर्वर-साइड की बजाय इसकी आवश्यकता है? – Orbling

+0

@ ऑर्बलिंग, दुर्भाग्य से इस परिस्थिति के लिए हाँ। – Xareyo

+0

क्या आप AJAX या कुछ ऐसे के माध्यम से मांग पर लोड भाषा सेट नहीं प्राप्त कर सकते हैं? सीटू में सभी अनुवादों को आपके पास जितना अधिक होना होगा, जो कुछ तत्व प्रकारों के साथ दर्दनाक होगा। आप शायद चयनकर्ता के अलावा किसी भी तत्व पर एक सक्रिय वर्ग के बारे में चिंता करने के बजाय '.show()' का उपयोग कर सकते हैं। – Orbling

उत्तर

13

आप दो में navigator.language विभाजित कर सकते हैं और केवल पहले पैरामीटर (भाषा) का उपयोग करें और उपयोग करें कि li कि वर्ग है कि चयन करने के लिए:

var userLang = navigator.language || navigator.userLanguage; 

// Check if the li for the browsers language is available 
// and set active if it is available 
if($('.' + userLang.split('-')[0]).length) { 
    $('li').removeClass('active'); 
    $('.' + userLang.split('-')[0]).addClass('active'); 
} 

या आप भी li बदलते होने जा रहे हैं देश के अनुसार (उदाहरण के लिए यूएस और यूके अंग्रेजी)?

+1

अच्छी शुरुआत .. लेकिन मैं यह जांचने का सुझाव देता हूं कि भाषा मौजूद है या नहीं। –

+0

हाय, धन्यवाद यह अच्छी तरह से काम करता है। – Xareyo

+0

@GianpaoloDiNino क्यों? नेविगेटर। भाषा का उपयोग एमडीएन के अनुसार नहीं किया जाना चाहिए। यह वास्तविक लोकेल सेटिंग्स को प्रतिबिंबित नहीं करता है बल्कि पुराने ब्राउज़र संस्करणों में प्रयुक्त ब्राउज़र की भाषा को प्रतिबिंबित नहीं करता है। यह आजकल बदल गया है, लेकिन संगतता कारणों के लिए, इसे अंतिम विकल्प के रूप में उपयोग किया जाना चाहिए। – StanE

संबंधित मुद्दे