我遇到了与在我的ViewModel中实现本地化相关的问题,我们正在使用ASP.NET Core 2.0,这是我尝试过的:
1)我要翻译DataAnnotations消息的viewmodel
public class ForgotPasswordViewModel
{
[Required(ErrorMessage = "RequiredEmail")]
//[Required(ErrorMessageResourceName = "RequiredEmail", ErrorMessageResourceType = typeof(ForgotPasswordViewModel))]
[EmailAddress(ErrorMessage = "Veuillez entrer un email valide.")]
[DataType(DataType.EmailAddress)]
[Display(Name = "Email")]
public string Email { get; set; }
}
2)我添加到Startup.cs的代码
public void ConfigureServices(IServiceCollection services){
//...
services.AddMvc().AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix).AddDataAnnotationsLocalization();
//...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env){
//...
var supportedCultures = new[]
{
new CultureInfo("en-US"),
new CultureInfo("fr-FR")
};
app.UseRequestLocalization(new RequestLocalizationOptions()
{
DefaultRequestCulture = new RequestCulture("fr-FR"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
});
//...
}
我有两个资源文件位于Resources / ViewModels / Account /
中目前具有以下键/值:
现在,它不起作用。显示的是“RequiredEmail”而不是那些消息。
我做错了什么?
答案 0 :(得分:2)
好吧,傻我。原始视图模型的路径是 / Models / ViewModels /...因此,资源文件的路径必须是 Resources / Models / ViewModels / Account /...而不是 Resources / ViewModels / Account /...
我只是盲目地关注微软的文档并没有多想它。