5 * Contains \Drupal\Console\Command\Develop\TranslationCleanupCommand.
8 namespace Drupal\Console\Command\Develop;
10 use Symfony\Component\Console\Input\InputInterface;
11 use Symfony\Component\Console\Input\InputOption;
12 use Symfony\Component\Console\Output\OutputInterface;
13 use Symfony\Component\Console\Input\InputArgument;
14 use Symfony\Component\Finder\Finder;
15 use Symfony\Component\Yaml\Parser;
16 use Symfony\Component\Console\Command\Command;
17 use Drupal\Console\Core\Style\DrupalStyle;
18 use Drupal\Console\Core\Command\Shared\CommandTrait;
19 use Drupal\Console\Core\Utils\ConfigurationManager;
21 class TranslationCleanupCommand extends Command
28 protected $consoleRoot;
31 * @var ConfigurationManager
33 protected $configurationManager;
36 * TranslationCleanupCommand constructor.
39 * @param configurationManager $configurationManager
41 public function __construct(
43 ConfigurationManager $configurationManager
45 $this->consoleRoot = $consoleRoot;
46 $this->configurationManager = $configurationManager;
47 parent::__construct();
54 protected function configure()
57 ->setName('translation:cleanup')
58 ->setDescription($this->trans('commands.translation.cleanup.description'))
61 InputArgument::OPTIONAL,
62 $this->trans('commands.translation.cleanup.arguments.language'),
70 protected function execute(InputInterface $input, OutputInterface $output)
72 $io = new DrupalStyle($input, $output);
74 $language = $input->getArgument('language');
76 $languages = $this->configurationManager->getConfiguration()->get('application.languages');
77 unset($languages['en']);
79 if ($language && !isset($languages[$language])) {
82 $this->trans('commands.translation.cleanup.messages.invalid-language'),
90 $languages = [$language => $languages[$language]];
93 $this->cleanupTranslations($io, $language, $languages);
96 $this->trans('commands.translation.cleanup.messages.success')
100 protected function cleanupTranslations($io, $language = null, $languages)
102 $finder = new Finder();
104 foreach ($languages as $langCode => $languageName) {
105 if (file_exists($this->consoleRoot . sprintf(DRUPAL_CONSOLE_LANGUAGE, $langCode))) {
106 foreach ($finder->files()->name('*.yml')->in($this->consoleRoot . sprintf(DRUPAL_CONSOLE_LANGUAGE, $langCode)) as $file) {
107 $filename = $file->getBasename('.yml');
108 if (!file_exists($this->consoleRoot . sprintf(DRUPAL_CONSOLE_LANGUAGE, 'en') . $filename . '.yml')) {
111 $this->trans('commands.translation.cleanup.messages.file-deleted'),
116 unlink($this->consoleRoot . sprintf(DRUPAL_CONSOLE_LANGUAGE, $langCode). '/' . $filename . '.yml');