【问题标题】:Forcing English language exceptions in .NET framework在 .NET 框架中强制使用英语语言异常
【发布时间】:2010-10-17 19:20:27
【问题描述】:

在使用 ASP.NET MVC 时,我注意到安装在我的系统上的 .NET 框架发出的异常消息是德语的。我真的更喜欢英文信息,所以我可以在 SO 上发布它们。

我知道之前有人问过这个问题,但奇怪的是,在我的情况下,建议的解决方法似乎都不起作用。我已经尝试了以下方法:

  • 将我的 Windows 系统切换到英语区域并重新启动 Visual Studio
  • 设置工具 -> 选项 -> 环境 -> 国际设置 -> 语言为“英语”
  • 在抛出异常之前将线程语言环境设置为英语,如下所示:

    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture ("zh-CN"); Thread.CurrentThread.CurrentUICulture=new CultureInfo("en-US");

    //调用我的错误方法...

那么,如何让 .NET 框架发出英语异常消息?是否有任何方法可以在每个解决方案甚至整个系统范围内执行此操作?

编辑:在执行我的单元测试时抛出异常。我不确定这是否是设置线程文化无效的原因。

【问题讨论】:

  • 如果您正在配置 Windows 选项,您可能需要重新启动 Visual Studio。你试过吗?否则,这个问题确实显得很奇怪。
  • 是的,我在设置语言环境后重新启动了 VS。

标签: .net asp.net-mvc exception localization


【解决方案1】:

我已经在 web.config 中尝试了以下更改并且它有所帮助:

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

【讨论】:

  • 简单、有效,您可以在部署期间将其移除。谢谢,@ADM-IT!
【解决方案2】:

卸载德语语言包:

开始 - 控制面板 - 程序和功能 - Microsoft .NET Framework (4 Client Profile) Language Pack DEU - 卸载 (Deinstallieren)

您可能需要对在那里找到的每个 .NET Framework 版本重复卸载。

【讨论】:

  • 同意。这很有用;它以(略有不同)的方式解决了 OP:s 的问题,并且对我们其他人绝对有用。我赞成你来补偿。 :)
  • 语言包不再使用,windows 8及以上.NET使用操作系统的语言
  • 这是正确的解决方案,无需在抛出异常之前更改线程文化
【解决方案3】:

【讨论】:

    【解决方案4】:

    正如我刚刚发现的,这个问题确实与另一个测试项目有关。虽然我在实际项目中尝试将 UI 语言设置为英语,但我在测试项目中没有这样做,这就是为什么在查看测试结果时异常消息仍然是德语的原因。

    在抛出异常之前在测试方法中设置 UI 语言对我来说是诀窍。

    【讨论】:

    • 您可以在调试过程中在 Trace 点中设置 UI 语言,这样就可以不间断地继续执行(对于不总是出现的异常)。在您希望抛出异常的行设置断点,并让它“打印”此消息:{System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-us");}
    【解决方案5】:

    显然所有框架异常消息都绑定到已安装的操作系统语言。因此,除非您安装英文版的 Windows,否则 .Net 框架异常不会以英文显示。 尽管将 CurrentUICulture 设置为“en-US”似乎很奇怪,但我使用这种变通方法在我的荷兰语 Windows 操作系统上显示英文消息。

    【讨论】:

      【解决方案6】:

      您是否尝试过在web.config 中将 UI 文化设置为“en”?更多信息here

      【讨论】:

        【解决方案7】:

        您是否尝试过在阅读异常文本之前立即切换文化?可能是在您访问消息时发生本地化 - 而不是在创建异常对象时发生。

        【讨论】:

        • 好点。就我而言,执行单元测试时会引发异常。我不确定在这种情况下异常文本是否被不同的线程读取。
        • 您可以尝试在“字符串消息 = ex.Message”代码(或您拥有的任何内容)之前设置当前线程 UI 文化吗?
        • 消息已被测试运行程序读取。在抛出异常之前在单元测试方法中设置 UI 语言就可以了。
        猜你喜欢
        • 2011-01-06
        • 2020-10-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多