Jor*_*gen 1 .net annotations localization core
我想使用共享resx文件来指定所有可翻译的字符串(两者都是为了方便翻译,更重要的是避免使用与DRY原理冲突的数十个单独的resx文件).我使用IStringLocalizer来处理控制器和视图,但我无法弄清楚如何为模型的数据注释实现它.
它通过使用像Models.AccountViewModels.LoginViewModel.en.resx这样的单独文件来工作,但是我如何使用共享资源文件进行数据注释而不是特定注释呢?有人可以分享实施的例子吗?
提前致谢!
PS环境是.Net Core 1.1,因此验证和显示注释都应该在该版本中可用于本地化
第1步:创建一个名为ValidationMessages.cs的简单类,并将其留空.我将假设您的类位于/ Validation文件夹中.
步骤2:在Startup.cs文件中修改数据注释localizer的提供程序,如下所示:
mvcBuilder.AddDataAnnotationsLocalization(options =>
{
options.DataAnnotationLocalizerProvider = (type, factory) =>
{
return factory.Create(typeof(ValidationMessages));
};
});
Run Code Online (Sandbox Code Playgroud)
步骤3:在/ Resources中创建文件夹/验证(我假设您将所有资源文件保存在该文件夹中),然后在那里添加ValidationMessages.fr-FR.resx文件(对于法国文化ie).
第4步:使用您喜欢的密钥向资源文件添加条目.我假设您将拥有RequiredError,MaxLengthError等键.
步骤5:使用[Required(ErrorMessage ="RequiredError")]装饰模型类的属性.
下次属性验证失败时,验证消息将从ValidationMessages.{culture} .resx文件中提取.
但请记住,不仅会在那里搜索验证消息,还会在使用DisplayAttribute时搜索属性名称.