.Net Core 数据注释 - 使用共享资源进行本地化

2024-05-17

我想使用共享的 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(使用前将#替换为@)

.Net Core 数据注释 - 使用共享资源进行本地化 的相关文章

随机推荐