エラーメッセージの日本語化

概要

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です。