2017-02-22 2 views
0

프로덕션 서버에서 언어를 전환 할 때 오류가 발생하지 않습니다.Laravel 5.4 프로덕션 서버에서 다중 언어 로케일이 작동하지 않습니다.

내 탐색 막대의 플래그가 변경되었지만 로캘 설정이 작동하지 않아 세션 값이 변경되는 것을 볼 수 있습니다.

로컬 호스트에서는 모든 것이 잘 작동합니다.

누군가가 올바른 방향으로 나를 가리킬 수 있다면, 나는 정말로이 문제에 접근 할 수있는 곳이 어디인지 모르겠다. 나는 당신의 코멘트를 읽을 때 내 마음에 온

php artisan config:cache 

:

+0

resources/lang/* language *에있는 파일은 모두 제자리에 있습니까? –

+0

예. 분명히, 나는 설정으로 놀았고 로케일은 항상 설정 파일 app.php의 fallback_locale 섹션으로 떨어졌습니다. 제 두 번째 언어로 fallback_locale을 설정하려고 시도했지만 사이트에서 실제로 언어를 변경했습니다. 그러나 저는 처음 언어로 되돌아 갈 수 없었습니다. –

+0

지역 개발에서 어떻게했는지 모르겠지만 다중 언어 프로젝트에서 모든 요청 (웹 그룹에 추가) 전에 실행되는 미들웨어를 수행하고 세션 로케일 (로그인 한 상태 사용자 또는 로그 아웃)하고 앱을 필요한 언어로 로컬로 설정합니다 –

답변

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"를 두 로케일 지원 "일"

문제는 내가 세션 ('LANG') 키에 "EN"와 "TH"를 설정 한 것이 었습니다.

내 Mac 환경에서 이러한 것들은 대소 문자를 구분하지 않으므로 로케일이 내 컴퓨터 환경에서 올바르게 작동합니다.

그러나 리눅스 등에서 실행되고있는 라이브 프로덕션 서버에서는 대소 문자를 구분합니다.

세션 키 "lang"을 로케일의 소문자 값으로 설정하여 문제를 해결했습니다.