この質問を他の形式 (主に検証に関連するもの) で見たことがありますが、答えを理解できませんでした。
私は次のものを持っています:
[Required, DisplayName("First Name")]
public virtual string GivenName { get; set; }
DisplayName をローカライズしたいと思います。他の人が行ったように、RequiredAttribute 拡張機能を作成して試みました。
public class RequiredFieldAttribute : System.ComponentModel.DataAnnotations.RequiredAttribute
{
public RequiredFieldAttribute()
{
T = NullLocalizer.Instance;
}
public Localizer T { get; set; }
public override string FormatErrorMessage(string name) {
var field = T(name).Text;
return T("Please fill in {0}.", field).Text;
}
}
}
返されたエラー メッセージは英語名を返し続けます。しかし、ビューで次を使用すると、ローカライズされた名前が取得されるため、翻訳があると確信しています。
@Html.LabelFor(m => register.GivenName, T("First Name"))
メッセージ自体 (記入してください...) もローカライズされています。ただし、フィールド名はそうではありません。フィールド名の文字列は、ビューで要求するときにローカライズされますが、拡張機能で使用するときはローカライズされません。
codeplex に関する議論を見ていると、一部のチェンジセットで namespace のローカライズされたデータ注釈に関する問題が修正されていることがわかりましたOrchard.MVC.DataAnnotations
。しかし、既存のモジュールには、それらの使用方法に関する例が見つかりません。