2017-02-22 12 views
0

プロダクションサーバで言語を切り替えるときにエラーが発生しません。Laravel 5.4プロダクションサーバでマルチ言語ロケールが動作しない

ナビゲーションバーのフラグが変更されてもセッションの値が変更されていることがわかりますが、ロケールの設定は機能していません。

すべてがローカルホストでうまく動作します。

私は誰かが正しい方向に私を指すことができる場合、私は本当にそれを感謝するだろうから、この問題に近づくためにどこに確信していません。私はあなたのコメントを読んだときにこれが私の心に来た

php artisan config:cache 

+0

resources/lang/* language *の下にあるファイルはすべて整っていますか? –

+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

次のとおりです。

はい。どうやら、私は設定と一緒に遊んで、ロケールは常に設定ファイルapp.phpのfallback_localeセクションに落ちています。私は第二言語にfallback_localeを設定しようとしましたが、サイトは実際に言語を変更しました。しかし、私は最初の言語に戻すことができませんでした。

0

私のサイトは "EN"、二つのロケールをサポートし、 "目"

問題は、私がセッションに "EN" と "TH" へ( 'LANG')キーを設定したということでした。

私のMac環境では、このようなものは大文字と小文字が区別されないため、ロケールは自分のマシン環境で正しく動作します。

しかし、Linuxなどで動作しているライブプロダクションサーバーでは、大文字と小文字が区別されます。

セッションキー "lang"をロケールの小文字の値に設定することで問題を解決しました。

関連する問題