За последние 24 часа нас посетили 22013 программистов и 1003 робота. Сейчас ищут 725 программистов ...

Скрипт автоматического перевода с русского на английский

Тема в разделе "Решения, алгоритмы", создана пользователем klerick, 12 окт 2009.

  1. klerick

    klerick Guest

    Столкнулся с задачей написания скрипта перевода с рус. на англ. и обратно.
    Решил брать строку перевода и отправлять на сервер переводчика гугла методом ПОСТ. Это все реализовал. И даже с англ на рус переводит и все отлично возвращает.
    Проблема в том, что при переводе с рус. на англ. гугл возвращает знаки ? :) Пробовал кодировками играться, только подобрать не могу. И перед отправкой русского текста перекодировал его в UTF-8 и в cp1251 и в KOI8-R. Все одно.

    Подскажите, что делать!!!!!!
     
  2. ATI

    ATI Активный пользователь

    С нами с:
    3 янв 2008
    Сообщения:
    254
    Симпатии:
    0
    Адрес:
    Москва
    Всё в utf8
     
  3. klerick

    klerick Guest

    А пробовал кто-нибудь реализовывать? В utf8 все равно пишет вопросы.
     
  4. kostyl

    kostyl Guest

    такая же херня была, только на php не пробовал. Не решил, да и задача пропала.
     
  5. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
  6. klerick

    klerick Guest

    В инструментах приводится код, который встраивается в HTML страницы и там потом кнопка "Перевести" высвечивается, которую нажимаешь, а скрипт тебя перекидывает на translate.google и все. А мне необходимо из скрипта с помощью PHP обращаться, а потом уже результат выводить.
     
  7. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Заголовки устанавливал? для передаваемого текста.
    И такой момент. Вместо вывода на экран полученный результат сохрани в файл

    И посмотри, что за кодировка там пришла.
     
  8. klerick

    klerick Guest

    Код (Text):
    1.  
    2.     fputs($fp, "POST $path HTTP/1.1\r\n");
    3.     fputs($fp, "Host: $host\r\n");
    4.     fputs($fp, "Referer: $referer\r\n");
    5.     fputs($fp, "Content: text/html; charset=utf-8\r\n");
    6.     fputs($fp, "Content-length: ". strlen($data) ."\r\n");
    7.     fputs($fp, "Connection: close\r\n\r\n");
    8.     fputs($fp, $data);
    Это заголовки!
    Код (Text):
    1.  
    2.  
    3. Я завтра пойду в школу
    4. HTTP/1.1 200 OK Date: Tue, 13 Oct 2009 10:42:41 GMT Expires: Tue, 13 Oct 2009 10:42:41 GMT Cache-Control: private, max-age=86400 Content-Type: text/html; charset=KOI8-R Content-Language: ru Set-Cookie: PREF=ID=161fe98d537c4ae8:NW=1:TM=1255430561:LM=1255430561:S=2idaDWfhwbVp5cTk; expires=Thu, 13-Oct-2011 10:42:41 GMT; path=/; domain=.google.ru Server: translation X-XSS-Protection: 0 Transfer-Encoding: chunked Connection: close
    5.  
    6. ? ?????? ????? ? ?????
    Выше текст, который отправляю, заголовки, которые возвращает сервер и текст который возвращает он же
     
  9. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Бгг.
    У меня все работает.

    PHP:
    1. <?php
    2. $url ='http://translate.google.com.ua/translate_t';
    3. $data = array(
    4.     'text' => 'пришел полный конец наших попыток',
    5.     'sl'   => 'ru',
    6.     'tl'   => 'en',
    7.     'prev' => 'hp',
    8.     'js'   => 'n'
    9.  
    10. );
    11.  
    12. $options = array(
    13.     'http' => array(
    14.         'method' => 'GET',
    15.         'header' => "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 4.0.20506)
    16. Content-Type: 'text/plain; charset=UTF-8\r\n\r\n"
    17.     )
    18.  
    19. );
    20. $context = stream_context_create($options);
    21. $url .= '?' . http_build_query($data);
    22.  
    23. $res = file_get_contents($url, null, $context);
    24. file_put_contents('res.txt', $res);
     
  10. klerick

    klerick Guest

    Что за функция http_build_query? Имеется ввиду простое преобразование элементов $data в text='bla-bla'&sl=ru и т.д. или же что-то сложнее?
     
  11. nimistar

    nimistar Активный пользователь

    С нами с:
    30 май 2007
    Сообщения:
    919
    Симпатии:
    0
    + urlencode значений
     
  12. klerick

    klerick Guest

    Спасибо. Все заработало без urlencoded. С функцией затупил :)
    Я так думаю это из-за метода было. Я использовал POST, а здесь GET.