Я только начал локализовать свое приложение .net core 2.2, и я ищу способ получения культур из базы данных SQL.Я пытался настроить объект локализации запроса в методе Configure при запуске с помощью кода
public void Configure(IApplicationBuilder app, IHostingEnvironment env, IStringLocalizerFactory localizerFactory)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseStatusCodePagesWithReExecute("/Error/{0}");
}
string defaultCulture = null;
var supportedCultures = new List<CultureInfo>();
using (var scope = app.ApplicationServices.CreateScope())
{
var db = scope.ServiceProvider.GetService<IRepository<Language>>();
defaultCulture = db.FindBy(c => c.IsSelected).FirstOrDefault().Code;
var langs = db.GetAll().ToList();
foreach (var item in langs)
{
CultureInfo ci = new CultureInfo(item.Code);
supportedCultures.Add(ci);
}
}
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture(defaultCulture),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
});
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseSession();
app.UseAuthentication();
app.UseMvc();
}
Я установил точку останова для кода и вижу, что культуры возвращают 4 элемента, но только один добавлен в SupportedCulturesВ то же время, тот же код в ConfigureServices, работает нормально.Код, который я использую в службе Configure:
services.Configure<RequestLocalizationOptions>(options =>
{
var scopeFactory = services
.BuildServiceProvider()
.GetRequiredService<IServiceScopeFactory>();
string defaultCulture = null;
List<CultureInfo> cultures = new List<CultureInfo>();
using (var scope = scopeFactory.CreateScope())
{
var db = scope.ServiceProvider.GetRequiredService<IRepository<Language>>();
var langs = db.GetAll().ToList();
foreach (var item in langs)
{
CultureInfo ci = new CultureInfo(item.Code);
cultures.Add(ci);
}
defaultCulture = db.FindBy(c => c.IsSelected).FirstOrDefault().Code;
}
options.DefaultRequestCulture = new RequestCulture("en-US");
options.SupportedCultures = cultures;
options.SupportedUICultures = cultures;
});
}
Есть ли ошибка в моем подходе с использованием кода в методе Configure ????