public function handle(Request $request, Closure $next)
{
// 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;
}