2015-12-02 62 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);