【问题标题】:.net localization - throw exception in hebrew on englisch operating system.net 本地化 - 在英语操作系统上以希伯来语抛出异常
【发布时间】:2016-09-08 21:09:32
【问题描述】:

我有一个应用程序除了英语和德语外还被翻译成希伯来语。

为了检查用户输入,我创建了一个验证规则,如果值超出其限制,则抛出 ArgumentOutOfRangeException

public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
  double validationValue = 0;
  validationValue = double.Parse(value.ToString());

  if(validationValue < Min)
  {
    ArgumentOutOfRangeException ex = new ArgumentOutOfRangeException();
    return new ValidationResult(false, ex.Message);
  }
  else if(validationValue > Max)
  {
    ArgumentOutOfRangeException ex = new ArgumentOutOfRangeException();
    return new ValidationResult(false, ex.Message);
  }

  return new ValidationResult(true, null); 
 }

验证正在运行。
但是,如果我使用CultureInfo.DefaultThreadCurrentCultureCultureInfo.DefaultThreadCurrentUICulture 将应用程序语言设置为希伯来语,我会得到一个英语异常。将语言设置为德语或英语,我得到正确的异常消息。 操作系统为Windows 7英文版。

  • 异常文本是否取决于操作系统安装的语言?
  • 我可以通过安装希伯来语语言包解决问题吗(仅适用于Win 7 Enterprise/Ultimate Edition)?

我尝试将区域设置为以色列,但无法在当前测试环境中安装希伯来语 LP。

我发现人们说不应翻译异常的线程。我可以使用我的内部本地化服务将我的特定异常与翻译后的文本一起抛出。但如果有机会,我想避免这种情况。

【问题讨论】:

  • 为什么异常文本的语言很重要,因为类型总是相同的?除非您直接向用户显示异常消息?
  • 您是否尝试过安装 .Net Framework 语言包?
  • 您不应将异常消息返回给客户端,异常不会翻译成所有语言。例如,您应该在这里使用某种翻译机制 -stackoverflow.com/questions/26469667/…
  • 那么异常消息会直接显示给用户。如果大多数应用程序都以所选语言显示并且在某些时候出现不同的语言,我会感到不安。
  • @Pikoh 感谢 .Net 语言包的提示。我明天试试这个。

标签: c# .net validation localization


【解决方案1】:

.Net 语言包正在运行。虽然我重构了我的验证规则。如果值超出范围,现在会返回一条自定义消息。

  • 我可以包含可能值的最小值和最大值。
  • 未来的翻译不依赖于已安装的 .NET 语言包。

【讨论】:

    猜你喜欢
    • 2016-05-03
    • 2015-09-21
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 2016-03-16
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多