模型验证错误本地化

时间:2016-01-14 16:38:45

标签: c# validation asp.net-core data-annotations asp.net-core-localization

我正在开发一个ASP.Net Core Web应用程序,需要本地化我们在应用程序中使用的所有静态字符串。

通过实现IStringLocalizerFactory并将其作为服务添加到Startup.cs中,我对Controller和View字符串进行了本地化。

我正在尝试在使用注释时将本地化添加到模型验证中。在我的用户模型中,我有

[Required(ErrorMessageResourceType = typeof(UserModelErrorMessages), ErrorMessageResourceName = "FullNameRequired")]
[MinLength(2, ErrorMessageResourceType = typeof(UserModelErrorMessages), ErrorMessageResourceName ="FullNameMinLength")]
[MaxLength(100, ErrorMessageResourceType =typeof(UserModelErrorMessages), ErrorMessageResourceName ="FullNameMaxLength")]
public string FullName { get; set; }

我已经放置了" FullNameRequired"," FullNameMinLength"," FullNameMaxLength"在UserModelErrorMessage.resx文件中。我还有一个UserModelErrorMessage.fr.resx文件,其中包含相同的值但法语等效消息。当浏览器设置为英语时,会显示正确的错误消息。当我将浏览器切换为使用法语(' fr')语言时,我在视图和控制器中定义的静态字符串以法语显示,但数据验证消息仍以英语显示。我已经尝试过Models.User.fr.resx并且手动生成.resource文件也无济于事。

在Startup.cs ConfigureServices中:

services.AddMvc()
    .AddViewLocalization(options=>options.ResourcesPath="Resources")
    .AddDataAnnotationsLocalization();

在Startup.cs中 - 配置

app.UseRequestLocalization(new RequestLocalizationOptions
{
    SupportedCultures = new List<CultureInfo>
        {
            new CultureInfo("fr"),
            new CultureInfo("zh"),
            new CultureInfo("tr"),
            new CultureInfo("en"),
            new CultureInfo("en-US"),
        },
        SupportedUICultures = new List<CultureInfo>
        {
            new CultureInfo("fr"),
            new CultureInfo("zh"),
            new CultureInfo("tr"),
            new CultureInfo("en"),
            new CultureInfo("en-US"),
        }
}, new RequestCulture("en-US")
);

用法语获取数据注释验证消息我错过了什么?

0 个答案:

没有答案