我在一个小的测试WPF应用程序的本地化工作,并希望有英语和法语。我创建了Resources.en-CA.resx和Resources.fr-CA.resx。
当我的测试应用程序启动时,我会看到一个启动窗口,其中有一个下拉列表可以选择英语或法语。当用户单击OK时,将调用一个方法来根据所选语言切换区域性,然后加载另一个窗口,该窗口将以所选语言显示一些资源字符串。
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的值。
switch (selectedLanguage)
{
case "English":
//What would I do here?
break;
case "French":
Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-CA");
break;
}我正在使用下面的代码访问资源字符串
Properties.Resources.SomeLocalizedString发布于 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。
https://stackoverflow.com/questions/44751907
复制相似问题