Spaces:
No application file
No application file
| namespace Mautic\CoreBundle\Update\Step; | |
| use Mautic\CoreBundle\Helper\LanguageHelper; | |
| use Psr\Log\LoggerInterface; | |
| use Symfony\Component\Console\Helper\ProgressBar; | |
| use Symfony\Component\Console\Input\InputInterface; | |
| use Symfony\Component\Console\Output\OutputInterface; | |
| use Symfony\Contracts\Translation\TranslatorInterface; | |
| final class UpdateTranslationsStep implements StepInterface | |
| { | |
| public function __construct( | |
| private TranslatorInterface $translator, | |
| private LanguageHelper $languageHelper, | |
| private LoggerInterface $logger | |
| ) { | |
| } | |
| public function getOrder(): int | |
| { | |
| return 40; | |
| } | |
| public function shouldExecuteInFinalStage(): bool | |
| { | |
| return true; | |
| } | |
| public function execute(ProgressBar $progressBar, InputInterface $input, OutputInterface $output): void | |
| { | |
| // Update languages | |
| $supportedLanguages = $this->languageHelper->getSupportedLanguages(); | |
| // If there is only one language, assume it is 'en_US' and skip this | |
| if (count($supportedLanguages) <= 1) { | |
| return; | |
| } | |
| $progressBar->setMessage($this->translator->trans('mautic.core.command.update.step.update_languages')); | |
| $progressBar->advance(); | |
| // First, update the cached language data | |
| $result = $this->languageHelper->fetchLanguages(true); | |
| // Only continue if not in error | |
| if (isset($result['error'])) { | |
| $this->logger->error('UPDATE ERROR: '.$result['error']); | |
| return; | |
| } | |
| foreach ($supportedLanguages as $locale => $name) { | |
| $this->updateLanguage($locale, $name); | |
| } | |
| } | |
| private function updateLanguage(string $locale, string $name): void | |
| { | |
| // We don't need to update en_US, that comes with the main package | |
| if ('en_US' === $locale) { | |
| return; | |
| } | |
| // Update time | |
| $extractResult = $this->languageHelper->extractLanguagePackage($locale); | |
| if (empty($extractResult['error'])) { | |
| return; | |
| } | |
| $this->logger->error( | |
| 'UPDATE ERROR: '. | |
| $this->translator->trans( | |
| 'mautic.core.update.error_updating_language', | |
| [ | |
| '%language%' => $name, | |
| ] | |
| ) | |
| ); | |
| } | |
| } | |