public function handle(Request $request, Closure $next) { app('events')->listen('locale.changed', function ($locale) { app('xe.translator')->setLocale($locale); }); // check locale at request & set locale $locale = $request->get('_l'); if (!$locale) { $locale = $request->cookie('locale', app('xe.translator')->getLocale()); } app()->setLocale($locale); app('cookie')->queue(cookie()->forever('locale', $locale)); app('router')->matched(function ($route, $request) use($locale) { $key = self::class . '://' . $request->method() . '/' . $route->getPath() . '/' . $locale; app('xe.translator')->setCurrentCacheKey($key); }); if ($request->has('xe_use_request_preprocessor') && $this->available()) { $this->prepare($request); } /** @var Response $response */ $response = $next($request); if ($request->has('xe_use_request_preprocessor') && $this->available()) { $this->conduct($request); } return $response; }