我发现了一些类似的主题,但我没有得到我想要的答案。
我只是在开始一个"更严肃"(WinForms)项目之前尝试国际化。因此,目前在我的小型测试应用程序中,我使用附属程序集(语言dll文件)解决了本地化问题,并使用ResourceManager填充控件的文本字段,语言更改由Thread.CurrentThread.CurrentCulture&Thread.CurrentThread.CurrentUICulture方法。
CultureInfo ci = new CultureInfo(lang);
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;
this.button1.Text = Resources.LocTest.String1;
我想在程序初始启动时从资源中加载所有文本,不仅是主表单,而且是所有表单(还有那些表单,还没有实例化)!我该如何实现?这个程序可行吗?
我得到了一些建议,我应该简化整个本地化过程,将"localizable"属性设置为true并完成翻译。大多数教程都是这样的。
有人知道我应该用哪种方法吗?
提前感谢!
我对本地化很困惑。。。
请使用您提到的第二种方法。
我得到了一些建议,我应该简化整个本地化过程,将"localizable"属性设置为true并完成翻译。大多数教程都是这样的。
因为这是微软认为应该在winforms应用程序中进行本地化的既定方式。http://msdn.microsoft.com/en-us/library/y99d1cd3%28v=vs.90%29.aspx
第一个解决方案的一个问题是:如何确保另一种语言的文本能够正确显示
微软已经意识到,这是正在发生的问题之一。使用SDK中的一个名为WINRES.exe的小工具,您可以查看设计好的表单并为其编写翻译。http://msdn.microsoft.com/en-us/library/8bxdx003%28v=vs.90%29.aspx
如果你想在运行时更改语言并更新所有表单,这篇文章可能会给你一个提示:http://msdn.microsoft.com/en-us/magazine/cc163609.aspx#S9
以下几行解释了如何更新UI:
Dim crm As ComponentResourceManager
crm = New ComponentResourceManager(GetType(Main))
crm.ApplyResources(cmdAddCustomer, cmdAddCustomer.Name)
crm.ApplyResources(mnuFile, mnuFile.Name)
crm.ApplyResources(mnuFileAddCustomer, mnuFileAddCustomer.Name)
此代码的最后3行可以在设计器文件中的每种形式(localizable=true)中找到
因此,您可以为更新方法指定一个接口,每个表单都应该实现该接口,实现接口,并在语言更改后迭代所有表单并调用这些方法。
希望这能帮助你。。。