我刚开始本地化一个ASP.NET MVC应用程序。大部分的字符串将在资源文件中定义,并通过Matt的本地化助手检索。其他字符串必须存储在数据库中。
我的问题:
我应该在请求管道中早期设置CurrentUICulture
并在整个应用程序中使用它,还是每次需要时直接使用Request.UserLanguages[0]
?
现在我认为应该在Application_BeginRequest中设置CurrentUICulture
。实现看起来会像这样:
protected void Application_BeginRequest(object sender, EventArgs e)
{
var cultureName = HttpContext.Current.Request.UserLanguages[0];
Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureName);
}
这是否是设置CurrentUICulture
的最佳位置,而Request.UserLanguages[0]
是否是获取该信息的最佳位置?
更新:
Ariel的帖子显示可以使用web.config
在不编写代码的情况下定义此内容。
<system.web>
<!--If enableClientBasedCulture is true, ASP.NET can set the UI culture and culture for a Web page automatically, based on the values that are sent by a browser.-->
<globalization enableClientBasedCulture="true" culture="auto:en-US" uiCulture="auto:en"/>
Thread.CurrentThread
相同的线程下运行。 - Pierre-Alain Vigeant