2011-02-08 16 views
5

in asp.net più anziani - i progetti che abbiamo usato per impostare la lingua di solito entro il Application_BeginRequest - Handler (Global.asax), qualcosa di simile:Dove dovrei impostare la lingua (CurrentThread.CurrentCulture)?

System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(cookie.Lang) 

Ora sto passaggio a MVC 2 e ha deciso di mantenere il lingua come percorso di correzione all'interno dell'URL. L'URL è simile al seguente: {lang}/{controller}/{action}

Come e dove dovrei leggere la lingua dall'URL e impostare CurrentCulture? Com'è fatto il MVC - modo?

Thx per qualsiasi tipp!

+0

Questo è come lo faccio: http://www.eworldui.net/blog/post/2008/05/ASPNET-MVC--- Localization.aspx – rboarman

risposta

5

Qualcosa di simile in global.asax dovrebbe funzionare

protected void Application_AcquireRequestState(object sender, EventArgs e) 
{ 
    MvcHandler handler = Context.Handler as MvcHandler; 
    if (handler == null) 
     return; 

    string lang = handler.RequestContext.RouteData.Values["lang"] as string; 

    CultureInfo culture = CultureInfo.GetCultureInfo(lang); 

    Thread.CurrentThread.CurrentUICulture = culture; 
    Thread.CurrentThread.CurrentCulture = culture; 
} 
+0

Funziona benissimo, grazie! – sl3dg3

+0

Memorizzo la cultura preferita di un utente nello stato di sessione che è la prima disponibile in questo gestore di eventi: perfetto! – Dean

Problemi correlati