Laravelのメールアドレス認証の文面をNotificationsを使わず日本語化する方法を紹介します。この方法ではレイアウトをカスタマイズすることは出来ませんが、日本語化するだけは可能です。なお、Laravelはバージョン8で確認しています。
結果
まず最初に結果となる文面です。
設定内容
前述の文面にするための設定です。
config/app.phpの編集
config/app.phpでlocalをjaに変更します。
.envの編集
.envファイルのAPP_NAMEの値を任意のアプリ名に変更します。
resources/lang/ja.jsonの作成
resources/langフォルダ内にja.jsonという名前のファイルを作り、以下の様に内容を編集します。
1 2 3 4 5 6 7 8 |
{ "Hello!": "こんにちは!", "Verify Email Address": "メールアドレスの確認", "Please click the button below to verify your email address.": "以下のボタンをクリックしてメールアドレスを認証してください。", "If you did not create an account, no further action is required.": "このメールの内容に覚えがない場合は、このまま破棄してください。", "Regards": "どうぞよろしくお願い致します", "If you're having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:": "もし \":actionText\" ボタンがクリックできない場合は、以下に表示されているURLを直接ブラウザにコピー&ペーストしてください。:" } |
以上で最初に載せたような文面のメールが送られるようになります。
解説
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ファイル内で指定されているので、この文字列と一致させる必要があります。