2011-02-08 3 views
5

В старшем asp.net - проекты, которые мы использовали, чтобы установить язык, как правило, в пределах Application_BeginRequest - Хэндлер (Global.asax), что-то вроде этого:Где я должен установить язык (CurrentThread.CurrentCulture)?

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

Теперь я переходе на MVC 2 и решил сохранить язык как маршрут исправления в URL-адресе. URL-адрес выглядит так: {lang}/{controller}/{action}

Как и где следует читать язык с URL-адреса и устанавливать CurrentCulture? Как лучше всего сделать MVC?

Thx для любых подсказок!

+0

Это, как я это делаю: http://www.eworldui.net/blog/post/2008/05/ASPNET-MVC--- Localization.aspx – rboarman

ответ

5

Нечто подобное в global.asax должны работать

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

Это отлично работает, спасибо! – sl3dg3

+0

Я храню предпочтительную культуру пользователя в состоянии сеанса, которая впервые доступна в этом обработчике событий - отлично! – Dean

Смежные вопросы