【问题标题】:Localized resources - cannot access more than one resource in a .resx file本地化资源 - 无法访问 .resx 文件中的多个资源
【发布时间】:2017-03-12 10:46:38
【问题描述】:

我编写了一个带有数据注释验证的 ASP .Net Core Web 应用程序。在描述模型属性的属性中,我定义了 ErrorMessageResourceType 和 ErrorMessageResourceName。

资源文件放置在主应用解决方案之外的不同项目中。 (使用支持 Visual Studio 2017 社区编辑器的 dotnet CLI)

在我的模型中,我有:

[Required(AllowEmptyStrings = false, ErrorMessageResourceType = typeof(Resources.NewPetDataValidation),
                  ErrorMessageResourceName = "EmptyField")]
[StringLength(30, ErrorMessageResourceType = typeof(Resources.NewPetDataValidation),
                  ErrorMessageResourceName = "NameMaxLength")]
public string Name {get; set;}

在资源项目中,我为每种语言创建了一个 .resx 文件,即 NewPetDataValidation.en.resx、NewPetDataValidation.de.resx。

比在 Visual Studio 资源编辑器中,我将资源字符串添加到具有资源名称的每个文件中。

对于英语: 名称:EmptyField 值:空字段!

对于德语: 名称:EmptyField 值:Leer Feld!

等等……

在 Razor 视图中,我有: @Html.ValidationMessageFor(Model => Model.Name, null, new { @style = "color:red"})

只要我在模型中访问的某个 .resx 文件中的资源字符串不超过一个,一切正常。我很肯定 ErrorMessageResourceName 与某些资源名称匹配。

另一方面,如果我为每个翻译的短语应用程序创建单独的 .resx 文件,则应用程序正在运行。但是我不认为创建这么多 .resx 文件是个好主意。

提前感谢您的支持。

【问题讨论】:

    标签: c# asp.net-mvc asp.net-core resx localizable.strings


    【解决方案1】:

    我发现我的错误是重命名在 Visual Studio 中创建的默认资源。

    工作步骤:

    1. 创建默认资源MyResource.resx(没有语言/文化后缀的语法,它将生成可以从另一个项目引用的类文件)

    2. 为所有相关语言添加新的 MyResource.en.resx、MyResource.de.resx ...。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-29
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      相关资源
      最近更新 更多