Skip to content

Commit d0d7003

Browse files
committed
Add PhpAstExtractor
1 parent dbc3aed commit d0d7003

File tree

3 files changed

+28
-0
lines changed

3 files changed

+28
-0
lines changed

DependencyInjection/Compiler/UnusedTagsPass.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ class UnusedTagsPass implements CompilerPassInterface
8989
'texter.transport_factory',
9090
'translation.dumper',
9191
'translation.extractor',
92+
'translation.extractor.visitor',
9293
'translation.loader',
9394
'translation.provider_factory',
9495
'twig.extension',

DependencyInjection/FrameworkExtension.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use Http\Client\HttpClient;
1818
use phpDocumentor\Reflection\DocBlockFactoryInterface;
1919
use phpDocumentor\Reflection\Types\ContextFactory;
20+
use PhpParser\Parser;
2021
use PHPStan\PhpDocParser\Parser\PhpDocParser;
2122
use Psr\Cache\CacheItemPoolInterface;
2223
use Psr\Container\ContainerInterface as PsrContainerInterface;
@@ -218,6 +219,7 @@
218219
use Symfony\Component\Translation\Bridge\Loco\LocoProviderFactory;
219220
use Symfony\Component\Translation\Bridge\Lokalise\LokaliseProviderFactory;
220221
use Symfony\Component\Translation\Command\XliffLintCommand as BaseXliffLintCommand;
222+
use Symfony\Component\Translation\Extractor\PhpAstExtractor;
221223
use Symfony\Component\Translation\LocaleSwitcher;
222224
use Symfony\Component\Translation\PseudoLocalizationTranslator;
223225
use Symfony\Component\Translation\Translator;
@@ -1335,6 +1337,14 @@ private function registerTranslatorConfiguration(array $config, ContainerBuilder
13351337
$container->removeDefinition('translation.locale_switcher');
13361338
}
13371339

1340+
if (ContainerBuilder::willBeAvailable('nikic/php-parser', Parser::class, ['symfony/translation'])
1341+
&& ContainerBuilder::willBeAvailable('symfony/translation', PhpAstExtractor::class, ['symfony/framework-bundle'])
1342+
) {
1343+
$container->removeDefinition('translation.extractor.php');
1344+
} else {
1345+
$container->removeDefinition('translation.extractor.php_ast');
1346+
}
1347+
13381348
$loader->load('translation_providers.php');
13391349

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

Resources/config/translation.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,11 @@
2626
use Symfony\Component\Translation\Dumper\YamlFileDumper;
2727
use Symfony\Component\Translation\Extractor\ChainExtractor;
2828
use Symfony\Component\Translation\Extractor\ExtractorInterface;
29+
use Symfony\Component\Translation\Extractor\PhpAstExtractor;
2930
use Symfony\Component\Translation\Extractor\PhpExtractor;
31+
use Symfony\Component\Translation\Extractor\Visitor\ConstraintVisitor;
32+
use Symfony\Component\Translation\Extractor\Visitor\TranslatableMessageVisitor;
33+
use Symfony\Component\Translation\Extractor\Visitor\TransMethodVisitor;
3034
use Symfony\Component\Translation\Formatter\MessageFormatter;
3135
use Symfony\Component\Translation\Loader\CsvFileLoader;
3236
use Symfony\Component\Translation\Loader\IcuDatFileLoader;
@@ -151,6 +155,19 @@
151155
->set('translation.extractor.php', PhpExtractor::class)
152156
->tag('translation.extractor', ['alias' => 'php'])
153157

158+
->set('translation.extractor.php_ast', PhpAstExtractor::class)
159+
->args([tagged_iterator('translation.extractor.visitor')])
160+
->tag('translation.extractor', ['alias' => 'php'])
161+
162+
->set('translation.extractor.visitor.trans_method', TransMethodVisitor::class)
163+
->tag('translation.extractor.visitor')
164+
165+
->set('translation.extractor.visitor.translatable_message', TranslatableMessageVisitor::class)
166+
->tag('translation.extractor.visitor')
167+
168+
->set('translation.extractor.visitor.constraint', ConstraintVisitor::class)
169+
->tag('translation.extractor.visitor')
170+
154171
->set('translation.reader', TranslationReader::class)
155172
->alias(TranslationReaderInterface::class, 'translation.reader')
156173

0 commit comments

Comments
 (0)