Mic*_*tum 35 .net c# localization winforms
我有一个WinForms应用程序,我想将其翻译成多种语言.但是,我没有任何本地化WinForms应用程序的经验,我发现有关此主题的非常矛盾的信息.
基本上,我想要的是:
我见过的大多数解决方案要么每个表单都有一个.resx文件和/或外部附属程序集.
我必须自己动手吗?或者框架中有什么东西吗?
.net Framework 3.5 SP1如果重要的话.
编辑:在大多数情况下,Visual Studio已经提供了我想要的支持,但有两个问题.当我将Form.Localizable设置为true时,我有这个很好的设计器支持,但是这会为每个表单生成一个resx.在InitializeComponent中手动覆盖它的想法失败了,因为它是经常被覆盖的设计者编写的代码.从理论上讲,我只想a)覆盖ComponentResourceManager的创建,将其指向我的全局resx,b)将对ApplyResources的调用更改为将CultureInfo作为第三个参数的重载.
好像我必须在我的构造函数中添加一个函数调用,该函数调用在InitializeComponent()之后调用并覆盖它的行为.这似乎非常低效,但Visual Studio在警告触摸InitializeComponent时是正确的.目前,我确实正在推出自己的WinForms本地化框架......
Cha*_*e A 18
我刚刚完成了一个类似问题的C#.Net 3.5项目.我们正在为8种语言(包括英语)的现有多语言应用程序编写WinForms插件.
这就是我们这样做的方式:
使用默认语言English创建所有表单和UI.
将所有内部字符串放在资源文件中(不直接绑定到自定义错误消息和对话框标题等表单的内容)
完成大部分工作和测试后,我们对其进行了本地化.
每个表单都有一个.resx文件,但这是空的.我们将属性'Localizable'设置为true,.resx文件中填充了按钮大小和字符串等内容.
对于其他每种语言,我们都更改了表单上的"语言"属性.我们选择了每种语言的基本版本,例如:'西班牙语'而不是'西班牙语(智利)等,以便它适用于每种'西班牙语'方言,我想.
然后我们浏览了每个控件,翻译了它的文本并调整了大小,如果需要的话.这为每种语言和表单组合创建了一个.resx.
然后我们留下了8种语言,每种形式8个.resx,一般字符串8个.resx.编译时,输出文件夹中包含我们正在创建的.dll,然后是每种语言的子文件夹,其中包含.resources.dll.
我们只需更改language属性就可以测试设计器中UI的版本,以检查我们是否有正确的字符串和布局.
总而言之,一旦我们了解它,它就非常容易和无痛.
我们不需要对表单加载进行任何自定义调整
我问了一个关于 ASP.NET 的类似问题,并得到了第一个答案 - 这个工具及其工作流程可能也适合你 - 看看:Lingobit Localizer
它似乎能够加载您的 Winforms 应用程序,并允许您开始翻译标签等,并在执行此操作时查看表单。还有许多其他功能,例如增量翻译和翻译记忆库(如果您一遍又一遍地使用相同的术语)。
看起来很有前途(对于 Winforms)——不过我自己还没有使用过它。
这里有一个广泛的潜在 .NET 本地化工具列表- 不确定它们的工作效果如何以及它们涵盖的内容 - 看一下,也许您会找到您正在寻找的东西。
马克
归档时间: |
|
查看次数: |
25279 次 |
最近记录: |