c# - ASP.NET MVC4 多语言数据注解

标签 c# .net asp.net-mvc data-annotations multilingual

在标准应用程序中,我有以下内容:

[Required]
[DisplayName("Email Address")]
public string EmailAddress { get; set; }

...这反过来会自动为这个表单域生成一个英文标签。

现在,如果我需要我的应用程序支持 5 种语言,ASP.NET MVC 应用程序处理此问题的最佳方法是什么?

适用范围约400-600个数据字段。

更新:我还需要支持更新应用程序中的小部分文本,例如页面名称和每个表单的介绍(小段落)。

最佳答案

不是将实际值分配给属性特性,而是为资源字符串分配键。然后,您可以使用自定义 ModelMetadataProvider,它知道本地化上下文并将提供适当的字符串。为了获得更好的解决方案,您可以使自定义 ModelMetadataProvider 推断约定(这减少了对冗长属性的需求)。

Phil Haack 有一篇名为 Model Metadata and Validation Localization using Conventions 的博客文章这解释了这是如何工作的。还有一个相应的 NuGet 包,名为 ModelMetadataExtensions在 github 上提供源代码 https://github.com/Haacked/mvc-metadata-conventions .

作为旁注,我建议您回顾一下我在一个老问题上得到的一些很棒的答案:Effective Strategies for Localization in .NET .它们不会专门解决您的问题,但如果您正在开发多语言 .NET 应用程序,它们将非常有帮助。

关于c# - ASP.NET MVC4 多语言数据注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12807617/

相关文章:

c# - DSACryptoServiceProvider : VerifySignature vs. 签名数据

C# 非托管导出不起作用

c# - ASP.NET MVC 2 缓存问题

mysql - 是否可以使用 Subsonic 模板让 MySql 与 ASP.Net MVC 一起工作?

c# - ASP.NET MVC(异步)CurrentCulture 不在 Controller 和 View 之间共享

c# - 将 C# Powershell 保存为脚本文件

c# - NullReferenceException 在 ASP.NET MVC 5 中使用 DropDownListFor

c# - 字符串.格式。查看需要的格式是否存在

.net - .NET AES/Rijndael-重用解密器时解密不一致

c# - 为 IFormatProvider 提供编译时常量