понедельник, 14 февраля 2011 г.

Перевод сайта на другой язык с помощью Human Emulator.

Иногда возникает потребность перевести ваш сайт на другой язык. Это можно сделать используя переводчик Googlе, естественно, качество такого перевода оставляет желать лучшего, но бывает достаточно и такого перевода. Ниже приведён скрипт который делает из русского сайта английский.


<?php

$xhe_host ="127.0.0.1:7010";

// The following code is required to properly run XWeb Human Emulator
require("../Templates/xweb_human_emulator.php");

// //////////////////////////////////////////// функции ////////////////////////////////

// перевести текст
function translate($text_translate)
{
if($text_translate=="")
return "";

global $browser,$textarea,$listbox,$button,$element,$webpage;

$browser->navigate('http://translate.google.com/#ru|en|');
$browser->wait_for(60,1);

$textarea->click_by_name('text');
$textarea->set_value_by_name('source',$text_translate);

$button->click_by_name('gt-submit');
$browser->wait_for(60,1);

$text_res = $element->get_element_innerText_by_name("result_box");

// если не получили подождём и получем ещё раз - пока не получим перевод переводим
while($text_res=="")
{

$browser->navigate('http://translate.google.com/#ru|en|');
$browser->wait_for(60,1);

$textarea->click_by_name('text');
$textarea->set_value_by_name('source',$text_translate);

$button->click_by_name('gt-submit');
$browser->wait_for(60,1);

$text_res = $element->get_element_innerText_by_name("result_box");
}

return $text_res;
}

// //////////////////////////////////////////////////////////////////////////////////////////

// папка с результатами
$fld = "site\\eng\\";

$textfile->get_all_files_in_folder("site\\rus\\",'1.txt','true','false',10);

// получить список всех файлов в массив
$files = file('1.txt');
echo count($files)."
";
// пройтись по всем файлам
for($i=0;$i<count($files);$i++)
{
echo $files[$i].">br>";

// читаем файл
$str1 = $textfile->read_file(trim($files[$i]),10) ;

//echo $str1;
// перевести
echo $str1 = translate($str1 );
// получить путь для нового файла
$path_txt = str_replace("\\rus\\","\\eng\\",trim($files[$i]));

echo $path_txt.">br>";
// запишем файл
$textfile->write_file($path_txt,$str1,0) ;
}

// Quit
$app->quit();
?>

Комментариев нет: