我正在使用Visual Studio 2008和ASP.NET構建一個Web應用程序。我的大多數網頁都基於一個主頁面。這個母版頁包含三個按鈕鏈接,充當語言切換;在Click
事件處理程序是這樣的:使用母版頁切換ASP.NET應用程序的語言
protected void lbuLangEN_Click(object sender, EventArgs e)
{
this.SwitchLanguage(string.Empty);
}
protected void lbuLangES_Click(object sender, EventArgs e)
{
this.SwitchLanguage("es");
}
然後,我有我的私有方法SwitchLanguage
:
private void SwitchLanguage(string culture)
{
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(culture);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(culture);
}
據我瞭解,這已經足夠了基於我的母版頁展示,使網頁一種本地化行爲,即根據文化從合適的本地文件獲取其資源。但是,它不起作用。它們總是以西班牙語顯示,這是我瀏覽器的默認語言。我在SwitchLanguage
的入口點和出口點設置了一些跟蹤消息,顯然目前的線程並沒有改變它的文化信息:每調用一次SwitchLanguage
,當前線程的文化就是「ES-ES」,無論我的代碼是什麼只是設置。
有沒有我的代碼或我採取的方法有問題?謝謝。
的問題那就是你只是改變當前線程的語言,而每個請求都是它自己的線程。 – vcsjones 2011-06-02 16:48:04
@vcsjones:我明白了。所以我需要存儲語言設置並以某種方式爲每個請求設置它,對嗎?有沒有什麼常用的技術? – CesarGon 2011-06-02 16:50:04
你可以通過設置一個cookie做的伎倆,傳輸請求相同的路徑的請求是,建立一個HTTP模塊,並宣讀了該Cookie那裏設置的UICulture線程 – 2011-06-02 16:51:39