Laravelでは、バリデーションルールに違反した際に自動でエラーメッセージが返されますが、そのままでは英語で表示されることが多く、ユーザーにとってわかりづらいことがあります。特に日本語サイトでは、日本語で分かりやすいエラーメッセージや項目名を設定することが重要です。
この記事では、Laravelのバリデーションエラーメッセージを日本語でカスタマイズする方法、入力項目名をわかりやすく変更する方法、そしてプロジェクト全体に適用できる設定方法まで解説します。
日本語のエラーメッセージファイルを設定する
Laravelではエラーメッセージの翻訳を言語ファイルで管理しています。日本語対応を行うには、以下の手順で日本語の言語ファイルを導入します。
言語ファイルをインストール
以下のリポジトリを使うと簡単に日本語ファイルを導入できます。
composer require laravel-lang/lang
php artisan lang:add ja
または手動でresources/lang/ja/validation.phpを作成して、必要な翻訳を記述します。
config/app.php のロケール設定
アプリケーションのデフォルト言語を日本語に変更します。
'locale' => 'ja',
項目名(属性名)を日本語に変更する方法
エラーメッセージ中に表示される「name」や「email」などの項目名を日本語にするには、resources/lang/ja/validation.phpの中のattributes配列を編集します。
'attributes' => [
'name' => 'お名前',
'email' => 'メールアドレス',
'password' => 'パスワード',
],
この設定により、「The name field is required.」というエラーが「お名前は必須項目です。」というように表示されるようになります。
個別ルールのエラーメッセージをカスタマイズする
バリデーションルールごとに個別のエラーメッセージを設定したい場合は、validate()メソッドの第3引数にメッセージ配列を渡します。
$request->validate([
'email' => 'required|email',
'password' => 'required|min:8',
], [
'email.required' => 'メールアドレスは必須です。',
'email.email' => '正しいメールアドレスを入力してください。',
'password.required' => 'パスワードは必須です。',
'password.min' => 'パスワードは8文字以上で入力してください。',
]);
このようにすることで、フォームごとに柔軟にエラーメッセージを設定することができます。
FormRequestクラスでのエラーメッセージ設定
バリデーションロジックを専用のFormRequestクラスにまとめると、以下のようにmessages()メソッドでエラーメッセージを管理できます。
public function rules()
{
return [
'name' => 'required',
'email' => 'required|email',
];
}
public function messages()
{
return [
'name.required' => 'お名前は必須です。',
'email.required' => 'メールアドレスは必須です。',
'email.email' => '正しい形式のメールアドレスを入力してください。',
];
}
この方法は、フォームが増えた際の保守性にも優れています。
まとめ
Laravelでは、バリデーションエラーのメッセージを柔軟にカスタマイズすることが可能です。日本語サイトでは、ユーザーにとって分かりやすいエラー表示を実現することで、フォームの入力完了率やUXの向上につながります。
- 日本語の言語ファイルを導入して、デフォルトの翻訳を適用
- attributesで表示される項目名を変更
- コントローラーやFormRequestで、状況に応じたメッセージを定義
フォームバリデーションの品質を高めたい方は、ぜひ上記の方法を導入してみてください。