MVC data annotations in different languages?

I am using code like this:

@Html.LabelFor(m => m.Login.Password, new { @class = "adm" }) @Html.PasswordFor(m => m.Login.Password, new { @class = "adm", size = 30 }) @Html.ValidationMessageFor(m => m.Login.Password) 

It works great since my annotations / messages / data labels are all in English. However, somehow I can have several languages ​​and switch between them?

What if my site has a language selector that selects between Japanese and English? Can I have different data annotations for each language?

+4
source share
2 answers

1> You need to create a resource file for each language

2> then create models like

 public class User { [Required(ErrorMessageResourceType=typeof(Languages.Resource),ErrorMessageResourceName="required")] [Display(ResourceType=typeof(Languages.Resource),Name="name")] public string Name { get; set; } } 

3> your views are ok

4> To select and install different languages: you can create a recessed menu (or whatever), and then on the server, save the selected language in a cookie. And for each request set current_culture_info as below

  string currentChoosenLanguage= readFromCookie(); //or may be from Database, whatever suits you CultureInfo ci = new CultureInfo(currentChoosenLanguage); //i think jp: for japanese System.Threading.Thread.CurrentThread.CurrentUICulture = ci; Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(ci.Name); 

please check below link

http://haacked.com/archive/2011/07/14/model-metadata-and-validation-localization-using-conventions.aspx/

+5
source

You will need to use globalization / localization,

You can add resource names to error messages.

For instance:

 [Required(ErrorMessageResourceName= "PasswordRequired", ErrorMessageResourceType = typeof(MyResource)] 

I suggest you find more information on resource files for globalization / localization

+1
source

All Articles