Ядро IViewLocalizer .net ядро ​​не обновляется во время выполнения (не переключается) - PullRequest
0 голосов
/ 09 февраля 2019

Я застрял с локализацией моего ядра asp.net 2.2. Приложение Razro Pages.

Я пытался ввести локализацию, используя LocalizationCultureCore для хранения файлов ресурсов в .json вместо .resx.

Выглядит работающим, когда я запускаю Webapp в первый раз - все метки локализованы, но если я обновляю локализацию (меняю язык) во время выполнения, используя cookie, введенный Localizer не обновляется ни в .htmlcs, ни в .cs OnPost методе., доставляя старые метки из предыдущего языка

Однако System.Globalization.CultureInfo.CurrentCulture.ToString () и System.Globalization.CultureInfo.CurrentUICulture.ToString () возвращают правильные значения после обновления.

Вмой файл Startup.cs имеет следующие (фрагменты):

public void ConfigureServices(IServiceCollection services)
        {
//other stuff

            services.Configure<RequestLocalizationOptions>(
                opts =>
                {
                    var supportedCultures = new List<CultureInfo>
                    {
                new CultureInfo("en-US"),
                new CultureInfo("ru-RU"),
                    };

                    opts.DefaultRequestCulture = new RequestCulture("en-US");
                    // Formatting numbers, dates, etc.
                    opts.SupportedCultures = supportedCultures;
                    // UI strings that we have localized.
                    opts.SupportedUICultures = supportedCultures;
                });

            services.AddJsonLocalization(options => options.ResourcesPath = "Resources");

            services.AddMvc().AddViewLocalization(options => { options.ResourcesPath = "Resources"; })
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

//other stuff
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
//other stuff

 var options = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
            app.UseRequestLocalization(options.Value);

//other stuff
}

в методе OnPost файла index.cs (вызывается, когда пользователь выбирает другой язык в раскрывающемся списке)

    public IActionResult OnPost(string culture, string returnUrl)
    {
        Response.Cookies.Append(
            CookieRequestCultureProvider.DefaultCookieName,
            CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)),
            new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) }
        );
        return LocalRedirect(returnUrl);
    }

Что может быть не так?Есть ли способ обновить Localizer?

...