.net core .Net核心数据批注-使用共享资源进行本地化

.net core .Net核心数据批注-使用共享资源进行本地化,.net-core,localization,annotations,.net Core,Localization,Annotations,我想使用共享的resx文件来指定所有可翻译的字符串(既为了翻译的方便,更重要的是为了避免几十个单独的resx文件与DRY原则冲突)。我使用IStringLocalizer为控制器和视图开发了它,但我不知道如何为模型的数据注释实现它 它通过使用单独的文件(如Models.AccountViewModels.LoginViewModel.en.resx)来工作,但是如何使用共享资源文件来进行数据注释,而不是特定的注释呢?任何人都可以分享实现的例子吗 p.S.环境是.NET Core 1.1,因此验证

我想使用共享的resx文件来指定所有可翻译的字符串(既为了翻译的方便,更重要的是为了避免几十个单独的resx文件与DRY原则冲突)。我使用IStringLocalizer为控制器和视图开发了它,但我不知道如何为模型的数据注释实现它

它通过使用单独的文件(如Models.AccountViewModels.LoginViewModel.en.resx)来工作,但是如何使用共享资源文件来进行数据注释,而不是特定的注释呢?任何人都可以分享实现的例子吗


p.S.环境是.NET Core 1.1,因此验证和显示注释都应该是可用于本地化的版本

步骤1:创建一个名为ValidationMessages.cs的简单类,并将其保留为空。我假设您的类位于/Validation文件夹中

步骤2:在Startup.cs文件中修改data annotations localizer的提供程序,如下所示:

mvcBuilder.AddDataAnnotationsLocalization(options => 
{
    options.DataAnnotationLocalizerProvider = (type, factory) => 
    {
        return factory.Create(typeof(ValidationMessages));
    };
});
步骤3:在/Resources中创建文件夹/Validation(我假设您将所有资源文件都保存在该文件夹中),然后在那里添加ValidationMessages.fr-fr.resx文件(对于法国文化,即)

步骤4:使用您喜欢的键向资源文件添加条目。我假设您将拥有诸如requiredrorr、MaxLengthError等键

步骤5:用[Required(ErrorMessage=“RequiredError”)]装饰模型类上的属性

下次属性验证失败时,将从ValidationMessages.{culture}.resx文件中提取验证消息


但是请记住,如果使用DisplayAttribute,不仅会搜索验证消息,还会搜索属性名称。

步骤1:创建一个名为ValidationMessages.cs的简单类,并将其保留为空。我假设您的类位于/Validation文件夹中

步骤2:在Startup.cs文件中修改data annotations localizer的提供程序,如下所示:

mvcBuilder.AddDataAnnotationsLocalization(options => 
{
    options.DataAnnotationLocalizerProvider = (type, factory) => 
    {
        return factory.Create(typeof(ValidationMessages));
    };
});
步骤3:在/Resources中创建文件夹/Validation(我假设您将所有资源文件都保存在该文件夹中),然后在那里添加ValidationMessages.fr-fr.resx文件(对于法国文化,即)

步骤4:使用您喜欢的键向资源文件添加条目。我假设您将拥有诸如requiredrorr、MaxLengthError等键

步骤5:用[Required(ErrorMessage=“RequiredError”)]装饰模型类上的属性

下次属性验证失败时,将从ValidationMessages.{culture}.resx文件中提取验证消息

但请记住,如果使用DisplayAttribute,不仅会搜索验证消息,还会搜索属性名