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

Aspnetboilerplate框架实体数据注解全球化本地化配置不生效求助

ABP 数据注解多语言翻译不生效排查方案
  • 检查资源类与资源文件的匹配规则
    确认DataAnnotationsLang.cs的命名空间和存放路径完全对应,若你的项目根命名空间为Project.Web.Mvc,则该类的命名空间必须为Project.Web.Mvc.Resources,不得手动修改。同时确认DataAnnotationsLang.pt-PT.resx的文件名前缀和类名完全一致,大小写无偏差。
  • 排查ABP自带本地化机制的冲突
    ABP 默认开启了自研的请求本地化逻辑,会覆盖ASP.NET Core原生配置,需要做两处调整:
    1. 在ConfigureServices中禁用ABP原生请求本地化:
    services.Configure<AbpRequestLocalizationOptions>(options =>
    {
        options.Enabled = false;
    });
    
    1. 在Configure方法中,将自定义的请求本地化中间件放在app.UseAbp()之前执行:
    var supportedCultures = new[]
    {
        new CultureInfo("pt-PT"),
        new CultureInfo("en")
    };
    app.UseRequestLocalization(new RequestLocalizationOptions
    {
        DefaultRequestCulture = new RequestCulture("pt-PT"),
        SupportedCultures = supportedCultures,
        SupportedUICultures = supportedCultures
    });
    // 注意顺序,请求本地化中间件必须在UseAbp之前
    app.UseAbp();
    
  • 验证错误消息键名是否匹配
    不同版本ASP.NET Core的默认验证错误键名存在差异,你可以先改用固定键测试:在模型属性的注解上指定ErrorMessage为固定键,比如:
    [Required(ErrorMessage = "RequiredField")]
    public string UserName { get; set; }
    
    随后在resx文件中添加对应键的翻译,确认是否能正常读取。
  • 检查resx文件的编译属性
    右键点击DataAnnotationsLang.pt-PT.resx,打开属性面板,确认:
    • 「生成操作」设置为「嵌入的资源」
    • 「自定义工具」设置为PublicResXFileCodeGenerator
    • 「自定义工具命名空间」和DataAnnotationsLang.cs的命名空间完全一致
  • 确认配置顺序未被覆盖
    若项目中存在其他修改Mvc配置的代码,将AddDataAnnotationsLocalization的配置逻辑移动到ConfigureServices方法的末尾,避免被其他配置覆盖。

内容的提问来源于stack exchange,提问作者Ana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:06:03