我在WPF项目的Properties文件夹中有两个Resources文件(VS 2008):
选择文化“de-DE”不起作用(没有错误,但总是使用“Resources.resx”中的字符串):
public App()
{
UntitledProject2.Properties.Resources.Culture = new CultureInfo("de-DE");
}
但是:如果我将“Resources.de-DE.resx”重命名为“Resources.fr-CA.resx”或“Resources.en-US.resx”
然后通过
设置UntitledProject2.Properties.Resources.Culture = new CultureInfo("fr-CA");
它有效!!但为什么!?神秘...
答案 0 :(得分:0)
默认情况下,WPF将始终使用“en-US”;至少它是我最后一次检查时做的(这是.net 3.5)。如果您希望WPF改为使用系统当前设置的区域性,那么您将执行以下代码块:
FrameworkElement.LanguageProperty.OverrideMetadata(
typeof(FrameworkElement),
new FrameworkPropertyMetadata(
XmlLanguage.GetLanguage(
CultureInfo.CurrentCulture.IetfLanguageTag)));
这将覆盖用于FrameworkElement的Language依赖项属性的默认值,默认情况下,该属性也是“en-US”。
在应用程序的生命周期中尽早执行此代码。在此之后,您不必再担心它,除非您希望您的用户在程序执行过程中切换文化......