/','',$data); return $data; } public function action_index() { HTTP::redirect(URL::link('','translate/render')); $output = ''; Block::factory() ->title('Hello') ->title_icon('icon-cog') ->body($output); } public function action_import() { $html = new simple_html_dom(); $html->load($this->aer()); $this->store($html->find('head',0)->find('title',0)); foreach ($this->_tags as $z) foreach ($html->find($z) as $x) $this->store($x); HTTP::redirect(URL::link('','translate/index')); } public function action_render() { $output = ''; if ($this->request->post('language_id')) { $html = new simple_html_dom(); $html->load($this->aer()); $x = $html->find('head',0); $x->innertext .= ''; $lo = ORM::factory('Language',$this->request->post('language_id')); foreach ($this->_tags as $z) foreach ($html->find($z) as $x) $x->innertext = $this->translate($x,$lo); // Convert order the img tags foreach ($html->find('img') as $z) { $z->src = sprintf('%s/%s',URL::site('media/aer'),$z->src); } $this->response->body($html); $this->auto_render = FALSE; // We dont know what sort of payment type yet } else { $x = $this->lang(); $output .= Form::open(); $output .= Form::select('language_id',ORM::factory('Language')->list_select(),$x->id); $output .= Form::button('submit','Submit',array('class'=>'btn btn-primary')); $output .= Form::close(); } Block::factory() ->title('Render in...') ->title_icon('icon-share') ->body($output); } public function action_save() { foreach ($this->request->post('x') as $id => $value) { if (! $value) continue; $to = ORM::factory('Translate',array('language_id'=>$this->request->post('language_id'),'original_id'=>$id)); $to->translation = $value; $to->language_id = $this->request->post('language_id'); $to->original_id = $id; $to->save(); } HTTP::redirect(sprintf('%s?language_id=%s&page=%s',URL::link('','translate/text'),$this->request->post('language_id'),$this->request->post('page'))); } private function lang() { foreach ($this->request->accept_lang() as $k=>$v) { if (strlen($k) == 2) $k = sprintf('%s_%s',strtolower($k),strtoupper($k)); else { list($k,$v) = preg_split('/[-_]/',$k,2); $k = sprintf('%s_%s',strtolower($k),strtoupper($v)); } if ($x=ORM::factory('Language',array('iso'=>$k))) return $x; } } private function store(simple_html_dom_node $x,$l=0) { if ($x->children()) { foreach ($x->children() as $y) { $this->store($y,$l+1); $y->innertext = '%s'; } } // If we have a numeric value, convert it to %d $x->innertext = preg_replace('/[0-9.]+/','%d',$x->innertext); $oo = ORM::factory('Original',array('sentence'=>$x->innertext)); if (! trim($x->innertext) or (in_array(trim($x->innertext),array('$',' ')) or preg_match('/%d%?$/',$x->innertext))) { return $x->innertext; } elseif (! $oo->loaded()) { $oo->sentence = $x->innertext; $oo->save(); } return $x->innertext; } private function translate(simple_html_dom_node $x,Model_Language $lo,$l=0) { $nums = NULL; $matches = array(); $dom_tmp = str_get_html($x->outertext); $dom_tmp_node = $dom_tmp->firstChild(); $string = $this->store($dom_tmp_node,$l); $oo = ORM::factory('Original',array('sentence'=>$string)); // If we have numbers, we'll need to save them. if (preg_match('/%d/',$string)) $nums = preg_match('/[0-9.]+/',$x->innertext,$matches); if ($oo->loaded()) { $to = ORM::factory('Translate',array('original_id'=>$oo->id,'language_id'=>$lo->id)); $string = $to->loaded() ? $to->translation : $x->innertext; } if ($nums && $nums == 1) $string = str_replace('%d',$matches[0],$string); elseif ($nums > 1) throw HTTP_Exception::factory('501','Argh, didnt allow for more than 1 match'); if ($x->children()) { foreach ($x->children() as $y) { $string = preg_replace('/%s/',$this->translate($y,$lo,$l+1),$string); } } return $string; } public function action_text() { $output = ''; if ($this->request->query('language_id')) { $output .= Form::open(URL::link('','translate/save')); $output .= Form::hidden('language_id',$this->request->query('language_id')); $oo = ORM::factory('Original') ->select('translate.translation') ->join('translate','LEFT OUTER') ->on('original.id','=','translate.original_id') ->on('translate.language_id','=',$this->request->query('language_id')); $output .= View::factory('translate') ->set('o',$oo->find_all()); // We dont know what sort of payment type yet } else { $x = $this->lang(); $output .= Form::open(NULL,array('method'=>'GET')); $output .= Form::select('language_id',ORM::factory('Language')->list_select(),$x->id); } $output .= Form::button('submit','Submit',array('class'=>'btn btn-primary')); $output .= Form::close(); Block::factory() ->title('Translate Text') ->title_icon('icon-share') ->body($output); } } // End Welcome