Skip to content

Commit 0b1f731

Browse files
[Translation] Improve LocaleSwitcher a bit
1 parent b26b6b7 commit 0b1f731

File tree

8 files changed

+17
-199
lines changed

8 files changed

+17
-199
lines changed

DependencyInjection/Compiler/ConfigureLocaleSwitcherPass.php

Lines changed: 0 additions & 45 deletions
This file was deleted.

DependencyInjection/FrameworkExtension.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@
205205
use Symfony\Component\Translation\Bridge\Loco\LocoProviderFactory;
206206
use Symfony\Component\Translation\Bridge\Lokalise\LokaliseProviderFactory;
207207
use Symfony\Component\Translation\Command\XliffLintCommand as BaseXliffLintCommand;
208+
use Symfony\Component\Translation\LocaleSwitcher;
208209
use Symfony\Component\Translation\PseudoLocalizationTranslator;
209210
use Symfony\Component\Translation\Translator;
210211
use Symfony\Component\Uid\Factory\UuidFactory;
@@ -1082,7 +1083,6 @@ private function registerRouterConfiguration(array $config, ContainerBuilder $co
10821083
$container->removeDefinition('console.command.router_debug');
10831084
$container->removeDefinition('console.command.router_match');
10841085
$container->removeDefinition('messenger.middleware.router_context');
1085-
$container->removeDefinition('translation.locale_aware_request_context');
10861086

10871087
return;
10881088
}
@@ -1295,6 +1295,11 @@ private function registerTranslatorConfiguration(array $config, ContainerBuilder
12951295
}
12961296

12971297
$loader->load('translation.php');
1298+
1299+
if (!ContainerBuilder::willBeAvailable('symfony/translation', LocaleSwitcher::class, ['symfony/framework-bundle'])) {
1300+
$container->removeDefinition('translation.locale_switcher');
1301+
}
1302+
12981303
$loader->load('translation_providers.php');
12991304

13001305
// Use the "real" translator instead of the identity default

FrameworkBundle.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddDebugLogProcessorPass;
1616
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddExpressionLanguageProvidersPass;
1717
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AssetsContextPass;
18-
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\ConfigureLocaleSwitcherPass;
1918
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\ContainerBuilderDebugDumpPass;
2019
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\DataCollectorTranslatorPass;
2120
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\LoggingTranslatorPass;
@@ -164,7 +163,6 @@ public function build(ContainerBuilder $container)
164163
$container->addCompilerPass(new RegisterReverseContainerPass(true));
165164
$container->addCompilerPass(new RegisterReverseContainerPass(false), PassConfig::TYPE_AFTER_REMOVING);
166165
$container->addCompilerPass(new RemoveUnusedSessionMarshallingHandlerPass());
167-
$container->addCompilerPass(new ConfigureLocaleSwitcherPass());
168166

169167
if ($container->getParameter('kernel.debug')) {
170168
$container->addCompilerPass(new AddDebugLogProcessorPass(), PassConfig::TYPE_BEFORE_OPTIMIZATION, 2);

Resources/config/translation.php

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
use Psr\Container\ContainerInterface;
1515
use Symfony\Bundle\FrameworkBundle\CacheWarmer\TranslationsCacheWarmer;
16-
use Symfony\Bundle\FrameworkBundle\Translation\LocaleAwareRequestContext;
1716
use Symfony\Bundle\FrameworkBundle\Translation\Translator;
1817
use Symfony\Component\Translation\Dumper\CsvFileDumper;
1918
use Symfony\Component\Translation\Dumper\IcuResFileDumper;
@@ -46,6 +45,7 @@
4645
use Symfony\Component\Translation\Reader\TranslationReaderInterface;
4746
use Symfony\Component\Translation\Writer\TranslationWriter;
4847
use Symfony\Component\Translation\Writer\TranslationWriterInterface;
48+
use Symfony\Contracts\Translation\LocaleAwareInterface;
4949
use Symfony\Contracts\Translation\TranslatorInterface;
5050

5151
return static function (ContainerConfigurator $container) {
@@ -164,22 +164,15 @@
164164
->args([service(ContainerInterface::class)])
165165
->tag('container.service_subscriber', ['id' => 'translator'])
166166
->tag('kernel.cache_warmer')
167-
;
168-
169-
if (class_exists(LocaleSwitcher::class)) {
170-
$container->services()
171-
->set('translation.locale_switcher', LocaleSwitcher::class)
172-
->args([
173-
param('kernel.default_locale'),
174-
abstract_arg('LocaleAware services'),
175-
])
176-
->alias(LocaleSwitcher::class, 'translation.locale_switcher')
177167

178-
->set('translation.locale_aware_request_context', LocaleAwareRequestContext::class)
168+
->set('translation.locale_switcher', LocaleSwitcher::class)
179169
->args([
180-
service('router.request_context'),
181170
param('kernel.default_locale'),
171+
tagged_iterator('kernel.locale_aware'),
172+
service('router.request_context')->ignoreOnInvalid(),
182173
])
183-
;
184-
}
174+
->tag('kernel.reset', ['method' => 'reset'])
175+
->alias(LocaleAwareInterface::class, 'translation.locale_switcher')
176+
->alias(LocaleSwitcher::class, 'translation.locale_switcher')
177+
;
185178
};

Tests/DependencyInjection/Compiler/ConfigureLocaleSwitcherPassTest.php

Lines changed: 0 additions & 62 deletions
This file was deleted.

Tests/DependencyInjection/FrameworkExtensionTest.php

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
use Symfony\Component\Cache\Adapter\TagAwareAdapter;
3232
use Symfony\Component\Cache\DependencyInjection\CachePoolPass;
3333
use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException;
34-
use Symfony\Component\DependencyInjection\Argument\AbstractArgument;
3534
use Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument;
3635
use Symfony\Component\DependencyInjection\Argument\ServiceLocatorArgument;
3736
use Symfony\Component\DependencyInjection\Argument\TaggedIteratorArgument;
@@ -2019,15 +2018,13 @@ public function testLocaleSwitcherServiceRegistered()
20192018
$container = $this->createContainerFromFile('full');
20202019

20212020
$this->assertTrue($container->has('translation.locale_switcher'));
2022-
$this->assertTrue($container->has('translation.locale_aware_request_context'));
20232021

20242022
$switcherDef = $container->getDefinition('translation.locale_switcher');
2025-
$localeAwareRequestContextDef = $container->getDefinition('translation.locale_aware_request_context');
20262023

20272024
$this->assertSame('%kernel.default_locale%', $switcherDef->getArgument(0));
2028-
$this->assertInstanceOf(AbstractArgument::class, $switcherDef->getArgument(1));
2029-
$this->assertEquals(new Reference('router.request_context'), $localeAwareRequestContextDef->getArgument(0));
2030-
$this->assertSame('%kernel.default_locale%', $localeAwareRequestContextDef->getArgument(1));
2025+
$this->assertInstanceOf(TaggedIteratorArgument::class, $switcherDef->getArgument(1));
2026+
$this->assertSame('kernel.locale_aware', $switcherDef->getArgument(1)->getTag());
2027+
$this->assertEquals(new Reference('router.request_context', ContainerBuilder::IGNORE_ON_INVALID_REFERENCE), $switcherDef->getArgument(2));
20312028
}
20322029

20332030
protected function createContainer(array $data = [])

Tests/Translation/LocaleAwareRequestContextTest.php

Lines changed: 0 additions & 33 deletions
This file was deleted.

Translation/LocaleAwareRequestContext.php

Lines changed: 0 additions & 35 deletions
This file was deleted.

0 commit comments

Comments
 (0)