我的WPF应用程序中有一个奇怪的行为,使用资源(.resx
)进行本地化。
在Properties
我创建了一个名为Resources的新文件夹,其中我放置了我的resx文件。我创建了两个名为Resources.resx
和Resources.it-IT.resx
的文件。
在App
课程中,我完成了方法OnStartup
的覆盖:
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
Thread.CurrentThread.CurrentUICulture = new CultureInfo("it-IT");
}
我期望应用程序以意大利语开始,但以英语开头(默认位于文件Resources.resx
)。
我尝试将意大利语资源的名称从Resources.it-IT.resx
更改为Resources.it.resx
。然后我改变了我设置文化的部分:
Thread.CurrentThread.CurrentUICulture = new CultureInfo("it");
通过这种方式,应用程序以意大利语开始。
我不明白这个问题。为什么文化信息不适用于it-IT
?我已尝试使用方法CultureInfo.GetCultureInfo
和CultureInfo.CreateSpecificCulture
。
此外,Thread.CurrentThread.CurrentUICulture
已设置为意大利语,但如果我不创建新的CultureInfo
则无法正常工作。为什么呢?
我已经阅读了this个问题,但问题不同了。我可以改变文化,但我想知道为什么它只适用于TwoLetterISOLanguageName
。
我尝试使用法语(fr-FR
使用文件Resources.fr-FR.resx
)语言,但没有问题。