首页 > 解决方案 > 为什么当“Accept-Language”标头为“en”时请求本地化不起作用?

问题描述

我正在尝试向我的 ASP.NET Core Web Api 项目添加请求本地化。配置设置后,本地化仅适用于完整的“Accept-Language”标题,如“ru-RU”或“en-US”,但不适用于“en”、“ru”标题,但是,我将它们添加到支持文化列表。

我在资源文件夹中添加了 3 个文件:(“Resources.resx”、“Resources.ru-Ru.resx”、“Resources.en-US.resx”)

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {

       ...

        var supportedCultures = new[]
        {
            new CultureInfo("en-US"),
            new CultureInfo("en"),
            new CultureInfo("ru-RU"),
            new CultureInfo("ru"),
        };
        app.UseRequestLocalization(new RequestLocalizationOptions
        {
            DefaultRequestCulture = new RequestCulture("uk"),
            SupportedCultures = supportedCultures,
            SupportedUICultures = supportedCultures
        });

        app.UseMvc();
    }

我希望服务器在“Accept-Language”标头为“ru”或“en”时本地化响应

标签: c#requestlocalizationasp.net-core-webapi

解决方案


最后,我在重命名资源文件时解决了这个问题,例如:

"Resources.resx" -> "Resources.uk.resx", 
"Resources.ru-Ru.resx" -> "Resources.ru.resx", 
"Resources.en-US.resx" -> "Resources.en.resx"

推荐阅读