Я использую этот метод локализации и добавил параметр маршрута, который устанавливает культуру и язык, когда пользователь посещает example.com/xx-xx/
Пример:
routes.MapRoute("DefaultLocalized",
"{language}-{culture}/{controller}/{action}/{id}",
new
{
controller = "Home",
action = "Index",
id = "",
language = "nl",
culture = "NL"
});
У меня есть фильтр, который выполняет фактические настройки языка / языка:
using System.Globalization;
using System.Threading;
using System.Web.Mvc;
public class InternationalizationAttribute : ActionFilterAttribute {
public override void OnActionExecuting(ActionExecutingContext filterContext) {
string language = (string)filterContext.RouteData.Values["language"] ?? "nl";
string culture = (string)filterContext.RouteData.Values["culture"] ?? "NL";
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(string.Format("{0}-{1}", language, culture));
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(string.Format("{0}-{1}", language, culture));
}
}
Чтобы активировать атрибут Интернационализация, просто добавьте его в свой класс:
[Internationalization]
public class HomeController : Controller {
...
Теперь, когда посетитель заходит на http://example.com/de-DE/Home/Index, отображается немецкий сайт.
Надеюсь, этот ответ направит вас в правильном направлении.
Я также сделал небольшой пример проекта MVC 5, который вы можете найти здесь
Просто перейдите на http://{yourhost}:{port}/en-us/home/index, чтобы увидеть текущую дату на английском (США), или измените ее на http://{yourhost}:{port}/de-de/home/index для немецкого и так далее.