Enhance autotranslator to update lang files before a release.
This commit is contained in:
parent
5747e63c2b
commit
b7df0faac4
@ -31,12 +31,13 @@ $path=dirname(__FILE__).'/';
|
|||||||
|
|
||||||
// Test if batch mode
|
// Test if batch mode
|
||||||
if (substr($sapi_type, 0, 3) == 'cgi') {
|
if (substr($sapi_type, 0, 3) == 'cgi') {
|
||||||
echo "Error: You ar usingr PH for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n";
|
echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n";
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Include Dolibarr environment
|
// Include Dolibarr environment
|
||||||
require_once($path."../../htdocs/master.inc.php");
|
require_once($path."../../htdocs/master.inc.php");
|
||||||
|
require_once($path."../../htdocs/lib/files.lib.php");
|
||||||
// After this $db is an opened handler to database. We close it at end of file.
|
// After this $db is an opened handler to database. We close it at end of file.
|
||||||
|
|
||||||
// Load main language strings
|
// Load main language strings
|
||||||
@ -54,7 +55,7 @@ $dir=DOL_DOCUMENT_ROOT."/langs";
|
|||||||
|
|
||||||
// Check parameters
|
// Check parameters
|
||||||
if (! isset($argv[2])) {
|
if (! isset($argv[2])) {
|
||||||
print "Usage: ".$script_file." lang_code_src lang_code_dest [langfile.lang]\n";
|
print "Usage: ".$script_file." lang_code_src lang_code_dest|all [langfile.lang]\n";
|
||||||
print "Example: ".$script_file." en_US pt_PT\n";
|
print "Example: ".$script_file." en_US pt_PT\n";
|
||||||
print "Rem: lang_code to use can be found on http://www.google.com/language_tools\n";
|
print "Rem: lang_code to use can be found on http://www.google.com/language_tools\n";
|
||||||
exit;
|
exit;
|
||||||
@ -71,14 +72,17 @@ if (isset($argv[3]))
|
|||||||
}
|
}
|
||||||
print 'Files will be generated/updated in directory '.$dir."\n";
|
print 'Files will be generated/updated in directory '.$dir."\n";
|
||||||
|
|
||||||
if (! is_dir($dir.'/'.$argv[2]))
|
if ($argv[2] != 'all')
|
||||||
{
|
{
|
||||||
print 'Create directory '.$dir.'/'.$argv[2]."\n";
|
if (! is_dir($dir.'/'.$argv[2]))
|
||||||
$result=mkdir($dir.'/'.$argv[2]);
|
|
||||||
if (! $result)
|
|
||||||
{
|
{
|
||||||
$db->close();
|
print 'Create directory '.$dir.'/'.$argv[2]."\n";
|
||||||
return -1;
|
$result=mkdir($dir.'/'.$argv[2]);
|
||||||
|
if (! $result)
|
||||||
|
{
|
||||||
|
$db->close();
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -50,34 +50,64 @@ class langAutoParser {
|
|||||||
$fileContent = null;
|
$fileContent = null;
|
||||||
$this->translatedFiles = array();
|
$this->translatedFiles = array();
|
||||||
$refPath = $this->langDir.$this->refLang.self::DIR_SEPARATOR.$file;
|
$refPath = $this->langDir.$this->refLang.self::DIR_SEPARATOR.$file;
|
||||||
$destPath = $this->langDir.$this->destLang.self::DIR_SEPARATOR.$file;
|
$fileContent = file($refPath,FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES);
|
||||||
$fileContent = file($refPath,FILE_IGNORE_NEW_LINES |
|
|
||||||
FILE_SKIP_EMPTY_LINES);
|
|
||||||
print "Processing file " . $file . ", with ".sizeof($fileContent)." lines<br>\n";
|
print "Processing file " . $file . ", with ".sizeof($fileContent)." lines<br>\n";
|
||||||
// Check destination file presence
|
|
||||||
if ( ! file_exists( $destPath ) ){
|
// Define target dirs
|
||||||
// No file presente generate file
|
$targetlangs=array($this->destLang);
|
||||||
echo "File not found: " . $file . "<br>\n";
|
if ($this->destLang == 'all')
|
||||||
echo "Generating file " . $file . "<br>\n";
|
{
|
||||||
$this->createTranslationFile($destPath);
|
$targetlangs=array();
|
||||||
}
|
|
||||||
// Translate lines
|
// If we must process all languages
|
||||||
$fileContentDest = file($destPath,FILE_IGNORE_NEW_LINES |
|
$arraytmp=dol_dir_list($this->langDir,'directories',0);
|
||||||
FILE_SKIP_EMPTY_LINES);
|
foreach($arraytmp as $dirtmp)
|
||||||
$newlines=0;
|
|
||||||
foreach($fileContent as $line){
|
|
||||||
$key = $this->getLineKey($line);
|
|
||||||
$value = $this->getLineValue($line);
|
|
||||||
if ($key && $value)
|
|
||||||
{
|
{
|
||||||
$newlines+=$this->translateFileLine($fileContentDest,$file,$key,$value);
|
if ($dirtmp['name'] === $this->refLang) continue; // We discard source language
|
||||||
|
if (preg_match('/^en/i',$dirtmp['name'])) continue; // We discard en_* languages
|
||||||
|
if (preg_match('/^fr/i',$dirtmp['name'])) continue; // We discard fr_* languages
|
||||||
|
if (preg_match('/^es/i',$dirtmp['name'])) continue; // We discard es_* languages
|
||||||
|
if (preg_match('/es_CA/i',$dirtmp['name'])) continue; // We discard es_CA language
|
||||||
|
if (preg_match('/^\./i',$dirtmp['name'])) continue; // We discard files .*
|
||||||
|
if (preg_match('/^CVS/i',$dirtmp['name'])) continue; // We discard CVS
|
||||||
|
$targetlangs[]=$dirtmp['name'];
|
||||||
}
|
}
|
||||||
|
//var_dump($targetlangs);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->updateTranslationFile($destPath,$file);
|
// Process translation of source file for each target languages
|
||||||
echo "New translated lines: " . $newlines . "<br>\n";
|
foreach($targetlangs as $mydestLang)
|
||||||
$this->time_end = date('Y-m-d H:i:s');
|
{
|
||||||
#if ($counter ==3) die('fim');
|
|
||||||
|
$destPath = $this->langDir.$mydestLang.self::DIR_SEPARATOR.$file;
|
||||||
|
// Check destination file presence
|
||||||
|
if ( ! file_exists( $destPath ) ){
|
||||||
|
// No file present, we generate file
|
||||||
|
echo "File not found: " . $destPath . ". We generate it.<br>\n";
|
||||||
|
$this->createTranslationFile($destPath,$mydestLang);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo "Updating file: " . $destPath . "<br>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Translate lines
|
||||||
|
$fileContentDest = file($destPath,FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES);
|
||||||
|
$newlines=0;
|
||||||
|
foreach($fileContent as $line){
|
||||||
|
$key = $this->getLineKey($line);
|
||||||
|
$value = $this->getLineValue($line);
|
||||||
|
if ($key && $value)
|
||||||
|
{
|
||||||
|
$newlines+=$this->translateFileLine($fileContentDest,$file,$key,$value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->updateTranslationFile($destPath,$file);
|
||||||
|
echo "New translated lines: " . $newlines . "<br>\n";
|
||||||
|
$this->time_end = date('Y-m-d H:i:s');
|
||||||
|
#if ($counter ==3) die('fim');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -99,10 +129,10 @@ FILE_SKIP_EMPTY_LINES);
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function createTranslationFile($path){
|
private function createTranslationFile($path,$mydestlang){
|
||||||
$fp = fopen($path, 'w+');
|
$fp = fopen($path, 'w+');
|
||||||
fwrite($fp, "/*\r\n");
|
fwrite($fp, "/*\r\n");
|
||||||
fwrite($fp, " * Language code: {$this->destLang}\r\n");
|
fwrite($fp, " * Language code: {$mydestlang}\r\n");
|
||||||
fwrite($fp, " * Automatic generated via autotranslator.php tool\r\n");
|
fwrite($fp, " * Automatic generated via autotranslator.php tool\r\n");
|
||||||
fwrite($fp, " * Generation date " . $this->time. "\r\n");
|
fwrite($fp, " * Generation date " . $this->time. "\r\n");
|
||||||
fwrite($fp, " */\r\n");
|
fwrite($fp, " */\r\n");
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user