2009-01-23 37 views
10

我正在开发一个项目,并且我刚开始完成全球化应用程序所需的所有工作。经常出现的一个问题是是否全球化异常消息,但确保string.Format使用CultureInfo.CurrentCulture而不是CultureInfo.InvariantCulture。此外,这意味着异常消息将被存储在可以标记为特定于文化的资源文件中。应该将异常消息全球化

所以问题是,如果异常信息是全球化的,或者应该留在InvariantCulture或作者的国家;在我的情况下,美国。

回答

32

异常消息应该很少直接显示给用户。你需要为每个字符串考虑消费者。显然,用户界面中的文本需要国际化,但是如果有异常消息是,那么只有才会被支持人员看到(或者在用户看来可以看到,然后通过电子邮件发送到他们点击按钮时支持),那么翻译它的好处?

如果你走得太远,你不仅会浪费时间和精力(而且国际化可能会花费很多努力),但你也会让你的支持生活更加艰难。你真的不想读取用外语书写的日志文件并将它们翻译回你的母语。

这是有道理的,微软以国际化他们异常消息,因为他们将开发商来自世界各地的读取 - 但除非你是跨国公司与开发商在多个国家谁不都有一个共同的语言,我不会翻译真正用于开发/支持的消息。

+0

+1我认为更实用的方法。 – 2009-01-23 20:57:21

+0

+1,但我从前雇主那里听说的一个原因是,类似的例外可以通过多种方法抛出。如果他们想改变异常的措辞,他们只需要在一个地方编辑资源包。我认为这是愚蠢的... – 2009-01-23 21:07:42

0

如果您打算处理例外情况,那么请将它们留在您能够理解的语言中,或者给他们提供代码,以便您可以用母语查找它们。

10

通常,我不知道。

全球化可能会被用户看到的字符串,并且您不会让您的异常消息渗透到UI,对吗?

对不对? :)

+0

+1表示与Jon S相同,但是简短 – MarkJ 2009-03-13 16:00:40

0

我假定通过全球化,你的意思是i18n兼容,通常被称为国际化。是的,国际化GUI的所有可见部分,包括诊断消息。日志文件是开发人员获取真实信息(如堆栈跟踪)的地方,不应国际化。