我正在开展一个项目,开始做全球化应用所需的一切工作。其中一个经常出现的问题是是否要将异常消息进行全球化,但是需要确保string.Format使用的是CultureInfo.CurrentCulture而不是CultureInfo.InvariantCulture。此外,这意味着异常消息将存储在可以标记为与特定文化相关的资源文件中。
那么问题是,异常消息应该全球化还是应该保留InvariantCulture或作者所在国家/地区(在我的情况下为en-US)?
我正在开展一个项目,开始做全球化应用所需的一切工作。其中一个经常出现的问题是是否要将异常消息进行全球化,但是需要确保string.Format使用的是CultureInfo.CurrentCulture而不是CultureInfo.InvariantCulture。此外,这意味着异常消息将存储在可以标记为与特定文化相关的资源文件中。
那么问题是,异常消息应该全球化还是应该保留InvariantCulture或作者所在国家/地区(在我的情况下为en-US)?
异常消息很少直接显示给用户。您需要针对每个字符串考虑消费者。显然,用户界面中的文本需要国际化,但如果异常消息仅将被支持人员看到(或者当用户点击按钮后将可见并通过电子邮件发送给支持人员),那么翻译它有什么好处呢?
如果走得太远,你不仅会浪费时间和精力(而且i18n可能需要很多精力),还会使你的支持工作更加困难。你真的不想阅读用外语编写的日志文件,然后将其翻译回你的母语。
微软国际化自己的异常消息是有道理的,因为来自全世界的开发人员都会阅读这些消息 - 但除非您是在多个国家拥有开发人员且他们不共享共同语言的跨国公司,否则我不会翻译那些真正面向开发/支持的消息。
通常来说,我不这样做。
对于可能被用户看到的字符串进行全球化处理,同时避免异常消息向UI层冒泡,是正确的做法,对吧?
对吧? :)
如果你将要处理异常,那么要么保留它们的语言为你所理解的语言,要么给它们编码以便你可以在本地语言中查找。
我猜你所说的全球化,指的是符合i18n标准,通常称为国际化。是的,需要对GUI的所有可见部分进行国际化,包括诊断信息。但日志文件不应该国际化,因为开发人员需要在其中获取真正的信息,例如堆栈跟踪。