2016-08-29 6 views
1

Ich habe an einem Lokalisierungsprojekt gearbeitet, in meiner App werden die Sprachübersetzungsdateien auf einigen Seiten nicht geladen. Ich weiß nicht, was mit meiner loadPath Funktion falsch ist. In meiner App kann der Benutzer seine Sprache im Profilbereich ändern und die Änderungen funktionieren perfekt in der gleichen Sitzung. Aber wenn der Benutzer sich abmeldet und sich bei der App anmeldet, sieht der Benutzer zunächst nicht die von ihm bevorzugte Sprache.Laravel Sprachübersetzung Wird nicht auf der ersten Route geladen

Hier mein Code

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(); 
} 

Wie kann ich dieses Problem lösen?

Antwort

0

ich einige unerwünschte Sprachdateien Laden auf meine Funktion gefunden und ich entferne sie und ich laden Dateien auf Anfrage only.Now seine Arbeits perfectly.Here ist mein Arbeits Code

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(); 
} 
Verwandte Themen