私たちの目標は、さまざまなアプリケーション言語と書式設定 (たとえば、英語のテキストとドイツ語の日付/数値書式) をユーザーに提供することです。これまでのところ、私はさまざまな方法を試してきましたが、最も有望なのはこれです(もちろん、単純化されたハードコードされたバージョンです):
var german = new CultureInfo("de-DE");
var english = new CultureInfo("en-US");
Thread.CurrentThread.CurrentCulture = german;
CultureInfo.DefaultThreadCurrentCulture = german;
Thread.CurrentThread.CurrentUICulture = english;
CultureInfo.DefaultThreadCurrentUICulture = english;
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(english.IetfLanguageTag)));
残念ながら、最後の行では、日付と数字 (テキストだけでなく) にも英語の書式設定が適用されます。また、FrameworkElement にオーバーライドする「CultureProperty」はありません。どこでも StringFormat を使用せずに目的の動作を実現する方法はありますか?
最後の行に英語ではなくドイツ文化を使用しようとすると、一部のテキストが英語ではなくドイツ語になります (これも正しくありません)。