cookie($cookieName); $configuredLocale = (string) config('app.locale', 'en'); $locale = $this->validLocale($cookieLocale, $supportedLocales) ?? $this->validLocale($configuredLocale, $supportedLocales) ?? $this->validLocale((string) config('app.fallback_locale', 'en'), $supportedLocales) ?? 'en'; App::setLocale($locale); $response = $next($request); if ($request->hasCookie($cookieName) && $this->validLocale($cookieLocale, $supportedLocales) === null) { $response->headers->setCookie(Cookie::forget( $cookieName, (string) config('session.path', '/'), config('session.domain'), )); } return $response; } /** * @param array $supportedLocales */ private function validLocale(mixed $locale, array $supportedLocales): ?string { if (! is_string($locale)) { return null; } return in_array($locale, $supportedLocales, true) ? $locale : null; } }