jQueryのバリデーションプラグインの中で3本指に入る(と勝手に思っている)jQuery Validationプラグインを日本語化する方法をご紹介。
ちなみに、3本指のあとの2本は、jQuery Validation EngineとBootstrap Validator(と勝手に思っている)です。
サクッと日本語化
って言っても、公式の日本語ファイルが既に用意されています。
お決まりのCDNから取得します。

[~/localization/messages_ja.js]が日本語ファイルになります。
それでは早速、scriptタグで読み込みます。
| 1 2 3 4 5 6 7 8 9 10 11 12 | <script src="//ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.5/jquery.validate.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.5/localization/messages_ja.js"></script> <script> $("form").validate({     rules: {         name :{             required: true         }     } }); </script> | 
バリデーションメッセージの変更
JavaScriptファイルの中には、以下のように日本語化されたバリデーション(エラー)メッセージが配列で書かれてあります。
バリデーションメッセージを自分好みに変更したい場合は、CDNを利用せずに日本語ファイルをダウンロードして変更しましょう。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | $.extend( $.validator.messages, {     required: "このフィールドは必須です。",     remote: "このフィールドを修正してください。",     email: "有効なEメールアドレスを入力してください。",     url: "有効なURLを入力してください。",     date: "有効な日付を入力してください。",     dateISO: "有効な日付(ISO)を入力してください。",     number: "有効な数字を入力してください。",     digits: "数字のみを入力してください。",     creditcard: "有効なクレジットカード番号を入力してください。",     equalTo: "同じ値をもう一度入力してください。",     extension: "有効な拡張子を含む値を入力してください。",     maxlength: $.validator.format( "{0} 文字以内で入力してください。" ),     minlength: $.validator.format( "{0} 文字以上で入力してください。" ),     rangelength: $.validator.format( "{0} 文字から {1} 文字までの値を入力してください。" ),     range: $.validator.format( "{0} から {1} までの値を入力してください。" ),     step: $.validator.format( "{0} の倍数を入力してください。" ),     max: $.validator.format( "{0} 以下の値を入力してください。" ),     min: $.validator.format( "{0} 以上の値を入力してください。" ) }); | 
バリデーションメッセージの変更例
以下の例では、必須(required)とメールアドレス(email)のバリデーションメッセージを変更した例になります。
| 1 2 3 4 | ・・・ required: "この項目は必須です。", email: "メールアドレスが正しくありません。", ・・・ | 
バリデーションメッセージを項目別に変更
以下のように、それぞれの入力フォーム毎にメッセージを変更することもできます。
この方法だと、一応日本語ファイルすら不要ですが、あるものは使った方が楽チンです。
| 1 2 3 4 5 6 7 8 9 10 11 12 | $("form").validate({     rules: {         name :{             required: true         }     },     messages: {         name :{             required: "お名前を入力してください。"         }     } }); | 
もっと便利な使い方
下記の参考サイトに書かれていた方法が、私にとってはとても画期的でした。
例えば、requiredのバリデーションメッセージに項目名を入れたい場合に引数で入れる方法があるようです。(知らなかった…)
まずは、[messages_ja.js]内のメッセージのフィールド名を入れたい場所に{1}を書きます。
(min、max、rangeなどを参考にしてください)
| 1 2 3 4 | $.extend($.validator.messages, {     // required: "このフィールドは必須です。",     required: "{1}を入力してください。",     ... | 
そして、rulesの第2引数にフィールド名を追記します。
| 1 2 3 4 5 6 7 | $("form").validate({     rules: {         name: {             required: [true, 'お名前']         }     } }); | 
すると結果は、
| 1 | お名前を入力してください | 
と表示されるわけです。
となると、引数をフィールドのラベルから自動取得する場合は、
| 1 | required: [true, $('label[for="name"]').text()] | 
と書けばいいのかな。
情報ありがとうございました。
説明は以上です。
このように、jQuery Validationプラグインは自由度が高くて使いやすいです。
次回はカスタムバリデーションを追加する方法を紹介します。


コメント
コメント一覧 (1件)
[…] jQuery Validationプラグインの共通エラーメッセージを日本語化する方法 […]