gpt4 book ai didi

.net-core - .Net Core Data Annotations - 使用共享资源进行本地化

转载 作者:行者123 更新时间:2023-12-05 08:55:51 26 4
gpt4 key购买 nike

我想使用共享的 resx 文件来指定所有可翻译的字符串(既为了翻译方便,更重要的是避免有几十个与 DRY 原则冲突的单独的 resx 文件)。我将它与 IStringLocalizer 一起用于 Controller 和 View ,但我无法弄清楚如何为模型的数据注释实现它。

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

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

最佳答案

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

第 2 步:将 Startup.cs 文件中的数据注释本地化程序修改为如下所示:

mvcBuilder.AddDataAnnotationsLocalization(options => 
{
options.DataAnnotationLocalizerProvider = (type, factory) =>
{
return factory.Create(typeof(ValidationMessages));
};
});

第 3 步:在/Resources 中创建文件夹/Validation(我假设您将所有资源文件保存在该文件夹中),然后在其中添加 ValidationMessages.fr-FR.resx 文件(对于法国文化,即)。

第 4 步:使用您喜欢的 key 将条目添加到资源文件中。我假设您将拥有 RequiredError、MaxLengthError 等键。

第 5 步:使用 [Required(ErrorMessage="RequiredError")] 修饰模型类的属性。

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

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

关于.net-core - .Net Core Data Annotations - 使用共享资源进行本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43909557/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com