2010-05-21 12 views
12

जब मैं एक वेबसाइट पहली बार स्थानीयकृत शुरू कर दिया, मैं तो बस इस तरह स्थानीयकरण किया:एएसपीएक्स/एसीएक्स फ़ाइल में स्ट्रिंग को स्थानीयकृत करने के इन दो तरीकों के बीच अंतर?

<%= Resources.ResourceFile.ResourceName %> 

और यह बिल्कुल ठीक काम करने के लिए लगता है। हालांकि, ReSharper 5.0 बीटा इस तरह से करता है:

<asp:Localize Text="<%$ Resources: ResourceFile, ResourceName %>" runat="server"> 
    Value 
</asp:Localize> 

क्या इससे कोई फर्क पड़ता है कि यह किस तरह से किया जाता है?

इसके अलावा, रीशेर्पर मूल पाठ को स्थानीय नियंत्रण में क्यों रखता है? मैंने सोचा कि अगर संसाधन फ़ाइल के अंदर मान खाली था, तो यह "डिफ़ॉल्ट" टेक्स्ट दिखा सकता था। यह मामला नहीं प्रतीत होता है। क्या इसे हटाने के लिए सुरक्षित है और केवल स्थानीयकरण नियंत्रण को बंद कर दें?

+0

क्या यह वाक्यविन्यास <% = संसाधन नहीं है। संसाधन संसाधन। संसाधन नाम%> केवल आपको वैश्विक संसाधनों तक पहुंच प्रदान करता है? क्या आप App_LocalResources तक पहुंच सकते हैं? मुझे प्रतीत नहीं होता है। – User

उत्तर

2

अच्छी तरह से, आप एक एएसपी सर्वर नियंत्रण पर <% =%> सर्वर टैग का उपयोग नहीं कर सकते हैं।

तो

<asp:Localize Text="<%= Resources.ResourceFile.ResourceName %>" runat="server"> 
    Value 
</asp:Localize> 

एक संकलन त्रुटि का परिणाम देगा। दुर्भाग्य से आप सर्वर नियंत्रण गुण को डायनामिक डेटा पास नहीं कर सकते जब तक कि यह डेटाबाउंड जगह है जहाँ आप उदाहरण के लिए, <%# %> सर्वर टैग लागू कर सकते हैं:

<asp:Repeater runat="server"> 
... 
    <asp:Localize Text="<%# Resources.ResourceFile.ResourceName %>" runat="server"> 
    Value 
    </asp:Localize> 
... 
</asp:Repeater> 

तुम हमेशा codebehind को यह स्थानांतरित कर सकते हैं लेकिन यह है कि बेकार है।

<%$ %> 'बात' लेकिन काम करता है अगर आप इसे से जाना रखरखाव नरक में प्रवेश के लिए तैयार करते हैं (जब तक कि बेशक हम एक 3 पेज आवेदन के बारे में बात कर रहे हैं ...)

निजी तौर पर मैं <%= %> का उपयोग करें और मैं कभी नहीं का उपयोग करें मेरे ऐप्स को वैश्वीकृत/स्थानीयकृत करने के लिए फिर से तेज। इसके अलावा, मैंने कभी भी <asp:Localize /> सर्वर नियंत्रण का उपयोग नहीं किया है और मुझे कोई समस्या नहीं है ...

+0

पर प्रलेखन पढ़ने के बाद मेरे द्वारा चिपका गया पाठ यह वाक्यविन्यास नहीं है <% = Resources.ResourceFile.ResourceName%> केवल आपको वैश्विक संसाधनों तक पहुंच प्रदान करता है?क्या आप App_LocalResources तक पहुंच सकते हैं? मुझे प्रतीत नहीं होता है। – User

1

पहला वन एक अलग संसाधन फ़ाइल फ़ोरैच पेज (मॉड्यूल) बनाएं लेकिन दूसरा एक इसे बनाएं (या फिर से) और उस पर संसाधन संसाधनों को बनाएं।

दूसरा दृष्टिकोण आपको आसानी से अपने आवेदन के लिए नई भाषाएं बनाने देता है क्योंकि सभी तार एक ही स्थान पर एकत्र हुए हैं और आप इसे अनुवाद के लिए किसी को भी दे सकते हैं।

+0

मुझे यकीन नहीं है कि मैं समझता हूं। पहले उदाहरण में, यह प्रत्येक पृष्ठ के लिए एक नई संसाधन फ़ाइल नहीं बनाता है। इसमें एक संसाधन है (उदाहरण में संसाधन फ़ाइल कहा जाता है) जिसमें संसाधन नाम शामिल है। दोनों उदाहरण एक ही संसाधन फ़ाइल के लिए एक ही संसाधन फ़ाइल को बुला रहे हैं। – Brandon

+0

@ ब्रैंडन - आम तौर पर स्थानीय संसाधनों के लिए पहली बार उपयोग किया जाता है और दूसरा आमतौर पर GobalResources के लिए उपयोग करता है। लेकिन दृश्य के पीछे दोनों एक ही विधि का उपयोग करते हैं। जैसे 'GetGlobalResource' और' GetLocalReource' जो दोनों अलग-अलग तरीकों से कुछ पैरामीटर देते हैं और उन्हें 'गेट्रेससोर्स' विधि में पास करते हैं जो मुख्य अधिभार या विधि है। –

+0

आह मैं देखता हूं। मैं बस गलत तरीके से इसका इस्तेमाल कर रहा था। मैं हर बार एक वैश्विक संसाधन फ़ाइल का संदर्भ दे रहा था जब मैंने इसे इस तरह से किया था। – Brandon

2

के बाद जानकारी मैं MSDN पर पाया जो आप के अंतर को समझना आप

मजबूत टाइपिंग

Resources.ResourceFile.ResourceName का उपयोग कर वैश्विक संसाधनों प्राप्त करने के लिए प्रयोग किया जाता है to retrieve global resources using strong typing

संसाधन हैं चाहते हैं मदद कर सकता है नेमस्पेस संसाधनों में संकलित, और प्रत्येक डिफ़ॉल्ट संसाधन संसाधन वर्ग का सदस्य बन जाता है। उदाहरण के लिए, यदि आपने डिफ़ॉल्ट संसाधन फ़ाइल WebResources.resx बनाई है और फ़ाइल में वेलकमटाक्स्ट नामक एक संसाधन है, तो आप निम्न कोड

स्ट्रिंग का स्वागत करते हुए कोड में संसाधन का संदर्भ दे सकते हैं; स्वागत = संसाधन.WebResources.WelcomeText;

और अधिक विस्तार के लिए

: http://msdn.microsoft.com/en-us/library/ms227982.aspx

स्पष्ट स्थानीयकरण

<asp:Button ID="Button1" runat="server" 
    Text="<%$ Resources:WebResources, Button1 

कैप्शन%>

संसाधन अभिव्यक्ति निम्नलिखित रूप है, जहां कक्षा वैकल्पिक है, जब तक कि संसाधन एक वैश्विक है लेता है एक, और संसाधन आईडी आवश्यक है:

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

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

इस बारे में

अधिक में संसाधन एक्सप्रेशन का उपयोग कर सकते हैं: http://msdn.microsoft.com/en-us/library/ms227427(v=VS.100).aspx

+0

ध्यान दें कि आप सीधे एमएसडीएन दस्तावेज उद्धृत कर रहे हैं, आपको शायद उस पाठ को ब्लॉक कोट में रखना चाहिए। – R0MANARMY

+0

हे मैन मैं पहले से ही एमएसडीएन का लिंक पोस्ट कर चुका हूं और एमएसडीएन –

1

afaik एक अंतर है, और यह समय की बात है।

मैंने इसकी पुष्टि नहीं की है, लेकिन मैं वास्तव में पृष्ठ जीवन चक्र में बहुत पहले होने के लिए <% $ की अपेक्षा करता हूं।

  • <% = इसकी काफी एक <% Response.Write ("कुछ पाठ")%>, जिसके कारण आप aspx में स्थानों की एक बहुत में उपयोग नहीं कर सकते इसे किया जा करने की जरूरत है यानी जब पृष्ठ रेंडर किया जा रहा है
  • <% # डेटाबिंड के दौरान होता है/जो पृष्ठ/नियंत्रण के प्रारंभ से बहुत दूर है। ध्यान दें कि डेटाबिंड कोड अन्य गुणों का उपयोग कर रहा है जो पहले सेट किए गए हैं, इसलिए यह एक महत्वपूर्ण अंतर है।
  • उपर्युक्त को देखते हुए और आप नियंत्रण गुणों में <% $ का उपयोग कर सकते हैं, मैं वास्तव में पृष्ठ/नियंत्रण जीवन चक्र में v होने की उम्मीद करता हूं।
संबंधित मुद्दे