首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置CurrentUICulture,使其使用Resources.resx

设置CurrentUICulture,使其使用Resources.resx
EN

Stack Overflow用户
提问于 2017-06-26 08:54:34
回答 1查看 745关注 0票数 2

我在一个小的测试WPF应用程序的本地化工作,并希望有英语和法语。我创建了Resources.en-CA.resx和Resources.fr-CA.resx。

当我的测试应用程序启动时,我会看到一个启动窗口,其中有一个下拉列表可以选择英语或法语。当用户单击OK时,将调用一个方法来根据所选语言切换区域性,然后加载另一个窗口,该窗口将以所选语言显示一些资源字符串。

代码语言:javascript
复制
switch (selectedLanguage)
{
    case "English":
        Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-CA");
        break;

    case "French":
        Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-CA");
        break;
}

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

这是有效的,但我也有一个Resources.resx,它基本上只是Resources.en-CA.resx的副本。我想知道我是否可以摆脱Resources.en-CA.resx,如果可以,我应该将CurrentUICulture设置为什么,以便当选择英语时,它将使用来自Resources.resx的值。

代码语言:javascript
复制
switch (selectedLanguage)
{
    case "English":
        //What would I do here?
        break;

    case "French":
        Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-CA");
        break;
}

我正在使用下面的代码访问资源字符串

代码语言:javascript
复制
Properties.Resources.SomeLocalizedString
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-26 09:10:36

可以,如果您愿意,您可以删除Resources.en-CA.resx文件。您不需要更改任何内容,因为您当前的代码将继续以相同的方式工作。

.Net中的本地化是使用从更具体到更通用的回退功能实现的。如果找不到指定语言和本地语言的资源文件(例如Resources.fr-CA.resx ),则只查找该语言的资源文件(例如Resources.fr.resx),如果找不到资源文件,则使用默认资源文件(例如Resources.resx)。

有关详细信息,请参阅Hierarchical Organization of Resources for Localization

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44751907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档