エラーメッセージの日本語化
概要
laravelに限らず、ほぼ全てのフレームワークではデフォルトのエラーメッセージは英語表記になっています。
この記事では、そのメッセージを日本語化する方法を記述していきます。
いつも通り、自分用のメモです。
手順
- エラーメッセージ用のファイルの作成
- 適用するエラーメッセージファイルの変更
- エラーメッセージファイルの編集
順番に説明していきます。
エラーメッセージ用のファイルの作成
App\Resources\lang\enをコピーしてlangディレクトリに配置し、名前をenからjaに変更します。
このenというディレクトリにはauth.php, validation.phpなど4つのファイルが格納されており、デフォルトのエラーメッセージはこの中に記述されています。
このあと、日本語のエラーメッセージをjaの方に書いていくのですが、それは一旦後回しにしてjaを読み込めるようにします。
適用するエラーメッセージファイルの変更
App\config\app.phpのコードを以下のように変更します。
83行目のあたりですね。
# 変更前
"locale" => "en",
# 変更後
"locale" => "ja",
これでjaの方が読み込まれるようになります。
エラーメッセージファイルの編集
ja/validation.phpを編集していきます。
ますはvalidation.phpの中身ですが、以下のようになっています。
<?php
return [
# Validation Language Lines
"xxx" => "The :attribute ~",
# Custom Validation Language Lines
"custom" => [
"attribute-name" => [
"rule-name" => "custom-message",
]
]
# Custom Validation Attributes
"attributes" => ,
];
# Validation Language Linesの部分には、デフォルトのバリデーションメッセージが表示されています。
通常はこれがそのまま適用されますが、# Custom Validation Language Lines, # Custom Validation Attributes それぞれの部分に然るべき記述を追加することで、バリデーションメッセージを自由に設定することが可能になります。
# Custom Validation Language Lines
どのバリデーションメッセージをどのように変更するかを記述する箇所です。
上にもあるとおり、テンプレートは
"attribute-name" => [
"rule-name" => "custom-message",
]
です。
例えば、nameというフィールドの"required"バリデーションに対するエラーメッセージを"入力されていません"に設定する場合には、
"name" => [
"required" => ":attributeが入力されていません",
]
となります。
# Custom Validation Attributes
上記の記述だけだとフィールド名がデフォルトのままなので、そちらも直していきます。
#Custom Validation Attributesの部分に
"attributes" =>
とあるので、その中に、どのフィールド名をどの単語に置き換えるのかを記述していきます。
例)
"attributes" => [
"name" => "お名前",
"email" => "メールアドレス"
]
補足
ちなみに、ユーザー認証関連のエラーメッセージについてはもっと簡単です。
ja/auth.phpの中に
"password" => "The provided password is incorrect."
のようにエラー内容とメッセージが連想配列で記述されているので、そこを編集するだけでOKです。