More tidying.
[yaffs-website] / vendor / drupal / console / src / Command / Locale / LanguageAddCommand.php
1 <?php
2
3 /**
4  * @file
5  * Contains \Drupal\Console\Command\Locale\LanguageAddCommand.
6  */
7
8 namespace Drupal\Console\Command\Locale;
9
10 use Symfony\Component\Console\Input\InputArgument;
11 use Symfony\Component\Console\Input\InputInterface;
12 use Symfony\Component\Console\Output\OutputInterface;
13 use Drupal\language\Entity\ConfigurableLanguage;
14 use Symfony\Component\Console\Command\Command;
15 use Drupal\Console\Core\Style\DrupalStyle;
16 use Drupal\Console\Command\Shared\LocaleTrait;
17 use Drupal\Console\Core\Command\Shared\CommandTrait;
18 use Drupal\Core\Extension\ModuleHandlerInterface;
19 use Drupal\Console\Utils\Site;
20 use Drupal\Console\Annotations\DrupalCommand;
21
22 /**
23  * @DrupalCommand(
24  *     extension = "locale",
25  *     extensionType = "module"
26  * )
27  */
28 class LanguageAddCommand extends Command
29 {
30     use CommandTrait;
31     use LocaleTrait;
32
33     /**
34      * @var Site
35      */
36     protected $site;
37
38     /**
39      * @var ModuleHandlerInterface
40      */
41     protected $moduleHandler;
42
43     /**
44      * LanguageAddCommand constructor.
45      *
46      * @param Site                   $site
47      * @param ModuleHandlerInterface $moduleHandler
48      */
49     public function __construct(
50         Site $site,
51         ModuleHandlerInterface $moduleHandler
52     ) {
53         $this->site = $site;
54         $this->moduleHandler = $moduleHandler;
55         parent::__construct();
56     }
57
58     protected function configure()
59     {
60         $this
61             ->setName('locale:language:add')
62             ->setDescription($this->trans('commands.locale.language.add.description'))
63             ->addArgument(
64                 'language',
65                 InputArgument::REQUIRED,
66                 $this->trans('commands.locale.translation.status.arguments.language')
67             );
68     }
69
70     protected function execute(InputInterface $input, OutputInterface $output)
71     {
72         $io = new DrupalStyle($input, $output);
73         $moduleHandler = $this->moduleHandler;
74         $moduleHandler->loadInclude('locale', 'inc', 'locale.translation');
75         $moduleHandler->loadInclude('locale', 'module');
76
77         $language = $input->getArgument('language');
78         $languages = $this->site->getStandardLanguages();
79
80         if (isset($languages[$language])) {
81             $langcode = $language;
82         } elseif (array_search($language, $languages)) {
83             $langcode = array_search($language, $languages);
84         } else {
85             $io->error(
86                 sprintf(
87                     $this->trans('commands.locale.language.add.messages.invalid-language'),
88                     $language
89                 )
90             );
91
92             return 1;
93         }
94
95         try {
96             $language = ConfigurableLanguage::createFromLangcode($langcode);
97             $language->type = LOCALE_TRANSLATION_REMOTE;
98             $language->save();
99
100             $io->info(sprintf($this->trans('commands.locale.language.add.messages.language-add-successfully'), $language->getName()));
101         } catch (\Exception $e) {
102             $io->error($e->getMessage());
103
104             return 1;
105         }
106
107         return 0;
108     }
109 }