Enhance translator

This commit is contained in:
eldy 2011-10-10 14:22:09 +02:00
parent 86006b0f30
commit 8a9417ed59

View File

@ -14,8 +14,8 @@
/** /**
* Class to parse language files and translate them * Class to parse language files and translate them
*/ */
class langAutoParser { class langAutoParser
{
private $translatedFiles = array(); private $translatedFiles = array();
private $destLang = ''; private $destLang = '';
private $refLang = ''; private $refLang = '';
@ -95,7 +95,8 @@ class langAutoParser {
$destPath = $this->langDir.$mydestLang.self::DIR_SEPARATOR.$file; $destPath = $this->langDir.$mydestLang.self::DIR_SEPARATOR.$file;
// Check destination file presence // Check destination file presence
if ( ! file_exists( $destPath ) ){ if (! file_exists($destPath))
{
// No file present, we generate file // No file present, we generate file
echo "File not found: " . $destPath . ". We generate it.<br>\n"; echo "File not found: " . $destPath . ". We generate it.<br>\n";
$this->createTranslationFile($destPath,$mydestLang); $this->createTranslationFile($destPath,$mydestLang);
@ -119,7 +120,7 @@ class langAutoParser {
$this->updateTranslationFile($destPath,$file,$mydestLang); $this->updateTranslationFile($destPath,$file,$mydestLang);
echo "New translated lines: " . $newlines . "<br>\n"; echo "New translated lines: " . $newlines . "<br>\n";
#if ($counter ==3) die('fim'); //if ($counter ==3) die('fim');
} }
} }
} }
@ -127,9 +128,10 @@ class langAutoParser {
/** /**
* Update file with new translations * Update file with new translations
* *
* @param unknown_type $destPath * @param string $destPath Target path
* @param unknown_type $file * @param string $file File
* @param unknown_type $mydestLang * @param string $mydestLang Target language code
* @return void
*/ */
private function updateTranslationFile($destPath,$file,$mydestLang) private function updateTranslationFile($destPath,$file,$mydestLang)
{ {
@ -154,8 +156,9 @@ class langAutoParser {
/** /**
* Create a new translation file * Create a new translation file
* *
* @param unknown_type $path * @param string $path Path
* @param unknown_type $mydestlang * @param string $mydestlang Target language code
* @return void
*/ */
private function createTranslationFile($path,$mydestlang) private function createTranslationFile($path,$mydestlang)
{ {
@ -172,12 +175,12 @@ class langAutoParser {
/** /**
* Put in array translatedFiles[$file], line of a new tranlated pair * Put in array translatedFiles[$file], line of a new tranlated pair
* *
* @param $content Existing content of dest file * @param string $content Existing content of dest file
* @param $file Target file name translated (xxxx.lang) * @param string $file Target file name translated (xxxx.lang)
* @param $key Key to translate * @param string $key Key to translate
* @param $value Existing value in source file * @param string $value Existing value in source file
* @param string Language code (ie: fr_FR) * @param string $mydestLang Language code (ie: fr_FR)
* @return int 0=Nothing translated, 1=Record translated * @return int 0=Nothing translated, 1=Record translated
*/ */
private function translateFileLine($content,$file,$key,$value,$mydestLang) private function translateFileLine($content,$file,$key,$value,$mydestLang)
{ {
@ -214,7 +217,8 @@ class langAutoParser {
/** /**
* *
* @param unknown_type $line * @param string $line Line found into file
* @return string Key
*/ */
private function getLineKey($line) private function getLineKey($line)
{ {
@ -224,7 +228,8 @@ class langAutoParser {
/** /**
* *
* @param unknown_type $line * @param string $line Line found into file
* @return string Value
*/ */
private function getLineValue($line) private function getLineValue($line)
{ {
@ -234,7 +239,8 @@ class langAutoParser {
/** /**
* *
* @param unknown_type $lang * @param string $lang Language code
* @return array Array
*/ */
private function getTranslationFilesArray($lang) private function getTranslationFilesArray($lang)
{ {
@ -251,12 +257,12 @@ class langAutoParser {
/** /**
* Return translation of a value * Return translation of a value
* *
* @param $src_texts Array with one value * @param array $src_texts Array with one value
* @param $src_lang * @param string $src_lang Language code source
* @param $dest_lang * @param string $dest_lang Language code target
* @return string Value translated * @return string Value translated
*/ */
private function translateTexts($src_texts = array(), $src_lang, $dest_lang) private function translateTexts($src_texts, $src_lang, $dest_lang)
{ {
$tmp=explode('_',$src_lang); $tmp=explode('_',$src_lang);
if ($tmp[0] == $tmp[1]) $src_lang=$tmp[0]; if ($tmp[0] == $tmp[1]) $src_lang=$tmp[0];
@ -269,11 +275,11 @@ class langAutoParser {
$src_texts_query = ""; $src_texts_query = "";
$src_text_to_translate=preg_replace('/%s/','SSSSS',join('',$src_texts)); $src_text_to_translate=preg_replace('/%s/','SSSSS',join('',$src_texts));
$src_text_to_translate=preg_replace('/'.preg_quote('\n\n').'/',' NNNNN ',$src_text_to_translate);
$src_texts_query .= "&q=".urlencode($src_text_to_translate); $src_texts_query .= "&q=".urlencode($src_text_to_translate);
$url = $url = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0".$src_texts_query."&langpair=".urlencode($lang_pair);
"http://ajax.googleapis.com/ajax/services/language/translate?v=1.0".$src_texts_query."&langpair=".urlencode($lang_pair);
// sendRequest // sendRequest
// note how referer is set manually // note how referer is set manually
@ -305,6 +311,8 @@ class langAutoParser {
$rep=$json['responseData']['translatedText']; $rep=$json['responseData']['translatedText'];
$rep=preg_replace('/SSSSS/i','%s',$rep); $rep=preg_replace('/SSSSS/i','%s',$rep);
$rep=preg_replace('/NNNNN/i','\n\n',$rep);
$rep=preg_replace('/&#39;/i','\'',$rep);
//print "OK ".join('',$src_texts).' => '.$rep."\n"; //print "OK ".join('',$src_texts).' => '.$rep."\n";