【Laravel6】Auth機能の文言やバリデーションメッセージの日本語化

Laravel

スポンサーリンク

Laravelのauth認証機能を導入してログイン画面を開くと、以下のように表示されてる文字からエラーメッセージまで全部英語ですよね。

これを日本語にしたい場合のやり方を説明します。

まずはapp.phpの’locale’を’ja’にします。

[config/app.php]

'locale' => 'ja',

そして、各文言やメッセージの日本語バージョンを作成します。

バリデーションメッセージの日本語化

「resources/lang/」にはもともとenというフォルダがあります。これを丸ごとコピーしてjaというフォルダ名にします。

[resources/lang/]

/resources
    /lang
        /en
            auth.php
            pagination.php
            passwords.php
            validation.php
        /ja
            auth.php
            pagination.php
            passwords.php
            validation.php

例えば、en/auth.phpを見ると以下のようなコードがあります。

[resources/lang/en/auth.php]

これをja/auth.phpの方では日本語にします。

[resources/lang/ja/auth.php]

'failed' => 'ログインできません。入力した情報に誤りがないかご確認ください。',
'throttle' => 'ロックされました。:seconds秒後に再度お試しください。',

これでエラーメッセージが日本語になりました。

文言の日本語化

次に、画面右上の「Login」などを日本語にします。

resources/lang/直下にja.jsonファイルを作成します。

/resources
    /lang
        ja.json

そして、ja.jsonに以下の内容を記載します。

[resources/lang/ja.json]

{
    "Login": "ログイン",
    "Register": "新規登録",
    "Forgot Your Password?": "パスワードを忘れた場合",
    "Reset Password": "パスワード再設定",
    "Send Password Reset Link": "パスワード再設定URLを送信",
    "Name": "ユーザー名",
    "E-Mail Address": "メールアドレス",
    "Password": "パスワード",
    "Confirm Password": "パスワード(確認用)",
    "Remember Me": "ログイン状態を保存"
}

すると以下のように画面の文言が日本語になります。

これはどういうことかというと、

ログイン画面のテンプレートを見ると、

[resources/views/auth/login.blade.php]※一部抜粋

<div class="card-header">{{ __('Login') }}</div>

{{ __('Login’) }}というように"__関数"というものが使われています。

これは、言語ファイル(ここではresources/lang/ja.json)から引数に応じた行を取得します。

この例で言うと、ja.jsonの「"Login": “ログイン"」を取得して、画面にログインを表示します。

もし、ja.jsonに"Login"のキーがなければ、そのまま引数の’Login’が画面に表示されるというわけです。

この"__関数"を使えば、いい感じに多言語対応ができそうですね。

Laravel

Posted by ton