我有一个使用VS2005和.net Framework2.0开发的现有winforms应用程序。
现在我们需要全球化这个应用程序。这两个地区是德语和日语。
我知道我们可以使用form的localize属性来创建本地化的表单资源,并且可以有消息框、异常等中使用的字符串的其他资源文件。
我想知道全球化现有应用程序的最佳方法,是应该在每个表单上设置localize属性,还是有一些工具可以提取标签名称并控制日期格式、货币等的names..what考虑因素。
另外,我们在代码中的某些地方使用了一些复合字符串来连接消息字符串,如何本地化这些字符串?
在开始全球化活动之前,我们将把应用程序迁移到VS2008和.net Framework3.5。
发布于 2009-10-05 14:48:20
我只接触过LTR语言,没有接触过日语。考虑到这一点,下面是我的一些最佳实践:
发布于 2009-10-05 14:29:55
最好在每个表单上设置本地化属性,这样不仅可以提取字符串,还可以将各种组件的几何形状提取到基本.resx文件中。对于指定的语言,组件的原始大小不太可能适合翻译。
通常不建议使用片段组成字符串,因为它们通常不会映射到不同语言中的相同片段模式。使用格式化字符串(String.Format
)来输入值,是的,但是任何依赖于原始语言的语法和句子顺序的东西都不太可能适合。
发布于 2009-10-05 12:13:02
如果你使用Visual Source Safe作为你的源代码控制(希望你不是),无论你做什么,都不要在你的源代码中添加日语文本。虽然Visual Studio可以处理unicode源文件,但VSS不能很好地处理它们。
我开发了一个将自身翻译成日语的应用程序,在源代码本身中包含日语(用于调用类似MessageBox的函数)会损坏文件,而且因为VSS是基于diff的,所以文件会一直损坏到原始的签入版本。由于VSS将基于unicode的CS文件的某些部分(每个字符使用两个字节)偏移了一个字节,所以会发生这种损坏。
修复这些文件需要大量的手工工作,我的老板在我身后盯着我,尖叫着说我们注定要失败,所以不要这么做。
此外,这里还有几个关于此主题的其他StackOverflow问题:
Best way to implement multi-language/globalization in large .NET project
Best practice to make a multi language application in C#/WinForms?
就我个人而言,我更喜欢更简单的方法。在Excel或应用程序中需要翻译的每一段英文文本(控制文本属性、在MessageBox函数中使用的字符串等)中创建一个列表。并将电子表格发送给您的翻译人员。在应用程序中,在每个窗体的Load事件中调用一个方法,该方法循环访问窗体上的所有控件,并将其文本属性更改为翻译值。将所有对MessageBox的调用替换为对翻译要显示的文本的中间函数的调用,然后使用翻译后的文本调用MessageBox。
使用内置的全球化方法是一项大量的工作,因为您必须手动创建每个全球化表单,然后手动将所有文本替换为翻译,而这项任务非常需要程序员流利。我提到的方法是通过编程完成的,不需要程序员流利地使用翻译后的语言。
https://stackoverflow.com/questions/1519648
复制相似问题