From 2662244eb81e8e9a829a7c7ee308c41f6849258f Mon Sep 17 00:00:00 2001 From: Alexander Schwenn Date: Sun, 18 Jan 2015 21:33:17 +0100 Subject: [PATCH] [FrameworkBundle] Enable translation debugging in directories Harmonize TranslationDebugCommand and TranslationUpdateCommand to expect an optional bundle name or a directory and fall back to kernel root dir if none of them is given. --- .../Command/TranslationDebugCommand.php | 42 +++++++++++++++---- .../Command/TranslationUpdateCommand.php | 21 +++++++--- 2 files changed, 50 insertions(+), 13 deletions(-) diff --git a/src/Symfony/Bundle/FrameworkBundle/Command/TranslationDebugCommand.php b/src/Symfony/Bundle/FrameworkBundle/Command/TranslationDebugCommand.php index f5cc1fb805489..e10085921c24f 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 f30e9fd833af8..41464168ea701 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