ASP.NET MVC: When to set Thread.CurrentThread.CurrentUICulture?

Viewed 21678

I am just beginning to localize an ASP.NET MVC application. Most of the strings will be defined in resource files and retrieved via Matt's Localization Helpers. Other strings must be stored in a database.

My Question: Should I set CurrentUICulture early in the request pipeline and use that throughout the application, or directly use Request.UserLanguages[0] whenever needed?

Right now I'm thinking that I should set CurrentUICulture in Application_BeginRequest. The implementation would look something like this:

protected void Application_BeginRequest(object sender, EventArgs e)
{
    var cultureName = HttpContext.Current.Request.UserLanguages[0];
    Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureName);
}

Is this the best place to set CurrentUICulture and is Request.UserLanguages[0] the best place to get that info?


Update:

Ariel's post shows this can be defined without code, using 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"/>
2 Answers
Related