部分代码在PHP中更改gettext语言环境

时间:2015-12-02 18:40:36

标签: php laravel internationalization laravel-5 gettext

我在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语言?感谢

2 个答案:

答案 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);