2009-07-07 7 views
1

ich habe zwei Ressourcen-Dateien im Ordner Eigenschaften eines WPF-Projekt (VS 2008):Mysterious Resources/Culture Verhalten in WPF App

  • Resources.resx
  • Resources.de-DE.resx

Auswahl der Kultur "de-dE" funktioniert nicht (kein Fehler, sondern immer die Saiten von "Resources.resx" verwendet werden):

public App() 
    { 
     UntitledProject2.Properties.Resources.Culture = new CultureInfo("de-DE"); 
    } 

ABER: wenn ich "Resources.de-DE.resx" umbenennen "Resources.fr-CA.resx" oder "Resources.en-US.resx"

und setzen Sie ihn dann über

UntitledProject2.Properties.Resources.Culture = new CultureInfo("fr-CA"); 

es funktioniert !! Aber warum!? Mysterious ...

+0

Dasselbe hier in VS 2010. :-( –

Antwort

0

Standardmäßig verwendet WPF immer "en-US"; zumindest hat es das letzte Mal getan, das ich überprüft habe (was .net 3.5 war). Wenn Sie WPF wollen stattdessen die Kultur verwenden derzeit vom System gesetzt, würden Sie diesen Codeblock ausführen:

FrameworkElement.LanguageProperty.OverrideMetadata(
    typeof(FrameworkElement), 
    new FrameworkPropertyMetadata(
     XmlLanguage.GetLanguage(
     CultureInfo.CurrentCulture.IetfLanguageTag))); 

Damit wird der Standardwert für die Sprachabhängigkeit Eigenschaft Framework verwendet außer Kraft setzen, die wiederum „en ist "US" standardmäßig.

Führen Sie diesen Code einmal und zu einem frühen Zeitpunkt Ihrer Anwendung aus. Danach sollten Sie sich keine Gedanken mehr darüber machen müssen, es sei denn, Sie erwarten, dass Ihr Benutzer die Kultur mitten in der Programmausführung wechselt ...