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

Pet*_*ima 6 c# resources localization internationalization winforms

我发现了一些类似的主题,但我没有得到我正在寻找的答案.

在开始"更严肃"(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;
Run Code Online (Sandbox Code Playgroud)

我想从程序初始启动时的资源中加载所有文本,不仅是主表单而且是所有表单(也在那些尚未实例化的表单上)!我怎么能实现这个?这个程序是否可行?

我得到了一些建议,我应该简化整个本地化过程,将"localizable"属性设置为true并完成翻译.大多数教程都遵循这种方式.

有没有人知道,我应该使用哪种方法?

提前致谢!

我对本地化很困惑......

70s*_*der 2

请使用您提到的第二种方法。

我得到了一些建议,我应该通过将“可本地化”属性设置为 true 并完成翻译来简化整个本地化过程。而且大部分教程都是这样的。

因为这是 Microsoft 认为应该在 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
以下几行给出了如何更新的解释你的用户界面:

Dim crm As ComponentResourceManager  
crm = New ComponentResourceManager(GetType(Main))   
crm.ApplyResources(cmdAddCustomer, cmdAddCustomer.Name)   
crm.ApplyResources(mnuFile, mnuFile.Name)   
crm.ApplyResources(mnuFileAddCustomer, mnuFileAddCustomer.Name)   
Run Code Online (Sandbox Code Playgroud)

该代码的最后 3 行可以在设计器文件的每个表单 (localized = true) 中找到。
因此,您可以为更新方法指定一个接口,每个表单都应该实现该接口,实现该接口,并在语言更改后迭代所有表单并调用这些方法。

希望这可以帮助你...