Come è stato suggerito prima, questo non parte dalla convenzione in cui gli URL del sito Web (e le route) utilizzano l'inglese.
Tuttavia, è possibile, ma per farlo, probabilmente dovrai cercare di generare un percorso per azione per ogni lingua straniera. Pertanto, per un sito Web con 20 azioni e tre lingue (inglese, francese e tedesco), sono necessari 41 percorsi (20 francesi, 20 tedeschi e 1 inglese). Non è il sistema più efficiente, lo ammetto, ma funziona come vuoi tu.
//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" }
);
nelle vostre azioni, per esempio prodotto/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);
}
vorrei AMORE se qualcuno è arrivato e ha detto che c'è un modo migliore di fare questo, perché sono d'accordo che avere l'url in una lingua straniera non è buono, e dato che Internet stessa si sta muovendo verso la possibilità di includere caratteri non romani negli url, prima cerchiamo soluzioni a questo, meglio è.
Non solo, ma so che i francesi orgogliosi non amano vedere gli URL dei loro siti Web contenenti l'inglese. :)
In realtà non è una buona idea se sei preoccupato per il ranking dei motori di ricerca. Puoi sempre reindirizzare alla pagina inglese sempre O utilizzare un URL canonico standard per tutte le istanze della stessa entità. –