From .net framework 4.6.2, released in early August 2016, it has become much easier.
Save the view model class with annotations of the main languages ββin English, for example.
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; } }
Create an App_LocalResources and add resource files using the DataAnnotation.Localization.{locale}.resx , for example. for Chinese DataAnnotation.Localization.zh.resx or DataAnnotation.Localization.jp.resx for Japanese

Then for the English text annotations in your viewmodel like "Custom Phone"
[Display(Name = "User Phone")]
create an entry for the same English text in each language resource file that your site should support.

Read more about this change in .net 4.6.2
I excluded the definition of culture, which corresponds to the language file, as this can go in some detail. You can read about this in this blog post and in the ASP Documentation .NET site
source share