2009-09-09 10 views
6

の背後にあるコードで(RESX)私はC#での.NETアプリケーションを持っているし、私のようなファイル構造に何か持っている:私はプログラム的にアプリケーションを伝える言語を変更しようとしていますプログラムチェンジリソースファイルの言語

App_LocalResources 
- MyPage.aspx.resx 
- MyPage.aspx.fr.resx 
MyPage.aspx 
MyPage.aspx.cs 

をどのresxファイルを使用するか。私はファイルの裏側のコード(MyPage.aspx.cs)でこれを行いたいと思います。

私はOnPreRender、Page_Init、とのPage_Loadイベントでこれらの両方を試してみました:

Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-CA"); 
Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-CA"); 

、それは動作しません。このページにはまだ英語が表示されています。 MyPage.aspxファイルの内容は次のとおりです。

<h3><asp:Literal runat="server" Text="<%$ Resources:pageTitle %>" /></h3> 

ブラウザの言語は気にしないことに注意してください。これを乗り越えなければなりません。私は役に立たないこの解決策のためにウェブを検索してきました。すべての例は、私がすでに試したように(上記)言語を切り替えることを示していますが、これは使用されるリソースファイルには影響しません。何か案は?

答えて

11

InitializeCultureメソッドをオーバーライドしてコードを配置する必要があります。例:

protected override void InitializeCulture() 
{ 
    base.InitializeCulture(); 
    System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-CA"); 
    System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-CA"); 
} 

希望これは

+1

MartinBあなたは感謝しています。どちらかといえば間違った用語で検索していたか、このオンラインに関する情報はほとんどありません。それは完璧に働いた。私はこれが将来の人々が答えを探しているために上になることをうれしく思っています。ありがとうございました! – Sherri