如何重构现有的.NET应用程序以支持本地化?

3
我们要走向全球化。我的任务是重构我们现有的产品以支持本地化。上周,我放弃了使用资源文件(.resx),转而采用自制的数据库查找方法。但是在遇到严重问题后,我又回到了使用resx的微软方式。
到目前为止,我看到的所有文档都详细介绍了如何创建新的“面向世界”的应用程序,但是我没有看到任何关于更改现有应用程序的内容。难道我的唯一选择就是逐个窗体和控件来修改,让它们指向新创建的资源文件吗?
有没有关于国际化应用程序的好资源/链接?
编辑: 这些是使用大多数2.0框架的C# winform应用程序。我是公司的新员工。
2个回答

2
抱歉,没有关于国际化您的应用程序的好来源或链接,但是可能使用这个资源重构工具本地化 FxCop 规则一起,可以帮助找到所有需要本地化的字符串。在我看来,该规则过于严格(例如,异常文本或日志输出不是为最终用户阅读的),但您的情况可能有所不同。

+1 for the refactoring tool。我希望两周前我做整个网站的时候就有它了。 - Brandon

0

这将是非常繁重的工作,可能比一开始本地化应用程序时更加繁琐,因为现在你必须删除/编辑事物而不仅是创建它们。

即使有自动化工具帮助,你也需要逐个检查每个表单,以确保格式化在本地化字符串时不会出错(某些语言通常比其他语言更长;例如,德语与英语)。对于 Web 表单应用程序来说,这应该更容易,但你没有指定应用程序类型,所以我会尽量给出中性的答案。

请参阅我的回答this question,了解通过应用程序分发本地化字符串的策略。

我看到的最大问题是本地化字符串,其中语言语法很重要,并且代码将值编程地注入到字符串中。尽量避免这些,因为它们只会给你带来痛苦。我记得这里曾经有一个关于本地化字符串的问题,例如“x 天,y 小时,z 分钟”之类的字符串。

在大多数这种情况下,我使用的策略是尽可能找到一种以本地化中立的方式显示相同数据的方法。例如,不要使用带有文本“45分钟”的单个标签,而是将其重构为将标签与值分开,如“分钟:”和“45”。诸如此类的事情。重构UI既是一门艺术,也是一门科学,因此如果不知道您正在处理什么,业务领域或用例等,很难给出具体的答案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接