翻译排队的邮件(本地化)

mat*_*e64 6 php email laravel laravel-5

我正在寻找一个有效的解决方案,在翻译排队的电子邮件.不幸的是,所有电子邮件都使用默认语言环境(在下面定义).app.locale

让我们假设,我们有两个邮件管道,一个是英语en的用户和另一个为日本jp用户.

我应该将哪些数据传递到Mail外观以翻译(本地化)排队的电子邮件

  // User model
  $user = User:find(1)->first();

  Mailer::queue($email, 'Party at Batman\'s cave (Batcave)', 'emails.party-invitation', [

    ...

    'locale' => $user->getLocale(), // value: "jp", but does not work
    'lang' => $user->getLocale(), // value: "jp", but does not work
    'language' => $user->getLocale(), // value: "jp", but does not work
  ]);
Run Code Online (Sandbox Code Playgroud)

ken*_*hin 7

我一直在努力以更有效的方式完成这项工作.目前我的设置是这样的.希望这可以帮助将来解决这个问题:

// Fetch the locale of the receiver.
$user = Auth::user();
$locale = $user->locale;
Mail::queue('emails.welcome.template', ['user' => $user, 'locale' => $locale], function($mail) use ($user, $locale) {
     $mail->to($user->email);
     $mail->subject(
          trans(
               'mails.subject_welcome',
               [], null, $locale
          )
     );
});
Run Code Online (Sandbox Code Playgroud)

并在模板中使用以下内容:

{{ trans('mails.welcome', ['name' => ucfirst($user['first_name'])], null, $locale) }}
Run Code Online (Sandbox Code Playgroud)

  • 哇,您的代码有效,谢谢。但是我花了2个小时试图使其工作,直到我重新启动队列。如果不重新启动队列,则任何更改都不会生效。我不知道。 (2认同)