2017-02-22 161 views
0

在生产服务器上切换语言时,我没有收到任何错误。Laravel 5.4多语言区域设置无法在生产服务器上工作

我可以看到会话值正在更改,因为我的导航栏上的标志更改但设置区域设置不起作用。

虽然在本地主机上一切正常。

我不太清楚从哪里来解决这个问题,所以我真的很感激,如果有人可以指出我在正确的方向。

+0

资源/ lang/*语言*下的文件是否全部到位? –

+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

它看起来像你需要在生产清除配置缓存:

php artisan config:cache 

这次来到我的脑海里,当我读您的评论:

是的。显然,我在配置文件中玩过,区域设置总是落在配置文件app.php的fallback_locale部分。我试着将fallback_locale设置为我的第二种语言,并且该网站确实改变了语言。但我当时无法切换回第一语言。

0

我的网站支持的两种语言环境,“恩”和“日”

的问题是,我是设置会话(“郎”)键,“EN”和“TH”。

在我的mac环境中,像这样的东西不区分大小写,因此语言环境在我的机器环境中正常工作。

但是,在可能在Linux等上运行的实时生产服务器上,它是区分大小写的。

我现在通过将会话密钥“lang”设置为区域设置的小写值来解决了问题。

相关问题