Skip to content

Commit 6af424d

Browse files
committed
Merge branch '2.1' into 2.2
* 2.1: #7106 - fix for ZTS builds Added '@@' escaping strategy for YamlFileLoader and YamlDumper [Yaml] fixed bugs with folded scalar parsing [Form] made DefaultCsrfProvider using session_status() when available Added unit tests to Dumper Update .travis.yml (closes #7355) [HttpFoudantion] fixed Request::getPreferredLanguage() Revert "merged branch jfsimon/issue-6928 (PR #7378)" Routing issue with installation in a sub-directory ref: symfony/symfony#7129 Conflicts: .travis.yml src/Symfony/Bundle/FrameworkBundle/Routing/Router.php src/Symfony/Component/Routing/RouteCollection.php
2 parents 13e8107 + 437a7c2 commit 6af424d

File tree

2 files changed

+23
-15
lines changed

2 files changed

+23
-15
lines changed

Request.php

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1345,7 +1345,18 @@ public function getPreferredLanguage(array $locales = null)
13451345
return $locales[0];
13461346
}
13471347

1348-
$preferredLanguages = array_values(array_intersect($preferredLanguages, $locales));
1348+
$extendedPreferredLanguages = array();
1349+
foreach ($preferredLanguages as $language) {
1350+
$extendedPreferredLanguages[] = $language;
1351+
if (false !== $position = strpos($language, '_')) {
1352+
$superLanguage = substr($language, 0, $position);
1353+
if (!in_array($superLanguage, $preferredLanguages)) {
1354+
$extendedPreferredLanguages[] = $superLanguage;
1355+
}
1356+
}
1357+
}
1358+
1359+
$preferredLanguages = array_values(array_intersect($extendedPreferredLanguages, $locales));
13491360

13501361
return isset($preferredLanguages[0]) ? $preferredLanguages[0] : $locales[0];
13511362
}
@@ -1379,21 +1390,14 @@ public function getLanguages()
13791390
for ($i = 0, $max = count($codes); $i < $max; $i++) {
13801391
if ($i == 0) {
13811392
$lang = strtolower($codes[0]);
1382-
// First segment of compound language codes
1383-
// is added to supported languages list
1384-
if (!in_array($lang, $this->languages)) {
1385-
$this->languages[] = $lang;
1386-
}
13871393
} else {
13881394
$lang .= '_'.strtoupper($codes[$i]);
13891395
}
13901396
}
13911397
}
13921398
}
13931399

1394-
if (!in_array($lang, $this->languages)) {
1395-
$this->languages[] = $lang;
1396-
}
1400+
$this->languages[] = $lang;
13971401
}
13981402

13991403
return $this->languages;

Tests/RequestTest.php

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1013,6 +1013,14 @@ public function testGetPreferredLanguage()
10131013
$request = new Request();
10141014
$request->headers->set('Accept-language', 'zh, en-us; q=0.8, en; q=0.6');
10151015
$this->assertEquals('en', $request->getPreferredLanguage(array('fr', 'en')));
1016+
1017+
$request = new Request();
1018+
$request->headers->set('Accept-language', 'zh, en-us; q=0.8');
1019+
$this->assertEquals('en', $request->getPreferredLanguage(array('fr', 'en')));
1020+
1021+
$request = new Request();
1022+
$request->headers->set('Accept-language', 'zh, en-us; q=0.8, fr-fr; q=0.6, fr; q=0.5');
1023+
$this->assertEquals('en', $request->getPreferredLanguage(array('fr', 'en')));
10161024
}
10171025

10181026
public function testIsXmlHttpRequest()
@@ -1083,8 +1091,8 @@ public function testGetLanguages()
10831091

10841092
$request = new Request();
10851093
$request->headers->set('Accept-language', 'zh, en-us; q=0.8, en; q=0.6');
1086-
$this->assertEquals(array('zh', 'en', 'en_US'), $request->getLanguages());
1087-
$this->assertEquals(array('zh', 'en', 'en_US'), $request->getLanguages());
1094+
$this->assertEquals(array('zh', 'en_US', 'en'), $request->getLanguages());
1095+
$this->assertEquals(array('zh', 'en_US', 'en'), $request->getLanguages());
10881096

10891097
$request = new Request();
10901098
$request->headers->set('Accept-language', 'zh, en-us; q=0.6, en; q=0.8');
@@ -1101,10 +1109,6 @@ public function testGetLanguages()
11011109
$request = new Request();
11021110
$request->headers->set('Accept-language', 'zh, i-cherokee; q=0.6');
11031111
$this->assertEquals(array('zh', 'cherokee'), $request->getLanguages());
1104-
1105-
$request = new Request();
1106-
$request->headers->set('Accept-language', 'en-us');
1107-
$this->assertEquals(array('en', 'en_US'), $request->getLanguages());
11081112
}
11091113

11101114
public function testGetRequestFormat()

0 commit comments

Comments
 (0)