コード例 #1
0
 /**
  * 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;
 }
コード例 #2
0
 /**
  * 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;
 }