2009-04-06 11 views
32

में अंग्रेजी भाषा अपवादों को मजबूर करना एएसपी.नेट एमवीसी के साथ काम करते समय, मैंने देखा है कि मेरे सिस्टम पर स्थापित .NET ढांचे द्वारा जारी अपवाद संदेश जर्मन में हैं। मैं वास्तव में अंग्रेजी संदेश पसंद करूंगा, इसलिए मैं उन्हें SO पर पोस्ट कर सकता हूं।.NET Framework

मुझे पता है कि एसओ पर पहले यह पूछा गया है, लेकिन अजीब बात यह है कि मेरे मामले में सुझाए गए कामकाज में से कोई भी काम नहीं करता है। मैं पहले से ही निम्नलिखित की कोशिश की है:

  • एक अंग्रेजी स्थान के लिए मेरे Windows प्रणाली स्विचिंग और पुन: प्रारंभ दृश्य स्टूडियो
  • सेटिंग उपकरण -> विकल्प -> पर्यावरण -> अंतर्राष्ट्रीय सेटिंग -> भाषा के लिए "अंग्रेजी"
  • अपवाद को फेंकने से ठीक पहले अंग्रेजी में थ्रेड लोकेल को सेट किया गया है:

    थ्रेड। कंटेंट थ्रेड। कंटेंटकल्चर = संस्कृतिइंफो। क्रिएटस्पेसिटीकल्चर ("एन-यूएस"); थ्रेड। CurrentThread.CurrentUICulture = नई संस्कृतिइन्फो ("एन-यूएस");

    // मेरी दोषपूर्ण विधि कॉल ...

तो, मैं नेट ढांचे मुद्दा अंग्रेजी भाषा अपवाद संदेशों बना सकते हैं? और क्या कोई ऐसा दृष्टिकोण है जो प्रति-समाधान या यहां तक ​​कि सिस्टम-व्यापी आधार पर करता है?

संपादित करें: अपवाद को मेरे यूनिट परीक्षणों को उत्तेजित करते समय फेंक दिया गया है। मुझे यकीन नहीं है कि थ्रेड की संस्कृति को प्रभावित करने का यही कारण नहीं है।

+0

आप Windows विकल्प कॉन्फ़िगर कर रहे हैं, तो आप दृश्य स्टूडियो को पुनः आरंभ करने की आवश्यकता हो सकती। क्या आपने कोशिश की है? अन्यथा, यह मुद्दा वास्तव में अजीब लग जाएगा। – Noldorin

+0

हां, मैंने लोकेल सेट करने के बाद वीएस को फिर से रखा है। –

+0

संभवतः डुप्लिकेट [सी # - अंग्रेजी में अपवाद संदेश?] (Http://stackoverflow.com/questions/209133/c-sharp-exception-messages-in-english) –

उत्तर

9

जैसा कि मैंने अभी पाया, समस्या वास्तव में एक अलग परीक्षण परियोजना होने से संबंधित थी। जबकि मैंने अपनी वास्तविक परियोजना में यूआई भाषा को अंग्रेजी में सेट करने का प्रयास किया है, मैंने परीक्षण प्रोजेक्ट में ऐसा नहीं किया है, यही कारण है कि परीक्षण परिणामों को देखते समय अपवाद संदेश जर्मन में थे।

अपवाद को फेंकने से पहले परीक्षण विधि में यूआई भाषा सेट करना मेरे लिए चाल है।

+0

आप डीबगिंग के दौरान ट्रेस पॉइंट में यूआई भाषा सेट कर सकते हैं, इसलिए निष्पादन बिना रुकावट के जारी रख सकता है (उन अपवादों के लिए जो हमेशा प्रकट नहीं होते हैं)। उस लाइन पर ब्रेकपॉइंट सेट करें जिसे आप अपवाद को फेंकने की उम्मीद करते हैं, और इसे "प्रिंट" करें: '{System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo (" en-us ");} ' –

1

क्या आपने अपवाद टेक्स्ट पढ़ने से पहले संस्कृति को स्विच करने का प्रयास किया है? ऐसा हो सकता है कि स्थानीयकरण तब होता है जब आप संदेश तक पहुंचते हैं - जैसा कि अपवाद ऑब्जेक्ट बनाया गया है।

+0

अच्छा बिंदु। मेरे मामले में, इकाई परीक्षण निष्पादित करते समय अपवाद फेंक दिया जाता है। मुझे यकीन नहीं है कि अपवाद पाठ इस मामले में एक अलग धागा पढ़ा गया है या नहीं। –

+0

क्या आप "स्ट्रिंग संदेश = ex.Message" कोड (या जो भी आपके पास है) से पहले वर्तमान थ्रेड यूआई संस्कृति को तत्काल सेट करने का प्रयास कर सकते हैं? – dommer

+0

संदेश परीक्षण धावक द्वारा पढ़ा गया था। अपवाद फेंकने से ठीक पहले इकाई परीक्षण विधि में यूआई भाषा सेट करना चाल था। –

7

क्या आपने यूआई संस्कृति को web.config में "en" पर सेट करने का प्रयास किया है? अधिक जानकारी here

3

स्पष्ट रूप से सभी ढांचे के अपवाद संदेश स्थापित ओएस भाषा से बंधे हैं। तो जब तक आप विंडोज़ का अंग्रेजी संस्करण स्थापित नहीं करते हैं। नेट फ्रेमवर्क अपवाद अंग्रेजी में नहीं दिखाई देंगे। हालांकि यह अजीब लगता है कि "एन-यूएस" में CurrentUICulture को स्थापित करने में मदद नहीं मिलती है, मैंने इस तरह के वर्कअराउंड हैक का उपयोग अपने डच विंडोज ओएस पर अंग्रेजी संदेश रखने के लिए किया था।

9

स्थापना रद्द करें जर्मन भाषा पैक के लिए कनेक्ट पर इस बात के लिए समाधान, वोट मौजूद नहीं है: - नियंत्रण कक्ष - कार्यक्रम और कार्य -

प्रारंभ माइक्रोसॉफ्ट ।नेट फ्रेमवर्क (4 क्लाइंट प्रोफाइल) भाषा पैक डीईयू - अनइंस्टॉल (Deinstallieren)

आपको वहां मिले .NET Framework के प्रत्येक संस्करण के लिए अनइंस्टॉलेशन दोहराने की आवश्यकता हो सकती है।

+0

डाउनवोट क्यों? – tomsv

+0

सहमत हुए। येह काम का है; यह ओपी: एस को एक (थोड़ा अलग) तरीके से हल करता है, और यह निश्चित रूप से हमारे बाकी के लिए उपयोगी है। मैंने आपको क्षतिपूर्ति करने के लिए उकसाया। :) –

+3

विंडोज पैक 8 और उससे ऊपर में भाषा पैक का उपयोग नहीं किया जाता है .नेट ओएस की भाषा का उपयोग करता है –

2

मैं web.config में निम्न परिवर्तन की कोशिश की है और यह मदद की:

<system.web> 
    <globalization uiCulture="en-US" culture="en-US" /> 
...