CI_translator

CI_translator

convertir les messages à partir de l'anglais vers une autre langue supportée par Google translate

voir le script  php


<?php
        error_reporting(E_ALL);
        ini_set('display_errors', 1);
/*  translate   from  english  to  french or other language  CI_translator
 * BYOOS solutions 2020/07/07  gbobard@gmail.com  
 * step_1  construt one texte file form  SQL original or array language CI
 * step_2  traduce the file issue of step_1 ON https://translate.google.com/?hl=fr
 * step_3  translate manuelly this text file english to french
 * step_4  replace the pattern english by str  french
 * ********************************************************/
 

function fixtags($text){
    $text = htmlspecialchars($text);
    $text = preg_replace("/=/", "=\"\"", $text);
    $text = preg_replace("/"/", ""\"", $text);
    $tags = "/<(\/|)(\w*)(\ |)(\w*)([\\\=]*)(?|(\")\""\"|)(?|(.*)?"(\")|)([\ ]?)(\/|)>/i";
    $replacement = "<$1$2$3$4$5$6$7$8$9$10>";
    $text = preg_replace($tags, $replacement, $text);
    $text = preg_replace("/=\"\"/", "=", $text);
    return $text;
}

function lister_fichiers($rep)  
{  
    if(is_dir($rep))  
    {  
        if($iteration = opendir($rep))  
        {
            while(($fichier = readdir($iteration)) !== false)  
            {  
                if($fichier != "." && $fichier != ".." && $fichier != "Thumbs.db")  
                {
                    $list_files_src[] = $fichier;
                    //echo ''.$fichier.'
'."\n";  
                }  
            }  
            closedir($iteration);  
        }
        return $list_files_src;
    }
}

function lire_ligne_fichiers($_file)  
{
        $handle = fopen($_file, 'r');
        if ($handle)
        {
            while (!feof($handle))
            {
                $buffer = fgets($handle);
                echo $buffer;
            }
            fclose($handle);
        }
}

$step = 'step_4';// setp_1 OR step_4
$source = 'en';
$target = 'fr';
$attempts = 5;
$tab = array();
$list_files_src = array();

$path_src = './english/';
$path_dest = './french/';
is_dir($path_dest) ? '': mkdir("$path_dest", 0755);
    
$list_files_src = lister_fichiers("./english/");
echo ' Start of TRAD  ARRAY  language codeIgniter 3.1.11  '.date('d-m-Y His').'
';

switch ($step){
    case 'step_1':
        $file_dest_en = fopen("./fichier_language_en.txt", "w+");
        foreach ( $list_files_src as $file_src )
        {
            $handle = fopen($path_src.$file_src, 'r');
            if ($handle)
            {
                echo $file_src.'
';
                fwrite($file_dest_en,"////".$file_src."\r\n");

                while (!feof($handle))
                {
                    $buffer = fgets($handle);
                    $tab = explode( '=', $buffer);
                    if ( substr($buffer,1,5) === 'lang['){    
                        $text = trim(str_replace(array('"', "'"), "", str_replace(";","",$tab[1])));
                        echo '

';print_r( $text );echo '
';//BYOOS_tag
                        fwrite($file_dest_en, $text."\r\n");
                    }
                }
                fclose($handle);
            }
        }
        fclose($file_dest_en);
        
    break;
    case 'step_4':
        echo $step.'
';
        error_reporting(E_ALL);
        ini_set('display_errors', 1);
        $file_src_dest = array();
        $file_dest_fr = null;
        $file_src_en = null;
        $buffer = '';
        $i=0;
        /*open source file in french translate*/
        $lines = file('./fichier_language_fr.txt');
        /*Scroll through the $lines table and display the contents of each line preceded by its number.*/
        foreach ($lines as $lineNumber => $lineContent)
        {

            if ( $lineNumber <= 4022) {// line number in file  english source
                echo ' compteur  '.$lineNumber.'   '.$lineContent.'
';
            }
            else {
                echo ' STOP ';exit();

            }        

            $filename = trim(substr($lineContent,4,strlen($lineContent)-4));

            if ( substr($lineContent,0,4) === '////'){
                $i=0;// init count of $file_src_en source english            
                ( $file_dest_fr ) ? fclose( $file_dest_fr ) : '';
                $file_dest_fr = fopen($path_dest.$filename, "w+");
                //$file_src_en = file($path_src.$filename);
                $linksArray = file($path_src.$filename);
                // reindex and filter the array
                $file_src_en = array_merge(array_filter($linksArray, function($value) { return substr($value,1,5) === 'lang['; }));
                var_dump($file_src_en );//BYOOS_tag
                fwrite($file_dest_fr, '<?php /*'. $path_dest.$filename. ' French Language  BYOOS  gbobard@gmail.com */'."\r\n");
                echo $lineNumber.'   '.$lineContent.' ********** '.$filename.'
';
            }else
                {
                    $file_src_dest[$i] = $lineContent;
                    $buffer = $file_src_en[$i];

                    echo 'buffer src_en  '.$lineNumber.'   '.$lineContent;var_dump($file_src_en[$i], $buffer, $i);echo '
';
                    if ( substr($buffer,1,5) === 'lang['){
                        $result = rtrim($lineContent);
                        echo 'result lineContent '.$lineNumber.'   '.var_dump($result, $i);echo '
';

                        $trad_target = substr_replace($buffer,"= '".trim(str_replace("'", "\'",$result))."';", strpos($buffer, '='));
                        echo '

';print_r( $trad_target );echo '
';//BYOOS_tag
                        fwrite($file_dest_fr,$trad_target."\r\n");
                        $i++;
                    }
                }
            }    
        echo '
';print_r($file_src_dest);echo '
';exit();
    break;
    default:
    $message = ' No step selected !!!   ';
        echo 'TRAD  '.$message.'
';die;
    break;
}
echo 'END of traduce  ';

?>

 

commentaires

Articles Similaires

Facturation avancée sur MEDLINES 2018

Medlines+ / Mediboard

Medlines+ / Mediboard

Cet article présente la méthode d'installation et modification