我正在用C#为Windows CE设备编写一个程序,并希望根据应用程序本身的语言设置翻译该应用程序。
我已经阅读了一些关于使用资源文件进行本地化和使用“Localizable”和“Language”属性翻译表单的文章。根据我的阅读,我理解这种类型的表单翻译适用于操作系统语言设置(如果我错了,请纠正我)。
现在我正在寻找一种方法来根据我自己的程序内语言设置进行表单翻译,最好是使用资源文件。
我已经考虑过在每个表单的Load事件中进行此转换,但也许还有其他解决方案或最佳实践。任何帮助表示赞赏。
答案 0 :(得分:0)
如果要将其置于Load事件中,请考虑制作模板表单。在模板表单的某处,添加您的本地化检查。然后,让其他表单继承模板,默认情况下它们将获得Load事件。
答案 1 :(得分:0)
如果您使用Language.resx,Language。[语言] - [country] .resx本地化方式,生成的类语言将具有名为Culture的属性,可以将其设置为覆盖当前系统文化。
Language.Culture = new CultureInfo("sv-SE");
label1.Text = Language.my_language_string;
如果要使用ResourceManager类,它有一个成员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");