Laravel 语言翻译未在第一条路线加载
Laravel Language Translation Not loading at first route
我一直在本地化项目中工作,在我的应用程序中,语言翻译文件没有加载 pages.I 不知道我的 loadPath
功能有什么问题。
在我的应用程序中,用户可以更改配置文件部分的语言,并且更改在相同的地方完美运行 session.But 当用户注销并首先登录到应用程序时,用户没有看到 his/her 首选语言。
这是我的代码
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();
}
我该如何解决这个问题?
我发现我的函数加载了一些不需要的语言文件,我删除了它们并按需加载文件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();
}
我一直在本地化项目中工作,在我的应用程序中,语言翻译文件没有加载 pages.I 不知道我的 loadPath
功能有什么问题。
在我的应用程序中,用户可以更改配置文件部分的语言,并且更改在相同的地方完美运行 session.But 当用户注销并首先登录到应用程序时,用户没有看到 his/her 首选语言。
这是我的代码
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();
}
我该如何解决这个问题?
我发现我的函数加载了一些不需要的语言文件,我删除了它们并按需加载文件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();
}