5

क्या बहुभाषी वेब एप्लिकेशन के लिए मार्ग पुनर्लेखन बनाने के लिए कोई अच्छी विधि है?एएसपीनेट एमवीसी 3 बहुभाषी मार्ग रिवाइटिंग


यूआरएल स्कीमा होना चाहिए निम्नलिखित

http://<Domainname>/{Language}/{Controller}/{Action}/{Id}

लेकिन भाषा हिस्सा बिना यूआरएल भी समर्थन किया जाना चाहिए, लेकिन वे सिर्फ नियंत्रकों के लिए सीधे नहीं के नक्शे लेकिन एक रीडायरेक्ट प्रतिक्रिया उत्पन्न करना चाहिए।

यहां महत्वपूर्ण बात यह है कि रीडायरेक्ट को किसी विशिष्ट भाषा में हार्ड कोड नहीं किया जाना चाहिए, लेकिन यदि संभव हो तो उपयोगकर्ता पसंदीदा भाषा जैसे कारकों के आधार पर निर्धारित किया जाना चाहिए।

नोट: सही भाषा निर्धारित करने की प्रक्रिया समस्या नहीं है, बस गैर स्थैतिक पुनर्लेखन कैसे करें।

धन्यवाद

उत्तर

4

मैंने निम्नलिखित मार्गों के साथ प्रबंधित किया;

routes.MapRoute(
      "Default", // Route name 
      "{language}/{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Home", action = "Index", language = "tr", id = UrlParameter.Optional }, // Parameter defaults 
      new { language = @"(tr)|(en)" } 
     ); 

मैं DefaultControllerFactory की विधि GetControllerInstance() अधिभावी द्वारा संस्कृति को संभाल। उदाहरण नीचे है;

public class NinjectControllerFactory : DefaultControllerFactory { 

protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType) { 

    //Get the {language} parameter in the RouteData 

    string UILanguage; 

    if (requestContext.RouteData.Values["language"] == null) { 

     UILanguage = "tr"; 
    } 
    else { 

     UILanguage = requestContext.RouteData.Values["language"].ToString(); 
    } 

    //Get the culture info of the language code 
    CultureInfo culture = CultureInfo.CreateSpecificCulture(UILanguage); 
    Thread.CurrentThread.CurrentCulture = culture; 
    Thread.CurrentThread.CurrentUICulture = culture; 

    return base.GetControllerInstance(requestContext, controllerType); 
} 

} 

और इसे वैश्विक.एक्सएक्स पर पंजीकृत करें;

protected void Application_Start() { 

    //other things here 


    ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory()); 
} 
+0

+1 क्योंकि यह – noinstance

+0

काम करता है वहाँ सामान्य स्थान के लिए भाषा का नहीं विकल्प है/ – GorillaApe

+0

भी यह सही काम does not क्योंकि मैं फ़ेविकॉन – GorillaApe

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