【问题标题】:MVC Data annotation in different languages?不同语言的 MVC 数据注释?
【发布时间】:2011-08-02 07:33:15
【问题描述】:

我正在使用这样的代码:

   @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)

它工作正常,因为我的数据注释/消息/标签都是英文的。但是有什么方法可以让我拥有不止一种语言并在它们之间切换?

如果我的网站有一个可以在日语和英语之间进行选择的语言选择器怎么办?我可以为每种语言设置不同的数据注释吗?

【问题讨论】:

    标签: asp.net-mvc model-view-controller asp.net-mvc-3


    【解决方案1】:

    1>你需要为每种语言创建一个资源文件

    2> 然后创建类似的模型

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

    3> 你的意见没问题

    4> 选择和设置不同的语言:你可以创建一个淹没菜单(或任何你想要的),然后在服务器上,将选择的语言存储在一个 cookie 中。并为每个请求设置 current_culture_info 如下

        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);
    

    请查看以下链接

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

    【讨论】:

    【解决方案2】:

    您将不得不使用全球化/本地化,

    您可以将资源名称添加到错误消息中。

    例如:

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

    我建议您查找有关全球化/本地化资源文件的更多信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-09
      • 2017-02-20
      • 2015-04-13
      • 2014-12-21
      • 1970-01-01
      • 2018-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多