在生产服务器上切换语言时,我没有收到任何错误。Laravel 5.4多语言区域设置无法在生产服务器上工作
我可以看到会话值正在更改,因为我的导航栏上的标志更改但设置区域设置不起作用。
虽然在本地主机上一切正常。
我不太清楚从哪里来解决这个问题,所以我真的很感激,如果有人可以指出我在正确的方向。
在生产服务器上切换语言时,我没有收到任何错误。Laravel 5.4多语言区域设置无法在生产服务器上工作
我可以看到会话值正在更改,因为我的导航栏上的标志更改但设置区域设置不起作用。
虽然在本地主机上一切正常。
我不太清楚从哪里来解决这个问题,所以我真的很感激,如果有人可以指出我在正确的方向。
我在注释中谈到的例子是这样的
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);
}
}
它看起来像你需要在生产清除配置缓存:
php artisan config:cache
这次来到我的脑海里,当我读您的评论:
是的。显然,我在配置文件中玩过,区域设置总是落在配置文件app.php的fallback_locale部分。我试着将fallback_locale设置为我的第二种语言,并且该网站确实改变了语言。但我当时无法切换回第一语言。
我的网站支持的两种语言环境,“恩”和“日”
的问题是,我是设置会话(“郎”)键,“EN”和“TH”。
在我的mac环境中,像这样的东西不区分大小写,因此语言环境在我的机器环境中正常工作。
但是,在可能在Linux等上运行的实时生产服务器上,它是区分大小写的。
我现在通过将会话密钥“lang”设置为区域设置的小写值来解决了问题。
资源/ lang/*语言*下的文件是否全部到位? –
是的。显然,我在配置文件中玩过,区域设置总是落在配置文件app.php的fallback_locale部分。我试着将fallback_locale设置为我的第二种语言,并且该网站确实改变了语言。但我当时无法切换回第一语言。 –
我不确定你是如何在本地开发中完成的,但是在我的多语言项目中,我做了一个在每个请求之前运行的中间件(将其添加到Web组),并获取了会话区域设置(登录用户或注销)并将应用程序本地设置为所需的语言 –