Как было предложено ранее, это выходит за рамки соглашения, в котором URL-адреса (и маршруты) сайта используют английский.
Тем не менее, это возможно, но для того, чтобы сделать это, вам, вероятно, придется посмотреть на создание одного маршрута на действие для каждого иностранного языка. Таким образом, для веб-сайта с 20 действиями и тремя языками (английский, французский и немецкий) вам потребуется 41 маршрут (20 французских, 20 немецких и 1 английский). Признаюсь, не самая эффективная система, но она работает так, как вы хотите.
//You'll only need one of these, which is the default.
routes.MapRoute(
"English route",
"en/{controller}/{action}/{id}"
new { controller = "Home", action = "Index", language = "en" },
);
routes.MapRoute(
"FrenchHome",
"fr/Demarrer/Index/{id}",
new { controller = "Home", action = "Index", language = "fr" }
);
routes.MapRoute(
"GermanHome",
"de/Heim/Index/{id}", //'Heim' is, I believe the correct usage of Home in German.
new { controller = "Home", action = "Index", language = "de" }
);
//Some more routes...
routes.MapRoute(
"FrenchSoftware",
"fr/Produit/Logiciels/{id}",
new { controller = "Product", action = "Software", language = "fr" }
);
routes.MapRoute(
"GermanSoftware",
"de/Produkt/Software/{id}", //In this instance, Software should be the same in German and English.
new { controller = "Product", action = "Software", language = "de" }
);
//And finally, the 404 action.
routes.MapRoute(
"Catchall",
"{language}/{*catchall}",
new { controller = "Home", action = "PageNotFound", language = "en" },
new { language = "^(en|fr|de)$" }
);
//This is for the folks who didn't put a language in their url.
routes.MapRoute(
"Catchall",
"{*catchall}",
new { controller = "Home", action = "PageNotFound", language = "en" }
);
В ваших действиях, например, Продукт / Программное обеспечение ...
public ActionResult Software(string language, int id)
{
//This would go off to the DAL and get the content in whatever language you want.
ProductModel model = ProductService.GetSoftware(language, id);
return View(model);
}
Я бы ЛЮБИЛ , если бы кто-нибудь пришел и сказал, что есть лучший способ сделать это, потому что я согласен, что иметь URL-адрес на иностранном языке нехорошо, и учитывая, что сам Интернет движется к тому, чтобы разрешить использование нелатинских символов в URL-адресах, чем раньше мы посмотрим на решения, тем лучше.
Не только это, но я знаю, что гордые французы не любят, когда их URL-адреса веб-сайтов содержат английский. :)