34

如何让我的应用程序在显示 win32/.net 异常消息时始终使用英文?

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

非常无用,谷歌获得了高达 4 次点击,但都没有帮助。所以我必须猜测原始消息是什么,然后用谷歌搜索。(它是:“应用程序无法启动,因为它的并排配置不正确。”)

这次很容易找出最初的错误消息是什么,从一开始就用英文显示消息当然可以节省我的时间。

那么我该怎么做呢?

4

5 回答 5

10

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

于 2008-10-13T09:50:22.113 回答
5

更多的理由是为什么不应该(糟糕地)翻译异常。记录异常时,使用单一语言更有意义。我不敢相信微软没有想到除了 UICulture 之外的其他方法,这基本上是一个不可选项:(

于 2008-12-18T08:15:58.797 回答
2

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

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

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

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

于 2008-10-13T11:06:19.883 回答
2

强制异常以不同的语言显示对用户来说似乎有点苛刻......你能在消息中显示错误代码吗?然后用户会得到他们能理解的东西,你可以查找翻译版本的错误代码。

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

于 2008-10-13T11:50:15.380 回答
0

如何让我的应用程序在显示 win32/.net 异常消息时始终使用英文?

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

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

于 2008-10-13T12:39:15.220 回答