用英语强制例外语言

时间:2010-01-19 09:07:53

标签: .net visual-studio localization

我的Visual Studio 2005 是法语版,安装在法语操作系统上。 我在调试或运行时收到的所有异常也都是用法语获得的。

但是,我可以做一些异常消息是英语吗?对于护目镜,讨论等。

我尝试了以下内容:

Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
throw new NullReferenceException();

获得

  

未将对象引用设置为对象的实例。

这当然很酷......但是,当我在法国项目上工作时,我不会硬编码强制Thread.CurrentUICulture为英文。我希望英语更改仅在我的本地计算机上,并且不要更改项目属性。

是否可以设置例外语言而无需修改应用程序的代码


在VS 2008 中,设置工具 - >选项 - >环境 - >国际设置 - >语言为“英语”wnd抛出相同的异常获得ex消息en法语,但是: alt text http://lh4.ggpht.com/_1TPOP7DzY1E/S1V62xcvHAI/AAAAAAAAC7o/ckLDVFPKh5Y/s800/exception.png

7 个答案:

答案 0 :(得分:13)

您可以仅在调试版本中将当前文化设置为英语:

#if DEBUG
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
#endif

答案 1 :(得分:4)

答案 2 :(得分:3)

最后一个“尖锐”的解决方案可能如下:

[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

#if DEBUG
    // Add this; Change the Locales(En-US): Done.
    Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
#endif

    Application.Run(new Form1());
}

但是我想要一个没有修改项目代码的解决方案。

来自MSDN

  

CurrentUICulture 属性将是   如果应用程序有隐式设置   指定 CurrentUICulture 。如果    CurrentUICulture 未明确设置   在应用程序的代码中,它由设置    GetUserDefaultUILanguage 功能   在Windows 2000和Windows XP上   多语言用户界面(MUI)   最终用户可以设置的产品   默认语言。如果是用户的UI   没有设置语言,它将被设置   系统安装的语言,哪个   是经营的语言   系统的资源。

     

如果应用程序是基于Web的,那么   可以明确设置 CurrentUICulture   在应用程序代码中的用户   浏览器接受语言。

答案 3 :(得分:2)

卸载法语语言包:

开始 - 控制面板 - 程序和功能 - Microsoft .NET Framework(4客户端配置文件)语言包FRU - 卸载

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

答案 4 :(得分:2)

对于遇到此问题的任何Win8 / 8.1用户,安装英语语言包并使其成为 Windows显示语言似乎只是解决它的简单方法,因为Win8内置了.net框架核心。

对于Win10可能也是一样。

答案 5 :(得分:2)

为了应用程序的所有未来用户,请将其放在 Main 方法中:

CultureInfo.DefaultThreadCurrentUICulture = Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;

这将使他们在查找英语相当于错误翻译的错误消息方面遇到很多麻烦。

答案 6 :(得分:0)

我没有尝试过,但是根据documentation,默认情况下应该将属性设置为当前的UI语言,该语言在控制面板中设置。因此,它应该根据您的国际设置自动正常工作。