У меня есть 2 проекта: < /p>
Проект данных DataCcess с моделями и DataAnnotions (например, обязательный ATTRIBUTE) < /li>
Web Project с видами MVC и т. Д. Желаю локализовать все атрибуты валидации во всем мире в одном отдельном месте, чтобы иметь аналогичное поведение, такое как MVC 5. Возможно ли это? Сообщения. < /p>
В MVC 5 Я не позаботился об этом. Мне нужно было только установить локаль на мой язык, и все было хорошо. < /p>
Я попытался установить настройку errormessagerSourcEname и errormessagerSourcetype в моем имени файла общего ресурса "strings.resx" и "strings.de.resx" В проекте DataCcess: < /p>
Код: Выделить всё
[Required(ErrorMessageResourceName = "RequiredAttribute_ValidationError", ErrorMessageResourceType = typeof(Strings))]
< /code>
Я также попробовал имя настройки, чтобы быть обязательным Attribute_validationError < /strong> - но оно не работает. < /p>
Я прочитал несколько статей, но я не мог найти причину, почему это не работает. < /p>
Изменить:
Что у меня есть до сих пор: < /strong> < /p>
1). public class LocService
{
private readonly IStringLocalizer _localizer;
public LocService(IStringLocalizerFactory factory)
{
_localizer = factory.Create(typeof(Strings));
}
public LocalizedString GetLocalizedHtmlString(string key)
{
return _localizer[key];
}
}
< /code>
2.) Добавлена папка «Ресурсы» с помощью strings.cs (пустой класс с фиктивным конструктором) < /p>
3.) Добавлен Strings.de-de.resx файл с одним элементом "udentattrubt_validationError" < /p>
4.) Startup.cs < /p>
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient();
services.AddDbContext(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddSingleton();
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddMvc()
.AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver())
.AddDataAnnotationsLocalization(
options =>
{
options.DataAnnotationLocalizerProvider = (type, factory) => factory.Create(typeof(Strings));
});
services.Configure(
opts =>
{
var supportedCultures = new List
{
new CultureInfo("de-DE"),
};
opts.DefaultRequestCulture = new RequestCulture("de-DE");
// Formatting numbers, dates, etc.
opts.SupportedCultures = supportedCultures;
// UI strings that we have localized.
opts.SupportedUICultures = supportedCultures;
});
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseBrowserLink();
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
var locOptions = app.ApplicationServices.GetService();
app.UseRequestLocalization(locOptions.Value);
app.UseStaticFiles();
app.UseMvcWithDefaultRoute();
}
https://damienbod.com/2017/11/01/shared ... -core-mvc/
Пожалуйста, имейте в виду, что мои модели хранятся в отдельном проекте.
Подробнее здесь: https://stackoverflow.com/questions/487 ... t-core-2-0