我正在开发一个 ASP.Net Core Web 应用程序,需要本地化我们在应用程序中使用的所有静态字符串。
我通过IStringLocalizerFactory
在 Startup.cs 中实现并将其添加为服务来本地化控制器和视图字符串。
我现在尝试在使用注释时向模型验证添加本地化。在我的用户模型中,我有
[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; }
我在 UserModelErrorMessage.resx 文件中放置了“FullNameRequired”、“FullNameMinLength”、“FullNameMaxLength”。我还有一个 UserModelErrorMessage.fr.resx 文件,它具有相同的值但法语等效消息。当浏览器设置为英语时,会显示正确的错误消息。当我将浏览器切换为使用法语 ('fr') 语言时,我在视图和控制器中定义的静态字符串以法语显示,但数据验证消息仍以英语显示。我已经尝试过 Models.User.fr.resx 并且还手动生成了 .resource 文件,但都无济于事。
在 Startup.cs 配置服务中:
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")
);
在法语中获取数据注释验证消息时我缺少什么?