PHP перевод текста c помощью Google Translate

7 924 просмотра 9 комментариев 5 января 2013

Завалялся у меня скрипт перевода на английский с помощью Google Translate и PHP. Откуда он у меня – долгая история, в общем он не мой. И за корректность на ручаюсь, хотя проверил - вроде работает, и очень шустренько, я думал будут тормоза, курл же все-же используется, но тут все частенько. Может использоваться для перевода ссылок на английский например, или еще чего-то типа такого. Но большие объемы, без интервалов между запросами вряд ли пройдут думаю. Проверялся на PHP 5.3 при кодировке UTF-8.

function translate($ru_str) {
    $curlHandle = curl_init(); // init curl
    // options
    $postData=array();
    $postData['client']= 't';
    $postData['text']= $ru_str;
    $postData['hl'] = 'en';
    $postData['sl'] = 'ru';
    $postData['tl'] = 'en';
    curl_setopt($curlHandle, CURLOPT_URL, 'http://translate.google.com/translate_a/t'); // set the url to fetch
    curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array(
        'User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.1.4) Gecko/20091016 Firefox/3.5.4',
        'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
        'Accept-Language: ru,en-us;q=0.7,en;q=0.3',
        'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7',
        'Keep-Alive: 300',
        'Connection: keep-alive'
    ));
    curl_setopt($curlHandle, CURLOPT_HEADER, 0); // set headers (0 = no headers in result)
    curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1); // type of transfer (1 = to string)
    curl_setopt($curlHandle, CURLOPT_TIMEOUT, 10); // time to wait in
    curl_setopt($curlHandle, CURLOPT_POST, 0);
    if ( $postData!==false ) {
        curl_setopt($curlHandle, CURLOPT_POSTFIELDS, http_build_query($postData));
    }
    $content = curl_exec($curlHandle); // make the call
    curl_close($curlHandle); // close the connection
    $content = str_replace(',,',',"",',$content);
    $content = str_replace(',,',',"",',$content);
    $result = json_decode($content);
    return $result[0][0][0];
}
echo translate('Привет, как дела?');

9 комментариев

То-то я понять не мог, почему json_decode не пашет.
5 балов!
как наоборот перевод прописать, с англ на русский?
разобрался:
$postData[‘hl’] = ‘ru’;
  $postData[‘sl’] = ‘en’;
  $postData[‘tl’] = ‘ru’;
Если Вы заинтересованы в локализации web-ПО, ПО для персональных компьютеров, ПО для мобильных устройств либо иного вида программного обеспечения, я рекомендую Вам использовать этот инструмент на базе web: https://poeditor.com/
Наша компания занималась разработкой приложения, которое интегрировалось в CMS и автоматически конвертировало текст через Google Translate. Приложение было написано на фреймворке Symfony. Детали тут - http://ddi-dev.com

Вы можете оставить комментарий