diff --git a/src/Symfony/Component/HttpFoundation/Request.php b/src/Symfony/Component/HttpFoundation/Request.php index ca3f465003bf0..bc5dfa17c1ae1 100644 --- a/src/Symfony/Component/HttpFoundation/Request.php +++ b/src/Symfony/Component/HttpFoundation/Request.php @@ -1309,6 +1309,11 @@ public function getLanguages() for ($i = 0, $max = count($codes); $i < $max; $i++) { if ($i == 0) { $lang = strtolower($codes[0]); + // First segment of compound language codes + // is added to supported languages list + if (!in_array($lang, $this->languages)) { + $this->languages[] = $lang; + } } else { $lang .= '_'.strtoupper($codes[$i]); } @@ -1316,7 +1321,9 @@ public function getLanguages() } } - $this->languages[] = $lang; + if (!in_array($lang, $this->languages)) { + $this->languages[] = $lang; + } } return $this->languages; diff --git a/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php b/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php index 535ebfc9a3cf6..b4a43fc1f2e25 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php @@ -951,8 +951,8 @@ public function testGetLanguages() $request = new Request(); $request->headers->set('Accept-language', 'zh, en-us; q=0.8, en; q=0.6'); - $this->assertEquals(array('zh', 'en_US', 'en'), $request->getLanguages()); - $this->assertEquals(array('zh', 'en_US', 'en'), $request->getLanguages()); + $this->assertEquals(array('zh', 'en', 'en_US'), $request->getLanguages()); + $this->assertEquals(array('zh', 'en', 'en_US'), $request->getLanguages()); $request = new Request(); $request->headers->set('Accept-language', 'zh, en-us; q=0.6, en; q=0.8'); @@ -969,6 +969,10 @@ public function testGetLanguages() $request = new Request(); $request->headers->set('Accept-language', 'zh, i-cherokee; q=0.6'); $this->assertEquals(array('zh', 'cherokee'), $request->getLanguages()); + + $request = new Request(); + $request->headers->set('Accept-language', 'en-us'); + $this->assertEquals(array('en', 'en_US'), $request->getLanguages()); } public function testGetRequestFormat()