PHP

Laravel8.Xでエラーメッセージ等を日本語化させる方法(バリデーションetc...)【画像つきで解説】

投稿日:

エラーメッセージの画面

 

あなた
Laravel8系で、バリデーションエラーの文言が英語で表示されてしまいます。

エラーメッセージを日本語で表示できないですかね?

 

デフォルトだと以下のように英語で表示されています。

 

laravelのログイン時のエラー文言

 

このあたりを日本語化していきます。

具体的な手順を画像つきで解説しますね。

 

【前提】

 

エラーメッセージ等を日本語化させたい→結論:resources/langを変更

 

結論から話すとresources/lang以下のファイルを日本語のものにすればOKです。

デフォルトだと「en」になっているものを「ja」にしましょう。

↓デフォルト

laravelのファイル群

 

日本語化対応された「auth.php」「pagination.php」「passwords.php」「validation.php」を配置してあげましょう。

 

GitHubで入手可能

 

以下のリポジトリに、各国に対応したエラーメッセージのファイルがあります。

https://github.com/Laravel-Lang/lang

 

日本語のファイルは「lang/locales/ja/」の中にあります。

これらをダウンロードして、既存のプロジェクトの「en」を置き換えましょう。

 

エラーメッセージ用のGitHub

 

以下置き換えてみた感じです。

 

言語を置き換えた後のファイル

 

では、動作確認してみましょう。

 

1部まだ英語表記される....

 

確認したところ、以下のような感じで、passwordなど1部まだ英語表記されていました。

(登録画面)

 

laravelのエラーメッセージ

 

ということで、いくつか変更を加えます。

 

✔ resources/lang/ja/validation.phpを変更

 

ファイルの末尾にある、attributeを以下のように変更してください。

 

 'attributes'           => [
        'name' => '名前',
        'email' => 'メールアドレス',
        'password' => 'パスワード'
    ],

 

確認してみると、さきほどのpasswordなどが日本語で表示されていました。

 

日本語に治ったエラーメッセージ

 

しかし、まだ「Whoops! Something went wrong.」が表示されていますね。

こちらを直しましょう。

 

✔ 「Whoops! Something went wrong.」→resources/views/components/auth-validation-errors.blade.php

 

resources/views/components/auth-validation-errors.blade.phpを見てみましょう。

デフォルトでは以下のようになっています。

 

@props(['errors'])

@if ($errors->any())
    <div {{ $attributes }}>
        <div class="font-medium text-red-600">
            {{ __('Whoops! Something went wrong.') }}
        </div>

        <ul class="mt-3 list-disc list-inside text-sm text-red-600">
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

 

ここの「whoops..」を修正してあげます。

以下のようにします。

 

@props(['errors'])

@if ($errors->any())
<div {{ $attributes }}>
    <div class="font-medium text-red-600">
        {{ __('エラーの内容を確認してください。') }}
    </div>

    <ul class="mt-3 list-disc list-inside text-sm text-red-600">
        @foreach ($errors->all() as $error)
        <li>{{ $error }}</li>
        @endforeach
    </ul>
</div>
@endif

 

もう一度読み込むと、日本語になっていました。

 

日本語に変更されたバリデーション

 

ということで今回は以上です。

 

-PHP

Copyright© エンジニアてんし君ブログ , 2021 All Rights Reserved.