質問: ASP.NET Core のValidationエラメッセージを全て日本語化したいのです。 QIITAにある以下の分は試したのですが、うまく動作せず元に戻しました。 https://qiita.com/upopo21/items/51089df6e14e658c15be https://qiita.com/h0ge/items/b7ffd65d0f11ac6382fd 複雑な部分のValidationは記述すれば大丈夫ですが 基本的な数値に文字入れた分のエラーとかその辺りの物を日本語化したいのです。
回答: Core 2 は触ったこともないのでハズレかもしれませんが・・・ .NET Framework ベースの MVC5 の話ですが、Visual Studio 2015 のテンプレートを使ってプロジェクトを生成すると日本語のサテライトアセンブリがインストールされず、エラーメッセージが英語になってしまうということがありました。(MVC4 は自動的にインストールされるので問題なし) 詳しいことは以下の記事を見てください。 MVC5 でエラーメッセージが英語 Core 2 の場合は分かりませんが、クライアントサイドの jQuery/JavaScript の検証あたりは多分 MVC5 と同じでしょうから、日本語のサテライトアセンブリの追加で解決しそうな気がします。 ハズレだったらすみません。 **【追加情報】** .NET Framework ベースの MVC4, MVC5 の話なので役に立たないかもしれませんが、Core でも同じところは多々ありそうなので、ご参考までに以下の追加情報を書いておきます。 参考にされている記事のようにリソースファイルを使った多言語化の一環として日本語化を行う場合、以下の記事のようにして可能です。 データアノテーション検証の多言語対応 質問差さんが参考にされている記事に "ModelMetadataDetailsProvidersを設定することにより各Attributeに対してErrorMessageResourceType、ErrorMessageResourceNameを強制的に一括で設定できるようです" とありますが、上の記事「データアノテーション検証の多言語対応」のサンプルコードのようにプロパティに直接属性として設定すれば不要です。 ``` [Required( ErrorMessageResourceType=typeof(Mvc4App.Resource1), ErrorMessageResourceName="Required")] [StringLength( 5, ErrorMessageResourceType = typeof(Mvc4App.Resource1), ErrorMessageResourceName = "StringLength")] [Display( Name = "Name", ResourceType = typeof(Mvc4App.Resource1))] public string Name { get; set; } ``` プロパティに DataType 属性を付与すると付与されるエラーメッセージが異なってきますので注意してください。特に EditorFor を使うと DataType 属性やプロパティの型によって input type="xxx" の xxx が異なってきて、特に date とか number になるとブラウザ依存の違いが大きいので要注意だと思います。詳しくは以下の記事を見てください。 DataType 属性による検証 int 型プロパティの検証、エラーメッセージ