【问题标题】:.Net Core 3.1 Localization not working with Accept-Language Header for other cultures except english after deployment.Net Core 3.1 本地化不适用于部署后除英语以外的其他文化的 Accept-Language Header
【发布时间】:2020-09-07 06:17:13
【问题描述】:

我已经按照https://docs.microsoft.com/en-us/aspnet/core/fundamentals/localization?view=aspnetcore-3.1 在 .Net Core 3.1 中实现了本地化。它在本地使用上运行良好 QueryString 和 Accept-Language HTTP 标头在本地,但部署后不适用于除英语以外的其他文化的 Accept-Language HTTP 标头。 代码更改

  • 在 Startup.cs 中

// 在配置服务中

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

【问题讨论】:

  • 添加日志后发现 - 在服务器上的请求中未收到 Accept-Language

标签: c# asp.net-mvc .net-core .net-core-3.1 asp.net-core-localization


【解决方案1】:

代码对我来说看起来不错。您是否在部署后检查是否从您的请求中获取了Accept-Language HTTP 标头?如果您没有得到它,那么您需要检查您是否使用了任何代理服务器或 CDN。

如果是这种情况,您需要按照以下要求将标头中的 Accept-Language 列入白名单:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多