[HttpFoudantion] fixed Request::getPreferredLanguage()
This commit is contained in:
parent
839c78a4b0
commit
c928ddc77d
@ -1275,7 +1275,18 @@ class Request
|
|||||||
return $locales[0];
|
return $locales[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
$preferredLanguages = array_values(array_intersect($preferredLanguages, $locales));
|
$extendedPreferredLanguages = array();
|
||||||
|
foreach ($preferredLanguages as $language) {
|
||||||
|
$extendedPreferredLanguages[] = $language;
|
||||||
|
if (false !== $position = strpos($language, '_')) {
|
||||||
|
$superLanguage = substr($language, 0, $position);
|
||||||
|
if (!in_array($superLanguage, $preferredLanguages)) {
|
||||||
|
$extendedPreferredLanguages[] = $superLanguage;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$preferredLanguages = array_values(array_intersect($extendedPreferredLanguages, $locales));
|
||||||
|
|
||||||
return isset($preferredLanguages[0]) ? $preferredLanguages[0] : $locales[0];
|
return isset($preferredLanguages[0]) ? $preferredLanguages[0] : $locales[0];
|
||||||
}
|
}
|
||||||
|
@ -881,6 +881,14 @@ class RequestTest extends \PHPUnit_Framework_TestCase
|
|||||||
$request = new Request();
|
$request = new Request();
|
||||||
$request->headers->set('Accept-language', 'zh, en-us; q=0.8, en; q=0.6');
|
$request->headers->set('Accept-language', 'zh, en-us; q=0.8, en; q=0.6');
|
||||||
$this->assertEquals('en', $request->getPreferredLanguage(array('fr', 'en')));
|
$this->assertEquals('en', $request->getPreferredLanguage(array('fr', 'en')));
|
||||||
|
|
||||||
|
$request = new Request();
|
||||||
|
$request->headers->set('Accept-language', 'zh, en-us; q=0.8');
|
||||||
|
$this->assertEquals('en', $request->getPreferredLanguage(array('fr', 'en')));
|
||||||
|
|
||||||
|
$request = new Request();
|
||||||
|
$request->headers->set('Accept-language', 'zh, en-us; q=0.8, fr-fr; q=0.6, fr; q=0.5');
|
||||||
|
$this->assertEquals('en', $request->getPreferredLanguage(array('fr', 'en')));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testIsXmlHttpRequest()
|
public function testIsXmlHttpRequest()
|
||||||
|
Reference in New Issue
Block a user