我有向用户发送电子邮件的警报系统。如何根据用户偏好以语言发送电子邮件。
在用户表中我有一列
language
。它存储用户选择的语言(“en”、“de”等...)
我用这个发送电子邮件:
public function handle(){
...
Mail::send('emails.newSearchAlert', ['u' => $u, 'results' => $results],
function ($m) use ($u) {
$m->from('[email protected]', 'My company');
}
$m->to($u->email)->subject('Your search alert - ' . $u->search);
});
在我的
newSearchAlert
中,我这样做:
@if(App::isLocale('de'))
<h3>Ihr Alert</h3>
@elseif(App::isLocale('en'))
<h3>Your campaign alert: </h3>
但它不起作用。我总是收到德语电子邮件。如何使用表中的
language
列。
PS 我使用这个包进行本地化: https://github.com/mcamara/laravel-localization
在发送电子邮件之前,您必须设置您的区域设置
App::setLocale($language);
其中
$language
是您从数据库加载的语言
我认为在你的情况下是
App::setLocale($u->language);
作为完整的解决方案:
我确实在 Providers/AppServiceProvider.php
中使用了 Mazz 解决方案App::setLocale($language);
别忘了添加:
use App;
我正在使用 Laravel 8