【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