2016-08-29 34 views
1

我一直在一個本地化項目中工作,在我的應用程序中語言翻譯文件沒有在某些頁面加載。我不知道我的loadPath函數有什麼問題。 在我的應用程序中,用戶可以在配置文件部分更改語言,並且這些更改在同一會話中完美工作。但是,當用戶首次註銷並登錄應用程序時,用戶沒有看到他/她的首選語言。Laravel語言翻譯未在第一條路線加載

這裏我的代碼

protected function loadPath($path, $locale, $group) 
{ 

    if (App::runningInConsole()) { 
     return parent::loadPath($path, $locale, $group); 
    } 

    $domain = get_subdomain(); 
    $dir = "lang/{$locale}/{$domain}"; 
    $key = $dir.'/'.$group.'.php'; 


    if(\Session::has($key)){ 
     $results = \Session::get($key); 
     $d = json_encode($results); 

     view::share('lang',$d); 
     return $results; 

    }else{ 

     $this->s3 = App::make('aws')->factory(tenent_aws_config())->get('s3'); 

     $domain = get_subdomain(); 
     $bucket = "localbulkload"; 
     $dir = "lang/{$locale}/{$domain}"; 

     $langList = $this->s3->getIterator('ListObjects',[ 
      "Bucket" => $bucket, 
      'Prefix' => "lang/$locale/{$domain}" 
     ]); 

     foreach ($langList as $langObject){ 
      $object = $this->s3->getObject([ 
       "Bucket" => $bucket, 
       "Key" => $langObject['Key'] 
      ]); 
      $key = $langObject['Key']; 
      $string = ($object['Body']); 
      $results = eval("?>$string"); 
      \Session::put($key,$results,60); 
     } 

     $info = $this->s3->doesObjectExist(
      $bucket, 
      $dir . "/" . $group . ".php"); 
     if ($info === false) { 

      if($this->files->exists($full = "{$path}/template/{$group}.php")) { 

       $results = $this->files->getRequire($full); 
       $d = json_encode($results); 
       view::share('lang',$d); 
       return $results; 
      } 
      else{ 
       $this->files->exists($full = "{$path}/en/{$group}.php"); 
       $results = $this->files->getRequire($full); 
       $d = json_encode($results); 
       view::share('lang',$d); 

       return $results; 
      } 

     } 
    } 

    return array(); 
} 

我該如何解決這個問題?

回答

0

我發現了一些不必要的語言文件加載在我的功能,我刪除,我做按需加載文件only.Now其工作perfectly.Here是我工作的代碼

protected function loadPath($path, $locale, $group) 
{ 
    if (App::runningInConsole()) { 
     return parent::loadPath($path, $locale, $group); 
    } 


    $domain = get_subdomain(); 
    $dir = "lang/{$locale}/{$domain}"; 
    $key = $dir.'/'.$group.'.php'; 

    if(\Session::has($key)){ 
     $results = \Session::get($key); 
     $d = json_encode($results); 
     view::share('lang',$d); 
     return $results; 

    }else{ 

     $this->s3 = App::make('aws')->factory(tenent_aws_config())->get('s3'); 

     $domain = get_subdomain(); 
     $bucket = "localbulkload"; 
     $dir = "lang/{$locale}/{$domain}"; 

     $info = $this->s3->doesObjectExist(
      $bucket, 
      $dir . "/" . $group . ".php"); 

     if($info){ 
      $object = $this->s3->getObject([ 
       "Bucket" => $bucket, 
       "Key" => $dir . "/" . $group . ".php" 
      ]); 
      $key = $object['Key']; 
      $string = ($object['Body']); 
      $results = eval("?>$string"); 

      \Session::put($key,$string); 
      $d = json_encode($results); 
      view::share('lang',$d); 
      return $results; 
     } 
     else{ 

      if($this->files->exists($full = "{$path}/template/{$group}.php")) { 

       $results = $this->files->getRequire($full); 
       $d = json_encode($results); 
       view::share('lang',$d); 
       return $results; 
      } 
      else{ 
       $this->files->exists($full = "{$path}/en/{$group}.php"); 
       $results = $this->files->getRequire($full); 
       $d = json_encode($results); 
       view::share('lang',$d); 
       return $results; 
      } 

     } 
    } 

    return array(); 
}