.Net Core 3.1 Локализация не работает с заголовком Accept-Language для других культур, кроме английского, после развертывания

Я реализовал локализацию в .Net Core 3.1 согласно https://docs.microsoft.com/en-us/aspnet/core/fundamentals/localization?view=aspnetcore-3.1. Он отлично работает на локальном уровне с использованием HTTP-заголовка QueryString и Accept-Language на локальном уровне, но после развертывания не работает с HTTP-заголовком Accept-Language для других языков, кроме английского. Изменения кода

  • В Startup.cs

// в ConfigureServices

services.AddRazorPages()
    .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
    .AddDataAnnotationsLocalization()

services.AddLocalization(options => options.ResourcesPath = "Resources");
    services.Configure<RequestLocalizationOptions>(options =>
    {
        var supportedCultures = GetSupportedCultures();
        options.DefaultRequestCulture = new RequestCulture("en");
        options.SupportedCultures = supportedCultures;
        options.SupportedUICultures = supportedCultures;
    });

// в методе настройки

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

// вспомогательный метод

private IList<CultureInfo> GetSupportedCultures()
{
    var cultures =  Configuration.GetValue<string>("SupportedCultures")?.Split(",");
    var supportedCultures = new List<CultureInfo>();
    foreach (var culture in cultures)
    {
        supportedCultures.Add(new CultureInfo(culture.Trim()));
    }
    return supportedCultures;
}

// в appsettings.json

"SupportedCultures": "en,fr,de,el,es"

Заголовок запроса на вкладке сети браузера

Accept-Language: fr-FR,fr-CA;q=0.9,fr;q=0.8,de;q=0.7,en;q=0.6,es;q=0.5,el;q=0.4,en-GB;q=0.3,en-US;q=0.2

person Ravi    schedule 07.09.2020    source источник
comment
После добавления журнала найден - Не получается Accept-Language в запросе на сервере   -  person Ravi    schedule 07.09.2020


Ответы (1)


Код мне нравится. Вы проверяли, получаете ли вы Accept-Language заголовки HTTP из своего запроса после развертывания? Если вы не получаете его, вам необходимо проверить, используете ли вы какой-либо прокси-сервер или CDN.

В этом случае вам необходимо внести Accept-Language в белый список в заголовках, как показано ниже:

введите описание изображения здесь

person Manish    schedule 08.09.2020