启动时加载所有本地化资源

本文关键字:本地化 资源 加载 启动 | 更新日期: 2023-09-27 18:19:50

我发现了一些类似的主题,但我没有得到我想要的答案。

我只是在开始一个"更严肃"(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)中找到
因此,您可以为更新方法指定一个接口,每个表单都应该实现该接口,实现接口,并在语言更改后迭代所有表单并调用这些方法。

希望这能帮助你。。。