8

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>

私はブラウザの言語を気にすることができないことに注意してください。これを上書きする必要があります。私は無駄にこの解決策をウェブで探してきました。すべての例は、私がすでに試した方法(上記)で言語を切り替えることを示していますが、これは使用されるリソースファイルには影響しません。何か案は?

4

1 に答える 1

13

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");
}

お役に立てれば

于 2009-09-09T17:02:35.633 に答える