C# - Windows CE:独立于操作系统区域性设置的表单转换
本文关键字:设置 区域性 表单 转换 操作系统 Windows CE 独立 | 更新日期: 2023-09-27 18:31:32
我正在为 Windows CE 设备编写一个 C# 程序,并希望根据应用程序本身的语言设置翻译应用程序。
我已经阅读了一些关于使用资源文件进行本地化和使用"可本地化"和"语言"属性翻译表单的文章。从我所读到的内容中,我了解到这种类型的表单翻译适用于操作系统语言设置(如果我错了,请纠正我)。
现在,我正在寻找一种根据我自己的程序内语言设置进行表单翻译的方法,最好使用资源文件。
我已经考虑过在每个表单的 Load 事件中进行此转换,但也许还有其他解决方案或最佳实践。任何帮助,不胜感激。
如果您使用 Language.resx,则为 Language。language]-[country].resx 本地化方式,生成的类 Language 将具有一个名为 Culture 的属性,可以将其设置为覆盖当前系统区域性。
Language.Culture = new CultureInfo("sv-SE");
label1.Text = Language.my_language_string;
如果你想使用 ResourceManager-class,它有一个成员 GetResourceSet(),它采用参数 CultureInfo。我自己还没有尝试使用GetResourceSet,但这听起来像是你可以使用的东西。
ResourceManager CultureResourceManager = new ResourceManager("My.Language.Assembly", System.Reflection.Assembly.GetExecutingAssembly());
ResourceSet resourceSet = CultureResourceManager.GetResourceSet("sv-SE", true, true);
resourceSet.GetString("my_language_resource");
MSDN-link:http://msdn.microsoft.com/en-US/library/system.resources.resourceManager.getResourceset(v=vs.80).aspxo
如果要将其放入 Load 事件中,请考虑制作模板表单。在模板表单中的某个位置,添加本地化检查。然后,让其他窗体继承模板,默认情况下,它们将获取 Load 事件。