防止异常消息被翻译成用户的语言?

时间:2008-10-13 09:43:14

标签: c# .net exception globalization

如何在显示win32 / .net例外消息时使我的应用程序始终使用英语?

我收到了这条消息,看起来有人使用babelfish来翻译它(它是瑞典语): “System.ComponentModel.Win32Exception:Programmet kunde inte starta eftersom programmets sida-vid-sidakonfigurationärfelaktig。”

非常无益,谷歌有4次点击,没有一个有用。 所以我必须猜测原始邮件是什么,并谷歌。 (原来是:“应用程序无法启动,因为它的并排配置不正确。”)

这一次,找出原始的错误信息非常简单,从一开始就用英文留言当然会节省我的时间。

那我该怎么做?

5 个答案:

答案 0 :(得分:9)

您可以尝试将Thread.CurrentThread.CurrentUICulture和/或.CurrentCulture设为CultureInfo("en-US")

答案 1 :(得分:4)

不应该翻译异常的原因(严重)。 记录异常时,使用单一语言进行muc更有意义。我不敢相信微软除了UICulture之外没有想到这样做的方法,这基本上是一个非选择:(

答案 2 :(得分:2)

如果是ASP.NET应用程序,您可以在web.config(*)中设置UI语言:

<system.web>
    <globalization ... uiCulture="en-US" ... />
</system.web>

对于其他应用程序,默认使用当前用户的区域设置,您必须明确覆盖它 - 例如Thread.CurrentUICulture = new CultureInfo(“en-US”)。

(*)警告 - 如果配置文件中的错误导致在处理元素之前抛出异常,您将获得默认的uiCulture。

答案 3 :(得分:2)

强制异常以不同的语言显示对用户来说似乎有点苛刻......你能否与消息一起显示错误代码?然后,用户将获得他们可以理解的内容,并且您可以查找已翻译版本的错误代码。

我不是.net家伙所以我不知道这是否可行,只是一个想法。

答案 4 :(得分:0)

  

如何始终使用我的应用程序   显示win32 / .net时使用英文   例外消息?

首先,不向用户显示win32 / .net异常消息。您应该处理异常而不是向用户显示异常。

默认情况下,异常消息将以当前的UI语言显示(如果安装了适当的语言包,否则它们将回退到英语)。您可以更改更改Thread.CurrentThread.CurrentUICulture属性的异常消息,但这会影响应用程序的整个GUI。