3

新しいRosourceファイルUserNotification.resxを追加しました。次に、ローカリゼーション用に2つのファイルを追加し、UserNotification.hr-HR.resxとUserNotification.sl-SI.resxという名前を付けました。(次のスレッド:C#でローカリゼーションを使用する方法

次に、Windowsの言語を「si」に変更しました。System.Globalization.CultureInfo.CurrentCulture.ToString()出力sisl-SIを使用して現在のカルチャを印刷する場合

しかし、私は常にUserNotification.resxから文字列を取得します。Seamsは、ローカリゼーションリソースファイルを認識しません。

4

1 に答える 1

5

マルチスレッドを使用する場合の.NETローカリゼーションの問題は、生成するすべてのスレッドに対して手動でカルチャを設定する必要があることです(Windowsカルチャと異なる場合、ユーザーが目的の言語を選択できる場合)。メインスレッドからは継承されません。

新しいスレッドを作成した後、開始する前に、そのカルチャをメインスレッドのカルチャに設定する必要があります(通常、ウィンドウのデフォルトのカルチャを使用します)。

したがって、システムは良好なCurrentCultureを示します。しかし、現在のスレッドは何と言っていますか?おそらく、アプリケーションは何らかの理由で異なるカルチャで開始されているので、デフォルトのリソースファイルをロードするのはなぜですか?とにかく、現在のカルチャを手動で設定するべきではない理由はありません。ほとんどの場合、アプリケーションの言語を変更するオプションをユーザーに提供する場合は、これを行う必要があります。

于 2011-10-15T15:04:42.657 に答える