【Laravel】authを日本語する方法!プロジェクト内のメッセージもカスタマイズ

【Laravel】authを日本語する方法!プロジェクト内のメッセージもカスタマイズ

この記事からわかること

  • Laravel日本語化する手順
  • authの表示やメッセージカスタマイズする方法
  • locale(ロケール)とは?

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

今回はLaravel内の言語設定を日本語に変更する方法ログイン機能を簡単に実装できるauthを使った際の翻訳方法をまとめていきます。

Laravel内の言語設定を日本語にする

Laravelはプロジェクトを作成時の言語設定がデフォルトでは「en」(英語圏)になっています。世界で使われているフレームワークなので当然ですね!

言語設定が〜と言いましたが正しくは「locale(ロケール)」が「en」になっています。localeとは「場所」を指す英単語でプログラミングでは言語設定や日付設定、通貨設定などを含めた地域や国を指定する意味合いを持っている単語です。

Laravel内でlocaleを設定しているのは「プロジェクト」>「config」>「app.php」です。この中にPHPでお馴染みのtimezoneと今回の目的であるlocaleを設定しているコードが記述されています。日本用にカスタマイズするにはそれぞれを以下のように変更します。

 /*
|--------------------------------------------------------------------------
| Application Timezone
|--------------------------------------------------------------------------
|
| Here you may specify the default timezone for your application, which
| will be used by the PHP date and date-time functions. We have gone
| ahead and set this to a sensible default for you out of the box.
|
*/

// 'timezone' => 'UTC', // デフォルト値を削除
'timezone' => 'Asia/Tokyo', 

/*
|--------------------------------------------------------------------------
| Application Locale Configuration
|--------------------------------------------------------------------------
|
| The application locale determines the default locale that will be used
| by the translation service provider. You are free to set this value
| to any of the locales which will be supported by the application.
|
*/

// 'locale' => 'en', // デフォルト値を削除
'locale' => 'ja', 

timezoneはデフォルト値のUTC(Universal Time Coordinated:協定世界時間)」のままだと日本と9時間ほど誤差があるので注意してください。

Authのメッセージを日本語する

続いてはLaravelに会員登録機能を簡単に組み込むとのできるAuth(オース)を導入している場合の日本語化設定について見ていきます。

日本語に変更する方法はLaravelの公式サイトにも載っています。

おすすめ記事:公式ドキュメント

まずはLaravelプロジェクト内に日本語対応用のファイル群を公式サイトからインストールします。

コマンドライン(ターミナル)を開きカレントディレクトリをプロジェクトに移動させます。

$ cd プロジェクト名

次に公式サイトに記述されている以下のコードでインストーラをコピー

$ 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');"

これでLaravelプロジェクト内の「resources」>「lang」内に「ja」フォルダが作成されます。

「ja」フォルダの中には「auth.php」「passwords.php」「pagination.php」「validation.php」の4つのファイルが入っています。この4つのファイルの中にはauthを扱う際に表示される日本語バージョンのメッセージが記述されています。ここの値を変更することでメッセージが呼び出される時の文言をカスタマイズすることができます。

resources >lang > ja > auth.php

<?php

return [

    /*
    |--------------------------------------------------------------------------
    | 認証言語行
    |--------------------------------------------------------------------------
    |
    | 以下の言語行は認証時にユーザーに対し表示する必要のある
    | 様々なメッセージです。アプリケーションの必要に合わせ
    | 自由にこれらの言語行を変更してください。
    |
    */
                        // ↓ここの文字列を変更
    'failed' => 'idかパスワードが一致しません。未登録であれば登録してください。',
    'throttle' => 'ログインに続けて失敗しています。:seconds秒後に再度お試しください。',

];

Authのloginやregisterの変更方法

Authの項目名(loginやregisterなど)を日本語に変更するには直接日本語に書き換えても良いですがもう少し保守性の高い方法があります。その前にまずはauthのbladeファイルを見てみます。

resource > views > auth > login.php(一部抜粋)

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

    <div class="card-body">
        <form method="POST" action="{{ route('login') }}">
            @csrf

__( )のような表記の部分があると思います。これはLaravelのヘルパ関数の1つで、__メソッドというものです。__メソッドは第一引数にファイル名とキー値を「.(ドット)」で繋いだ文字列を受け取りそのファイルとキー値にマッチしたものを返します

デフォルト(__('Login'))ではファイル指定はなく、キー値(loginやregisterなど)のみの表示なので参照する物がなくそのままキー値が出力されています。このキー値部分を直接書き換えても希望のものに変わりますが保守性を高めるために別ファイルを用意し、変換する方法を解説します。

翻訳用のファイルを作成する

日本語変換する流れ

  1. 翻訳用ファイルを作成
  2. 変換したいキー値と文字列を紐付け
  3. __メソッド内を修正

まずは「lang」>「ja」内に翻訳用のファイルを作成します。今回は翻訳という意味の「translation.php」(名前は何でもOK)を作成します。

作成したら中に以下のように変換させたいキー値と変換後(翻訳後)の文字列を連想配列形式で記述していきます。今回は「login」→「ログイン」「Register」→「登録」に変更してみます。

resources > lang > ja > translation.php

<?php 
return [
    'Login' => 'ログイン',
    'Register' => '登録',
];

続いてbladeテンプレート内の__(login)__(translation.login)に変更します。

resource > views > auth > login.php(一部抜粋)

 <div class="card">
    <div>{{ __('translation.login') }}</div>

    <div class="card-body">
        <form method="POST" action="{{ route('login') }}">
            @csrf

これで表示が変更されたはずです。この要領でその他の項目名やメッセージ名も変更することが可能です。よく使いがちなものをまとめておきました。

<?php 
return [
    'Login' => 'ログイン',
    'Logout' => 'ログアウト',
    'E-Mail Address' => 'Eメールアドレス(id)',
    'Password' => 'パスワード',
    'Remember Me' => 'パスワードを記憶する',
    'Register' => '登録',
    'Name' => 'ユーザー名',
    'Confirm Password' => '確認用パスワード',
    'Forgot Your Password?' => 'パスワードを忘れた場合',
    'Reset Password' => 'パスワードをリセット',
    'Send Password Reset Link' => 'メールアドレスに送信',
    'Please confirm your password before continuing.' => '続行する前にパスワードを確認してください。',
];

これでLaravelの日本語化とAuthのメッセージや項目の翻訳は完了です。

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index