ZiX
Коддинг, Парсинг
- Регистрация
- 9 Июл 2011
- Сообщения
- 1.378
- Реакции
- 707
- Автор темы
- #1
Как сделать перевод с английского на русский, если в тексте присутствует больше половины английских слов(букв). Или если найден английский текст то сделать перевод. Переводчик нашел:
Не знаю как реализовать условие если.
PHP:
<?php
class google_translator_exception extends Exception {
}
class google_translator {
private $_user_agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
private $_sleep = 0;
private $_lang_s = '';
private $_lang_t = '';
private $_sources = array();
function set_sleep($s) {
$this->_sleep = $s;
return $this;
}
function set_langs($from, $to) {
$this->_lang_s = $from;
$this->_lang_t = $to;
return $this;
}
function set_text($src) {
$this->_sources = is_array($src) ? $src : array($src);
return $this;
}
/**
* @param mixed array or text
* @return mixed array[0,1,2..] or text
*/
function translate($text = false) {
$is_array = is_array($text);
$text = ($text === false) ? $this->_sources : (is_array($text) ? $text : array($text));
$result = array();
$url = "http://translate.google.ru/translate_a/t?client=t&text=%s&hl={$this->_lang_t}&sl={$this->_lang_s}&tl={$this->_lang_t}&multires=1&otf=2&ssel=4&tsel=0&sc=1";
$ch = curl_init();
$Headers = array(
"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",
"Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7"
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $Headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $this->_user_agent);
$proxy = '194.204.38.218:80';
//curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
foreach ($text as $k => $t) {
$t = urlencode($t);
$ref = "http://translate.google.ru/#{$this->_lang_s}|{$this->_lang_t}|{$t}" ;
curl_setopt($ch, CURLOPT_REFERER, $ref);
curl_setopt($ch, CURLOPT_URL, sprintf($url, $t));
curl_setopt($ch, CURLOPT_PROXY, $proxy);
$body = curl_exec($ch);
if (CURLE_OK != curl_errno($ch)) {
throw new google_translator_exception (curl_error($ch));
}
$body = iconv('KOI8-R', 'UTF-8', substr($body,2));
$result[$k] = preg_replace('@^\[\"(.*)\",\".*$@Uu', '$1', $body);
if ($this->_sleep) sleep($this->_sleep);
}
curl_close($ch);
return $is_array ? $result : array_pop($result);
}
}
?>