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

ASP.NET Core如何切换系统异常提示的显示语言?

配置不生效核心原因

  • 异步代码(await)执行后会切换线程,单独对当前线程设置的Culture不会自动同步到新线程,单次线程配置无法覆盖整个请求生命周期
  • .NET Core默认不自带非英语的异常资源包,缺少对应语言的本地化资源自然只能返回英文

可行实现方案

前置要求

  • 服务器上必须安装和你运行时版本完全匹配的对应语言.NET Core 运行时语言包,例如你用ASP.NET Core 3.1就安装3.1版本的法语、葡萄牙语语言包,这是系统层面的前提
  • 如果采用独立部署(Self-Contained)模式发布项目,需要在项目文件.csproj的<PropertyGroup>节点中添加配置,避免资源被裁剪:
<SatelliteResourceLanguages>fr;pt</SatelliteResourceLanguages>

项目配置步骤

  1. 3.1及以上版本ASP.NET Core默认已自带本地化组件,无需额外安装NuGet包
  2. 在Startup.cs(.NET 6+ 是Program.cs)中配置请求本地化服务:
// ConfigureServices 方法中添加
services.Configure<RequestLocalizationOptions>(options =>
{
    // 声明所有支持的语言
    var supportedCultures = new List<CultureInfo>
    {
        new CultureInfo("en-US"),
        new CultureInfo("fr-FR"),
        new CultureInfo("pt-PT")
    };
    options.DefaultRequestCulture = new RequestCulture("fr-FR");
    options.SupportedCultures = supportedCultures;
    options.SupportedUICultures = supportedCultures;
});
  1. 启用本地化中间件,必须放在所有其他中间件之前,确保整个请求生命周期的文化都生效:
// Configure 方法最开头添加
app.UseRequestLocalization();

动态切换语言

如果需要根据请求动态切换语言,可以直接使用中间件默认支持的切换规则,通过以下任意一种方式指定:

  • 查询参数:请求地址加?culture=fr-FR&ui-culture=fr-FR
  • 请求头:添加Accept-Language: fr-FR
  • 自定义Cookie:格式符合框架要求即可

注意:部分.NET基础库或第三方依赖如果本身没有提供对应语言的本地化资源,即便完成以上配置也会返回英文异常,这种情况需要自行对异常做捕获翻译处理。

内容的提问来源于stack exchange,提问作者Gordon Khanh Ng.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:48:01