【问题标题】:.Net Core Data Annotations - localization with shared resources.Net Core Data Annotations - 使用共享资源进行本地化
【发布时间】:2021-01-01 06:23:34
【问题描述】:

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

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

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

【问题讨论】:

    标签: .net-core localization annotations


    【解决方案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,则不仅会搜索验证消息,还会搜索属性名称。

    【讨论】:

      猜你喜欢
      • 2020-09-01
      • 1970-01-01
      • 2012-09-20
      • 2011-03-25
      • 2020-07-09
      • 2018-06-01
      • 1970-01-01
      相关资源
      最近更新 更多