【问题标题】:Force exceptions language in English强制例外语言为英语
【发布时间】:2011-01-06 17:32:08
【问题描述】:

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

但是,我可以做一些例外消息是英语的事情吗?用于观察、讨论等。

我尝试了以下方法:

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

获得

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

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

是否可以在不修改应用程序的代码的情况下设置异常语言?


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

【问题讨论】:

标签: .net visual-studio localization


【解决方案1】:

这是已知问题。请在此处投票:Exception Handling / Error Logging in English

Old Link 在 Microsoft Connect 上已停用。

【讨论】:

  • @Hi-Angel 不,它被关闭为“未修复”。在developercommunity.visualstudio.com上找不到任何新条目
  • @LouisSomers 我只记得,这是一个讽刺。虽然如此微妙,但我自己并没有看到它。这可能是对 MS 对一般请求和错误的无知的引用 (参见例如 Skype 问题)。
  • @Hi-Angel 我再次尝试DotNet repository on GitHub。不幸的是,我没有时间自己修复它并要求他们将其合并,但也许其他人会这样做?
  • @LouisSomers 对不起,我没有。我也有一个我自己的东西的清单:向 LibreOffice 添加一些重要功能 (我什至在考虑一个 kickstarter 项目;这是我正在研究 ATM 的东西),Wayland 的主要剪贴板Gnome 旁边的合成器,在启蒙中阅读类似 i3 的配置……就在我的脑海中。甚至这似乎也需要很长时间。
  • 投票已移至此处:developercommunity.visualstudio.com/idea/626664/…(修复它的机会仍然很低)
【解决方案2】:

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

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

这样他们就可以省去很多麻烦,因为他们很难找到翻译错误的错误信息的英文等价物。

【讨论】:

    【解决方案3】:

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

    Win10 可能也是这样。

    【讨论】:

      【解决方案4】:

      卸载法语语言包:

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

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

      【讨论】:

        【解决方案5】:

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

        [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 可以显式设置 在应用程序代码到用户的 浏览器接受语言。

        【讨论】:

          【解决方案6】:

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

          【讨论】:

          • 我的“当前 UI 语言”到底是什么意思?我的操作系统是法语操作系统(例如“开始”按钮名称是“Démarrer”),所以默认情况下CultureInfo.CurrentCulture.Name == "fr-FR"
          • 在 ControlPanel 中,我将“区域和语言选项”=>“标准和格式”更改为“美国英语”,但这没有帮助。
          • 我说的是控制面板中国际设置中的一组 (guidebookgallery.org/pics/gui/settings/international/…)。编辑我现在看到了你的评论......我不知道,AFAIK 它应该像那样工作......
          • @Matteo:你说对了一部分。我改变了“标准和格式”,这确实改变了 CurrentCulture,但没有改变线程的 CurrentUICulture : CurrentCulture 在 中改变en-US,但 Thread.CurrentThread.CurrentUICulture 仍然是 fr-FR。
          • 我认为如果您拥有 Windows 的 MUI 版本,您只能在区域设置中更改 UICulture。我认为设置是菜单和对话框中使用的区域和语言选项/语言/语言(在 XP 上)。
          【解决方案7】:

          您只能在调试版本中将当前文化设置为英语:

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

          【讨论】:

          • 这不会使调试不可靠吗?项目的其他部分可能取决于法国文化。
          • @Thomas:是的,但是这个变化会影响所有其他代码用户。如果我的项目经理是一位法国老人,他会为此斩首我:)
          • @Kobi :大多数特定于文化的行为(例如日期/时间/数字格式)取决于 CurrentCulture,而不是 CurrentUICulture。 CurrentUICulture 仅影响使用的资源。如果在法语以外的文化中没有资源的附属程序集,它将回退到默认文化
          • @serhio:如果您将 UI 文化设置为配置设置并仅在您的个人构建中将其配置为“en-US”,他可能不会斩首您。
          • @divo:是的,也许吧,但我相信他不会接受实际项目中的更改,只是因为我想要我的英语例外。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-10-01
          • 2021-01-09
          • 1970-01-01
          • 2010-10-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多