web-dev-qa-db-ja.com

データ注釈のデフォルトメッセージをローカライズします([必須] [StringLength]など)

viewModelのプロパティを次のような属性で装飾すると、次のようになります。

public class Vm
{

[Required]
[StringLength(35)]
public string Name {get;set;}

}

英語の検証メッセージを受け取ります:

"this field is required"
"The field Name must be a string with a maximum length of 35"

どうすればそれらを翻訳できますか?

21
Omu

ErrorMessageResourceName プロパティを使用できます:

[Required(ErrorMessageResourceName = "SomeResource")]
[StringLength(30, ErrorMessageResourceName = "SomeOtherResource")]
public string Name { get; set; }

例として、チェックアウトすることができます このブログ投稿


更新:

Application_Start

DefaultModelBinder.ResourceClassKey = "Messages";

また、Messages.resxファイルに、カスタムエラーメッセージを追加する必要があります。 Reflectorを使用してSystem.Web.MvcおよびSystem.ComponentModel.DataAnnotationsアセンブリを調べ、使用するキー名を確認します。

37
Darin Dimitrov

最近、誰かがより新しく、はるかに優れたアプローチを探している場合に備えて、asp.net MVC3を使用したはるかに優れたソリューションがあります。

http://blog.gauffin.org/2011/09/easy-model-and-validation-localization-in-asp-net-mvc3/

例えば:

public class UserViewModel
{
    [Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(Resources.LocalizedStrings))]
    [LocalizedDisplayName(ErrorMessageResourceName = "UserId", ErrorMessageResourceType = typeof(Resources.LocalizedStrings))]
    [LocalizedDescription(ErrorMessageResourceName = "UserIdDescription", ErrorMessageResourceType = typeof(Resources.LocalizedStrings))]
    public int Id { get; set; }
}

SO関連の質問- Mvc 3.0 DataAnnotations Localization

10
Mandeep Janjua