Laravel – バリデーションメッセージの日本語化

概要

バリデーションエラーはデフォルトで英語だが、これを日本語にしてみる。

方法の1つとして、ロケールjaに対するメッセージファイルを編集する方法を整理する。

ロケールファイルを一括して日本語化する方法はこちら

元になるアプリケーション

ルーティング

GETリクエストに対してフォームを含むビューを表示し、POSTリクエストに対してバリデーション処理を実行する。

ビュー

フォームでユーザー名とメールアドレスを入力し、POST処理の結果バリデーションエラーがあれば表示する。

コントローラー

フォーム表示

GETリクエストに対してフォーム画面を表示する。

POST処理

POSTリクエストに対して、ユーザー名とメールアドレスのバリデーションを実行。

この場合のバリデーションエラーは以下の様に表示される。

あるいは

ロケール設定による日本語化

ReaDouble.comのバリデーションのドキュメントでエラーメッセージのカスタマイズについて説明されていて、ローカライゼーションについては多言語化ドキュメントを参照するよう示唆されている。

これに基づいて、バリデーションエラーメッセージの日本語化をローカライゼーション周りで実装する方法を整理する。

言語の選択

config/app.phpでロケール設定を変更する。

  • localeをデフォルトのenからjaに変更
  • localejaで見つからないときのfallback_localeがデフォルトでenになっていることを確認
  • これにより、日本語ロケールの設定がある場合は日本語が適用され、見つからない場合は英語の設定が適用される

バリデーションエラーメッセージのコピー・編集

resources/en/validation.phpで英語のバリデーションメッセージが定義されている。

日本語ロケール設定のため、jaディレクトリーを作成し、そこにコピーしたvalidation.phpを編集する。

  • resources/jaディレクトリーを作成
  • jaディレクトリー下にvalidation.phpをコピー
  • 必要なバリデーションメッセージを日本語化

:attributeはエラーが発生したフィールドのname属性の値で置き換えられる。また:maxはバリデーションで設定した値に置き換えられる。

これにより、バリデーションエラーが生じたときの表示は以下の様に日本語化される。

あるいは

属性の日本語化

上記のメッセージでは、:attributeが置き換えられるname属性のnameemailがそのまま現れている。

これらは、validation.phpの最後にある'attributes'に連想配列を記述することで、日本語表現に置き換えることができる。

今回の例の場合、name属性はname(ユーザー名)とemail(メールアドレス)なので、これらを日本語に置き換えるよう定義する。

この結果、バリデーションエラーメッセージは以下の様になる。

あるいは

エラーメッセージを日本語化したもの以外のバリデーションに対しては、元のまま残っている英語の内容が使われる。

たとえばバリデーションを追加する。

そうするとバリデーションエラーは以下のようになる。

全体のセンテンスは英語だが、name属性emailattributesで変更した内容に置き換えられている。

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です