使用英语以外的特定语言获取ASP.NET Core模型错误

时间:2016-11-11 15:30:57

标签: c# localization asp.net-core asp.net-core-mvc asp.net-core-localization

我使用DataAnnotation验证ASP.NET Core中的模型。但是当我有一个必填字段时,我得到的错误信息是英文错误,如下例所示:

class MyModel {
    [Required]
    [Display(Name = "Seitentitel")]
    public string Title {get;set;}
}

这给了我一个denglish验证错误消息需要Seitentitel字段。但我希望用特定语言传达信息,在这种情况下是德语。我想避免为我的模型的每个必需属性设置ErrorMessage。在大多数情况下,默认错误消息很好,但语言错误。

如何设置验证消息的语言?

我尝试了这个没有成功:

var supportedCultures = new[] { new CultureInfo("de-DE") };
            app.UseRequestLocalization(new RequestLocalizationOptions {
                DefaultRequestCulture = new RequestCulture("de-DE"),
                SupportedCultures = supportedCultures,
                SupportedUICultures = supportedCultures
            });

如果ASP.NET Core没有提供这些翻译,我需要这样的内容:https://stackoverflow.com/a/38199890/5426333但不适用于ASP.NET核心标识,而不是像这种情况下的通用验证消息-field缺少。

1 个答案:

答案 0 :(得分:1)

我相信(可能是错误的)错误消息的语言取决于您的.net安装。如果您正在使用英语版本,则需要删除.net版本并安装德语版本。

您可以在Web配置中设置默认语言,例如(如果这不会更改消息的语言,那么您将需要resx文件或对其属性进行硬编码:

<system.web>
   <globalization uiCulture="de-DE" />
</system.web>

如果不在web.config中,那么您将在global.asax文件中为每个请求更改uiculture。

在任何其他情况下,您应该使用资源文件。 * .resx用于存储您要显示的文本。

您可能需要阅读一些有关这些内容;不确定你与他们的经历。如果是这样,一个好的起点是Walkthrough: Using Resources for Localization with ASP.NET基本上它们是键/值对。每种语言都有一个文件。

然后在你的属性中你会做这样的事情:

 [Required(ErrorMessageResourceName = "MyResourceKey", ErrorMessageResourceType = typeof(Your.Namespace.To.your.Resource.File))]
 public string SomeString{ get; set; }

然后,无论您在运行时呈现什么语言(根据您设置的资源文件),都会显示相应的版本。