2011-02-16 35 views
2

我有一個asp.net mvc應用程序,我希望用戶能夠更改語言。我已經提供了一系列帶有小旗子的鏈接,讓用戶選擇語言。所有這些鏈接的目標是我的「儀表板」頁面,在該控制器我有這樣的代碼:設置CurrentUICulture不會被我的應用程序記住

[HttpGet] 
[Authorize] 
public ViewResult Dashboard(string id) 
{ 
    if (!string.IsNullOrEmpty(id)) 
    { 
    System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(id); 
    } 
} 

的「儀表板」頁面顯示在所選擇的語言,因爲它應該是。但是,當我通過我的網站瀏覽時,文化變回英語(默認)......我錯過了什麼?不應該改變CurrentUICulture將整個應用程序改爲其他語言?

回答

3

System.Threading.Thread.CurrentThread.CurrentUICulture,在這樣的文化是爲用戶設置的唯一的當前請求,它會被重置爲默認爲後續的用戶請求的語言。

您需要在每個您想要顯示基於語言的數據(本地化數據)的視圖上設置ui文化。

提示:保存用戶選擇的文化標識的會話,並用它在每個視圖指定的UICulture

這樣,

// save users selected culture id in session 
Session["SelectedCultureId"] = id; 

每個視圖設置當前線程的UI區域性ID

if (Session["SelectedCultureId"] != null) 
{ 
    System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(Session["SelectedCultureId"]); 
} 
相關問題