diff --git a/src/Symfony/Component/HttpFoundation/Request.php b/src/Symfony/Component/HttpFoundation/Request.php index d28f9fc2101d..1e23db60b32d 100644 --- a/src/Symfony/Component/HttpFoundation/Request.php +++ b/src/Symfony/Component/HttpFoundation/Request.php @@ -1055,7 +1055,11 @@ public function getContentType() */ public function setDefaultLocale($locale) { - $this->setPhpDefaultLocale($this->defaultLocale = $locale); + $this->defaultLocale = $locale; + + if (null === $this->locale) { + $this->setPhpDefaultLocale($locale); + } } /** diff --git a/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php b/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php index 0a03eeb6514c..c02b35a00ba9 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php @@ -900,6 +900,27 @@ public function testIsXmlHttpRequest() $this->assertFalse($request->isXmlHttpRequest()); } + public function testIntlLocale() + { + if (!extension_loaded('intl')) { + $this->markTestSkipped('The intl extension is needed to run this test.'); + } + + $request = new Request(); + + $request->setDefaultLocale('fr'); + $this->assertEquals('fr', $request->getLocale()); + $this->assertEquals('fr', \Locale::getDefault()); + + $request->setLocale('en'); + $this->assertEquals('en', $request->getLocale()); + $this->assertEquals('en', \Locale::getDefault()); + + $request->setDefaultLocale('de'); + $this->assertEquals('en', $request->getLocale()); + $this->assertEquals('en', \Locale::getDefault()); + } + public function testGetCharsets() { $request = new Request();