Właśnie zaczynam lokalizować aplikację ASP.Net MVC. Większość ciągów zostanie zdefiniowana w plikach zasobów i pobrana przez Matt's Localization Helpers. Pozostałe ciągi muszą być przechowywane w bazie danych.ASP.NET MVC: Kiedy ustawić Thread.CurrentThread.CurrentUICulture?
Moje pytanie: powinienem ustawić CurrentUICulture
wcześnie żądanie rurociągu i użyć całej aplikacji, lub bezpośrednio korzystać Request.UserLanguages[0]
jeśli zajdzie taka potrzeba?
Już teraz Myślę, że powinienem ustawić CurrentUICulture
w Application_BeginRequest. Realizacja będzie wyglądać mniej więcej tak:
protected void Application_BeginRequest(object sender, EventArgs e)
{
var cultureName = HttpContext.Current.Request.UserLanguages[0];
Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureName);
}
Jest to najlepsze miejsce, aby ustawić CurrentUICulture
i jest Request.UserLanguages[0]
najlepsze miejsce, aby uzyskać te informacje?
Aktualizacja:
Ariel's po uświadomił mi, że to może być określona bez kodu, używając 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"/>
świetny link! Dziękuję Ci. –
Czy ta metoda jest nadal ważna wraz z nadejściem AsyncController w najnowszej wersji ASP.NET MVC? Ponieważ technicznie mogą nie działać pod tym samym wątkiem niż "Thread.CurrentThread". –
Nie po wyjęciu z pudełka. Zobacz http: // stackoverflow.com/questions/20601578/async-webapi-thread-currentculture –