2017-02-22 57 views
0

在生產服務器上切換語言時,我沒有收到任何錯誤。Laravel 5.4多語言區域設置無法在生產服務器上工作

我可以看到會話值正在更改,因爲我的導航欄上的標誌更改但設置區域設置不起作用。

雖然在本地主機上一切正常。

我不太清楚從哪裏來解決這個問題,所以我真的很感激,如果有人可以指出我在正確的方向。

+0

資源/ lang/*語言*下的文件是否全部到位? –

+0

是的。顯然,我在配置文件中玩過,區域設置總是落在配置文件app.php的fallback_locale部分。我試着將fallback_locale設置爲我的第二種語言,並且該網站確實改變了語言。但我當時無法切換回第一語言。 –

+0

我不確定你是如何在本地開發中完成的,但是在我的多語言項目中,我做了一個在每個請求之前運行的中間件(將其添加到Web組),並獲取了會話區域設置(登錄用戶或註銷)並將應用程序本地設置爲所需的語言 –

回答

0

我在註釋中談到的例子是這樣的

use Closure, Session, Auth, App; 

class LocaleMiddleware { 


    public function handle($request, Closure $next){ 

     if(Auth::user()){ 
      App::setlocale(Auth::user()->lang); 
     }elseif($locale = Session::has('lang')){ 
      $local = Session::get('lang'); 
      App::setlocale($local); 
     } 
     return $next($request); 
    } 
} 
5

它看起來像你需要在生產清除配置緩存:

php artisan config:cache 

這次來到我的腦海裏,當我讀您的評論:

是的。顯然,我在配置文件中玩過,區域設置總是落在配置文件app.php的fallback_locale部分。我試着將fallback_locale設置爲我的第二種語言,並且該網站確實改變了語言。但我當時無法切換回第一語言。

0

我的網站支持的兩種語言環境,「恩」和「日」

的問題是,我是設置會話(「郎」)鍵,「EN」和「TH」。

在我的mac環境中,像這樣的東西不區分大小寫,因此語言環境在我的機器環境中正常工作。

但是,在可能在Linux等上運行的實時生產服務器上,它是區分大小寫的。

我現在通過將會話密鑰「lang」設置爲區域設置的小寫值來解決了問題。

相關問題