2008-10-13 19 views
29

如何让我的应用程序在显示win32/.net异常消息时始终使用英语?防止将异常消息转换为用户的语言?

我得到这个消息时,它看起来像有人用Babelfish平台来翻译它(这是瑞典): “System.ComponentModel.Win32Exception:Programmet昆德INTE启动市场eftersom programmets思达-VID-sidakonfiguration AR felaktig。”

极其无用,Google对它的访问量高达4次,没有任何帮助。 所以我必须猜测原始消息是什么和谷歌。 (这是:“应用程序启动失败,因为它的并排配置不正确。”)

这次找到原始错误信息是什么,开始当然会节省我的时间。

那么我该怎么做?

回答

9

你可以尝试设置Thread.CurrentThread.CurrentUICulture和/或.CurrentCultureCultureInfo("en-US")

+2

如果你改变CurrentCulture,不会改变小数点分隔符,字符串排序,货币符号,日期格式等?这将严重干扰您的外国用户 – MarkJ 2009-03-13 15:56:19

+1

以下是全文: System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(“en-US”); – epotter 2009-08-19 20:41:01

+2

除了改变文化外,还有其他的可能性,因为这可能是由申请翻译的目的而设定的。但是,例外情况不应被翻译。 .Net安装中是否有任何软件包需要删除? – Juri 2009-11-11 13:48:33

2

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

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

对于其他情况,当前用户的区域设置默认情况下使用,和你有明确地覆盖它 - 例如Thread.CurrentUICulture = new CultureInfo(“en-US”)。 (*)注意 - 如果在处理元素之前配置文件中的错误导致异常被抛出,您将获得默认的uiCulture。

2

强制异常显示在不同的语言似乎有点苛刻的用户...你可以显示一个错误代码连同消息?然后用户将得到他们可以理解的内容,并且可以查找翻译版本的错误代码。

我不是一个.net人,所以我不知道这是否可能,只是一个想法。

0

如何让我的应用程序始终 显示的Win32/.NET 异常的邮件时使用的英语吗?

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

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

3

所有更多的原因为什么不应该翻译(严重)的例外。 当记录异常时,它使muc更有意义用单一语言来完成它。我不敢相信微软没有想到这样做的方式,除了UICulture,这基本上是非选项:(