From 598e4c83f132cb635970e1c31194d634e8d79bd2 Mon Sep 17 00:00:00 2001 From: Michel Weimerskirch Date: Thu, 31 Jan 2013 14:25:39 +0100 Subject: [PATCH 1/2] Improve preferred language detection --- src/Symfony/Component/HttpFoundation/Request.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Symfony/Component/HttpFoundation/Request.php b/src/Symfony/Component/HttpFoundation/Request.php index ca3f465003bf0..bb960267cdfe8 100644 --- a/src/Symfony/Component/HttpFoundation/Request.php +++ b/src/Symfony/Component/HttpFoundation/Request.php @@ -1309,6 +1309,9 @@ public function getLanguages() for ($i = 0, $max = count($codes); $i < $max; $i++) { if ($i == 0) { $lang = strtolower($codes[0]); + if(!in_array($lang, $this->languages) { + $this->languages[] = $lang; + } } else { $lang .= '_'.strtoupper($codes[$i]); } From f8c69d5b63063183513abfb80e00ee50e9b4c934 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Simon?= Date: Thu, 14 Mar 2013 16:59:08 +0100 Subject: [PATCH 2/2] [HttpFoundation] added Request::getLanguage test --- src/Symfony/Component/HttpFoundation/Request.php | 8 ++++++-- .../Component/HttpFoundation/Tests/RequestTest.php | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/Symfony/Component/HttpFoundation/Request.php b/src/Symfony/Component/HttpFoundation/Request.php index bb960267cdfe8..bc5dfa17c1ae1 100644 --- a/src/Symfony/Component/HttpFoundation/Request.php +++ b/src/Symfony/Component/HttpFoundation/Request.php @@ -1309,7 +1309,9 @@ public function getLanguages() for ($i = 0, $max = count($codes); $i < $max; $i++) { if ($i == 0) { $lang = strtolower($codes[0]); - if(!in_array($lang, $this->languages) { + // First segment of compound language codes + // is added to supported languages list + if (!in_array($lang, $this->languages)) { $this->languages[] = $lang; } } else { @@ -1319,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()