Laravelのメールアドレス認証の文面をNotifications無しで日本語化する

Laravelのメールアドレス認証の文面をNotificationsを使わず日本語化する方法を紹介します。この方法ではレイアウトをカスタマイズすることは出来ませんが、日本語化するだけは可能です。なお、Laravelはバージョン8で確認しています。

結果

まず最初に結果となる文面です。

日本語化前
日本語化後

設定内容

前述の文面にするための設定です。

config/app.phpの編集

config/app.phpでlocalをjaに変更します。

.envの編集

.envファイルのAPP_NAMEの値を任意のアプリ名に変更します。

resources/lang/ja.jsonの作成

resources/langフォルダ内にja.jsonという名前のファイルを作り、以下の様に内容を編集します。

以上で最初に載せたような文面のメールが送られるようになります。

解説

config/app.phpの編集の解説

ロケールの設定をしただけです。

https://readouble.com/laravel/8.x/ja/localization.html#configuring-the-locale

.envの編集の解説

APP_NAMEの値を変更することでメール内のアプリ名が変更されます。

vendor/laravel/framework/src/Illuminate/Mail/resources/views/html/header.blade.phpのファイルで以下の様に$slotがLaravelという文字列で無い場合はロゴではなく$slotをそのまま表示するようになっています。

この$slotはvendor/laravel/framework/src/Illuminate/Mail/resources/views/html/message.blade.phpファイル内でconfig('app.name')の値(.envのAPP_NAME)が渡されるようになっています。よって.envでAPP_NAMEをLaravelから変更することでロゴが消え、アプリ名が表示されることになります。

resources/lang/ja.jsonの作成の解説

resources/langフォルダにja.jsonという名前でファイルを作ると翻訳文字列をキーとして翻訳してくれます。

https://readouble.com/laravel/8.x/ja/localization.html#using-translation-strings-as-keys

文面の大部分はサービスプロバイダ(AuthServiceProvider.phpとか)内でVerifyEmail::toMailUsingメソッドを使ってMailMessageでカスタマイズ出来るのですが、「If you're having trouble clicking the~~」の部分を変更する機能が実装されていないようです。なのでja.jsonファイルを使用することで翻訳させています。

因みにこの部分はvendor/laravel/framework/src/Illuminate/Notifications/resources/views/email.blade.phpファイル内で指定されているので、この文字列と一致させる必要があります。

コメントを残す

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