Ребята, очень нужен рабочий php скрипт переводчика, любого сервиса, bing, google, яндекс, не важно. Для подключения к парсеру content downloader. Кто может,поделитесь пожалуйста.
Дело в том что я не особо в php, хочу вот подключить перевод от bing, вот нашел класс для bing переводчика http://www.pvsm.ru/api/6906, данные для подключения у меня есть, т.е. app id и client secret. Но прикол в том что я как та Обезьяна с очками, не знаю что с этим добром делать ) А вот условия парсера Вот помогите состряпать ) Буду при много благодарен.
Пусть и не php ... но смысл понятен ... function translate(text, language){ if (!text || text.length==0 || !language || language.length==0) return ""; if (language.toLowerCase()=="ru-ru") return text; var request = ""; try{ request = $.ajax({ url: 'https://translate.yandex.net/api/v1.5/tr.json/translate?key=', async: false, crossDomain: true, type: 'GET', data:{lang: language, text: text} }); }catch(e){ console.log(e, request); } var response = ""; try{ response = $.parseJSON(request.responseText); }catch(e){ console.log(e, response); } if (response && response.code==200) return response.text; console.log(response); } В key подставить свой ключ полученный в Yandex
Чтобы не быть многословным http://api.yandex.com/translate/ http://api.yandex.com/translate/doc/dg/reference/translate.xml Смысл состоит в том чтобы по курлу поднять страницу , где key - полученный по ссылке выше ключ к апи lang - направление перевода (только с русского на любой другой, или с любого на русский) http://api.yandex.com/translate/doc/dg/reference/getLangs.xml [чтобы например перевести с Украинского на английский надо с Укр-Рус-Англ] text - текст перевода Затем дешифрануть получившийся Json
Чтобы не быть многословным http://api.yandex.com/translate/ http://api.yandex.com/translate/doc/dg/reference/translate.xml Смысл состоит в том чтобы по курлу поднять страницу , где key - полученный по ссылке выше ключ к апи lang - направление перевода (только с русского на любой другой, или с любого на русский) http://api.yandex.com/translate/doc/dg/reference/getLangs.xml [чтобы например перевести с Украинского на английский надо с Укр-Рус-Англ] text - текст перевода Затем дешифрануть получившийся Json[/quote] Уверен это все замечательно, но я не дружу с php, а он со мной. У меня класс переводчика от Bing взятый с хабра, вот он: PHP: <?php class Translate { protected $msData, $accessToken; public function __construct($msData) {//в массиве msdata хранятся client_id и client_secret $this->msData = $msData; $this->initAccessToken(); } protected function initAccessToken() {//получаем accessToken $curl = curl_init("datamarket.accesscontrol.windows.net/v2/OAuth2-13/"); curl_setopt_array($curl, array( CURLOPT_POST => true, //формируем POST-запрос для получения токена CURLOPT_POSTFIELDS => http_build_query(array( 'client_id' => $this->msData['clientid'], //Тут мой clientid 'client_secret' => $this->msData['clientsecret'], //Тут мой clientsecret 'scope' => 'http://api.microsofttranslator.com',//это значение указано в документации 'grant_type' => "client_credentials"//это значение указано в документации )), CURLOPT_SSL_VERIFYPEER => false, CURLOPT_RETURNTRANSFER => true, )); $response = curl_exec($curl); $err = curl_errno($curl); if ($err) throw new Exception("curl err $err"); $r_obj = json_decode($response); if (!isset($r_obj)) throw new Exception("illegal response: $response"); $this->accessToken = $r_obj->access_token; } public function translate($text, $lang_to, $lang_from) { $query_arr = array( 'appId' => 'Bearer '.$this->accessToken, 'text' => $text, 'from' => $lang_from, 'to' => $lang_to, 'contentType' => 'text/plain' ); $query = http_build_query($query_arr); $url = 'http://api.microsofttranslator.com/V2/Http.svc/Translate?'.$query; $curl = curl_init($url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $response = curl_exec($curl); $err = curl_errno($curl); if ($err) throw new Exception("curl err $err"); $xml = new SimpleXMLElement($response); //получаем строку перевода из xml-ответа return (string) $xml; } } Подключаю его через другой файл: PHP: <?phpinclude('BingTranslateClass.php');$query = urldecode($_POST["data"]);// это для парсера$lang_to = 'ru';$lang_from = 'en';$obj = new Translate();echo $obj->translate($query, $lang_to, $lang_from);?> Сделал все как положено вписал ключи, но он выдает Я уже и так и сяк, не знаю что делать.
1) Зарегистрируй свой Api 2) На, я добрый ) function buildUrl($url, $params){ $params = http_build_query($params); return "{$url}?{$params}"; } $a = array( 'key'=>"", // Твой ключ 'lang'=> "", // Направление перевода 'text'=> "" , // Текст ); $ch = curl_init(); // set url curl_setopt($ch, CURLOPT_URL, buildUrl("https://translate.yandex.net/api/v1.5/tr.json/translate", $a)); curl_setopt($ch, CURLOPT_HEADER, TRUE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $output = curl_exec($ch); curl_close($ch); die(var_dump(json_decode($output)));
Спасибо конечно, но снова этот злосчастный вопрос, я смогу его испоьзовать в CD?! ) Вот требования парсера
Заполнил необходимые места, в результате он мне выдает NULL, перед скриптом поставил <?php, а после ?>. Что я не так делаю?!
PHP: <?php$pos = strpos(strtolower($_SERVER['REQUEST_URI']), "testurl");if ($pos === false) {?>Текст если не наша страница<?php }else{ ?>Текст если наша страница<?php}?>