Skip to content

Instantly share code, notes, and snippets.

@lucasaba
Created November 10, 2015 11:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lucasaba/d0633ca133d24d2f8f72 to your computer and use it in GitHub Desktop.
Save lucasaba/d0633ca133d24d2f8f72 to your computer and use it in GitHub Desktop.
Controllo coerenza dei file originali e traduzione
#!/usr/bin/php
<?php
if(count($argv) != 3) {
echo "Utilizzo: vtiger_test_traduzioni.php <cartella traduzioni italiane> <cartella traduzioni originali>\n";
echo "Esempio: vtiger_test_traduzioni.php /home/utente/traduzioni/Vtiger-6.X-lingua-ITA/modules/ /var/www/vtiger/languages/en_us/\n";
return 0;
}
$folder_traduzioni = realpath($argv[1]);
$folder_originali = realpath($argv[2]);
//Controllo della cartella principale
controlloFileNellaCartella($folder_originali, $folder_traduzioni);
//Controllo della cartella Settings
$folder_originali .= DIRECTORY_SEPARATOR."Settings".DIRECTORY_SEPARATOR;
$folder_traduzioni .= DIRECTORY_SEPARATOR."Settings".DIRECTORY_SEPARATOR;
controlloFileNellaCartella($folder_originali, $folder_traduzioni);
function controlloFileNellaCartella($cartella_originale, $cartella_traduzioni)
{
//Controllo che le cartelle esistano
if(! file_exists($cartella_traduzioni) || ! file_exists($cartella_originale)) {
echo "Spiacente. Non sono riuscito a trovare una delle seguenti cartelle:\n";
echo $cartella_traduzioni."\n";
echo $cartella_originale."\n";
return 0;
}
$file_in_traduzione = scandir($cartella_traduzioni);
$file_in_originale = scandir($cartella_originale);
// Controllo della coerenza dei file
if($file_in_originale != $file_in_traduzione) {
$file_non_presenti_in_originale = array_diff($file_in_traduzione, $file_in_originale);
$file_non_presenti_in_traduzione = array_diff($file_in_originale, $file_in_traduzione);
if(count($file_non_presenti_in_originale) > 0) {
echo "File presenti $cartella_traduzioni ma non presenti in $cartella_originale:\n";
foreach($file_non_presenti_in_originale as $nome_file) {
echo "- $nome_file\n";
}
}
if(count($file_non_presenti_in_traduzione) > 0) {
echo "File presenti nella cartella $cartella_originale ma non presenti nella cartella $cartella_traduzioni:\n";
foreach($file_non_presenti_in_traduzione as $nome_file) {
echo "- $nome_file\n";
}
}
}
//Controllo dei singoli file
foreach($file_in_traduzione as $nome_file) {
$file_originale = $cartella_originale.DIRECTORY_SEPARATOR.$nome_file;
$file_traduzione = $cartella_traduzioni.DIRECTORY_SEPARATOR.$nome_file;
if(! file_exists($file_originale) || ! file_exists($file_traduzione) || is_dir($file_originale) || is_dir($file_traduzione)) {
// Abbiamo già fatto il controllo per asicurarci che ci sia coerenza
// sui file delle due cartelle. Ora ci occupiamo solo dei file che
// esistono in entrambe
continue;
}
include($file_originale);
if(isset($languageStrings)) $languageStringsOriginale = array_merge($languageStrings, array()); //Per creare una copia dell'array
if(isset($jsLanguageStrings)) $jsLanguageStringsOriginale = array_merge($jsLanguageStrings, array()); //Per creare una copia dell'array
include($file_traduzione);
if(isset($languageStrings)) $languageStringsTraduzione = array_merge($languageStrings, array()); //Per creare una copia dell'array
if(isset($jsLanguageStrings)) $jsLanguageStringsTraduzione = array_merge($jsLanguageStrings, array()); //Per creare una copia dell'array
echo "Controllo sul file $nome_file\n";
if(isset($languageStringsOriginale) && isset($languageStringsTraduzione)) {
controllaChiavi($languageStringsOriginale, $languageStringsTraduzione);
}
if(isset($jsLanguageStringsOriginale) && isset($jsLanguageStringsTraduzione)) {
controllaChiavi($jsLanguageStringsOriginale, $jsLanguageStringsTraduzione);
}
} // End foreach
} //End function
function controllaChiavi($originale, $traduzione)
{
$chiavi_originali = array_keys($originale);
$chiavi_traduzioni = array_keys($traduzione);
$differenza = array_diff($chiavi_originali, $chiavi_traduzioni);
if(count($differenza) > 0) {
echo "##########Chiavi presenti in originale e non in traduzione################\n";
foreach($differenza as $key) {
echo "- $key\n";
}
}
$differenza = array_diff($chiavi_traduzioni, $chiavi_originali);
if(count($differenza) > 0) {
echo "##########Chiavi presenti in traduzione e non in originale################\n";
foreach($differenza as $key) {
echo "- $key\n";
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment