2013-05-14 53 views
0

在我的asp.net應用程序中,我想讓用戶更改他的配置文件語言,然後加載相應的resx文件。asp.net CurrentUICulture和resx文件

我有兩個全局.resx文件:

LocalizedText.resx

LocalizedText.pl.resx

protected void Page_Load(object sender, EventArgs e) 
{ 
     ... 
     if (!IsPostBack) 
     { 
      setUserSettings(...) 
     }      
} 

private void setUserSettings(...) 
{ 
    ... 
    Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("pl"); 
} 

setUserSettings(...)也可以用於在用戶更改他的個人資料設置。

的問題是,它總是fallbacking到LocalizedText.resx文件,而不是裝載LocalizedText.pl.resx

我debbuged它,的CurrentUICulture總是「EN_US」在Page_Load中的開始。

我試圖設置UICulture和文化屬性,但它沒有奏效。

當我使用Page.Culture =「auto」時,它將加載.pl.resx文件,當我將瀏覽器語言設置爲「pl」但它不是我想要的。

任何想法? 謝謝

回答

2

我認爲你應該重寫頁面方法並在那裏設置CurrentUiCulture。 欲瞭解更多信息,請參閱:http://msdn.microsoft.com/en-us/library/system.web.ui.page.initializeculture.aspx

+0

這是有點線索,但我試圖設置CurrentUiCulture也用戶改變他的設置後,下拉,但InitializeCulture引發之前SelectedIndexChanged事件autamaitcaly。不管怎麼說,還是要謝謝你。 – 2013-05-14 14:47:21

+0

@pawlakppp:當用戶改變他的語言時,你最好把他發送給另一個url(即:/pl/info.aspx)。這樣InitializeCulture可以從網址中選擇語言,搜索引擎可以索引所有語言,而不僅僅是默認語言。 – Willem 2013-05-14 14:51:33

+0

我認爲你仍然可以使用InitializeCulture方法,但你必須在Page Request.Form [「dropdownListId」]中找到下拉列表的值。 請參閱此處的代碼示例:http://msdn.microsoft.com/en-us /library/bz9tc508%28v=vs.80%29.aspx – 2013-05-14 14:53:55