2011-02-23 8 views
6

मुझे एएसपीनेट वेबसाइट मिली है (वेब ​​एप्लिकेशन नहीं) और मैंने संसाधन फ़ाइलों (.resx) का उपयोग करके यूआई के लिए टेक्स्ट को स्थानीयकृत किया है। मुझे एक क्लास लाइब्रेरी भी मिली है जिसमें व्यापार तर्क शामिल है और एक सत्यापन विधि है जो एक त्रुटि संदेश देता है। मुझे उस त्रुटि संदेश को स्थानांतरित करने की आवश्यकता है लेकिन मेरी वेबसाइट में वैश्विक संसाधन फ़ाइल तक पहुंच प्राप्त करने का कोई तरीका नहीं मिल रहा है। वेबसाइट पर, पीछे दिए गए कोड में कहें, मैं संसाधनों का उपयोग कर सकता हूं। लॉकलाइज्ड टेक्स्ट। MyErrorMessage (जहां LocalisedText मेरी संसाधन फ़ाइल LocalisedText.resx का नाम है)। हालांकि मेरी कक्षा पुस्तकालय में, मुझे इसका संदर्भ नहीं मिल सकता है।कक्षा पुस्तकालय में स्थानीयकरण के लिए वैश्विक संसाधनों का उपयोग कैसे करें?

मुझे यह लिंक http://weblogs.asp.net/rinze/archive/2008/12/03/using-globalization-resources-resx-in-a-class-library-or-custom-control.aspx मिला है जो कहता है कि यह किया जा सकता है लेकिन यह शायद मेरे लिए काम नहीं कर रहा है क्योंकि मुझे वेबसाइट के लिए सही नामस्थान नहीं मिल रहा है?

+1

मैं एक समाधान खोजने में कामयाब रहा और वह कक्षा पुस्तकालय में संसाधन फ़ाइल जोड़कर ही है। यह ठीक काम करता है लेकिन यदि संभव हो तो मैं केवल एक संसाधन फ़ाइल करना पसंद करूंगा। तो यदि आप में से कोई भी जानता है कि वेबसाइट में .resx फ़ाइल का संदर्भ कैसे देना है, तो मुझे बताएं। – gices

उत्तर

0
new ResourceManager("YourRessourceName", Assembly.GetEntryAssembly()).GetString("MyLocalizedString"); 

यहाँ आप एक ressourceManager क्रियान्वित विधानसभा (अपने वेब साइट) का उपयोग कर निर्माण, "YourRessourcenName" resx और भाषा के बिना अपने ressource फ़ाइल का नाम है।

+0

असेंबली।GetEntryAssembly() एक वेब अनुप्रयोग के लिए शून्य वापस लौटता प्रतीत होता है। –

4

मैं इसे रेक्स की डिजाइनर फ़ाइल के आधार पर काम करने में कामयाब रहा। यदि आप इसे खोलते हैं और ResourceManager प्रॉपर्टी के get एक्सेसर को देखते हैं, तो आप मूल रूप से उसी संसाधन तक पहुंच प्राप्त करने के लिए लाइन की प्रतिलिपि बना सकते हैं।

पूर्ण स्पष्टीकरण

सबसे पहले, आप अपने संसाधन फ़ाइल के .designer.cs फ़ाइल को खोलने की जरूरत है। यह निम्न छवि में के रूप में अपने समाधान Explorer में होना चाहिए:

Resource file designer file location in solution explorer

बस डबल क्लिक करें कि इसे खोलने के लिए और उसके बाद के लिए स्कैन (यह शीर्ष के निकट होना चाहिए):
internal static global::System.Resources.ResourceManager ResourceManager {

में get एक्सेसर, आपको इसे एक अस्थायी चर में कुछ असाइन करना चाहिए। मेरे मामले में यह इस तरह देखा:

ResourceManager lang = new ResourceManager("Resources.Lang", 
              Assembly.Load("App_GlobalResources")); 

नोट 1:

/*...*/ temp = new global::System.Resources.ResourceManager("Resources.Lang", 
       global::System.Reflection.Assembly.Load("App_GlobalResources")); 

तो, पर आधारित है कि, मैं एक ResourceManager वर्ग मैं इतनी तरह मेरे वर्ग पुस्तकालय में उपयोग करना चाहता था में बनाया: फ़ाइल के शीर्ष पर using System.Resources; और using System.Reflection; जोड़ने के लिए मत भूलना।
नोट 2: इसे कक्षा प्रोजेक्ट में वेब प्रोजेक्ट का संदर्भ जोड़ने की आवश्यकता नहीं है।

फिर, मैं अपने संसाधनों को प्राप्त करने के लिए lang चर पर GetString विधि को कॉल करता हूं।
उदा। lang.GetString("MyErrorMessage")
यह Resources.Lang.MyErrorMessage पर कॉल करने के रूप में सुरुचिपूर्ण नहीं है, लेकिन यह काम पूरा हो जाता है।

उम्मीद है कि इससे मदद मिलती है। यदि आपके कोई प्रश्न हैं तो नीचे एक टिप्पणी छोड़ दें।

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