You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 5 Web API语言本地化配置后始终返回默认语言如何解决

ASP.NET Core API 本地化始终返回默认语言排查修复方案

核心排查步骤

  • 1. 修正中间件注册顺序
    UseRequestLocalization 必须放在 UseRouting 之后,UseAuthorization、UseEndpoints 等中间件之前,顺序错误会导致本地化逻辑不生效:
// 正确顺序示例
app.UseRouting();
// 必须放在Routing之后,认证、端点中间件之前
app.UseRequestLocalization();
app.UseAuthorization();
app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
  • 2. 补全AddLocalization的资源路径配置
    如果你的资源文件存放在Resources目录下,必须显式指定资源根路径,否则框架找不到对应资源会默认回退到默认语言:
services.AddLocalization(options => options.ResourcesPath = "Resources");
  • 3. 纠正请求头参数
    你使用的Content-Language是响应头字段,请求时传递语言需要用Accept-Language请求头,示例:Accept-Language: ar
  • 4. 确认请求文化提供器配置
    默认的请求文化解析顺序为:查询参数 > Cookie > Accept-Language请求头,如果需要优先或仅使用请求头解析,可以显式指定提供器:
services.AddRequestLocalization(x =>
{
    x.DefaultRequestCulture = new RequestCulture("en");
    x.ApplyCurrentCultureToResponseHeaders = true;
    x.SupportedCultures = new List<CultureInfo> { new("ar"), new("en") };
    x.SupportedUICultures = new List<CultureInfo> { new("ar"), new("en") };
    // 仅保留Accept-Language请求头解析逻辑
    x.RequestCultureProviders = new List<IRequestCultureProvider>
    {
        new AcceptLanguageHeaderRequestCultureProvider()
    };
});
  • 5. 校验资源文件配置
    • 资源文件命名要和对应类的命名空间/路径匹配,例如Controllers/TestController.cs对应的阿拉伯语资源文件应为Resources/Controllers.TestController.ar.resx,或按目录结构存为Resources/Controllers/TestController.ar.resx
    • 右键资源文件->属性,确认「生成操作」为「嵌入的资源」,「复制到输出目录」设置为「如果较新则复制」
    • 确认资源文件内的key和代码中调用IStringLocalizer时传入的key完全一致,大小写敏感
  • 6. 增加测试接口定位问题
    新增测试接口打印当前文化信息,确认请求头是否成功被框架识别:
[HttpGet("test-culture")]
public IActionResult TestCulture()
{
    return Ok(new
    {
        CurrentCulture = CultureInfo.CurrentCulture.Name,
        CurrentUICulture = CultureInfo.CurrentUICulture.Name
    });
}

如果接口返回的文化信息和你传入的Accept-Language一致,说明问题出在资源文件配置上;如果还是默认的en,说明问题出在中间件或请求头配置上。

内容的提问来源于stack exchange,提问作者Ahmed Abd Elmoniem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 07:45:05