CI_translator
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 ';
?>