我将实现一个支持ASP.NET MVC3的网站,该网站将使用不同语言的多语言(即http://acme.com/en/faq,http://acme.com/de/faq等)。
this article中概述的方式是否仍然适用于ASP.Net MVC3?
答案 0 :(得分:3)
我没有使用像博客作者那样的路由处理程序,但这似乎是一个好主意。
我通常只是将语言作为参数添加到路线中。
routes.MapRoute("someroute", "{language}/some/path/{p1}/{p2}",
new { controller = "SomeController", action = "SomeAction"});
您可以在路由定义上默认语言参数,但我通常在基本控制器上执行此操作,因为我尝试默认使用用户在其浏览器首选项上定义的语言(它来自HTTP请求。)
博客文章中描述的方法的一个警告是改变主要的“CurrentCulture”。您不希望在每个请求上更改主“CurrentCulture”,您只需要更改“CurrentUICulture”。更改主“CurrentCulture”会影响服务器的行为方式。例如,在与数据库交谈时,它将使用用户的文化,这可能不是你想要的。
人们倾向于改变主要的CurrentCulture以获得日期和数字的格式化(这很好)但是没有意识到这样做有一些副作用。您不需要更改主要的CultureThread,而是需要将用户的文化传递给您的数字和格式化功能(例如someDate.ToString(format,culture)
答案 1 :(得分:1)
是的,从路由角度来看,没有任何改变。