无法在.net 3.1中获取文化资源

问题描述

早上好

我正在使用.netCore 3.1,在我的模型中,我具有email的attributeValidation,但是返回消息始终是认设置,我无法以预期的区域性获得消息。

我认为结构文件夹是正确的,并且当我检查中间件时,资源库具有以下路线:

有人有主意吗?

谢谢!

解决方法

我正在使用.netCore 3.1,在我的模型中,我具有email的attributeValidation,但是返回消息始终是默认设置,我无法以预期的区域性获得消息。

我使用以下代码段进行了测试,该代码段按预期工作,您可以参考它。

我的测试模型类位于Models文件夹下

public class MyModel
{
    [Required(ErrorMessage = "The Email field is required")]
    [EmailAddress(ErrorMessage = "The Email field is not a valid email address")]
    [Display(Name = "Email")]
    public string Email { get; set; }

    //...
    //other properties
    //...
}

我的资源文件MyModel.fr.resx和文件夹结构

enter image description here

配置本地化

services.AddLocalization(options => options.ResourcesPath = "Resources");

services.AddControllersWithViews().AddDataAnnotationsLocalization()
    .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix);

测试结果

enter image description here

此外,您可以参考this doc about "globalization and localization in ASP.NET Core"并尝试这些步骤来解决问题。

  1. 检查您是否在应用中正确配置了本地化和数据注释本地化

  2. 检查浏览器用户是否选择并设置语言/文化

  3. 检查是否正确使用点或路径命名约定来组织/命名资源文件