SAMURAI TERAKOYA

laravel9. : バリデーション(エラーメッセージ)を日本語化する方法

laravel

最近、バックエンドとしてlaravelを使う可能性が出たため、久々にlaravel9の開発環境でCRUDアプリを作成し、テキストの入力箇所にバリデーションの設定及びエラーメッセージの日本語化を行いました。

これまでは、手動で日本語化用のフォルダとファイルを作成し、日本語化を行っておりましたが、コマンドを用いた方法も便利だなと感じました。

そこで今回は、laravel9でバリデーション(エラーメッセージ)を日本語化する方法について2パターン(コマンド/手動)ご紹介していきます。

configフォルダ内のapp.phpを修正

app.phpファイルの場所は、 configフォルダ直下になります。

laravel_app.phpのlocaleを修正

修正箇所は1つになります。app.phpの大体、85行目あたりに以下のような記述があるのが確認できるかと思います。

'locale' => 'en',

現在は、言語が英語(en)で指定されているかと思いますが、ここを日本語(ja)に修正しましょう。

'locale' => 'ja',

これで、app.php上での作業は完了です。

日本語用のバリデーションファイルを作成

2パターンの方法についてご紹介しますが、正直なところどちらがいいとかはありませんので、やりやすいほうで行ってもらえたらと思います。個人的には、コマンドを用いた方法が比較的楽ではあると思います。

コマンドで日本語化ファイルを作成する

コマンドの場合は、ターミナル上でアプリケーションフォルダへ移動して頂き、以下のコマンドを順番に実行してください。

php -r "copy('https://readouble.com/laravel/8.x/ja/install-ja-lang-files.php', 'install-ja-lang.php');" 
php -f install-ja-lang.php 
php -r "unlink('install-ja-lang.php');"

コマンド実行後にlangフォルダ内にjaフォルダが作成されていればOKです。表示結果のイメージは、手動で作成する方法の③をご覧ください。

手動で日本語化ファイルを作成する

手動で日本語化ファイルを作成
  • langフォルダ直下にjaフォルダを作成

    langフォルダ内にあるenフォルダをコピーし、フォルダ名をjaに変更しましょう。今回、必要になるのはvalidation.phpのみですので、auth.php, pagination.php, passwords.phpは、jaフォルダ内から削除しても大丈夫です。

    langフォルダ内にjaフォルダを作成

  • validation.php内の記述を日本語に翻訳したものと置き換える

    以下のページにて、翻訳された内容が公開されておりますので、こちらに掲載されている内容をコピペしましょう。

    validation.php言語ファイル 9.x Laravel

    コピペする箇所は、「以下が言語ファイルの内容です。」という文の後からになります。

    以下のような感じで翻訳されたものを貼り付けることが出来たら大丈夫です。

    validation.php内の内容を日本語化する

  • 日本語が反映されているか確認

    最後に日本語に翻訳したものが反映されていれば作業完了です。サーバーを起動し、確認してみましょう。

    以下のように部分的にはなりますが、日本語化されていれば大丈夫です。

    laravel_validation_日本語へ変換

エラーメッセージをカスタマイズ

ここまででわかる通り、エラーメッセージはデフォルトでは英語になっており、日本語化ファイルを作成したとしても全てが 日本語に変換されるわけではありません。

まず、エラーメッセージを適切なものへ変更したのちに、属性値を日本語へ変更していきましょう。

エラーメッセージを編集

今回は、必須項目(required)を設定した場合の編集方法についてご説明していきます。基本的に他の項目であったとしてもやり方は同じです。

jaフォルダ直下のvalidation.phpを開いて頂き、以下の箇所を探してみましょう。

'required' => ':attributeは必ず指定してください。',
 見つけることが出来ましたら、以下のように修正します。
'required' => ':attributeは、必須項目です。',

修正が完了したらサーバーを起動し。エラーメッセージが変更されているかチェックしましょう。以下のように変更されていればOKです。

laravel_エラーメッセージ_カスタマイズ

カスタムバリデーション属性名の設定

上記の画像のように現時点では、属性名が英語のままになっておりますので、出来れば日本語にしたいところです。属性名の変更 = これまでのソースを修正する必要があるのか??と考える方もいるかもしれませんが、validation.php上のコードをいじるのみですのでご安心ください。

jaフォルダ直下のvalidation.phpの末尾の方に、以下のようなコードがあるかと思います。

'attributes' => [],

今回は、投稿者名と投稿内容のみをテキストとして入力し、投稿するような簡易なアプリケーションをサンプルとして使用しておりますので、上記のコードを以下のように修正します。(左辺に修正したい属性値, 右辺に修正後の日本語を記述)

'attributes' => [
    'name' => '投稿者名',
    'content' => '投稿内容',
],

修正が完了したら、再度、サーバーを起動し、エラーメッセージを確認してみましょう。以下のように全て日本語に変更されていればOKです。

laravel_Error_属性値_変更

まとめ

laravelの環境でバリデーションを日本語化する方法は、以下の2パターンがあります。

  • コマンドで日本語化ファイルを作成
  • 手動で日本語化ファイルを作成

共通の作業として、config/app.phpの編集もありますので、忘れないようにしましょう。

もし、属性値名及びエラーメッセージを編集する場合は、validation.php内の内容を修正してください。

コメント

タイトルとURLをコピーしました