diff --git a/app/Http/Middleware/DetectLanguagePrefer.php b/app/Http/Middleware/DetectLanguagePrefer.php index 7281206f..77caaf8e 100644 --- a/app/Http/Middleware/DetectLanguagePrefer.php +++ b/app/Http/Middleware/DetectLanguagePrefer.php @@ -9,11 +9,21 @@ class DetectLanguagePrefer { public function handle($request, \Closure $next) { - $locale = $request->input('lang') ?? $request->cookie('locale') ?? $request->getPreferredLanguage(); - if (($info = Arr::get(config('locales'), $locale)) && ($alias = Arr::get($info, 'alias'))) { + $locale = $request->input('lang') + ?? $request->cookie('locale') + ?? $request->getPreferredLanguage(); + if ( + ($info = Arr::get(config('locales'), $locale)) && + ($alias = Arr::get($info, 'alias')) + ) { $locale = $alias; } - app()->setLocale($locale ?? app()->getLocale()); + $locale ?? app()->getLocale(); + if (! Arr::has(config('locales'), $locale)) { + $locale = config('app.fallback_locale'); + } + + app()->setLocale($locale); Cookie::queue('locale', $locale); return $next($request); diff --git a/tests/ServicesTest/TranslationsTest/JavaScriptTest.php b/tests/ServicesTest/TranslationsTest/JavaScriptTest.php index 8c6c8b31..8727cc59 100644 --- a/tests/ServicesTest/TranslationsTest/JavaScriptTest.php +++ b/tests/ServicesTest/TranslationsTest/JavaScriptTest.php @@ -97,4 +97,11 @@ class JavaScriptTest extends TestCase resolve(JavaScript::class)->plugin('en') ); } + + public function testFallbackLocale() + { + $this->get('/', ['Accept-Language' => 'xyz']) + ->assertSuccessful() + ->assertSee('lang/en.js'); + } }