Fix detecting unknown locale

This commit is contained in:
Pig Fang 2019-11-26 16:53:19 +08:00
parent 0fbf16acad
commit c665adf1c8
2 changed files with 20 additions and 3 deletions

View File

@ -9,11 +9,21 @@ class DetectLanguagePrefer
{ {
public function handle($request, \Closure $next) public function handle($request, \Closure $next)
{ {
$locale = $request->input('lang') ?? $request->cookie('locale') ?? $request->getPreferredLanguage(); $locale = $request->input('lang')
if (($info = Arr::get(config('locales'), $locale)) && ($alias = Arr::get($info, 'alias'))) { ?? $request->cookie('locale')
?? $request->getPreferredLanguage();
if (
($info = Arr::get(config('locales'), $locale)) &&
($alias = Arr::get($info, 'alias'))
) {
$locale = $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); Cookie::queue('locale', $locale);
return $next($request); return $next($request);

View File

@ -97,4 +97,11 @@ class JavaScriptTest extends TestCase
resolve(JavaScript::class)->plugin('en') resolve(JavaScript::class)->plugin('en')
); );
} }
public function testFallbackLocale()
{
$this->get('/', ['Accept-Language' => 'xyz'])
->assertSuccessful()
->assertSee('lang/en.js');
}
} }