如何使用实体框架核心中的资源来制作多语言应用程序?

问题描述

希望有美好的一天。

我想在 .net core 5 中创建一个多语言应用程序。

我们有资源并在 viewmodel 基础应用程序中使用 displayName 属性。 但是我们如何创建多语言应用程序或使用 EfCore 中的资源?

解决方法

[Display(Name = "Email",ResourceType  = typeof(Resource))]
public string Email { get; set; }

这里,typeof(Resource) 是资源的文件名。

enter image description here

,

作为另一种解决方案,您可以使用推荐的方法向 ASP.NET Core 应用程序添加本地化,​​即提供默认语言的资源作为键,然后仅根据需要添加其他资源。

总而言之,本地化您的应用程序的步骤大致如下:

  1. 添加所需的本地化服务
  2. 配置本地化中间件,必要时配置文化 提供者
  3. 将 IStringLocalizer 注入您的控制器和服务中 本地化字符串
  4. 将 IViewLocalizer 注入您的视图以本地化视图中的字符串
  5. 为非默认文化添加资源文件
  6. 为用户添加选择文化的机制

查看 this article 以获得详细的演练。

,

我找到了解决方案。

我正在开发一个使用 Fluent 部署的代码优先应用程序,我想以其他语言实现验证错误消息。

我做了这个步骤:

1- 为消息和属性名称创建 .resx 文件。

2- 我使用了 FluentValidation 库:

https://docs.fluentvalidation.net/en/latest/index.html

3- 我使用 Errors.resx 传递了波斯语错误并使用 Names.resx 传递了属性名称

RuleFor(c => c.EndDate).MaximumLength(10).WithMessage(Errors.MaxLength).WithName(Names.EndDate);

Errors.MaxLength 来自 Errors.resx,Names.EnDate 来自 Names.resx