Como se ha sugerido anteriormente, esto se aparta de la convención donde las URL del sitio web (y las rutas) usan el inglés.
Sin embargo, es posible, pero para poder hacerlo, probablemente deba considerar generar una ruta por acción para cada idioma extranjero. Entonces, para un sitio web con 20 acciones y tres idiomas (inglés, francés y alemán), necesitará 41 rutas (20 en francés, 20 en alemán y 1 en inglés). No es el sistema más eficiente, lo admito, pero funciona como usted lo desea.
//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" }
);
En sus acciones, por ejemplo Producto/Software ...
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);
}
lo haría AMOR que si alguien llegó y dijo que hay una mejor manera de hacer esto, porque estoy de acuerdo que tener la url en un idioma extranjero no es bueno, y dado que Internet se está moviendo para permitir el uso de caracteres no romanos en las URL, mientras más pronto veamos soluciones a esto, mejor.
No solo eso, sino que sé que a los orgullosos franceses no les gusta ver que las URL de sus sitios web contengan inglés. :)
En realidad, esa no es una muy buena idea si te preocupa la clasificación de los motores de búsqueda. Puede redireccionar a la página en inglés siempre O usar una URL canónica estándar para todas las instancias de la misma entidad. –