【Laravel 11】バリデーションメッセージを日本語化する
エラーメッセージの日本語対応とカスタマイズ

Laravel 11でデフォルトで英語表記のバリデーションエラーメッセージを日本語にする方法を紹介します。
環境: PHP 8.3.10, Laravel Framework 11.20.0
1.LOCALEの変更
.env ファイルを編集し、LOCALEを日本(ja)に設定します。
Before
APP_LOCALE=enAfter
APP_LOCALE=ja2.日本語用メッセージ設定ファイルの作成
以下のコマンドを実行して、設定ファイルを作成します。
php artisan lang:publishコマンド実行後、プロジェクトにlang/enディレクトリと各設定ファイルが作成されます。

3.日本語カスタマイズ
lang/en/validation.phpをコピーし、日本語用の設定ファイルを作成します。
lang/ja/validation.php
バリデーション対象の入力値とルールに合わせて必要な記述を行います。
(例)
<?php
return [
    'required' => ':attribute は必須項目です。',
    'email'    => ':attribute は有効なメールアドレス形式で入力してください。',
    'max'      => [
        'string' => ':attribute は :max 文字以内で入力してください。',
    ],
    'confirmed' => ':attribute と確認用パスワードの値が一致しません。',
    'unique'    => '同じ :attribute は使用できません。',
    
    'attributes' => [
        'name'                  => 'ユーザー名',
        'email'                 => 'メールアドレス',
        'password'              => 'パスワード',
        'password_confirmation' => 'パスワード確認',
    ],
];
上記のように、各バリデーションルールごとに日本語のメッセージを設定します。
:attributeの部分にリクエスト項目の物理名が表示されますが、上記attributes配列に項目と、その項目に該当する論理名をペアで記載することで、項目も含めてメッセージを完全に日本語化できます。
Before
 
After
 


