c# - .NET 中 ArgumentException.Message 的本地化

标签 c# localization

在我的可本地化应用程序中,我抛出如下 ArgumentException:

throw ArgumentException("LocalizedParamName", "LocalizedErrorMessage");

我是这样理解的:

catch (Exception ex)
{
    Display(ex.Message);
}

我得到的错误消息是:

本地化错误信息 参数名称:LocalizedParamName

这里的问题是“参数名称:”,它是英文的,而不是我的应用程序的语言。我假设该字符串使用的是 .NET 框架的语言。谁能证实这一点?

一种解决方法是这样做:

catch (ArgumentException ex)
{
    Display((ex as Exception).Message  + "\n" + "Translated(Parameter name:)"+ ex.ParamName);
}
catch (Exception ex)
{
    Display(ex.Message);
}

还有其他更优雅的方式吗?

最佳答案

您正在使用非空参数名称调用构造函数 ArgumentException(string message, string paramName)。

执行此操作时,您会得到所看到的结果,即您的消息后跟“参数名称:您的参数名称”。

文本“参数名称:”来自 .NET Framework 资源:您未获得本地化版本的原因可能是您尚未在计算机上安装相关的 .NET Framework 语言包。可以下载语言包here .

如果您安装所用语言的语言包,您将获得预期的结果。

或者,您可以使用构造函数 ArgumentException(string message),并构建您自己的消息,包括参数名称。

关于c# - .NET 中 ArgumentException.Message 的本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1014257/

相关文章:

c# - 使用 Moq 验证采用委托(delegate)参数的基类中的方法调用

c# - 为什么没有 Convert.toFloat() 方法?

php - 如何将日期间隔格式化为文本(国际化)

asp.net - 隐式本地化、强类型资源、App_LocalResources 和嵌入式资源

c# - 使用 10000+ 点优化图表

c# - 在 POCO 中使用 AutoMapper?

c# - 如何在 C# 中将一种日期格式更改为另一种日期格式,例如 10/10/2014 更改为 2014-10-10(年-月-日)?

c# - 为什么我的所有 WinForm 控件和窗体都没有本地化?

ruby-on-rails - 带 rails 的奇怪的I18n日期输出

用于编辑 .resx 文件的 ASP.NET 组件