У меня проблема с локализацией маршрута на asp. net core 3.0
Моя цель состоит в том, чтобы создать URL-адреса так:
- / en / SomeController / SomeAction (результат будет отображаться на английском языке sh)
- / fr / SomeController / SomeAction (результат будет отображаться на французском языке) et c.
Я справился с этим, выполнив :
public void ConfigureServices(IServiceCollection services)
{
//other service configurations...
//gets available cultures from DB
var cultures = provider.GetService<ITranslator>().GetCultures();
services.AddLocalization(opts => opts.ResourcesPath = "Resources" );
services.Configure<RequestLocalizationOptions>(options =>
{
var supportedCultures = cultures.Select(p => new CultureInfo(p.Name)).ToArray();
options.DefaultRequestCulture = new RequestCulture(culture: supportedCultures[0].Name, uiCulture: supportedCultures[0].Name);
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
options.RequestCultureProviders.Insert(0, new RouteDataRequestCultureProvider());
});
services.Configure<RouteOptions>(options =>
{
options.ConstraintMap.Add("culture", typeof(LanguageRouteConstraint));
});
services.AddControllersWithViews().AddRazorRuntimeCompilation();
}
и
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
//Configurations...
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(name: "culture-route", pattern:"{culture=tr}/{controller=Home}/{action=Index}/{id?}");
endpoints.MapControllerRoute( name: "default", pattern: "{*catchall}",defaults:new{culture="tr",controller="Home",action="Index"});
});
}
Но результат будет очень положительным c. Я имею в виду, когда я добавляю новую культуру в базу данных, культура не добавляет в мои приложения поддерживаемые культуры. Поскольку мое приложение получает поддерживаемые культуры и регистрирует их при запуске, мне нужно перезапустить все приложение. Есть ли какие-либо предложения или правильный метод для этого подхода, чтобы быть динамическим c?