我在L5项目中使用laravel-gettext,但是我需要在代码中间更改区域设置,只需更改一个部分,然后将其更改回来。
我正在向客户和所有者发送电子邮件通知,此电子邮件使用视图生成内容,但客户和所有者可以使用不同的语言。
我试过这样的事情:
$current_locale = \App::getLocale();
$owner_locale = 'cs';
\App::setLocale($owner_locale);
event(new OrderCreated()); // Sends the email
\App::setLocale($current_locale);
不幸的是,这不起作用,似乎只要我在代码开头更改语言,我就无法再为部分代码更改它。 有没有其他方法告诉代码只针对特定视图使用特定的gettext语言?感谢
答案 0 :(得分:0)
您可以将所有者区域设置传递给View并使用:
,而不是更改区域设置Lang::get('file.key', [], $locale);
答案 1 :(得分:0)
所以这实际上有效,但我使用了错误的setLocale()
事实证明,LaravelGettext::setLocale()
同步App::setLocale()
,但不是相反
这是有效的代码:
$current_locale = \LaravelGettext::getLocale();
foreach ($admins as $admin) {
$admin_locale = $admin->language->locale;
\LaravelGettext::setLocale($admin_locale);
$this->sendTo($admin->email, $subject, $view, $data);
}
\LaravelGettext::setLocale($current_locale);