Вашему вниманию предлагается технология онлайн-перевода через сервис Гугла на javascript.
Чтобы получить перевод, нужно сформировать соответствующим образом URL, который возращает результат перевода в виде json массива. Например перевод слова "программирование" дает следующий результат. К сожалению из-за ограничений безопасности мы не можем напрямую из javascript направить запрос на сайт гугла, поэтому нам приходится пользоваться прокси-скриптом на нашем сервере (см. текст файла googletranslate.php)
Php прокси-скрипт googletranslate.php:
<?php if(!isset($_POST['ajax'])) return; while(ob_get_level()) ob_end_clean(); switch($_POST['ajax']){ case 'translate': $text = get_magic_quotes_gpc() ? stripslashes($_POST['text']) : $_POST['text']; if($text == '') return '[[["","",""]]]'; exit(getGoogleTranslate($text)); break; } exit(); function getGoogleTranslate($str){ $host = 'translate.google.com'; $path = '/translate_a/t'; $headers = array( 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0', 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3', 'Referer: http://translate.google.com/' ); $get = array( 'client' => 't', 'text' => urlencode($str), 'hl' => 'ru', 'sl' => 'ru', 'tl' => 'en', 'ie' => 'UTF-8', 'oe' => 'UTF-8', 'multires' => '1', 'ssel' => '0', 'tsel' => '0', 'sc' => '1' ); $p = array(); foreach($get as $key=>$value) $p[] = $key.'='.$value; $query_string = '?'.implode('&', $p); $ch = curl_init(); if(!$ch) return false; $url = 'http://'.$host.$path.$query_string; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_TIMEOUT, 30); $response = curl_exec($ch); if(curl_errno($ch)) return false; curl_close($ch); return $response; } ?>
Функцией перевода тут является функция getGoogleTranslate с одним входящим параметром — строкой для перевода. Функция использует библиотеку cURL для работы с сетью, поэтому cURL должна быть установлена с PHP (практически все хостеры включают ее в инсталляцию PHP).
Предваряющий функцию код подготавливает параметры для функции перевода и возвращает результат, который возращает Гугл без изменение в вызывающий скрипт на javascript.
Для онлайн перевода нам нужно связать два поля: поле ввода переводимого текста и поле перевода. Используем для этого такую html-структуру:
<script src="/googletranslate.js"></script>
<p> Русский текст <input id="rus" /> <a href="#" class="translate" rev="rus" rel="eng">google перевод</a> <input id="eng" />
</p>
Для связки двух input полей будем использовать тег ссылки <a> с классом translate и аттрибутами rev и rel. Аттрибут rev должен содержать id элемента с переводимым текстом, rel — id элемента с переводом.
На саму ссылку вешаем обработчик, задаваемый в файле googletranslate.js (для упрощения записи кода используем библиотеку jQuery, поэтому файл библиотеки тоже должен быть подключен).
if(typeof $ == 'undefined') throw 'Не включен jquery'; $(document).ready(function(){ $('.translate[rel][rev]').click(function(){ var input = $('#'+this.rev); if(input.length == 0) return false; var output = $('#'+this.rel); if(output.length == 0) return false; var ru_text = encodeURIComponent(input.val()); $.ajax('/googletranslate.php', { type : 'POST', data : 'ajax=translate&text='+ru_text, success : function(data, textStatus, jqXHR){ try{ eval('var theData = '+data); } catch(e) { if(typeof theData != 'undefined') delete theData; } if(typeof theData == 'undefined' || !(theData instanceof Array) || !theData[0] || !theData[0][0] || !theData[0][0][0]) { alert('Ошибка при при переводе'); return; } output.val(theData[0][0][0]); }, error : function(data, textStatus, jqXHR){ alert(textStatus); } }); return false; }); });
Файлы googletranslate.js и googletranslate.php в нашем примере должны лежать в корне сайта.
Теперь по при клике по ссылке "google перевод" идет запрос на сервис перевода Гугла и результат выводиться в поле перевода.
Пробуем!
Русский текст google перевод