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

Skip to content

Commit 70ec4f6

Browse files
committed
merged branch jfsimon/issue-6928 (PR #7378)
This PR was squashed before being merged into the 2.1 branch (closes #7378). Commits ------- 17dc2ff [HttpRequest] fixes Request::getLanguages() bug Discussion ---------- [HttpRequest] fixes Request::getLanguages() bug This PR adds to suported languages the first segment of all compouds languages codes. When receiving `Accept-Language: en-us` header, accepted languages will now be `en, en_US`. This should not be a BC break as most browsers already send the long **and** short versions of language codes... but some dont. | Q | A | ------------- | --- | Bug fix? | yes | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | #6928
2 parents 3a03f3e + 17dc2ff commit 70ec4f6

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)