如何在Name
属性中本地化Display
?
例如:
[Display(Name = "Library name")]
public string LibraryName { get; set; }
该属性该怎么办?
答案 0 :(得分:5)
ASP.NET Core 1.0不支持基于Display
属性的新引入的本地化方法的开箱即用本地化。一种方法是使用ASP.NET Core 1.0之前的方法进行资源文件的本地化。我已经实现了一个简单的演示项目,该项目展示了如何本地化display属性https://github.com/feradz/ASPNetCoreLocalization/wiki DataAnnotations.resx
用于本地化Display
属性。
在此方法中,显示名称不能包含特殊字符和空格。例如,显示名称不能是Library name
,但可以是LibraryName
[Display(Name="LibraryName", ResourceType = typeof(Resources.DataAnnotations))]
public string LibraryName { get; set; }
答案 1 :(得分:-1)
从2016年8月初发布的.net框架4.6.2开始,本地化变得更加容易。
使用英语的主要语言数据注释保持您的视图模型类,例如
public class ContactInfo
{
[Required(ErrorMessage = "Your email address is invalid")]
[Display(Name = "User Email")]
public int Email { get; set; }
[Required(ErrorMessage = "Your phone number is invalid")]
[Display(Name = "User Phone")]
public int Phone { get; set; }
}
创建App_LocalResources
并使用约定DataAnnotation.Localization.{locale}.resx
添加资源文件,例如适用于中文DataAnnotation.Localization.zh.resx
或DataAnnotation.Localization.jp.resx
适用于日语
然后查看viewmodel中的英文注释文本 例如“用户电话”
[Display(Name = "User Phone")]
在您希望网站支持的每个语言资源文件中为相同的英文文本创建一个条目
在.net 4.6.2
我已经排除了确定与语言文件相对应的文化,因为这可以非常深入。您可以在in this blog post网站
中详细了解ASP.NET documentation