【Laravel 11】バリデーションメッセージを日本語化する

エラーメッセージの日本語対応とカスタマイズ

Laravel 11でデフォルトで英語表記のバリデーションエラーメッセージを日本語にする方法を紹介します。

環境: PHP 8.3.10, Laravel Framework 11.20.0

1.LOCALEの変更

.env ファイルを編集し、LOCALEを日本(ja)に設定します。

Before

APP_LOCALE=en

After

APP_LOCALE=ja

2.日本語用メッセージ設定ファイルの作成

以下のコマンドを実行して、設定ファイルを作成します。

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

Follow me!