/** * Writes the language pack files * * @param \SJBR\StaticInfoTables\Domain\Model\LanguagePack the object to be stored * @return array localized messages */ public function writeLanguagePack(\SJBR\StaticInfoTables\Domain\Model\LanguagePack $languagePack) { $content = array(); $extensionKey = GeneralUtility::camelCaseToLowerCaseUnderscored($this->extensionName); $extensionPath = \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath($extensionKey); $content = array(); $locale = $languagePack->getLocale(); $localeLowerCase = strtolower($locale); $localeUpperCase = strtoupper($locale); $localeCamel = GeneralUtility::underscoredToUpperCamelCase(strtolower($locale)); $languagePackExtensionKey = $extensionKey . '_' . $localeLowerCase; $languagePackExtensionPath = PATH_site . 'typo3conf/ext/' . $languagePackExtensionKey . '/'; // Cleanup any pre-existing language pack if (is_dir($languagePackExtensionPath)) { GeneralUtility::rmdir($languagePackExtensionPath, TRUE); } // Create language pack directory structure if (!is_dir($languagePackExtensionPath)) { GeneralUtility::mkdir_deep(PATH_site, 'typo3conf/ext/' . $languagePackExtensionKey . '/'); } if (!is_dir($languagePackExtensionPath . 'Classes/Domain/Model/')) { GeneralUtility::mkdir_deep($languagePackExtensionPath, 'Classes/Domain/Model/'); } if (!is_dir($languagePackExtensionPath . 'Configuration/DomainModelExtension/')) { GeneralUtility::mkdir_deep($languagePackExtensionPath, 'Configuration/DomainModelExtension/'); } if (!is_dir($languagePackExtensionPath . 'Configuration/TypoScript/Extbase/')) { GeneralUtility::mkdir_deep($languagePackExtensionPath, 'Configuration/TypoScript/Extbase/'); } if (!is_dir($languagePackExtensionPath . 'Resources/Private/Language/')) { GeneralUtility::mkdir_deep($languagePackExtensionPath, 'Resources/Private/Language/'); } // Get the source files of the language pack template $sourcePath = $extensionPath . 'Resources/Private/LanguagePackTemplate/'; $sourceFiles = array(); $sourceFiles = GeneralUtility::getAllFilesAndFoldersInPath($sourceFiles, $sourcePath); $sourceFiles = GeneralUtility::removePrefixPathFromList($sourceFiles, $sourcePath); // Set markers replacement values $replace = array('###LANG_ISO_LOWER###' => $localeLowerCase, '###LANG_ISO_UPPER###' => $localeUpperCase, '###LANG_ISO_CAMEL###' => $localeCamel, '###TYPO3_VERSION_RANGE###' => $languagePack->getTypo3VersionRange(), '###VERSION###' => $languagePack->getVersion(), '###LANG_NAME###' => $languagePack->getLanguage(), '###AUTHOR###' => $languagePack->getAuthor(), '###AUTHOR_EMAIL###' => $languagePack->getAuthorEmail(), '###AUTHOR_COMPANY###' => $languagePack->getAuthorCompany(), '###VERSION_BASE###' => $GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$extensionKey]['version'], '###LANG_TCA_LABELS###' => $languagePack->getLocalizationLabels(), '###LANG_SQL_UPDATE###' => $languagePack->getUpdateQueries()); // Create the language pack files $success = TRUE; foreach ($sourceFiles as $hash => $file) { $fileContent = GeneralUtility::getUrl($sourcePath . $file); foreach ($replace as $marker => $replacement) { $fileContent = str_replace($marker, $replacement, $fileContent); } $success = GeneralUtility::writeFile($languagePackExtensionPath . str_replace('.code', '.php', $file), $fileContent); if (!$success) { $content[] = LocalizationUtility::translate('couldNotWriteFile', $this->extensionName) . ' ' . $languagePackExtensionPath . $file; break; } } if ($success) { $classCacheManager = $this->objectManager->get('SJBR\\StaticInfoTables\\Cache\\ClassCacheManager'); $installUtility = $this->objectManager->get('TYPO3\\CMS\\Extensionmanager\\Utility\\InstallUtility'); $installed = \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded($languagePackExtensionKey); if ($installed) { $content[] = LocalizationUtility::translate('languagePack', $this->extensionName) . ' ' . $languagePackExtensionKey . ' ' . LocalizationUtility::translate('languagePackUpdated', $this->extensionName); } else { $content[] = LocalizationUtility::translate('languagePackCreated', $this->extensionName) . ' ' . $languagePack->getLanguage() . ' (' . $locale . ')'; $installUtility->install($languagePackExtensionKey); $content[] = LocalizationUtility::translate('languagePack', $this->extensionName) . ' ' . $languagePackExtensionKey . ' ' . LocalizationUtility::translate('wasInstalled', $this->extensionName); } $classCacheManager->reBuild(); } return $content; }