Laravelの認証メールとパスワードリセットメールを日本語化する方法

認証メールとパスワードリセットメールを日本語化する方法

config/app.phpで日本語を選択

後で用意する日本語テキストを使用するように、まずはLaravelの設定を変更する

config/app.php

編集後はプロジェクトを再起動。

コマンド

日本語メール作成用のクラスを作成

メールを送るときにテキストを日本語で作成する専用のクラスを作る。

以下のコマンドで”App\Notifications\”の中に新しいファイルができる。

コマンド

コードの中身を以下のように変更する。

メールを作成するクラスを継承した上で、メール本文を作成するメソッドをオーバーライドして日本語のメールを作成できるようにしている。

App/Notifications/VerifyEmailJP.php
app/Notifications/ResetPasswordJP.php

Userモデルを修正

メールを送信するのは”Illuminate\Foundation\Auth\User”を継承したUserモデルなので、メール送信時に上記で作成したクラスを利用するように修正(メール送信メソッドをオーバーライド)する。

app/User.php

なお、”ResetPasswordJP”をasで”ResetPasswordNotificationJP”としているのは、もともとのやり方に合わせているから(変更前も”ResetPassword”をasで”ResetPasswordNotification”にしている)。

なので別にやらなくても動く。

MEMO

VerifyEmailはそのままの名前で使っているのに何故かResetPasswordだけお尻にNotificationを付いており統一感がないのが微妙。

個人的にはNotificationが付いている方が分かりやすいと思うが、どちらか一方に合わせた方が良かったのでは。作っている人が違うのか?

メールの日本語化ファイルを用意

メール本文は外部のファイルで日本語化するように記述しているので、それを用意する。

“resources/lang/en”をコピーしてフォルダ名を”ja”にする。

コマンド

“resources/lang/ja”の中にmail.phpを作る。これでメール本文を日本語化できる。

resources/lang/ja/mail.php

メールの雛形を日本語化する

以上でメール本文は日本語化できるが、この状態でメールを受け取ると以下のように日本語と英語が入り混じったメールになってしまう。

Laravel メールの日本語化

これはメールの雛形(あいさつやフッター部分など)は別のファイル定義しているから。メール全てを日本語化するためにはメールの雛形も変更する必要がある。

以下のコマンドを打って、”laravel-notifications”の番号を入力する(以下の例だと12)。

コマンド

“resources\views\vendor\notifications\email.blade.php”ができるので以下のように修正する。

resources/views/vendor/notifications/email.blade.php

以上でメールの日本語化は完了。

なお、ログイン画面・登録画面・パスワードリセット画面・パスワード確認画面を日本語化する方法は以下を参照。

Laravelのログイン・登録・パスワードリセット・パスワード確認画面を日本語化する方法Laravelのログイン・登録・パスワードリセット・パスワード確認画面を日本語化する方法

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です