如何本地化 ASP.NET Core 中验证属性的标准错误消息

Vit*_*liy 6 c# validationattribute asp.net-core-localization asp.net-core-2.2

如何本地化 ASP.NET Core (v2.2) 中验证属性的标准错误消息?例如,[Required]属性有此错误消息“ The xxx field is required. ”;[EmailAddress]有“ xxx 字段不是有效的电子邮件地址。 ”;【比较】有“ 'xxx'和'yyy'不匹配。 ”等。在我们的项目中,我们不使用英语,我想找到一种方法来翻译标准错误消息,而不直接将它们写入每个数据模型类的每个属性中

Chr*_*att 1

这在文档中有详细说明。您可以执行以下任一操作:

  1. 使用ResourcePath属性上的选项。

    [Required(ResourcePath = "Resources")]
    
    Run Code Online (Sandbox Code Playgroud)

    然后,您可以将本地化消息添加到Resources/Namespace.To.MyClass.[lang].resx.

  2. 对所有类使用一个资源文件:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc()
            .AddDataAnnotationsLocalization(options => {
                options.DataAnnotationLocalizerProvider = (type, factory) =>
                    factory.Create(typeof(SharedResource));
            });
    }
    
    Run Code Online (Sandbox Code Playgroud)

  • 看起来这种方法需要翻译所有模型中所有属性的 ErrorMessage 参数。我想避免它 (4认同)