74 foreach ($locales as $locale => $key) {
75 $state = static::TRANSLATION_INVALID;
78 if ($state === static::TRANSLATION_AVAILABLE) {
81 }
catch (\Exception $exception) {
82 $error = $exception->getMessage();
84 $locales[$locale] = array(
100 if (empty($extensionKey) || empty($locale)) {
101 return static::TRANSLATION_INVALID;
104 $identifier = $extensionKey .
'-' . $locale;
105 if (isset($this->translationStates[$identifier])) {
106 return $this->translationStates[$identifier];
109 $selectedLanguages = $this->languageRepository->findSelected();
110 if (empty($selectedLanguages) || !is_array($selectedLanguages)) {
111 return static::TRANSLATION_INVALID;
115 $status = $this->terConnection->fetchTranslationStatus($extensionKey, $mirrorUrl);
117 foreach ($selectedLanguages as $language) {
118 $stateLocale = $language->getLocale();
119 $stateIdentifier = $extensionKey .
'-' . $stateLocale;
120 $this->translationStates[$stateIdentifier] = static::TRANSLATION_INVALID;
122 if (empty($status[$stateLocale]) || !is_array($status[$stateLocale])) {
123 $this->translationStates[$stateIdentifier] = static::TRANSLATION_NOT_AVAILABLE;
128 if ($md5 !== $status[$stateLocale][
'md5']) {
129 $this->translationStates[$stateIdentifier] = static::TRANSLATION_AVAILABLE;
133 $this->translationStates[$stateIdentifier] = static::TRANSLATION_OK;
136 return $this->translationStates[$identifier];
147 if (empty($extensionKey) || empty($locale)) {
150 $fileName = PATH_site .
'typo3temp' . DIRECTORY_SEPARATOR . $extensionKey .
'-l10n-' . $locale .
'.zip';
151 if (is_file($fileName)) {
152 return md5_file($fileName);
165 if (empty($extensionKey) || empty($locale)) {
166 return static::TRANSLATION_INVALID;
169 $state = static::TRANSLATION_FAILED;
171 $updateResult = $this->terConnection->updateTranslation($extensionKey, $locale, $mirrorUrl);
172 if ($updateResult === TRUE) {
173 $state = static::TRANSLATION_UPDATED;
186 $mirrorUrl = $this->repositoryHelper->getMirrors(FALSE)->getMirrorUrl();
201 $this->signalSlotDispatcher->dispatch(
203 'postProcessMirrorUrl',
updateTranslation($extension, $locales)
getTranslationStateForExtension($extensionKey, $locale)
const TRANSLATION_AVAILABLE
getMirrorUrl($extensionKey)
getTranslationFileMd5($extensionKey, $locale)
const TRANSLATION_INVALID
static trimExplode($delim, $string, $removeEmptyValues=FALSE, $limit=0)
const TRANSLATION_NOT_AVAILABLE
updateTranslationForExtension($extensionKey, $locale)
emitPostProcessMirrorUrlSignal($extensionKey, $mirrorUrl)
const TRANSLATION_UPDATED