/** * generates a general information array * * @param string reference language * @param array language key array * @param object file object * @return array general information array * @see outputGeneral() */ public static function genGeneralInfoArray($refLang, $languages, $fileObj) { // reference language data informations $localRefLangData = $fileObj->getLocalLangData($refLang); // generate needed data foreach ($languages as $langKey) { // get origin data and meta informations $origin = $fileObj->getOriginLangData($langKey); $infos['default']['meta'] = $fileObj->getMetaData(); // language data $localLangData = $fileObj->getLocalLangData($langKey); // detailed constants informations $infos[$langKey]['numUntranslated'] = count(array_diff_key($localRefLangData, $localLangData)); $infos[$langKey]['numUnknown'] = count(array_diff_key($localLangData, $localRefLangData)); $infos[$langKey]['numTranslated'] = count(array_intersect_key($localLangData, $localRefLangData)); // get location type if ($fileObj->getVar('workspace') != 'xll') { $locType = typo3Lib::checkFileLocation($origin); if ($locType == 'local') { $infos[$langKey]['type'] = $GLOBALS['LANG']->getLL('ext.local'); } elseif ($locType == 'global') { $infos[$langKey]['type'] = $GLOBALS['LANG']->getLL('ext.global'); } elseif ($locType == 'system') { $infos[$langKey]['type'] = $GLOBALS['LANG']->getLL('ext.system'); } elseif ($locType == 'l10n') { $infos[$langKey]['type'] = $GLOBALS['LANG']->getLL('lang.file.l10n'); $infos[$langKey]['type2'] = 'l10n'; } else { $infos[$langKey]['type'] = $GLOBALS['LANG']->getLL('ext.unknown'); } if ($infos[$langKey]['type2'] != 'l10n') { if ($fileObj->checkLocalizedFile(basename($origin), $langKey)) { $infos[$langKey]['type2'] = 'splitted'; } else { $infos[$langKey]['type2'] = 'merged'; } } } else { $infos[$langKey]['type'] = 'xll'; $infos[$langKey]['type2'] = 'merged'; } // set origin try { $infos[$langKey]['origin'] = '[-]'; if (!empty($origin)) { $infos[$langKey]['origin'] = typo3Lib::transTypo3File($origin, false); } } catch (Exception $e) { $infos[$langKey]['origin'] = sgLib::trimPath(PATH_site, $origin); } } return $infos; }
/** * prepares the final content * * @return array language files as key and content as value */ protected function prepareFileContents() { // convert all language values to utf-8 if ($GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'] != 'utf-8') { $this->localLang = typo3Lib::utf8($this->localLang, true, array('default')); } // prepare Content $mainFileContent = array('meta' => $this->prepareMeta()); $languages = explode('|', TYPO3_languages); foreach ($languages as $lang) { // get content of localized and main file if ($this->checkLocalizedFile(basename($this->originLang[$lang]), $lang)) { if (is_array($this->localLang[$lang]) && count($this->localLang[$lang])) { $languageFiles[$this->originLang[$lang]] .= $this->array2xml($this->getLangContent($this->localLang[$lang], $lang), 'T3locallangExt'); } try { $mainFileContent['data'][$lang] = typo3Lib::transTypo3File($this->originLang[$lang], false); } catch (Exception $e) { if (!typo3Lib::checkFileLocation($this->originLang[$lang]) == 'l10n') { $mainFileContent['data'][$lang] = $this->originLang[$lang]; } } } else { $mainFileContent = array_merge_recursive($mainFileContent, $this->getLangContent($this->localLang[$lang], $lang)); } } // only a localized file? if ($this->checkLocalizedFile(basename($this->absFile), TYPO3_languages)) { return $languageFiles; } // prepare Content for the main file $languageFiles[$this->absFile] = $this->array2xml($mainFileContent, 'T3locallang'); return $languageFiles; }