7

プロジェクトでローカリゼーションを使用したいので、「.resx」ファイルを使用しています。

「StringRes.resx」と「StringRes.fr.resx」の 2 つのファイルがあります。ご想像のとおり、ユーザーの CultureInfo に応じてアプリのすべてのメッセージを変更したいと考えています。

しかし、私がこれを行うと:

public MainWindow()
{
     Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("fr");
     InitializeComponent();
}

私がしても何も変わらない:

Console.WriteLine(StringRes.FirstName);

実際、表示されるのは常に StringRes の文字列であり、StringRes.fr の文字列ではありません。

どちらも同じ名前空間にあります。

助けてくれてありがとう。

4

1 に答える 1

15

"fr-FR"カルチャ タグとして使用する独自のテストを作成しました。テスト プロジェクトはmy skydrive にあります。

完璧に動作します。

培養試験

要するに:

プロジェクトのプロパティでカルチャを en-US に設定しましたResource.resx

次にResource.resxResource.fr-FR.resxとを作成しましResource.nl-NL.resxた。

それらを文字列で埋めましたTestData。そして、イベントがフックされた 3 つのボタンを含むウィンドウを作成しました。テキストブロックを作成したボタンの横に、テキストブロックがテキスト文字列フィールドにバインドされています。

ボタン イベントでは、文化とTextフィールドを変更します。そして、変化が起こるのを見ることができます。


まず、作成する必要がResource.resxあるのと同じフォルダーに作成する必要がありますResource.fr-FR.resx。Resource.resx は分離コード ファイルを取得しますが、カルチャ化されたすべてのリソース ファイルはそうではありません。Resource.fr-FR.resx にカルチャ ファイルが含まれている場合は、何か問題がありました。そのリソース ファイルを削除して再作成し、分離コードが失われるようにすることをお勧めします。

于 2013-08-21T08:05:57.030 に答える