2011-02-08 13 views
5

En asp.net mayores - proyectos que utilizan para establecer el idioma por lo general dentro de la Application_BeginRequest - Handler (Global.asax), algo como esto:¿Dónde debo configurar el idioma (CurrentThread.CurrentCulture)?

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

Ahora estoy cambiando a MVC 2 y decidieron mantener la idioma como una ruta de reparación dentro de la URL. La URL se ve así: {lang}/{controller}/{action}

¿Cómo y dónde debería leer el idioma de la URL y configurar la colección actual? ¿Cómo se hace mejor el modo MVC?

Thx para cualquier tipps!

+0

Así es como lo hago: http://www.eworldui.net/blog/post/2008/05/ASPNET-MVC--- Localization.aspx – rboarman

Respuesta

5

Algo como esto en global.asax debe trabajar

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

¡Eso funciona genial, gracias! – sl3dg3

+0

Guardo la cultura preferida de un usuario en el estado de sesión que está primero disponible en este controlador de eventos, ¡perfecto! – Dean

Cuestiones relacionadas