Php Laravel 5配置区域设置不起作用

Php Laravel 5配置区域设置不起作用,php,validation,laravel,locale,laravel-5,Php,Validation,Laravel,Locale,Laravel 5,所做的修改: 在config/app.php上 'locale' => env('APP_LOCALE', 'en'), 'fallback_locale' => 'en', protected $middleware = [ . . . 'App\Http\Middleware\Locale' ]; 在.env上 APP_LOCALE=pt 我还将/resources/lang/en文件复制为/resources/lang/pt文件 问题:

所做的修改:

config/app.php上

'locale' => env('APP_LOCALE', 'en'),
'fallback_locale' => 'en',
protected $middleware = [
    .
    .
    .

    'App\Http\Middleware\Locale'
];
.env上

APP_LOCALE=pt
我还将/resources/lang/en文件复制为/resources/lang/pt文件

问题:

我所有的验证消息仍然是英文的,并且正在运行php artisan tinker

>>> Lang::getLocale()
=> "en"

>>> env('APP_LOCALE')
=> "pt"

帮助?

我已经找到了解决方法:

<?php namespace App\Http\Middleware;

use Closure;
use Session;
use App;
use Config;

class Locale {

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        App::setLocale(env('APP_LOCALE'));
        return $next($request);
    }

}
更新:

我的配置被以下命令缓存:

php artisan config:cache
所以,我做了:

php artisan config:clear
上面的中间件不再是必需的了

    php artisan config:clear

    php artisan cache:clear 

    php artisan config:cache
如果在部署期间使用config:cache命令,则必须确保仅从配置文件中调用env函数,而不是从应用程序中的任何其他位置调用

如果您是从应用程序中调用env,强烈建议您向配置文件中添加适当的配置值,并从该位置调用env,从而将env调用转换为config调用


阅读整个线程作为测试,如果您直接在config/app.php上设置
'locale'
,它会按预期工作吗?如果您运行
php artisan env
,您会得到设置在
.env
上的
app_env
?设置在config/app.php上根本不工作。php artisan env返回上配置的本地。如果框架提供配置参数,envI真的不想创建一个中间件来实现这一点。谢谢@felipe_dmz这一命令
php artisan config:clear
解决了我的问题。奇怪的是,
php-artisan-cache:clear
没有清除缓存的配置,laravel太奇怪了