2012-02-10 23 views
1

ユーザーの選択に基づいて複数の言語で表示する必要があるWebページがあります。そのためには、asp.netの各WebページでRESXファイルを使用しています。私はブラウザで言語の自動検出を使いたくないのですが、ユーザの選択に基づいて言語を設定したいと思います。これを達成するために、私は次のことをやっている:動的にRESXファイルが読み込まれない

Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("es-MX", false); 
Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("es-MX", false); 

OR

Page.Culture = "es-MX"; 
Page.UICulture = "es-MX"; 

しかし、これらのどちらも期待通りに働いています!私はページのInitメソッドでCultureを初期化していますが、常にデフォルト言語を表示します。私はそれらのプロパティの値を検査しており、それらは正しく文化を持っていますが、RESXファイルを使ってレンダリングされていません。何か案は?提案?

おかげ

答えて

2

のようにユーザーの言語をロードするためにこれを使用することができ、ここで行う必要がありますものです:

ページDIR以来

:net-tutorials.comウェブサイトから

protected override void InitializeCulture() 
{ 
    Page.Culture = "en-US"; 
    Page.UICulture = "en-US"; 
} 

ectiveはPageクラスのショートカットにすぎませんが、これはCodeBehindでも可能です。しかし、ページがレンダリングされる前に、それが望ましい効果を持つことを確かめるために、ある時点でそれを行う必要があります。ここでInitializeCulture()メソッドが使用されます。これは、ページライフサイクルのかなり早い段階でASP.NETによって呼び出されるメソッドで、オーバーライドできます。

0

この System.Resources.ResourceReader resourceReader =新System.Resources.ResourceReader( "RES_PATH")を試してみてください。

今、あなたは明示的なローカリゼーションで作業する場合、誰かがこの問題に遭遇した場合にはes.resx

System.Resources.ResourceReader resourceReader 
    = new System.Resources.ResourceReader(HttpContext.Current.Request.UserLanguages[0] 
    + ".resource"); 
+0

ドミトリーありがとうございますが、これは私が扱うリソースファイルのみを読み込みます。私がやっていることは、ブラウザーのユーザー言語に基づいてラベルの値を自動的に読み込んだ後、適切なRESXファイルを探し、そこから値を取得するmeta:resource構文を使用することです。私はいつでもそれを読んでいない。すべてがCLRによってオンザフライで行われます。 –

+0

あなたはpage.cultureをオーバーライドすることができます –

関連する問題