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)
{
$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);

View File

@ -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');
}
}