From 8c6b7a49126df8ad7d54f88f9f397fe403ad891d Mon Sep 17 00:00:00 2001 From: Christophe Coevoet Date: Thu, 11 Oct 2012 11:48:40 +0200 Subject: [PATCH] Fixed the handling of the intl locale when setting the default locale Calling setDefaultLocale was replacing the intl locale even if the locale was already set in the Request, thus leading to a different value than the request locale. --- .../Component/HttpFoundation/Request.php | 6 +++++- .../HttpFoundation/Tests/RequestTest.php | 21 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) 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();