我想使用共享的 resx 文件来指定所有可翻译的字符串(既是为了翻译方便,更重要的是为了避免出现与 DRY 原则冲突的数十个单独的 resx 文件)。我让它与 IStringLocalizer 一起用于控制器和视图,但我只是不知道如何为模型的数据注释实现它。
它通过使用单独的文件(例如 Models.AccountViewModels.LoginViewModel.en.resx)来工作,但是我将如何使用共享资源文件而不是特定的数据注释?谁能分享实施示例吗?
附:环境是 .NET Core 1.1,因此验证和显示注释都应位于可用于本地化的该版本中
步骤 1:创建一个简单的类,命名为 ValidationMessages.cs 并将其留空。我假设您的课程位于 /Validation 文件夹中。
步骤 2:在 Startup.cs 文件中修改数据注释本地化程序的提供程序,如下所示:
mvcBuilder.AddDataAnnotationsLocalization(options =>
{
options.DataAnnotationLocalizerProvider = (type, factory) =>
{
return factory.Create(typeof(ValidationMessages));
};
});
步骤 3:在 /Resources 中创建文件夹 /Validation (我假设您将所有资源文件保存在该文件夹中),然后在其中添加 ValidationMessages.fr-FR.resx 文件(对于法国文化,即)。
步骤 4:使用您喜欢的密钥将条目添加到资源文件中。我假设你有像RequiredError、MaxLengthError这样的键。
第 5 步:使用 [Required(ErrorMessage="RequiredError")] 装饰模型类的属性。
下次属性验证失败时,将从 ValidationMessages.{culture}.resx 文件中提取验证消息。
但请记住,如果您使用 DisplayAttribute,不仅会在那里搜索验证消息,还会搜索属性名称。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)