diff --git a/src/Symfony/Bundle/FrameworkBundle/Command/TranslationDebugCommand.php b/src/Symfony/Bundle/FrameworkBundle/Command/TranslationDebugCommand.php index f5cc1fb80548..e10085921c24 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Command/TranslationDebugCommand.php +++ b/src/Symfony/Bundle/FrameworkBundle/Command/TranslationDebugCommand.php @@ -44,16 +44,16 @@ protected function configure() )) ->setDefinition(array( new InputArgument('locale', InputArgument::REQUIRED, 'The locale'), - new InputArgument('bundle', InputArgument::REQUIRED, 'The bundle name'), + new InputArgument('bundle', InputArgument::OPTIONAL, 'The bundle name or directory where to load the messages, defaults to app/Resources folder'), new InputOption('domain', null, InputOption::VALUE_OPTIONAL, 'The messages domain'), new InputOption('only-missing', null, InputOption::VALUE_NONE, 'Displays only missing messages'), new InputOption('only-unused', null, InputOption::VALUE_NONE, 'Displays only unused messages'), )) - ->setDescription('Displays translation messages informations') + ->setDescription('Displays translation messages information') ->setHelp(<<%command.name% command helps finding unused or missing translation messages and comparing them with the fallback ones by inspecting the -templates and translation files of a given bundle. +templates and translation files of a given bundle or the app folder. You can display information about bundle translations in a specific locale: @@ -71,6 +71,10 @@ protected function configure() php %command.full_name% --only-unused en AcmeDemoBundle +You can display information about app translations in a specific locale: + + php %command.full_name% en + EOF ) ; @@ -87,17 +91,39 @@ protected function execute(InputInterface $input, OutputInterface $output) $locale = $input->getArgument('locale'); $domain = $input->getOption('domain'); - $bundle = $this->getContainer()->get('kernel')->getBundle($input->getArgument('bundle')); $loader = $this->getContainer()->get('translation.loader'); + $kernel = $this->getContainer()->get('kernel'); + + // Define Root Path to App folder + $rootPath = $kernel->getRootDir(); + + // Override with provided Bundle info + if (null !== $input->getArgument('bundle')) { + try { + $rootPath = $kernel->getBundle($input->getArgument('bundle'))->getPath(); + } catch (\InvalidArgumentException $e) { + // such a bundle does not exist, so treat the argument as path + $rootPath = $input->getArgument('bundle'); + + if (!is_dir($rootPath)) { + throw new \InvalidArgumentException(sprintf('"%s" is neither an enabled bundle nor a directory.', $rootPath)); + } + } + } + + // get bundle directory + $translationsPath = $rootPath.'/Resources/translations'; // Extract used messages $extractedCatalogue = new MessageCatalogue($locale); - $this->getContainer()->get('translation.extractor')->extract($bundle->getPath().'/Resources/views', $extractedCatalogue); + if (is_dir($rootPath.'/Resources/views')) { + $this->getContainer()->get('translation.extractor')->extract($rootPath.'/Resources/views', $extractedCatalogue); + } // Load defined messages $currentCatalogue = new MessageCatalogue($locale); - if (is_dir($bundle->getPath().'/Resources/translations')) { - $loader->loadMessages($bundle->getPath().'/Resources/translations', $currentCatalogue); + if (is_dir($translationsPath)) { + $loader->loadMessages($translationsPath, $currentCatalogue); } // Merge defined and extracted messages to get all message ids @@ -130,7 +156,7 @@ protected function execute(InputInterface $input, OutputInterface $output) } $fallbackCatalogue = new MessageCatalogue($fallbackLocale); - $loader->loadMessages($bundle->getPath().'/Resources/translations', $fallbackCatalogue); + $loader->loadMessages($translationsPath, $fallbackCatalogue); $fallbackCatalogues[] = $fallbackCatalogue; } } diff --git a/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php b/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php index f30e9fd833af..41464168ea70 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php +++ b/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php @@ -35,7 +35,7 @@ protected function configure() ->setName('translation:update') ->setDefinition(array( new InputArgument('locale', InputArgument::REQUIRED, 'The locale'), - new InputArgument('bundle', InputArgument::OPTIONAL, 'The bundle where to load the messages, defaults to app/Resources folder', null), + new InputArgument('bundle', InputArgument::OPTIONAL, 'The bundle name or directory where to load the messages, defaults to app/Resources folder'), new InputOption('prefix', null, InputOption::VALUE_OPTIONAL, 'Override the default prefix', '__'), new InputOption('output-format', null, InputOption::VALUE_OPTIONAL, 'Override the default output format', 'yml'), new InputOption('dump-messages', null, InputOption::VALUE_NONE, 'Should the messages be dumped in the console'), @@ -83,16 +83,27 @@ protected function execute(InputInterface $input, OutputInterface $output) return 1; } + $kernel = $this->getContainer()->get('kernel'); // Define Root Path to App folder - $rootPath = $this->getApplication()->getKernel()->getRootDir(); + $rootPath = $kernel->getRootDir(); $currentName = "app folder"; // Override with provided Bundle info if (null !== $input->getArgument('bundle')) { - $foundBundle = $this->getApplication()->getKernel()->getBundle($input->getArgument('bundle')); - $rootPath = $foundBundle->getPath(); - $currentName = $foundBundle->getName(); + try { + $foundBundle = $kernel->getBundle($input->getArgument('bundle')); + $rootPath = $foundBundle->getPath(); + $currentName = $foundBundle->getName(); + } catch (\InvalidArgumentException $e) { + // such a bundle does not exist, so treat the argument as path + $rootPath = $input->getArgument('bundle'); + $currentName = $rootPath; + + if (!is_dir($rootPath)) { + throw new \InvalidArgumentException(sprintf('"%s" is neither an enabled bundle nor a directory.', $rootPath)); + } + } } // get bundle directory pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy