如何在Asp.Net Core 1.0.0中本地化Display属性?

时间:2016-08-08 15:44:16

标签: c# localization asp.net-core

如何在Name属性中本地化Display? 例如:

[Display(Name = "Library name")]
public string LibraryName { get; set; }

该属性该怎么办?

2 个答案:

答案 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.resxDataAnnotation.Localization.jp.resx适用于日语

enter image description here

然后查看viewmodel中的英文注释文本 例如“用户电话”

 [Display(Name = "User Phone")]

在您希望网站支持的每个语言资源文件中为相同的英文文本创建一个条目

enter image description here

.net 4.6.2

中了解有关此更改的更多here

我已经排除了确定与语言文件相对应的文化,因为这可以非常深入。您可以在in this blog post网站

中详细了解ASP.NET documentation