У меня проблема, связанная с реализацией локализации в моих ViewModels, мы используем ASP.NET Core 2.0, и вот что я пробовал:
1) Модель просмотра, которую я хочу перевести сообщения DataAnnotations
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», которое является ключевым именем.
Что я сделал не так?





Хорошо, глупый я. Путь к исходным моделям просмотра - / Модели / ViewModels / ... Следовательно, путь к файлам ресурсов должен быть Ресурсы / Модели / ViewModels / Аккаунт / ... а не Ресурсы / ViewModels / Аккаунт / ...
Я просто слепо следил за документацией Microsoft и особо не задумывался об этом.
Пожалуйста, опубликуйте его как ответ и примите его, когда закончится 48-часовой льготный период, так как это может быть интересно другим посетителям. Отвечая на свой вопрос явно рекомендуется