【Laravel】バリデーションエラーメッセージをカスタマイズする方法|日本語対応・項目名変更まで解説

【Laravel】バリデーションエラーメッセージをカスタマイズする方法|日本語対応・項目名変更まで解説 Laravel

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で、状況に応じたメッセージを定義

フォームバリデーションの品質を高めたい方は、ぜひ上記の方法を導入してみてください。