在标准应用程序中,我有以下内容:
[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/