diff --git a/typo3/sysext/lang/Classes/Controller/LanguageController.php b/typo3/sysext/lang/Classes/Controller/LanguageController.php index 37c916d57b3e6e4c78d16358b964b980a314889d..e5e3ee427c3c3511a211cd78a963031871cb3d6f 100644 --- a/typo3/sysext/lang/Classes/Controller/LanguageController.php +++ b/typo3/sysext/lang/Classes/Controller/LanguageController.php @@ -166,7 +166,7 @@ class LanguageController extends ActionController $result = $this->translationService->updateTranslation($extensionKey, $data['locale']); $progress = round((($offset + 1) * 100) / $allCount, 2); $response['result'][$data['locale']][$extensionKey] = $result[$data['locale']]; - if (empty($result[$extensionKey][$data['locale']]['error'])) { + if (empty($result[$data['locale']]['error'])) { $response['success'] = true; } else { // Could not update an extension, stop here! diff --git a/typo3/sysext/lang/Classes/Service/TranslationService.php b/typo3/sysext/lang/Classes/Service/TranslationService.php index 325bd14eec16bd5b36222b18eef1a846a550b9fe..41dc1a0f23700322858f7ab7045208d892b4fb23 100644 --- a/typo3/sysext/lang/Classes/Service/TranslationService.php +++ b/typo3/sysext/lang/Classes/Service/TranslationService.php @@ -17,6 +17,7 @@ namespace TYPO3\CMS\Lang\Service; use TYPO3\CMS\Core\SingletonInterface; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Extbase\SignalSlot\Dispatcher; +use TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException; use TYPO3\CMS\Extensionmanager\Utility\Repository\Helper; /** @@ -70,7 +71,11 @@ class TranslationService implements SingletonInterface */ public function injectRepositoryHelper(Helper $helper) { - $this->mirrorUrl = $helper->getMirrors(false)->getMirrorUrl(); + try { + $this->mirrorUrl = $helper->getMirrors(false)->getMirrorUrl(); + } catch (ExtensionManagerException $e) { + $this->mirrorUrl = ''; + } } /** @@ -108,15 +113,22 @@ class TranslationService implements SingletonInterface * @param string $extensionKey The extension key * @param string $locale Locale to update * @return int Translation state + * @throws \Exception */ protected function updateTranslationForExtension($extensionKey, $locale) { if (empty($extensionKey) || empty($locale)) { return static::TRANSLATION_INVALID; } + + $mirrorUrl = $this->getMirrorUrl($extensionKey); + if (empty($mirrorUrl)) { + throw new \Exception('Not able to fetch languages files due to missing mirror url.', 1461248062); + } + $state = static::TRANSLATION_FAILED; - $updateResult = $this->terService->updateTranslation($extensionKey, $locale, $this->getMirrorUrl($extensionKey)); + $updateResult = $this->terService->updateTranslation($extensionKey, $locale, $mirrorUrl); if ($updateResult === true) { $state = static::TRANSLATION_UPDATED; }