Есть класс и вызов его: PHP: <?php class Google_API_translator { public $opts = array("text" => "", "language_pair" => "en|it"); public $out = ""; function __construct() { } function setOpts($opts) { if($opts["text"] != "") $this->opts["text"] = $opts["text"]; if($opts["language_pair"] != "") $this->opts["language_pair"] = $opts["language_pair"]; } function translate() { $this->out = ""; $google_translator_url = "http://translate.google.com/translate_t?langpair=".urlencode($this->opts["language_pair"])."&"; $google_translator_data .= "text=".urlencode($this->opts["text"]); $gphtml = $this->postPage( array( "url" => $google_translator_url, "data" => $google_translator_data ) ); $out = substr($gphtml, strpos($gphtml, "<div id=result_box dir=\"ltr\">")); $out = substr($out, 29); $out = substr($out, 0, strpos($out, "</div>")); // $this->out = iconv('KOI8-R', 'UTF-8//IGNORE', $out); // en|ru $this->out = $out; return $this->out; } // post form data to a given url using curl libs function postPage($opts) { $html = ""; if($opts["url"] != "" && $opts["data"] != "") { $ch = curl_init($opts["url"]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 15); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $opts["data"]); $html = curl_exec($ch); if(curl_errno($ch)) $html = ""; curl_close ($ch); } return $html; } } ?> <?php $g = new Google_API_translator(); $g->setOpts( array( "text" => "привет", "language_pair" => "ru|en" ) ); $g->translate(); echo $g->out; ?> Че то старнное твориться с кодировкой - не могу перевести из RU в EN, кодировка чето гонит. mb_detect_encoding говорит что данные в UTF-8, однако возвращаются крокозябры. Между не киррил. языками эзал utf8_encode - было все ок. Тут же проблема Как сделать передачу данных и получение в UTF-8 чтобы не мучиться с кодировкой.
Для перевода с англ на русс достаточно вставить в самый верх исполняемого скрипта: <meta http-equiv="Content-Type" content="text/html; charset=KOI8-R">'; а с русского на англ бред какой-то, прилетает в ASCii, в общем пока подумаю А русский оно посылает вообще хитро, вот такой строкой (слово "привет", например): %D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82 что в переводе означает: привет что в переводе означает: "привет" ( CP1251 → UTF-8 ) так что вот этого и надо прыгать Хотя непонятно вообще, почему ответ в ASCii прилетает, если перевод с русского на англ
Забавно конечно, но если добавить PHP: curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8'); То все будет работать. Мистика, конечно, но гуглу видимо наплевать на заголовки Accept-Charset и посылает в кодировке указанной в юзерагенте.
ХМ, гугл какой то странный Спасибо за совет попробую данный код, хотя и сам думал отправить ему хидеры, только вот про юзер агента как то даже не подумал.