2011-02-08 14 views
5

मैंने एक WPF परीक्षण प्रोजेक्ट बनाया, एकल विंडो जिसमें एक बटन है। मैंने फिर परियोजना को उतार दिया और निम्नलिखित <UICulture>en-US</UICulture> रखने के लिए csproj को संशोधित किया। बिल्ड फ़ोल्डर के पुनर्निर्माण के बाद अब एन-यूएस नामक सबफ़ोल्डर शामिल है और इसमें WpfLocalizationTest.resources.dll नामक एक फ़ाइल है। अब तक सभी स्पष्ट है।लोकबाम कैसे काम करता है?

तब मैं Locbaml के लिए स्रोत कोड डाउनलोड किया है और इसे बनाया। (कहीं भी एक द्विआधारी डाउनलोड नहीं मिल सका, आंकड़ा जाना।)

तब मैं en-US फ़ोल्डर में Locbaml.exe की नकल की और निम्नलिखित की कोशिश की।

locbaml /parse WpfLocalizationTest.resources.dll /out:test.csv 

यह एक त्रुटि में परिणाम है 'फ़ाइल या विधानसभा WpfLocalizationTest.resources.dll या उसके निर्भरता से एक लोड नहीं कर सका। एक गलत प्रारूप के साथ एक प्रोग्राम लोड करने के लिए एक प्रयास किया गया था। '

obj \ 86 \ डीबग फ़ोल्डर में एक फ़ाइल WpfLocalizationTest.g.en-US.resources कहा जाता है। मैंने उस पर locbaml चलाने की कोशिश की, लेकिन परिणाम वही था।

कैसे locbaml माना जाता है प्रयोग की जाने वाली? एमएसडीएन कॉकमामी नमूने से भरा है, इनमें से कोई भी काम नहीं है। क्या लोकबाम वास्तव में माइक्रोसॉफ्ट डब्ल्यूपीएफ ऐप्स को स्थानीयकृत करने का इरादा रखता है? या वे नौकरी के लिए उचित उपकरण के साथ आए हैं?

उत्तर

3

मैं मैं Stackoverflow पर यहाँ एक और लिंक मिल गया खोज करने के लिए जारी है। संकलित त्रुटियां जिन्हें हम मूल रूप से प्राप्त कर रहे थे, पुरानी लोकबाम परियोजना से संबंधित थे जिन्हें .Net4.0 के लिए सेट नहीं किया गया था। यही कारण है कि मैं डीएलएल से टीएचएस सीएसवी उत्पन्न करने में असमर्थ था और उसे सीधे संसाधन फ़ाइल में जाना पड़ा। अधिक ब्योरे के लिए इस लिंक को फ़ॉलो करें। Locbaml localization of .net wpf4 application

यह लिंक .NET 4 बाइनरी के लिए एक लिंक प्रदान करता है जो एक बार संकलित किए जाने पर आपको लोकलैम का उपयोग करके सीएसवी उत्पन्न करने के लिए सीधे डीएल पर जाने की अनुमति देता है।

+1

randyc - LocBaml .NET 4 के लिए अद्यतन वास्तव में काम करता है। यह लिंक के लिए है। मुझे अभी भी लगता है कि एमएस डब्ल्यूपीएफ टीम पूरी तरह से खो गई है जब तक डब्ल्यूपीएफ स्थानीयकरण का संबंध है। – Rubio

1

बस एक अपडेट मैंने आज सुबह अपने नोट खींचा। उम्मीद है कि यह आपको थोड़ा और आगे लाने में मदद करेगा।

एक बार परियोजना संकलित किया गया है परियोजना निर्देशिका जहां निर्माण तैयार की गई है करने के लिए LocBaml.exe कॉपी: मेरे उदाहरण में मैं ई पर फ़ाइल की प्रतिलिपि: \ localiztion_sample \ localiztion_sample \ obj \ 86 \ रिलीज

यह मुश्किल हिस्सा है कि निर्माण में बिन निर्देशिका (टेलीरिक नियंत्रण और अन्य असेंबली) से सभी डीएलएल फाइलें नहीं थीं। नतीजतन मैं बिन \ रिलीज \ गया और सभी डीएलएल और संसाधन फ़ाइलों को वहां से obj \ x86 \ रिलीज निर्देशिका में कॉपी किया। उन फ़ाइलों के लिए जहां मुझे ओवरराइट करने के लिए कहा गया था, मैंने देखा कि फाइलसाइज़ या दिनांक में कोई फर्क पड़ता है और यदि नहीं, तो मैंने इन ऑब्जेक्ट्स के लिए प्रतिलिपि छोड़ी।

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

एक बार जब आप निर्देशिका के लिए आवश्यक फ़ाइलों की नकल की है आप तो .resource रिलीज निर्देशिका के भीतर स्थित फ़ाइल को पार्स होगा।

ई:

अपने प्रोजेक्ट में संसाधन फ़ाइल पर स्थित था \ localiztion_sample \ localiztion_sample \ obj \ 86 \ रिलीज

और फ़ाइल नाम शीर्षक था: localiztion_sample.g.en-US.resources

नोट: यह माइक्रोसॉफ्ट वेबसाइट पर निर्देश से अलग है। माइक्रोसॉफ्ट का कहना है कि आपको एन-यूएस निर्देशिका में स्थित डीएलएल फ़ाइल पर लोकबामल उपकरण चलाया जाना चाहिए। हालांकि कई प्रयासों और शोधों के बाद मैंने पाया कि वास्तव में 32 और 64-बिट बिल्डों के बीच संगतता के साथ-साथ यह काम करने से बाहर निकलने के साथ-साथ कई समस्याएं उत्पन्न हुईं।

wpf4 के माध्यम से पढ़ने में ऑनलाइन मंचों के रूप में भी फैलाया यह बजाय * .gen.en-Us.resources फ़ाइल को इंगित करने का सुझाव दिया है।* = परियोजना नाम और gen.en-हमारे विकास भाषा

चुना वी.एस. आदेश untility के भीतर आप तो दर्ज करना होगा दर्शाता निम्नलिखित

LocBaml/पार्स filename.resources/आउट: नमूना-en .csv

नोट्स: यह माना जाता है कि आप रूट निर्देशिका जहां इस फ़ाइल मौजूद है के लिए LocBaml फ़ाइल की नकल की है और आपको सिस्टम व्यवस्थापक के रूप में कमांड प्रॉम्प्ट चला रहे। इस्तेमाल में आसानी के लिए मैं अपने नमूना परियोजना के लिए वी.एस. परियोजना निर्देशिका

को कमांड प्रॉम्प्ट के भीतर काम कर निर्देशिका बदल आदेश के रूप में देखा:

* LocBaml/पार्स localization_sample.g.en-US.resources/बाहर : नमूना-en.csv *

यह आदेश तब CSV फ़ाइल जो वर्तमान परियोजना

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

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