设置当前文化,以便使用Resources.Resx



我正在研究一个小型测试WPF应用程序中的本地化,并希望拥有英语和法语。我创建了资源。

我的测试应用程序启动时,我有一个启动窗口,其中有一个下拉菜单以选择英语或法语。当用户单击"确定"时,调用一种方法来根据所选语言切换文化,然后加载另一个窗口,该窗口将以选定的语言显示一些资源字符串。

switch (selectedLanguage)
{
    case "English":
        Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-CA");
        break;
    case "French":
        Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-CA");
        break;
}

用户可以关闭,然后关闭此窗口,然后从启动窗口中选择其他语言,然后单击确定以再次显示窗口,但使用他们选择的新语言。

这很有效,但我也有一个资源。Resx,基本上只是Resources.en-ca.resx的重复。我想知道我是否可以摆脱资源。

switch (selectedLanguage)
{
    case "English":
        //What would I do here?
        break;
    case "French":
        Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-CA");
        break;
}

我正在使用

访问代码中的资源字符串
Properties.Resources.SomeLocalizedString

是的,如果您愿意,您可以摆脱资源。您无需更改任何内容,因为您当前的代码将继续以相同的方式工作。

.NET中的本地化具有从更特定到更通用的后备功能实现的。如果它找不到指定语言和本地的资源文件(例如Resources.FR-CA.Resx(,它仅查找语言的资源文件(例如Resources.fr.Resx(,如果找不到它,使用默认资源文件(例如Resources.Resx(。

有关更多详细信息,请参见本地化资源的层次结构组织。

最新更新