私は非常に奇妙な問題を抱えています。これはSilverlightのバグである可能性があります。私はこれをVS2010のSilverlightアプリケーションプロジェクトのデフォルトテンプレートから作成した単純なアプリケーションで再現しました。Silverlightローカリゼーションのバグ?
私は2つの.resxファイル "Strings.resx"と "Strings.de.resx"を持っています。 SomeString - - "いくつかのテスト文字列"
Strings.de.resx - SomeString - "いくつかのDEのテスト文字列"
で
Strings.resx:彼らはそれぞれそのような一つのキー "SomeString" を、持っています私はちょうど私がそうのようなコードで使用のTextBlockを、平手打ち単一のアプリケーションMainPage.xamlをは、メインページのクラスのコンストラクタに:デバッガでこのによるステッピング
Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo("de-DE");
txt.Text = Strings.SomeString;
Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
txt.Text = Strings.SomeString;
txt.Textは「いくつかのDEのテスト文字列であることを示してい"最初に"そしていくつかのテスト文字列 "。だから、すべてがうまくいくはずです。
私は自分のマシンにドイツ語の言語パックをインストールしました。ここで、マシンの地域設定で、システム言語を "Deutsch"に変更し、変更を反映させるためにログオフ/ログオンすると、同じコードが異なって動作します。同じ文字列 "some DE test string"がリソースTWICE。基本的には、現在の文化/栽培の「en-US」への第2の設定は何もせず、ドイツの文字列は引き続き検索されます。
実際には、ユーザーがシステムの負荷に関係なく表示言語を変更できるアプリを作成したい場合、間違ったリソースが取得されるため、できません。
また、Windows OS言語が英語に設定されている場合、すべて正常に動作し、カルチャを変更することができ、正しい文字列リソースがロードされます。 Windows OS言語がDeutsch(他人をチェックしていない)に設定されている場合は、英語の文字列リソースを読み込めません。
この問題はVistaマシンとWindows 7マシンの両方で発生し、他のマシンではテストされていません。
PS:csprojファイルが<SupportedCultures>en,en-US,de,de-DE</SupportedCultures>
私が間違ってやっている任意のアイデアを持っているように変更されましたか?
この属性を追加すると、問題は部分的に解決されます。これにより、(より大きい)アプリの最初のページを除くすべてのページで機能することを意味します。最初のページでは、振る舞いは変わらず、属性もそうでもありません。それがなぜ起こっているのでしょうか?注記として、私は実際には文化固有の.resxファイルを別のxapに入れて、必要に応じて動的にロードしています。それはそれと関係がありますか? –
また、最初のページでは、最初に表示されるページが最初に表示されることを意味します。必ずしも同じではありません。 –
すべてのアセンブリで中立リソース言語を設定しましたか? – Eilistraee