Параметры языка маршрута Dynami c в asp. net core 3.0 - PullRequest
0 голосов
/ 20 марта 2020

У меня проблема с локализацией маршрута на 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?

...