示例#1
0
 /**
  * process the input
  *
  *
  * @param   array   $_GET; (translate = en)
  * @param   array   $_POST; (translate = en, en[{md5}] = translation)
  * @return   none
  * @access   public
  */
 function process($get, $post)
 {
     //DB_DataObject::debugLevel(1);
     $displayLang = isset($get['translate']) ? $get['translate'] : (isset($post['translate']) ? $post['translate'] : false);
     if ($displayLang === false) {
         return;
     }
     require_once 'Translation2/Admin.php';
     $trd = new Translation2_Admin('dataobjectsimple', 'translations');
     //$trd->setDecoratedLang('en');
     foreach ($this->options['targetLangs'] as $l) {
         $trd->createNewLang(array('lang_id' => $l));
     }
     // back to parent if no language selected..
     if (!in_array($displayLang, $this->options['targetLangs'])) {
         require_once 'PEAR.php';
         return PEAR::raiseError('Unknown Language :' . $displayLang);
     }
     $this->translate = $displayLang;
     if (isset($post['_apply'])) {
         $this->clearTemplateCache($displayLang);
     }
     $t = explode(' ', microtime());
     $start = $t[0] + $t[1];
     require_once 'Translation2.php';
     $tr = new Translation2('dataobjectsimple', 'translations');
     $tr->setLang($displayLang);
     //$suggestions = new Translation2('dataobjectsimple','translations');
     //$suggestions->setLang($displayLang);
     $this->compileAll();
     //$tr->setPageID('test.html');
     // delete them after we have compiled them!!
     if (isset($post['_apply'])) {
         $this->clearTemplateCache($displayLang);
     }
     //DB_DataObject::debugLevel(1);
     $this->loadTranslations();
     $this->loadTranslations($displayLang);
     $all = array();
     foreach ($this->words as $page => $words) {
         $status[$page] = array();
         $tr->setPageID($page);
         // pages....
         foreach ($words as $word) {
             if (!trim(strlen($word))) {
                 continue;
             }
             $md5 = md5($page . ':' . $word);
             //$value = $tr->get($word);
             $value = $this->getTranslation($page, $word, $displayLang);
             // we posted something..
             if (isset($post[$displayLang][$md5])) {
                 $nval = get_magic_quotes_gpc() ? stripslashes($post[$displayLang][$md5]) : $post[$displayLang][$md5];
                 if ($value != $nval) {
                     $trd->add($word, $page, array($displayLang => $nval));
                     $value = $nval;
                 }
             }
             if ($value == '') {
                 // try the old gettext...
                 if (isset($old[addslashes($word)])) {
                     $trd->add($word, $page, array($displayLang => $old[addslashes($word)]));
                     $value = $old[addslashes($word)];
                 }
             }
             $add = new StdClass();
             $add->from = $word;
             $add->to = $value;
             if (!$add->to || $add->from == $add->to) {
                 $add->untranslated = true;
                 $add->suggest = implode(', ', $this->getSuggestions($word, $displayLang));
                 //$suggest = $suggestions->get($word);
                 //if ($suggest && ($suggest  != $word)) {
                 //    $add->suggest = $suggestions->get($word);
                 //}
             }
             $add->md5 = $md5;
             $add->short = (bool) (strlen($add->from) < 30);
             $status[$page][] = $add;
         }
     }
     $t = explode(' ', microtime());
     $total = $t[0] + $t[1] - $start;
     //printf("Built All in %0.2fs<BR>",$total);
     $this->status = $status;
 }