$l){ $LC[$k] = (array)extractTexts($k); $TXTUTTI = array_merge($TXTUTTI, (array)array_keys($LC[$k])); } $TXTUTTI = array_unique($TXTUTTI); //**********************************************************************// /* END array con tutti i testi definiti */ //**********************************************************************// foreach($TXT_IGNORE as $k) if(($kk = array_search($k, $TXTUTTI)) !== false) unset($TXTUTTI[$kk]); //**********************************************************************// /* START controllo testi */ //**********************************************************************// foreach($LANG as $k=>$l){ foreach($TXTUTTI as $t){ if(!isset($LC[$k][$t])) $ERRORS[$k][$t] = "non è settato"; else if($LC[$k][$t] === "") $ERRORS[$k][$t] = "è vuoto"; } } //**********************************************************************// /* END controllo testi */ //**********************************************************************// //**********************************************************************// /* START controllo versioni duplicate */ //**********************************************************************// foreach($TXTUTTI as $t){ if(!isset($ERRORS[$k][$t])){ $versioni = array(); $uguali = array(); foreach($LANG as $k=>$l){ $versioni[strtolower(trim($LC[$k][$t]))]++; } if(count(array_keys($versioni)) < count($LANG)){ //trovo la versione che ha più ripezioni arsort($versioni, SORT_NUMERIC); $piuripetuto = array_shift(array_keys($versioni)); if(in_array($piuripetuto, $EQUALS_EXCLUSION)) continue; if(preg_replace($EREG_CLEANER, "", $piuripetuto) == '') continue; foreach($LANG as $k=>$l) if(strtolower(trim($LC[$k][$t])) == $piuripetuto) $uguali[] = $k; if(count(array_keys($versioni)) < $TOLLERANZA){ foreach($LANG as $k=>$l){//se è diverso solo in due lingue lo mando a tradurre $ERRORS[$k][$t] = $uguali; } } else $EQUALS[$t] = $uguali; } } } //**********************************************************************// /* END controllo versioni duplicate */ //**********************************************************************// ?>

risultato controllo dei testi presenti nei file delle cartelle _pagine e _includes (e sottocartelle)

$l){ if($ERRORS[$k]){ echo "
Da tradurre in $l (". count($ERRORS[$k]) . "):
"; echo "
";
     foreach($ERRORS[$k] as $t=>$e){
        echo '$TXT["'.$t.'"] = "'.indi_htmlentities($LC["ita"][$t], $CONF['mcharset']).'";'."\n";
        if(!isset($TABLE[$t])) $TABLE[$t] = $e;
     }
     echo '


'; } else echo "
Nessun testo da tradurre in $l
"; } //**********************************************************************// /* END stampo per traduzioni */ //**********************************************************************// ?>
'; if($EQUALS) table("Controllare questi testi uguali in almeno 2 lingue diverse", $EQUALS); function table($titolo, $righe){ global $LANG, $LC; echo "

$titolo

"; echo ''; echo ''; echo ""; foreach($LANG as $k=>$l) echo ""; echo ''; $redstyle = ' style="color:red"'; foreach($righe as $t=>$e){ $celle = ""; foreach($LANG as $k=>$l){ $ok = false; if(is_array($e)){//array equals (per i duplicati); $ok = !in_array($k, $e); $testo = '"'.indi_htmlentities($LC[$k][$t], $CONF['mcharset']).'"'; } else if($LC[$k][$t] === "") $testo = "- vuoto -"; else if(!isset($LC[$k][$t])) $testo = "- non settato -"; else{ $testo = '"'.indi_htmlentities($LC[$k][$t], $CONF['mcharset']).'"'; $ok = true; }; $celle .= "  $testo  "; } echo "$celle"; } echo "
$l$l
$t
"; } function dirToArray($dir, $exclude_subdirs = false){ $d = dir($dir); while($value = $d->read()){ if($value != "." && $value != ".."){ if(!is_dir($dir."/".$value)) $return[] = $dir."/".$value; else if(!$exclude_subdirs) $return = array_merge($return, dirToArray($dir."/".$value)); } } return $return; } function extractTexts($lang){ $return = (array)extractTxtFile("_includes/lang_$lang.inc.php"); $pages_files = dirToArray("_pagine"); $pages_files = array_merge((array)$pages_files, (array)dirToArray("_includes")); // $pages_files = array_merge((array)$pages_files, (array)dirToArray("_include", 1)); // $pages_files = array_merge((array)$pages_files, (array)dirToArray("_template", 1)); foreach($pages_files as $f){ $return = array_merge($return, (array)extractTextsFileWithXxxMerge($f, $lang)); } //quello che è in _includes/lang_$lang.inc.php sovrascrive il resto $lang_file = "_includes/lang_$lang.inc.php"; if(is_file($lang_file)) $return = array_merge($return, (array)extractTxtFile($lang_file, $lang_file)); return $return; } function extractTextsFileWithXxxMerge($file, $key){ if(is_file($file)){ $TXT = extractTxtFile($file); return array_merge((array)$TXT["xxx"], (array)$TXT[$key]); } } function extractTxtFile($file){ if(is_file($file)){ preg_match_all('/\$TXT(\[[^\]]*?\])+\s*=\s*("|\').*?(?"; eval($e); } return $TXT; } } ?>