2008-12-19 12 views
18

मुझे एएसपी एमवीसी ऐप्स, को स्थानीयकृत करने के लिए सबसे अच्छी प्रैक्टिस में मदद की ज़रूरत है, मैंने देखा कि ऑक्साइट बेसकंट्रोलर में लोकलाइज नामक आधार विधि है, लेकिन क्या स्थानीयकरण दृश्य या नियंत्रक के लिए एक कार्य है? या मुझे resx फ़ाइलों/या डीबी टेबल का उपयोग करना चाहिए?एएसपी.नेट एमवीसी स्थानीयकरण सर्वोत्तम अभ्यास?

+0

यह एक अच्छा तरीका है http://stackoverflow.com/questions/381070/asp-net-mvc-localization-best-practice/12936708#12936708 – kbvishnu

उत्तर

14

अपने खुद के एचटीएमएल सहायक बना सकते हैं और तरह <%= Html.Resource("Name") %>

विवरण इसका इस्तेमाल blog पोस्ट में कर रहे हैं।

+9

बस इतना ही पता है कि पोस्ट इहर लिंक के पास अब एक लिंक है अद्यतन करें। देखें: http://blog.eworldui.net/post/2008/10/ASPNET-MVC-Simplified-Localization-via-ViewEngines.aspx –

+1

अद्यतन लिंक या तो काम नहीं करता। :( – bradjive

+0

Am पहले से ही एक समाधान इस के समान का उपयोग कर, लेकिन समाधान के इस प्रकार के प्रदर्शन के मामले में एक अतिरिक्त भूमि के ऊपर जोड़ने नहीं है – jsicary

0

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

यदि स्ट्रिंग नियंत्रक द्वारा उत्पन्न होता है, तो इसका स्थानीयकरण भी वहां होना चाहिए।

10

इस उपलब्ध here

इस लेख के लिए अच्छा समाधान नहीं है MVC सही काम के लिए सही दृश्य का उपयोग कर के बारे में बहुत अधिक है स्थानीयकरण asp.net MVC के एप्लिकेशन

3

के सभी पहलुओं को शामिल किया गया। संसाधन फ़ाइल में सबकुछ डालना बेहद पेंटफुल है। छोटी चीजों के लिए संसाधन फ़ाइलों का उपयोग करना अच्छा होता है, लेकिन आपके विवरण पृष्ठों जैसे बड़े पृष्ठों के लिए, प्रत्येक संस्कृति में बहुत सारी सामग्री के साथ बेहतर होना बेहतर होता है। उदाहरण के लिए निम्न संरचना का उपयोग करना: ~/दृश्य/एन-यूएस/होम/इंडेक्स.एएसपीएक्स ~/व्यू/पीटी-बीआर/होम/इंडेक्स.एएसपीएक्स या यह संरचना: ~/दृश्य/होम/इंडेक्स.न -US.aspx ~/दृश्य/होम/Index.en-US.aspx

इसे कैसे करना के लिए ब्लॉग को पढ़ने: http://blog.oimae.com/2011/02/20/cultured-view-engine-for-mvc/

+1

क्यों -1 इस जवाब पर कर रहे हैं [कई] (http: // afana। मुझे/पोस्ट/aspnet-MVC-internationalization.aspx) [सम्मानित] (http://www.hanselman.com/blog/GlobalizationInternationalizationAndLocalizationInASPNETMVC3JavaScriptAndJQueryPart1.aspx) [उदाहरण] (http://brianreiter.org/2011/03/23/ सरल-एएसपी-नेट-एमवीसी-वैश्वीकरण-साथ-सुन्दर-फॉलबैक /) इस पैटर्न के और जब यह इंगित किया गया है। यहां उत्तरदाता का एक बिंदु है: .resx में बड़ी टेक्स्ट सामग्री का प्रबंधन कुछ घर्षण जोड़ता है, और इसमें लेआउट या आकार हो सकता है । एक बड़े पैमाने पर शाब्दिक दृश्य पर प्रभाव यह एक मौलिक तालमेल, के रूप में लिंक में सचित्र सबसे खराब समाधान है – mcw0933

+0

अब तक -।! कभी आप भाषाओं और स्थानों के बहुत भर में पैमाने पर करने की जरूरत है, यह एक बहुत बड़ी गड़बड़ हो जाता है और सुपर painfull है रखरखाव के लिए। सभी दृष्टिकोण रखने के लिए बेहतर दृष्टिकोण है स्थानीयकरण डीएफ में एफएफ, ऐप स्टार्ट पर आवश्यक सामग्री लोड करें (कुछ पेज पर अपडेट-कैश-बटन न भूलें) + तारों को संपादित करने के लिए कुछ प्रकार के ब्राउज़र-इंटरफेस/फ्रंटएंड का उपयोग करें। साथ ही, यह प्रणाली अनुवादकों की एक टीम और "सामग्री-रखरखाव करने वालों" में अच्छी तरह से स्केल करती है (इसके बजाय आपके दक्षिण में, उन्हें कम से कम एक स्तर पर HTML/CSS/JS के बारे में पता होना चाहिए, जिस पर वे सामान को नष्ट नहीं करते हैं देखा गया)। – johngrinder

4

इस एक वर्ष के प्रश्न के बाद से और मैं गुंजाइश नहीं जानते यहां पर मेरे जवाब का। हाल ही में मुझे इस तरह की स्थिति का सामना करना पड़ा, यानी मुझे अपनी एमवीसी साइट में विभिन्न भाषाओं के लिए स्थानीयकरण को लागू करने की आवश्यकता है।

मैंने Resource फ़ाइल का उपयोग करने पर विचार किया। इसे कार्यान्वित करने में बहुत आसान है, लेकिन मुद्दा यह है कि विकास के चरण के दौरान, हमें स्थानीय तारों को निर्दिष्ट करने की आवश्यकता है। तो यदि यह एक बहु भाषा समर्थन है, तो हमें प्रत्येक भाषा के लिए संसाधन फ़ाइल बनाने की आवश्यकता है। यदि ग्राहक क्या बदलता है या एक नई भाषा जोड़ता है, तो यह बहुत मुश्किल है और हमें एक बिल्ड प्रदान करने की आवश्यकता है।

दूसरा मैं Satelite Assemblies पर विचार करता हूं। यह संसाधन के समान भी है, लेकिन यह असेंबली को बाहर की ओर संपादित करने और इसे वापस बिन फ़ोल्डर में रखने की आजादी देता है। इसके लिए ग्राहक/डेवलपर के लिए बहुत मेहनत की भी आवश्यकता है।

तीसरा मुझे डीबी में भंडारण माना जाता है। यह दृष्टिकोण ठीक है और हमारे पास सर्वर से डेटा पढ़ने के लिए कुछ तंत्र है। इसके लिए एक बार प्रयास की आवश्यकता है और ग्राहक के पास कोई भरोसेमंद नहीं है।

मैं एक कस्टम DisplayNameAttributre ओवरराइड और निर्माता से मैं डीबी गुजरती हैं और डेटा प्रस्तुत करने के लिए

आपकी आवश्यकता यह आप पर दृश्य प्रदर्शित करना चाहिए के आधार पर मिल जाएगा।

रिसोर्स मेनेजर

/// <summary> 
    /// Extended display attribute which will handles the request 
    /// It will call every time when the property is rendered (return View() - from controller) 
    /// </summary> 
    public class ResourceManagerAttribute : DisplayNameAttribute 
    { 
     public ResourceManagerAttribute(string resourceKey, string resourceNameSpace = "") 
      : base(GetDisplayName(resourceKey, resourceNameSpace)) 
     { } 

     private static string GetDisplayName(string resourceKey, string resourceNameSpace = "") 
     { 
      // get the browser's prefered language. 

      string browserLanguage = HttpContext.Current.Request.UserLanguages.First(); 

      // Get the locale data for that property and displays. 
      switch (browserLanguage) 
      { 
       case "en-US": return "Eng " + resourceKey; 
      // calls db based on resource key 
       case "hi": return "Hin " + resourceKey; 

      } 
      return "-- Not Implemented Now -- "; 
     } 

ViewModel

public class HomeViewModel 
    { 
     //calls the resource 
     [ResourceManager("MID")] 
     public int MID { get; set; } 
     [ResourceManager("Name")] 
     public string Name { get; set; } 
     [ResourceManager("Addess")] 
     public string Addess { get; set; } 
    } 
0

मैं बेहतर एक कस्टम MetadataProvider बनाने और मॉडल के लिए एक सम्मेलन प्रयोग करने के लिए जाना होगा। > मूल्य

प्रमाणकों, आम बटन और इतने संसाधन फ़ाइल के लिए - मॉडल नाम स्थान से 1 संसाधन फ़ाइल और ModelName.PropertyName की तरह एक सम्मेलन की तरह।

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

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