我写在C#中的Windows CE设备的程序,并希望根据应用程序本身的语言设置要转换的应用程序。
我已经读到本地化使用资源文件和翻译使用“本地化”和“语言”的属性窗体的一些文章。 从我读我的理解,这种类型的形式翻译的工作原理与操作系统的语言设置(纠正我,如果我错了)。
现在我正在寻找一种方式做形式翻译依赖于我自己的程序语言设置,最好使用资源文件。
我已经想到在每个窗体的Load事件做这个翻译的,但也许还有其他的解决方案或最佳实践这一点。 任何帮助表示赞赏。
我写在C#中的Windows CE设备的程序,并希望根据应用程序本身的语言设置要转换的应用程序。
我已经读到本地化使用资源文件和翻译使用“本地化”和“语言”的属性窗体的一些文章。 从我读我的理解,这种类型的形式翻译的工作原理与操作系统的语言设置(纠正我,如果我错了)。
现在我正在寻找一种方式做形式翻译依赖于我自己的程序语言设置,最好使用资源文件。
我已经想到在每个窗体的Load事件做这个翻译的,但也许还有其他的解决方案或最佳实践这一点。 任何帮助表示赞赏。
如果使用Language.resx,语言[语言] - [全国]本地化的方式的.resx,生成的类语言将有一个可以设置为覆盖当前系统区域性名为文化财产。
Language.Culture = new CultureInfo("sv-SE");
label1.Text = Language.my_language_string;
如果您想使用需要一个参数的CultureInfo ResourceManager的类它有一个成员GetResourceSet()。 我还没有尝试过使用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链接: http://msdn.microsoft.com/en-us/library/system.resources.resourcemanager.getresourceset(v=vs.80).aspxo
如果你打算把它的Load事件,考虑制定一个模板形式。 某处在模板形式,添加本地化的检查。 然后,您有其他形式的继承模板,它们将会被默认得到Load事件。