2011-10-07 17 views

回答

4

的直接回答是「抓住它通過CultureInfo.CurrentCulture」,但它本身不會幫你。

考慮到您的應用程序沒有「用戶文化」的概念 - 用戶通過瀏覽器與您通話,您不在他們的系統中。

現在的瀏覽器確實給你一個Accept-Language頭,你可以工作(谷歌會給你很多次點擊),但it's not recommended使用此設置來確定用戶的語言環境,因爲在實踐中幾乎沒有任何用戶瞭解此設置,定製它以反映他們的偏好。

最好的方法可能是單方面決定用戶的文化是什麼(例如,有en作爲默認值,並給他們一個方法來通過用戶界面進行更改),將其存儲在某處(在會話狀態或作爲路由變量),並將其推入CultureInfo.CurrentCulture內部HttpApplication.AcquireRequestState。你可以這樣做內部Global.asax(例如taken from MSDN):

protected void Application_AcquireRequestState(object sender, EventArgs e) 
{ 
    CultureInfo ci = (CultureInfo)this.Session["culture"]; 
    if (ci != null) { 
     CurrentThread.CurrentUICulture = ci; 
     CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(ci.Name); 
    } 
} 

在這一點上,這個答案就一個自我實現的預言,您可以通過CultureInfo.CurrentCulture從任何地方訪問的文化。

相關問題