8

以下に示すように、ExportForm をドイツ語 (de) とロシア語 (ru) にローカライズしました。

私の CultureInfo がドイツ語 (Austrian-de-AT) の場合、すべて問題ありません。ドイツ語に翻訳された形式が表示されます。

string specCult = "de-AT";
Thread.CurrentThread.CurrentUICulture = new CultureInfo(specCult);

しかし、ロシア語 (ru-RU) の CultureInfo を含む英語の UI が表示されます。

string specCult = "ru-RU";
Thread.CurrentThread.CurrentUICulture = new CultureInfo(specCult);

"ru-RU" の代わりに "ru" を使用して CultureInfo を作成すると、次のように機能します。

string specCult = "ru";
Thread.CurrentThread.CurrentUICulture = new CultureInfo(specCult);

何が問題なのか教えてください。または、問題を調査する方向を教えてください。

4

2 に答える 2

2

私は問題を特定しました: ru-RUがメイン プロジェクトのアセンブリ設定でニュートラル言語として選択されました。

MSDN: NeutralResourcesLanguage 属性は、アセンブリのニュートラル カルチャのリソースを表示するために使用された言語を ResourceManager に通知します。ニュートラル リソース言語と同じカルチャでリソースを検索すると、ResourceManager はメイン アセンブリにあるリソースを自動的に使用します。これは、現在のスレッドの現在のユーザー インターフェイス カルチャを持つサテライト アセンブリを検索する代わりに行われます。これにより、ロードする最初のリソースのルックアップ パフォーマンスが向上し、ワーキング セットを減らすことができます。

http://msdn.microsoft.com/en-us/library/bb385967.aspx

于 2012-05-21T10:13:47.563 に答える
0

ru はロシア文化の中立的な名前で、ru-Ru は特定のロシア (ロシア) 文化の名前です。

これは MSDN リンクから取得されます

この例では、起動時に、既定のシステム カルチャが既にロシア語 (ロシア) になっているシステムを除くすべてのシステムで、現在のカルチャと現在の UI カルチャをロシア語 (ロシア) に設定します。既定のシステム カルチャが既にロシア語 (ロシア) である場合、コードは現在のカルチャと現在の UI カルチャを英語 (米国) に設定します。

ここに他の良い説明があります

特定のカルチャのリソースがオペレーティング システムで利用できない場合は、関連付けられているニュートラル カルチャのリソースが使用されます。ニュートラル カルチャのリソースが利用できない場合は、メイン アセンブリに埋め込まれているリソースが使用されます。

Windows APIのロケールのリストは、.NETフレームワークでサポートされている文化のリストとはわずかに異なります。たとえば、P/Invokeメカニズムを介してWindowsとの相互運用性が必要な場合、アプリケーションはオペレーティングシステムに定義されている特定の文化を使用する必要があります。特定の文化を使用すると、LCIDと同じロケール識別子で識別される同等のWindowsロケールとの一貫性が保証されます。

于 2012-05-18T11:31:04.257 に答える