2009-02-04 4 views
6

मेरे पास एक ऐसा ऐप है जो वैश्विक बाजार के लिए है और इसे स्थानीयकरण योग्य होना चाहिए। विकास के दौरान मुझे कुछ समस्याएं थीं कि जब मैंने अपना लोकेल बदल दिया तब भी मेरे उपग्रह असेंबली को कभी नहीं उठाया गया। कुछ शोध के बाद अब मैं समझता हूं कि यह क्यों है और कोड में CurrentUICulture सेट करके परीक्षण करने में सक्षम था और यह सत्यापित करता था कि चीजें अपेक्षित रूप से काम करती हैं।क्या मुझे अपने ऐप में डिफ़ॉल्ट रूप से Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture सेट करना चाहिए?

अब रिलीज के लिए ऐप को पैकेजिंग करने की बात आती है और मुझे यकीन नहीं है कि अगर मेरा ऐप शुरू होता है तो वर्तमान थ्रेड के लिए Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture सेट करना एक अच्छा विचार है। प्लस साइड पर मेरा ऐप क्षेत्रीय सेटिंग्स को बदलकर स्थानीयकरण योग्य होगा (यदि यह एक ऊपर की तरफ है), लेकिन मुझे चिंता है कि इस पर असुरक्षित डाउनसाइड्स हो सकते हैं। एक जो तुरंत दिमाग में झुकाता है वह यह है कि मैंने जो कुछ किया है वह मेरे धागे के लिए अच्छा और अच्छा है, यह मेरे ऐप द्वारा बनाए गए किसी भी थ्रेड के लिए लागू नहीं होगा (जो मैं यहां और आसपास पढ़ने से समझता हूं) मैंने उन पर मौजूदा यूआईसील्चर भी सेट किया है) या किसी भी घटक द्वारा बदतर जो मैं उपयोग करता हूं जो अपने स्वयं के धागे बना सकता है।

अन्य समस्याएं हो सकती हैं? क्या वर्तमान संस्कृतियों को मानक अभ्यास या कुछ ऐसा करने के लिए समान संस्कृतियों को स्थापित करना है?

मैं निर्णय लेने से पहले इस के ऊपर और नीचे जितनी अधिक जानकारी के साथ सशस्त्र होना चाहता हूं।

धन्यवाद

सैम

उत्तर

5

सैम, नहीं गड़बड़ इसके साथ जब तक आप वास्तव में आप क्या कर रहे हैं है।

मुझे लगता है कि हम यहां WinForms से बात कर रहे हैं। ढांचा प्रणाली से तर्कसंगत सर्वोत्तम सेटिंग्स को उठाता है (जैसा कि उपयोगकर्ता द्वारा कॉन्फ़िगर किया गया है)। आपके प्रश्न से यह केवल एक परीक्षण समस्या का अधिक हो सकता है। परीक्षण प्रयोजनों के लिए लोकेल चुनने के लिए #if DEBUG के बाद मैं नियमित रूप से कुछ कोड डालता हूं।

मेरा खुद का मामला बिंदु: मेरा लोकेल डच (nl-NL) है लेकिन मैं आमतौर पर विंडोज के अंग्रेज़ी संस्करण चलाता हूं। यदि आप CurrentUICulture को ओवरराइड करते हैं तो मुझे डच संस्करण (यदि उपलब्ध हो) मिलता है जो आमतौर पर ठीक है। लेकिन मुझे अनुभव से पता है कि कुछ नियंत्रण/ऐड-इन्स अंग्रेजी में रहेंगे (शोमेसेज बॉक्स और एसडीडी संवाद सहित)। संयोजन बदसूरत है।

लेकिन उस मामले पर भी विचार करें जब आप वर्तमान संस्कृति से मेल खाने वाले उपग्रह नहीं जोड़ते हैं। सिस्टम आपके प्रोग्राम में डिफ़ॉल्ट पर वापस आ जाएगा, जबकि उपयोगकर्ता यूआई संस्कृति बेहतर विकल्प हो सकती है। मैं सभी फॉलबैक नियमों को नहीं जानता लेकिन आपको शायद कुछ ऐसा मिल सकता है:

उपयोगकर्ता fr-FR विंडो पर fr-CA सेटिंग्स चलाता है। आपका प्रोग्राम एन-यूएस पर वापस आ जाता है, उपयोगकर्ता को सबसे अच्छा लगता है।

मेरी सलाह:

  • कुछ क्षेत्र परीक्षणों
  • अगर आप ओवरराइड में बनाऊं तो app.config में
+0

धन्यवाद, सभी उपयोगी जानकारी। मैं सिद्धांतों से सहमत हूं और सोचता हूं कि हम एक ऐसे दृष्टिकोण का उपयोग करेंगे जो विकल्प को टॉगलिंग को चालू और बंद करने की अनुमति देगा। –

2

पुराना सवाल एक स्विच का उपयोग करें, लेकिन एक से कुछ टिप्पणियां करना उपयोगकर्ता और डेवलपर:

  • मैं नार्वेजियन हूं, लेकिन मेरे पास एक कारण के लिए एक अंग्रेजी ओएस है। जब मैं नार्वेजियन में आवेदन करता हूं तो मुझे इससे नफरत है क्योंकि मेरी क्षेत्रीय सेटिंग्स नार्वेजियन हैं।
  • मैंने पहले Thread.CurrentThread.CurrentCulture का उपयोग किया है, और जब यह पहले अच्छा काम करता है ... तो अचानक आपके पास कुछ नया धागा बंद हो जाता है ... (काफी समय बिताया कि मुझे सही संख्या स्वरूपण क्यों मिला मेरा आवेदन, लेकिन उदाहरण के लिए मेरी रिपोर्ट में नहीं)
संबंधित मुद्दे

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