/** * @param TranslatorConfig $config * @param Translator $translator * @return void */ public function perform(TranslatorConfig $config, Translator $translator) { if (!$config->hasDumper($this->option('dumper'))) { $this->writeln("<fg=red>Undefined dumper '{$this->option('dumper')}'.</fg=red>"); return null; } $catalogue = $translator->getCatalogue($this->argument('locale'))->loadDomains(); if ($this->option('fallback')) { //Let's merge with fallback locale $fallbackCatalogue = $translator->getCatalogue($config->fallbackLocale())->loadDomains(); //Soft merge $catalogue->mergeFrom($fallbackCatalogue->toMessageCatalogue(), false); } //Pre-loading all domains $messageCatalogue = $catalogue->toMessageCatalogue(); if ($this->isVerbosity() && !empty($catalogue->getDomains())) { $this->writeln("<info>Dumping domain(s):</info> " . join(',', $catalogue->getDomains())); } $dumper = $config->dumperClass($this->option('dumper')); /** * @var DumperInterface $dumper */ $dumper = new $dumper(); $dumper->dump($messageCatalogue, ['path' => $this->argument('path'), 'default_locale' => $config->defaultLocale(), 'xliff_version' => '2.0']); $this->writeln("Dump successfully completed."); }
/** * Indexing available method and function invocations, target: l, p, $this->translate() * functions. * * @param InvocationLocatorInterface $locator */ public function indexInvocations(InvocationLocatorInterface $locator) { $this->logger()->info("Indexing invocations of 'l' function."); $this->registerInvocations($locator->getInvocations(new \ReflectionFunction('l'))); $this->logger()->info("Indexing invocations of 'p' function."); $this->registerInvocations($locator->getInvocations(new \ReflectionFunction('p'))); $this->logger()->info("Indexing invocations of 'say' method (TranslatorTrait)."); $this->registerInvocations($locator->getInvocations(new \ReflectionMethod(TranslatorTrait::class, 'say'))); $this->translator->getCatalogue()->saveDomains(); }