diff --git a/src/Locale/Locale.php b/src/Locale/Locale.php index c06bd95a66da260ba44978a8ce038167ab1ea87b..b7d9a6ddb468c07904afdbf98a261664d58de8b1 100644 --- a/src/Locale/Locale.php +++ b/src/Locale/Locale.php @@ -74,7 +74,10 @@ class Locale return $locale; } - private static function setRequestLocaleFromQuery(Request $request, string $queryParam): void + /** + * Same as setCurrentRequestLocaleFromQuery(), but takes a request object. + */ + public static function setRequestLocaleFromQuery(Request $request, string $queryParam): void { if ($request->query->has($queryParam)) { $lang = $request->query->get($queryParam); diff --git a/tests/LocaleTest.php b/tests/LocaleTest.php index e9f924c0fc5f302762f989efe7ad7547a8ba1016..f5c08826d403c4cc6f7cec48461ba7bc4a795e56 100644 --- a/tests/LocaleTest.php +++ b/tests/LocaleTest.php @@ -39,4 +39,20 @@ class LocaleTest extends TestCase $lang = $service->getCurrentPrimaryLanguage(); $this->assertSame('de', $lang); } + + public function testSetExplicit() + { + $stack = new RequestStack(); + $params = new ParameterBag(['kernel.default_locale' => \Locale::acceptFromHttp('en')]); + $service = new Locale($stack, $params); + $request = new Request(['foo' => 'fr']); + $service->setRequestLocaleFromQuery($request, 'foo'); + + $stack->push($request); + $lang = $service->getCurrentPrimaryLanguage(); + $this->assertSame('fr', $lang); + $stack->pop(); + $lang = $service->getCurrentPrimaryLanguage(); + $this->assertSame('en', $lang); + } }