supportedLocales(); $locale = (string) $request->route('locale'); if (! $locale || ! in_array($locale, $supportedLocales, true)) { $preferred = Session::get('preferred_locale'); if ($preferred && in_array($preferred, $supportedLocales, true)) { App::setLocale($preferred); Session::put('locale', $preferred); $request->attributes->set('preferred_locale', $preferred); } return $next($request); } App::setLocale($locale); Session::put('preferred_locale', $locale); Session::put('locale', $locale); $request->attributes->set('preferred_locale', $locale); return $next($request); } /** * @return array */ private function supportedLocales(): array { $configured = array_filter(array_map( static fn ($value) => trim((string) $value), explode(',', (string) env('APP_SUPPORTED_LOCALES', '')) )); if (empty($configured)) { $configured = array_filter([ config('app.locale'), config('app.fallback_locale'), ]); } if (empty($configured)) { $configured = ['de', 'en']; } return array_values(array_unique($configured)); } }