我想到了使用Visual Studio 2008在 WinForms 的.Net项目中创建和维护资源的三种方法。(我确信应该有三种以上的方法。)我需要决定在开始实施我们产品的国际化之前。
就个人而言,我不喜欢第一种方法,因为它创建了大量资源文件。我们在这种方法中获得的唯一优势是我们不需要手动在UI元素中设置文本。
我喜欢第二种和第三种方法,因为它们易于维护,并且只需要处理一组资源。所以没有重复的字符串和消息。翻译也很容易。
你有什么想法?请分享。
答案 0 :(得分:2)
我倾向于使用VS来创建项目并提供默认资源集,然后通过SDK工具winres.exe,resgen.exe和al.exe维护visual studio之外的任何其他资源。
您可以将资源维护在每个文化的一个文件夹的相当简单的文件夹结构中,只需要一个或两个批处理文件即可将资源构建到附属程序集中。这使您可以将VS解决方案保留在核心产品中,并且可以在事后完成所有本地化。
答案 1 :(得分:0)
如果国际化您的应用程序不仅仅意味着翻译文本,您应该使用第一个。您可以创建附属程序集来部署不同的文化。这样,您不仅可以本地化文本,还可以本地化图像,控制布局等。这是Microsoft推荐的方式,并且他们有充分的理由采用这种方法。
答案 2 :(得分:0)
我发现最简单的国际化方法是在电子表格或制表符分隔的某种文件中简单地维护应用程序中所有不同文本的列表(标签,按钮,表单标题等) ,然后将此文件发送给翻译人员以添加(在每种语言的一个附加列中)所有翻译。
然后在每个表单的Load事件中调用一个简单的方法(全部用英语维护),以递归方式遍历表单上的所有控件,并将其Text属性更改为您要翻译的任何语言的翻译值应用程序进入。语言可以以编程方式确定(我忘记了.Net命名空间中指示的位置),或者您可以在应用程序首次启动时使用简单的语言选择对话框(第二种方法的优点是您的应用程序可以转换为无论用户希望使用何种语言,都无需为所有Windows设置语言 - 这对于自助服务终端应用程序尤其有用。)
在我看来,创建和维护每个表单的所有不同的国际化版本是一个很大的痛苦,尽管当翻译的文本值与英语版本的大小明显不同时它很有用。
答案 3 :(得分:0)
就个人而言,我更喜欢第一种方法,因为上下文(在您的情况下,表格)对于翻译完美地完成其工作非常重要。在你的第二种和第三种方法中,上下文消失了,因为它只是一个字符串列表。
是的,第一种方法可能很难维护,但至少您的应用程序将被翻译为相关的。
答案 4 :(得分:0)
我个人喜欢添加一个项目。资源。 接下来,我启用Microsoft MAT(https://developer.microsoft.com/en-us/windows/develop/multilingual-app-toolkit)并通过MAT管理我的所有翻译。
通过这种方式,您还可以回收其他解决方案的翻译,节省您的时间; - )