setName('locale:sync') ->setDescription('Synchronize all translations based on the '.self::REF_LOCALE.' locale'); } protected function execute(InputInterface $input, OutputInterface $output) { $reference_file = 'app/Locale/'.self::REF_LOCALE.'/translations.php'; $reference = include $reference_file; foreach (new DirectoryIterator('app/Locale') as $fileInfo) { if (! $fileInfo->isDot() && $fileInfo->isDir() && $fileInfo->getFilename() !== self::REF_LOCALE) { $filename = 'app/Locale/'.$fileInfo->getFilename().'/translations.php'; echo $fileInfo->getFilename().' ('.$filename.')'.PHP_EOL; file_put_contents($filename, $this->updateFile($reference, $filename)); } } } public function updateFile(array $reference, $outdated_file) { $outdated = include $outdated_file; $output = ' $value) { if (! empty($outdated[$key])) { $output .= " '".str_replace("'", "\'", $key)."' => '".str_replace("'", "\'", $outdated[$key])."',\n"; } else { $output .= " // '".str_replace("'", "\'", $key)."' => '',\n"; } } $output .= ");\n"; return $output; } }