Như đã được đề xuất trước đây, điều này sẽ khởi hành từ quy ước nơi url trang web (và tuyến đường) sử dụng tiếng Anh.
Tuy nhiên, có thể, nhưng để làm điều đó, bạn có thể sẽ phải xem xét việc tạo ra một lộ trình cho mỗi hành động cho mọi ngôn ngữ nước ngoài. Vì vậy, đối với một trang web với 20 hành động và ba ngôn ngữ (tiếng Anh, tiếng Pháp và tiếng Đức), bạn sẽ cần 41 tuyến đường (20 tiếng Pháp, 20 tiếng Đức và 1 tiếng Anh). Không phải là hệ thống hiệu quả nhất, tôi thừa nhận, nhưng nó hoạt động như bạn muốn nó.
//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" }
);
Trong hành động của bạn, ví dụ như sản phẩm/Phần mềm ...
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);
}
tôi sẽ TÌNH YÊU nó nếu ai đó đến cùng và nói rằng có một cách tốt hơn để làm điều này, bởi vì tôi đồng ý rằng có url trong một ngôn ngữ nước ngoài là không tốt, và cho rằng Internet chính nó đang di chuyển theo hướng cho phép các ký tự không phải La Mã trong url, chúng ta càng sớm xem xét các giải pháp cho điều này, thì càng tốt.
Không chỉ vậy, nhưng tôi biết những người Pháp tự hào không thích nhìn thấy url trang web của họ có chứa tiếng Anh. :)
Thực ra đó không phải là ý tưởng hay nếu bạn lo ngại về xếp hạng công cụ tìm kiếm. Bạn có thể chuyển hướng đến trang tiếng Anh luôn HOẶC sử dụng URL chuẩn chuẩn cho tất cả các phiên bản của cùng một thực thể. –