Нужен php скрипт переводчика.

Тема в разделе "PHP", создана пользователем Love-world, 7 сен 2013.

  1. Love-world

    Love-world

    Регистрация:
    17 июл 2013
    Сообщения:
    161
    Симпатии:
    75
    Ребята, очень нужен рабочий php скрипт переводчика, любого сервиса, bing, google, яндекс, не важно. Для подключения к парсеру content downloader. Кто может,поделитесь пожалуйста.
     
  2. aleksander73945

    aleksander73945

    Регистрация:
    7 сен 2013
    Сообщения:
    45
    Симпатии:
    7
  3. Love-world

    Love-world

    Регистрация:
    17 июл 2013
    Сообщения:
    161
    Симпатии:
    75
    Дело в том что я не особо в php, хочу вот подключить перевод от bing, вот нашел класс для bing переводчика http://www.pvsm.ru/api/6906, данные для подключения у меня есть, т.е. app id и client secret. Но прикол в том что я как та Обезьяна с очками, не знаю что с этим добром делать )

    А вот условия парсера

    Вот помогите состряпать ) Буду при много благодарен.
     
    Последнее редактирование: 8 сен 2013
  4. LDSP

    LDSP

    Регистрация:
    5 сен 2013
    Сообщения:
    30
    Симпатии:
    10
    Пусть и не 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
     
  5. Love-world

    Love-world

    Регистрация:
    17 июл 2013
    Сообщения:
    161
    Симпатии:
    75
    Объясните как им пользоваться, и смогу ли я использовать его в CD?!
     
  6. LDSP

    LDSP

    Регистрация:
    5 сен 2013
    Сообщения:
    30
    Симпатии:
    10
    Чтобы не быть многословным
    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
     
  7. Love-world

    Love-world

    Регистрация:
    17 июл 2013
    Сообщения:
    161
    Симпатии:
    75
    Чтобы не быть многословным
    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($curlCURLOPT_RETURNTRANSFER1);
                
    $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:
    <?php
    include('BingTranslateClass.php');
    $query urldecode($_POST["data"]);// это для парсера
    $lang_to 'ru';
    $lang_from 'en';
    $obj = new Translate();
    echo 
    $obj->translate($query$lang_to$lang_from);
    ?>
    Сделал все как положено вписал ключи, но он выдает
    Я уже и так и сяк, не знаю что делать.
     
    Lasted edited by : 9 сен 2013
  8. LDSP

    LDSP

    Регистрация:
    5 сен 2013
    Сообщения:
    30
    Симпатии:
    10
    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)));
     
    Love-world нравится это.
  9. Love-world

    Love-world

    Регистрация:
    17 июл 2013
    Сообщения:
    161
    Симпатии:
    75
    Спасибо конечно, но снова этот злосчастный вопрос, я смогу его испоьзовать в CD?! )

    Вот требования парсера

     
  10. Love-world

    Love-world

    Регистрация:
    17 июл 2013
    Сообщения:
    161
    Симпатии:
    75
    Заполнил необходимые места, в результате он мне выдает NULL, перед скриптом поставил <?php, а после ?>. Что я не так делаю?!
     
  11. stan

    stan

    Регистрация:
    19 июн 2013
    Сообщения:
    5
    Симпатии:
    1
    PHP:
    <?php
    $pos 
    strpos(strtolower($_SERVER['REQUEST_URI']), "testurl");
    if (
    $pos === false) {
    ?>
    Текст если не наша страница
    <?php }
    else
    ?>
    Текст если наша страница
    <?php
    }
    ?>