From 20120a3df493541100380b1c90e683033f9ee34d Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Thu, 15 Jul 2021 15:09:53 +0200 Subject: [PATCH] [Translator] fix fallback to Locale::getDefault() --- .../Component/Translation/Tests/TranslatorTest.php | 4 ++-- src/Symfony/Component/Translation/Translator.php | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/Symfony/Component/Translation/Tests/TranslatorTest.php b/src/Symfony/Component/Translation/Tests/TranslatorTest.php index 742956c0a97dc..b7d2d1cd18d58 100644 --- a/src/Symfony/Component/Translation/Tests/TranslatorTest.php +++ b/src/Symfony/Component/Translation/Tests/TranslatorTest.php @@ -50,7 +50,7 @@ public function testConstructorValidLocale($locale) { $translator = new Translator($locale); - $this->assertSame($locale, $translator->getLocale()); + $this->assertSame($locale ?: (class_exists(\Locale::class) ? \Locale::getDefault() : 'en'), $translator->getLocale()); } /** @@ -91,7 +91,7 @@ public function testSetValidLocale($locale) $translator = new Translator($locale); $translator->setLocale($locale); - $this->assertEquals($locale, $translator->getLocale()); + $this->assertEquals($locale ?: (class_exists(\Locale::class) ? \Locale::getDefault() : 'en'), $translator->getLocale()); } /** diff --git a/src/Symfony/Component/Translation/Translator.php b/src/Symfony/Component/Translation/Translator.php index 5e5d9570ca4ca..c36ae331bac8c 100644 --- a/src/Symfony/Component/Translation/Translator.php +++ b/src/Symfony/Component/Translation/Translator.php @@ -143,6 +143,7 @@ public function addResource($format, $resource, $locale, $domain = null) } $this->assertValidLocale($locale); + $locale ?: $locale = class_exists(\Locale::class) ? \Locale::getDefault() : 'en'; $this->resources[$locale][] = [$format, $resource, $domain]; @@ -163,7 +164,7 @@ public function setLocale($locale) } $this->assertValidLocale($locale); - $this->locale = $locale ?? (class_exists(\Locale::class) ? \Locale::getDefault() : 'en'); + $this->locale = $locale; } /** @@ -171,7 +172,7 @@ public function setLocale($locale) */ public function getLocale() { - return $this->locale; + return $this->locale ?: (class_exists(\Locale::class) ? \Locale::getDefault() : 'en'); } /** @@ -281,7 +282,7 @@ public function transChoice($id, $number, array $parameters = [], $domain = null */ public function getCatalogue($locale = null) { - if (null === $locale) { + if (!$locale) { $locale = $this->getLocale(); } else { $this->assertValidLocale($locale); @@ -505,7 +506,7 @@ protected function computeFallbackLocales($locale) */ protected function assertValidLocale($locale) { - if (null !== $locale && 1 !== preg_match('/^[a-z0-9@_\\.\\-]*$/i', $locale)) { + if (!preg_match('/^[a-z0-9@_\\.\\-]*$/i', (string) $locale)) { throw new InvalidArgumentException(sprintf('Invalid "%s" locale.', $locale)); } }