From 445ff455c599e7f11fbe171dc71e923b44a03f0e Mon Sep 17 00:00:00 2001 From: Nicole Cordes <typo3@cordes.co> Date: Thu, 21 Apr 2016 16:22:48 +0200 Subject: [PATCH] [BUGFIX] Make language module accessible without internet connection This patch adds the possibility to access the language module without having an internet connection. You are able to activate and deactivate languages but trying to update files will give you an error. Resolves: #75820 Releases: master, 7.6 Change-Id: I27be7f34c76f680a4240e6c75c4a331d96467681 Reviewed-on: https://review.typo3.org/47840 Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl> Tested-by: Wouter Wolters <typo3@wouterwolters.nl> Reviewed-by: Morton Jonuschat <m.jonuschat@mojocode.de> Tested-by: Morton Jonuschat <m.jonuschat@mojocode.de> --- .../Classes/Controller/LanguageController.php | 2 +- .../lang/Classes/Service/TranslationService.php | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/typo3/sysext/lang/Classes/Controller/LanguageController.php b/typo3/sysext/lang/Classes/Controller/LanguageController.php index 37c916d57b3e..e5e3ee427c3c 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 325bd14eec16..41dc1a0f2370 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; } -- GitLab