.NET में CurrentInculture और CultureInfo के CurrentUICulture गुणों के बीच अंतर क्या है?


358

.NET CultureInfoमें System.Globalizationनाम स्थान में वर्ग है । इसके दो समान गुण हैं, दोनों CultureInfoप्रकार के मान लौटाते हैं : CurrentCultureऔर CurrentUICulture

उनके बीच क्या अंतर है?

मुझे कब और क्यों उपयोग करना चाहिए?


28
भालू-इन-माइंड कि Microsoft, उनकी बुद्धि में, US अंग्रेजी और (ब्रिटिश) अंग्रेजी या अन्य अंग्रेजी के UI संस्कृतियों को अलग नहीं करते हैं। अंग्रेजी के लिए कोई MUI नहीं है, जिसका अर्थ है कि CurrentUICultureहमेशा अंग्रेजी-भाषा की मशीन पर en-US होगा, चाहे CurrentCultureजो भी हो, जिसे क्षेत्रीय सेटिंग्स को स्थानीय बनाने के लिए सेट किया जा सकता है।
निकोडेमस 13

11
हाँ। मैं यूके में हूं और CurrentCulture'एन-जीबी' है, लेकिन CurrentUICulture'एन-यूएस' है।
कर्नल पैनिक

बस इस लेख को विस्तार से बताते हुए पाया गया: github.com/jbe2277/waf/wiki/CurrentCulture-vs.-CurrentUICulture
RinoTom

जवाबों:


346

CurrentCultureसिस्टम का डिफ़ॉल्ट उपयोगकर्ता स्थान का .NET प्रतिनिधित्व है। यह डिफ़ॉल्ट संख्या और दिनांक स्वरूपण और पसंद को नियंत्रित करता है।

CurrentUICulture डिफ़ॉल्ट उपयोगकर्ता इंटरफ़ेस भाषा, Windows 2000 में शुरू की गई सेटिंग को संदर्भित करता है। यह मुख्य रूप से आपके ऐप के UI स्थानीयकरण / अनुवाद भाग के बारे में है।

सिस्टम में जो भी क्षेत्रीय विकल्प कॉन्फ़िगर किए गए हैं वे आपके .NET ऐप में "करंट" मान होंगे।

अक्सर बार वे दोनों समान होते हैं। लेकिन मेरे सिस्टम पर वे भिन्न होंगे: मैं जर्मन प्रारूप में अपनी संख्या और दिनांक पसंद करता हूं, इसलिए CurrentCultureजर्मन होगा, लेकिन मैं अंग्रेजी में अपने सभी एप्लिकेशन भी पसंद करता हूं, इसलिए CurrentUICultureअंग्रेजी होगी।

इस विषय पर एक अच्छा लेख है: इसे सभी के आधार पर छाँटना: क्यों हम दोनों में करंटकल्चर और करंटीकल्चर है


5
वास्तव में यह गहराई से व्याख्या के लिए एक अच्छा विकल्प हो सकता है: फ़ोरम .asp.net
Michael12345

@ Michael12345 संकेत के लिए धन्यवाद। मैंने लिंक अपडेट किया है। आपके द्वारा लिंक की गई पोस्ट सभ्य होने के साथ-साथ बेहतर भी हो सकती है।
टॉमालक

5
वे भयानक नाम हैं, फिर, चूंकि CurrentUICulture वास्तव में CurrentLanguageCulture और CurrentCulture का अर्थ वास्तव में CurrentDataCulture है।
Pxtl

2
@Pxtl: मैं CurrentDataCulture के बजाय CurrentFormattingCulture का विकल्प चुनूंगा । फिर भी, ध्यान दें कि ये उतने स्पष्ट रूप से असंतुष्ट नहीं हो सकते हैं, जितना कि आपके नाम भी बताते हैं। उदाहरण के लिए, मैं लंबे समय के प्रारूप ( D) में कुछ "भाषा": en-USशुक्रवार ", 6 अप्रैल, 2018" ru-RUरिटर्न , जबकि "6 और 2018 ऑनलाइन" रिटर्न का तर्क दे सकता हूं ।
या मैपर

107

यह एक सरल ट्रिक है जिसका उपयोग मैं याद रखने के लिए करता हूं कि कौन सा उपयोग करना है:

(date, currency, double).tostring = CurrentCulture

resource.fr-CA.resx file = currentUICulture

यदि निकोडेमस 13 और कर्नल पैनिक की टिप्पणियों पर भरोसा किया जाए, तो ऐसा लगता है कि आपकी चाल का दूसरा भाग काम नहीं करना चाहिए।
या मैपर

15

साथी उपयोगकर्ताओं द्वारा की गई अच्छी व्याख्याओं के अलावा फर्क करने का एक अच्छा तरीका और वेब अनुप्रयोग विकास में एक महत्वपूर्ण पहलू निम्नलिखित है:

  • CurrentCultureवेब सर्वर की स्थापना का प्रतिनिधित्व करता है। उदाहरण के लिए, यदि आपका ASP.NET वेब अनुप्रयोग जर्मनी में होस्ट किया गया है, तो इसका मूल्य CutlureInfo.CurrentCultureसबसे अधिक होगा de-DE। इस प्रकार, प्रकारों के .ToString()लिए डिफ़ॉल्ट स्वरूपण IFormattableडिफ़ॉल्ट जर्मन स्वरूपणों का उपयोग करेगा, या जो सर्वर ओएस पर दोषों के रूप में स्थापित किए गए हैं।

  • CurrentUICultureउपयोगकर्ता एजेंट से कैप्चर किया जा सकता है, और वेबसाइट से कनेक्ट होने वाले क्लाइंट के उपयोगकर्ता इंटरफ़ेस संस्कृति का प्रतिनिधित्व कर सकता है। उदाहरण के लिए, यदि आप रूस से कि वेबसाइट को लोड, अपने स्थानीय सेटिंग्स रूसी भाषा का उपयोग करने के लिए सेट कर रहे हैं, और अपने उपयोगकर्ता एजेंट सर्वर (ओपेरा और IE स्वचालित रूप से ऐसा, क्रोम और Firefox के लिए यकीन नहीं) करने के लिए अपने स्थान सेटिंग्स भेजता है, CurrenUICultureहोगा प्रतिनिधित्व करते हैं ru-RU। यह किसी भी संसाधन का कारण होगा जैसे कि संसाधन प्रबंधक या ASP.NET aspx / ascx फ़ाइलों में स्थानीयकरण अभिव्यक्तियों के माध्यम से स्थानीयकृत स्ट्रिंग्स को रूसी में होना (यदि अनुवाद उपलब्ध हैं)।


13

अंतर:

  1. CurrentCultureCurrentUICultureभाषा / अनुवाद के साथ जाते समय दिनांक और मुद्रा के प्रारूपण के लिए है । इसका उपयोग ResourceManagerसंस्कृति द्वारा संसाधनों को देखने के लिए किया जाएगा ।
  2. के नाम स्थान CurrentCultureकक्षा में है System.Globalization, जबकि CurrentUICultureसे आता है System.Threading
  3. CurrentCultureसत्र में विभिन्न अनुरोधों पर बनी रहती है जबकि CurrentUICultureहर अनुरोध के साथ सेट होने की आवश्यकता होती है।

समानता:

वे दोनों System.Globalization.CultureInfoउदाहरण हैं।


8

यह ध्यान देने योग्य है कि CurrentUICultureगैर-देश विशिष्ट स्थानों जैसे 'एन' (तटस्थ संस्कृतियों) का समर्थन करता हैCurrentCulture का समर्थन करता है, केवल देश के विशिष्ट स्थानों जैसे 'एन-जीबी' का समर्थन करता है। CurrentCultureएक तटस्थ संस्कृति के लिए सेट एक फेंक देंगे ArgumentException

मेरा मानना ​​है कि ऐसा इसलिए है क्योंकि तिथियां और मुद्रा जैसे प्रारूप देश से ही अधिक मजबूती से जुड़े हैं, लेकिन प्रदर्शित भाषा अक्सर देशों के बीच विनिमेय होती है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.