2013-01-14 16 views
10

मैं ऐसे उत्पाद पर काम करता हूं जहां हमें स्थानीयकरण के बारे में चिंता करने की ज़रूरत है। ,क्या स्थानीय तारों को प्रबंधित करने का कोई बेहतर तरीका है?

  1. खोजें resources.resx फ़ाइल
  2. तो पाया (जो आइटम के सैकड़ों है) तो नाम की प्रतिलिपि: वर्तमान में, इस जब मैं उपयोग करने के लिए (या जोड़ें) एक स्थानीय स्ट्रिंग है के लिए कार्यप्रवाह है। अन्यथा, एक नया स्ट्रिंग जोड़ सकते हैं और तब नाम
  3. कॉपी, ResourceFactory.ResourceMgr.GetString("MY_MAGIC_STRING") उपयोग करें (इसमें ResourceMgr एक संसाधनप्रबंधक करने के लिए सिर्फ एक स्थिर क्षेत्र है)

यह 3 चरणों वाली प्रक्रिया किसी भी तार के लिए एक असली दर्द है। क्या इस प्रक्रिया को आसान बनाने के लिए कोई पैटर्न या तरीके हैं?

+1

एक ही स्ट्रिंग का पुन: उपयोग करने के बारे में सावधान रहें, संदर्भ के आधार पर वाक्यांश/वाक्यों/शब्दों का अनुवाद अलग-अलग भाषाओं में किया जाना चाहिए। जैसे वाक्य के विषय के आधार पर स्लाव भाषा में क्रियाओं का संयोजन। पाठ्यक्रम के – svick

+0

@svick। हम आम तौर पर चीजों को एक साथ रखने की कोशिश करते हैं (विशेष रूप से स्ट्रिंग.फॉर्मैट स्टाइल स्ट्रिंग्स का उपयोग करके) और अनुवादकों को हमें बताएं कि हमें कुछ – Earlz

+0

बदलने की आवश्यकता है यदि यह एक साफ कोड चीज़ है या इसे तेजी से निष्पादित करता है? – Paparazzi

उत्तर

5

प्रत्येक व्यक्तिगत स्ट्रिंग तक पहुंच के साथ स्वत: जेनरेट की गई फ़ाइलों का उपयोग करना बहुत आसान है - RESX फ़ाइल के लिए "कस्टम टूल" सेट करें PublicResXFileCodeGenerator पर।

using MyProject.Resources; 
... 
localizedText = Resources.SomeReasonableName; 

साइड नोट:

कोड कैसा दिखेगा

  • स्वत: जनरेट आईडी के साथ-साथ कई RESX फ़ाइलों होने आप विकल्पों की उचित संख्या देने IntelliSense का अतिरिक्त लाभ है।
  • अनुवाद कैसे प्रबंधित किया जाता है इस पर निर्भर करता है कि आप बेहतर हो सकता है कि आप RESX फ़ाइल में डुप्लिकेट टेक्स्ट के बारे में चिंता न करें (शायद ठीक है/तारों को रद्द करें) को छोड़कर। अनुवाद समय पर डुप्लीकेट तारों से निपटना आसान हो सकता है।
+0

लेकिन यह केवल चरण 3 को थोड़ा बेहतर बना देगा, इसलिए यह सुधार का बड़ा नहीं है, नहीं? – svick

+1

@ एसविक, आपका कॉल। "थोड़ा सा" जैसा कि "संकलन समय बनाम रन-टाइम चेक" में है। इसके अलावा यदि तारों द्वारा फ़ाइलों में तारों का आयोजन किया जाता है तो आपको इंटेलिजेंस मिलता है कि उचित संख्या में विकल्पों के साथ, यदि सभी एक फ़ाइल में - इतना ज्यादा नहीं। लेकिन कम से कम आप रन-टाइम की बजाय संकलन समय त्रुटियों को प्राप्त करते हैं। –

0

इस जावा समाधान है कि आप कुछ विचार दे सकता है: http://rodionmoiseev.github.com/c10n/

विचार इंटरफ़ेस तरीकों पर टिप्पणियों का उपयोग करने, स्रोत कोड अपने आप में दुकान अनुवाद किया जा सके। फिर, एक विशेष उपयोगिता का उपयोग करके, आप गतिशील रूप से प्रॉक्सी (इंटरफ़ेस को गतिशील रूप से कार्यान्वित करने वाले वर्ग) बना सकते हैं जो इंटरफ़ेस विधि का आविष्कार करते समय स्थानीयकृत स्ट्रिंग मान वापस कर देंगे।

इस प्रकार, "MY_MAGIC_STRING" को MyMagicString() विधि पर कॉल के साथ प्रतिस्थापित किया गया है, जो आपको कुछ वर्तनी/प्रकार की सुरक्षा देता है और इसे अधिक रिफैक्टरिंग अनुकूल बनाता है।

+0

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

+0

पता था कि ऐसा होगा: एस आशा है कि यह अब थोड़ा और स्पष्ट है। – rodion

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