public function onConfigBeforeSave(ConfigEvent $event) { $values = $event->getConfig(); // Preserve existing value $event->unsetIfEmpty('transifex_password'); // Check if the selected locale has been downloaded already, fetch it if not $installedLanguages = $this->coreParametersHelper->getParameter('supported_languages'); if (!array_key_exists($values['coreconfig']['locale'], $installedLanguages)) { $fetchLanguage = $this->languageHelper->extractLanguagePackage($values['coreconfig']['locale']); // If there is an error, fall back to 'en_US' as it is our system default if ($fetchLanguage['error']) { $values['coreconfig']['locale'] = 'en_US'; $message = 'mautic.core.could.not.set.language'; $messageVars = []; if (isset($fetchLanguage['message'])) { $message = $fetchLanguage['message']; } if (isset($fetchLanguage['vars'])) { $messageVars = $fetchLanguage['vars']; } $event->setError($message, $messageVars); } } $event->setConfig($values); }