अच्छा, यह आंशिक रूप से संभव है (केवल भाषा भाग)। एक अलग भाषा में नियंत्रक का नाम निश्चित रूप से एक दिलचस्प बिंदु है, लेकिन मुझे लगता है कि इसे हासिल करना मुश्किल होगा। इस बारे में सोचें कि यह अरबी और हिब्रू जैसी बिडी भाषाओं के लिए कैसा दिखता है। अलग-अलग भाषाओं में नियंत्रक का उपयोग करना शायद एक अच्छा विचार होगा लेकिन आप अपने लिए एक विनाश बनाएंगे और मुझे विश्वास है कि इसके लिए आपको अंतर्निहित एमवीसी संरचना को बदलना होगा।
भाषा बदलने वाला हिस्सा आसान है और नीचे जैसा किया जा सकता है।
जो आप देखना चाहते हैं वैश्वीकरण है। असल में भाषा भाग वर्तमान धागे यूआई संस्कृति से मेल खाता है।
एक मार्ग को परिभाषित करें, कुछ इस तरह:
var lang = System.Threading.Thread.CurrentThread.CurrentUICulture.Name;
routes.MapRoute(
name: "Default",
url: "{language}/{controller}/{action}/{id}",
defaults: new { language = lang, controller = "Home",
action = "Index", id = UrlParameter.Optional }
);
रजिस्टर Application_AcquireRequestState
और यह कुछ इस तरह परिभाषित करते हैं:
protected void Application_AcquireRequestState()
{
var routes = RouteTable.Routes;
var httpContext = Request.RequestContext.HttpContext;
if (httpContext == null) return;
var routeData = routes.GetRouteData(httpContext);
var language = routeData.Values["language"] as string;
var cultureInfo = new CultureInfo(language);
System.Threading.Thread.CurrentThread.CurrentCulture = cultureInfo;
System.Threading.Thread.CurrentThread.CurrentUICulture = cultureInfo;
}
हालांकि CurrentUICulture
क्या है क्या आप की जरूरत निम्नलिखित है आपको संसाधन फ़ाइल से भाषा लोड जानकारी की आवश्यकता होती है, आपको CurrentCulture
को उसीमें भी बदलना चाहिए;
अंतिम, सुनिश्चित करें कि आपके पास संबंधित संसाधन फ़ाइलें और फ़ॉलबैक संसाधन फ़ाइल है।
मैं CultureInfo
की Name
संपत्ति का इस्तेमाल किया है ताकि आप जर्मन की जाएगी डी-डे, अंग्रेजी en-US, आदि इस चाल करना चाहिए।
यदि आपको अधिक जानकारी चाहिए तो मैं जांचने के लिए एक नमूना एमवीसी प्रोजेक्ट अपलोड कर सकता हूं।
अद्यतन: तुम क्या चाहते करने का एक कच्चा रास्ता कुछ इस तरह करने के लिए मार्ग क्षेत्रों के आदेश को पलट करने के लिए है:
routes.MapRoute(
name: "NewDefault",
url: "{language}/{id}/{action}/{controller}",
defaults: new { language = lang, controller = "Home", action = "Index", id = "Category"}
);
इस तरह आप एक निम्न अनुरोध http://www.your_url.com/de/Kategorien बना सकता है। इस मामले में श्रेणी नियंत्रक के बजाय id
पर नक्शा। आप नियंत्रक अंग्रेजी या जर्मन में रहता है (इस पर निर्भर करता है कि आपने इसे कैसे नामित किया है) लेकिन उपयोगकर्ता एक अलग भाषा देखता है। पृष्ठभूमि में आपके विचार कुछ इस तरह हो सकता है:
public ActionResult Index(string id, string categoryName)
{
// Fetch data based on category name (categoryName)
return View();
}
आप पैरामीटर के रूप में अतिरिक्त जानकारी दे सकते हैं, लेकिन आप की तरह कुछ देखने के लिए अपने मार्ग को ठीक करने की आवश्यकता होगी: {भाषा}/{श्रेणी}/{} उपश्रेणी/{action}/{नियंत्रक}
बस जानते हैं कि यह लंबे समय तक गर्दन में दर्द हो सकता है और यदि आप इसे आजमाते हैं, तो सुनिश्चित करें कि आप इसे अच्छी तरह से दस्तावेज करते हैं।
एक पूर्ण समाधान के लिए [एएसपी.नेट एमवीसी 5 संस्कृति और यूआरएल में संस्कृति] देखें (http://stackoverflow.com/a/32839796/181087)। – NightOwl888