2010-07-19 17 views
12

मैं एक बहुभाषी कार्यक्रम सी # में Windowsभाषा बदलें सी # में

पर विकसित कर रहा हूँ

कुछ कार्रवाई पर Windows लेखन भाषा बदलने के लिए कैसे ...
उदा फोकस घटना पर अंग्रेजी से अरबी में बदलने के लिए।

धन्यवाद

+0

ये समान पद कुछ प्रकाश डाला सकता है http://stackoverflow.com/questions/397356/विकसित-बहुभाषी-विंडोज़-अनुप्रयोग-सी http://stackoverflow.com/questions/270829/internationalizing-desktop-app-within-a-couple-years-what-should-we-do-now चीयर्स! – CoderHawk

उत्तर

11

एक पूरी नई संस्कृति का चयन करने के लिए, CurrentThread.CurrentCulture को एक नई संस्कृति में सेट करें, उदा। फ्रेंच करने के लिए सेट करने के लिए:

System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("fr-FR"); 
System.Threading.Thread.CurrentThread.CurrentCulture = ci; 

आप पूर्वनिर्धारित CultureInfo नाम here और here की एक सूची पा सकते हैं।

यदि आप डिफ़ॉल्ट संस्कृति के कुछ पहलुओं को बदलना चाहते हैं, तो आप वर्तमान धागे की संस्कृति को पकड़ सकते हैं, इसे एक नया संस्कृतिइन्फो उदाहरण बनाने के लिए इसका नाम इस्तेमाल कर सकते हैं और कुछ बदलावों के साथ थ्रेड की नई संस्कृति सेट कर सकते हैं, उदा। 'यूरो' प्रतीक का उपयोग करने के वर्तमान संस्कृति को बदलने के लिए:

System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo(System.Threading.Thread.CurrentThread.CurrentCulture.Name); 
ci.NumberFormat.CurrencySymbol = "€"; 
System.Threading.Thread.CurrentThread.CurrentCulture = ci; 
+1

कुछ स्थितियों के लिए सिस्टम को सेट करना भी आवश्यक है। थ्रेडिंग। थ्रेड। कंटेंट थ्रेड। कंटेंट यूआईसील्चर। (संपत्ति नाम के बीच में "यूआई" पर ध्यान दें।) – RenniePet

+0

इस लिंक में कोड हैं http://www.lingoes.net/en/translator/langcode.htm – barlop

3
Thread.CurrentThread.CurrentCulture = yournewculture; 

इसके अलावा CurrentUICulture संपत्ति देखते हैं।

+0

क्या आप कृपया बता सकते हैं कि "yournewculture" कैसे प्राप्त करें – Betamoo

+0

मुझे लगता है कि डॉहेर्बी ने इसे पहले ही किया है :) – leppie

1

इसके अलावा, अगर आप रनटाइम पर सभी नियंत्रण के संसाधनों को ताज़ा करना चाहते हैं, तो आप कुछ इस तरह का उपयोग करने की आवश्यकता होगी:

private void RefreshResources(Control ctrl, ComponentResourceManager res) 
{ 
    ctrl.SuspendLayout(); 
    res.ApplyResources(ctrl, ctrl.Name, CurrentLocale); 
    foreach (Control control in ctrl.Controls) 
     RefreshResources(control, res); // recursion 
    ctrl.ResumeLayout(false); 
} 

यदि आप एक बेहतर उदाहरण चाहते हैं तो my blog देखें।

1

यह बयान मेरे लिए मददगार थे:

string myLanguage = "HE-IL"; 
InputLanguage.CurrentInputLanguage = 
    InputLanguage.FromCulture(new System.Globalization.CultureInfo(myLanguage)); 
+0

यह भी बहुत अच्छा है, उस पंक्ति में संशोधन कर सकते हैं, कर सकते हैं यह किसी भी देश के लिए http://www.lingoes.net/en/translator/langcode.htm – barlop

3

लोड घटना में नीचे दिए गए कोड सम्मिलित करें:

InputLanguage.CurrentInputLanguage = 
     InputLanguage.FromCulture(new System.Globalization.CultureInfo("fa-IR")); 
संबंधित मुद्दे