Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 17dc2ff

Browse files
mweimerskirchfabpot
authored andcommitted
[HttpRequest] fixes Request::getLanguages() bug
1 parent cdd89fb commit 17dc2ff

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

src/Symfony/Component/HttpFoundation/Request.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1309,14 +1309,21 @@ public function getLanguages()
13091309
for ($i = 0, $max = count($codes); $i < $max; $i++) {
13101310
if ($i == 0) {
13111311
$lang = strtolower($codes[0]);
1312+
// First segment of compound language codes
1313+
// is added to supported languages list
1314+
if (!in_array($lang, $this->languages)) {
1315+
$this->languages[] = $lang;
1316+
}
13121317
} else {
13131318
$lang .= '_'.strtoupper($codes[$i]);
13141319
}
13151320
}
13161321
}
13171322
}
13181323

1319-
$this->languages[] = $lang;
1324+
if (!in_array($lang, $this->languages)) {
1325+
$this->languages[] = $lang;
1326+
}
13201327
}
13211328

13221329
return $this->languages;

src/Symfony/Component/HttpFoundation/Tests/RequestTest.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -951,8 +951,8 @@ public function testGetLanguages()
951951

952952
$request = new Request();
953953
$request->headers->set('Accept-language', 'zh, en-us; q=0.8, en; q=0.6');
954-
$this->assertEquals(array('zh', 'en_US', 'en'), $request->getLanguages());
955-
$this->assertEquals(array('zh', 'en_US', 'en'), $request->getLanguages());
954+
$this->assertEquals(array('zh', 'en', 'en_US'), $request->getLanguages());
955+
$this->assertEquals(array('zh', 'en', 'en_US'), $request->getLanguages());
956956

957957
$request = new Request();
958958
$request->headers->set('Accept-language', 'zh, en-us; q=0.6, en; q=0.8');
@@ -969,6 +969,10 @@ public function testGetLanguages()
969969
$request = new Request();
970970
$request->headers->set('Accept-language', 'zh, i-cherokee; q=0.6');
971971
$this->assertEquals(array('zh', 'cherokee'), $request->getLanguages());
972+
973+
$request = new Request();
974+
$request->headers->set('Accept-language', 'en-us');
975+
$this->assertEquals(array('en', 'en_US'), $request->getLanguages());
972976
}
973977

974978
public function testGetRequestFormat()

0 commit comments

Comments
 (0)