* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Translation\DependencyInjection; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\Compiler\ServiceLocatorTagPass; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Reference; class TranslatorPass implements CompilerPassInterface { /** * @return void */ public function process(ContainerBuilder $container) { if (!$container->hasDefinition('translator.default')) { return; } $loaders = []; $loaderRefs = []; foreach ($container->findTaggedServiceIds('translation.loader', true) as $id => $attributes) { $loaderRefs[$id] = new Reference($id); $loaders[$id][] = $attributes[0]['alias']; if (isset($attributes[0]['legacy-alias'])) { $loaders[$id][] = $attributes[0]['legacy-alias']; } } if ($container->hasDefinition('translation.reader')) { $definition = $container->getDefinition('translation.reader'); foreach ($loaders as $id => $formats) { foreach ($formats as $format) { $definition->addMethodCall('addLoader', [$format, $loaderRefs[$id]]); } } } $container ->findDefinition('translator.default') ->replaceArgument(0, ServiceLocatorTagPass::register($container, $loaderRefs)) ->replaceArgument(3, $loaders) ; if ($container->hasDefinition('validator') && $container->hasDefinition('translation.extractor.visitor.constraint')) { $constraintVisitorDefinition = $container->getDefinition('translation.extractor.visitor.constraint'); $constraintClassNames = []; foreach ($container->findTaggedServiceIds('validator.constraint_validator', true) as $id => $attributes) { $serviceDefinition = $container->getDefinition($id); // Resolve constraint validator FQCN even if defined as %foo.validator.class% parameter $className = $container->getParameterBag()->resolveValue($serviceDefinition->getClass()); // Extraction of the constraint class name from the Constraint Validator FQCN $constraintClassNames[] = str_replace('Validator', '', substr(strrchr($className, '\\'), 1)); } $constraintVisitorDefinition->setArgument(0, $constraintClassNames); } if (!$container->hasParameter('twig.default_path')) { return; } $paths = array_keys($container->getDefinition('twig.template_iterator')->getArgument(1)); if ($container->hasDefinition('console.command.translation_debug')) { $definition = $container->getDefinition('console.command.translation_debug'); $definition->replaceArgument(4, $container->getParameter('twig.default_path')); if (\count($definition->getArguments()) > 6) { $definition->replaceArgument(6, $paths); } } if ($container->hasDefinition('console.command.translation_extract')) { $definition = $container->getDefinition('console.command.translation_extract'); $definition->replaceArgument(5, $container->getParameter('twig.default_path')); if (\count($definition->getArguments()) > 7) { $definition->replaceArgument(7, $paths); } } } } __halt_compiler();----SIGNATURE:----Fk9RZaN92RUGR+Jf4A+UO7Qu3Bdh9loUac6GEGc+SlqtogOUElbdeTaonU+gmxzUpPut6Kt9hD0wW4GgBu4JuIlYrnae0jaeYkH282XUOgFq/S8kxLia+1kziVOk+Nlh+HyLNzxM06652Pi0h/7MWCV3Zu5vob3/ukkkFZk8DQrB3koLkXM34TMA5tNzqdRiMV0foovmMENudRHjh2FKaZaBV6t50OaE/9lYe1q3V8+jJNPTHKqm7MTRN6epLUrs8Q+/SwoLTSlynbMdyEfDZydCqRvNonmGTtOa1rle3WciM2uFxx+J7Y87+FByTPzgZDqdwILCJiQ/ubogx7lBbS1Ei4L7wvT2E+uYwrawYDjMMJiOoy2eKRaAG+MY8BDzjpDO16SGw4LmCJCOxhTuiNSF4berDZpRYp2TMyLDWp8bkCaNG/r35yuELvVUwTWYNz66kIJtex+/RBJV7VPPQYbxPdJ4+oU8N8zCzTUAZWf2+5vLQkC+qVdx+v7Pxts68EF20o6P8/YksKxKWDOxZC1tIr3O1l7XjOf3kSDsLFIGzRGJW5t+oM707CQhPN2aeUJdDmnynR/KI1T4avE8a1PEkaSPCo59EI4vV6pJza9inr0HC3Jrlzwmz5Y+Ep5Bmxu8KP7vt2rDSYIOlLXVaXC/jKs1RkegSPIo7Sz2KpM=----ATTACHMENT:----NDk0Njk4ODcyMTU4OTE4NiAxOTMyNTI1OTQzMTgwMDgwIDc0NzM0MDIwNTQwODc1NzM=