2015-12-02 39 views
0

我在我的L5项目中使用laravel-gettext,但我需要更改代码中间的语言环境,仅用于一部分,然后将其更改回来。
我正在向客户和所有者发送电子邮件通知,此电子邮件正在使用视图来生成内容,但客户和所有者可能都有不同的语言。
我想是这样的:在PHP中更改gettext语言环境代码的一部分

$current_locale = \App::getLocale(); 
$owner_locale = 'cs'; 
\App::setLocale($owner_locale); 
event(new OrderCreated()); // Sends the email 
\App::setLocale($current_locale); 

不幸的是,这并不工作,似乎只要我更改语言代码的开头,我不能对代码的一部分再次进行更改。 是否有任何其他方式如何告诉代码使用特定的gettext语言仅用于特定视图?由于

回答

0

而是改变语言环境,你可以通过业主现场查看和使用:

Lang::get('file.key', [], $locale); 
+0

谢谢您的回答,但我我不使用内置Laravel定位系统,但国际化不是,所以我想这是不行的说。无论如何,我找到了解决办法,我将它作为答案。 – InToSSH

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