переводчик

stalxed

Новичок
переводчик

Добавляю новую функцию своему icq боту, переводчик. Вроде всё ништяк, если поступает английский текст, а вот если русский то фигня получается, как я понял проблема в том что функция UrlEncode хреного кодирует текст русский, это трабл моей версии php или я туплю?
PHP:
list($login,$lang,$text) = split(" ",$msg['text'], 3);
$translatetext=UrlEncode($text);
$sitex="http://translate.google.com/translate_t?hl=ru&ie=UTF8&text=".$translatetext."&langpair=".$lang."&sumbit=Translate";
$lCQ->send_message($msg['uin'],$sitex);
$stringcсс=file_get_contents($sitex, False);
$nacalo='<div id=result_box dir=ltr>';
$conec='</div></td></tr><tr><td id=submitcell><table><td id=selectcell>';
preg_match("!".preg_quote($nacalo).".*".preg_quote($conec)."!si",$stringcсс,$inf);
$inf[0]=str_replace('</div></td></tr><tr><td id=submitcell><table><td id=selectcell>', "", $inf[0]);
$inf[0]=str_replace('<div id=result_box dir=ltr>', "", $inf[0]);
$inf[0]=convert_cyr_string($inf[0], k, w);
$tran=trim($inf[0]);
$ICQ->send_message($msg['uin'],$tran);
$msg['text']="exit";
 

donflash

Вареник клуба
Да, это ты тупишь ;)

Когда поступает русский текст, надо его в utf-8 переводить:

Код:
if ($lang == 'ru') $translatetext = iconv('windows-1251', 'utf-8', $translatetext);
P.s.
Неужели, ты не заметил:

Код:
http://translate.google.com/translate_t?hl=ru&ie=[B]UTF8[/B]&text=
 

stalxed

Новичок
2 donflash спасибо!!! что-то ступил вечером..... Видать измотался к вечеру, после 4 часов ботанья физики)
Я тут спрашивал как сделать переводчик никто ничего вразумительного не ответил... Отвечу сам, может кому пригодится информация. Вот код, думаю в комментариях не нуждается. Проверен правда только на переводе русский-англ и наоборот, остальные не проверял...
PHP:
<?
#переменная которую нужно перевести
$text="I love php!";
$text = iconv('windows-1251', 'utf-8', $text);
$translatetext=urlencode($text);
$lang='en|ru';
#в качестве $lang можно указывать:
#Значение: ar|en. Перевод: Arabic to English BETA.
#Значение: zh|en. Перевод: Chinese to English BETA.
#Значение: zh-CN|zh-TW Перевод: Chinese (Simplified to Traditional) BETA.
#Значение: zh-TW|zh-CN. Перевод: Chinese (Traditional to Simplified) BETA.
#Значение: en|ar. Перевод: English to Arabic BETA.
#Значение: en|zh-CN. Перевод: English to Chinese (Simplified) BETA.
#Значение: en|zh-TW. Перевод: English to Chinese (Traditional) BETA.
#Значение: en|fr. Перевод: English to French.
#Значение: en|de. Перевод: English to German.
#Значение: en|it. Перевод: English to Italian.
#Значение: en|ja. Перевод: English to Japanese BETA.
#Значение: en|ko. Перевод: English to Korean BETA.
#Значение: en|pt. Перевод: English to Portuguese.
#Значение: en|ru. English to Russian BETA.
#Значение: en|es. Перевод: English to Spanish.
#Значение: fr|en. Перевод: French to English.
#Значение: fr|de. Перевод: French to German.
#Значение: de|en. Перевод: German to English.
#Значение: de|fr. Перевод: German to French.
#Значение: it|en. Перевод: Italian to English.
#Значение: ja|en. Перевод: Japanese to English BETA.
#Значение: ko|en. Перевод: Korean to English BETA.
#Значение: pt|en. Перевод: Portuguese to English.
#Значение: ru|en. Перевод: Russian to English BETA.
#Значение: es|en. Перевод: Spanish to English.
$sitex="http://translate.google.com/translate_t?hl=ru&ie=UTF8&text=".$translatetext."&langpair=".$lang."&sumbit=Translate";
$stringcсс=file_get_contents($sitex, False);
$nacalo='<div id=result_box dir=ltr>';
$conec='</div></td></tr><tr><td id=submitcell><table><td id=selectcell>';
preg_match("!".preg_quote($nacalo).".*".preg_quote($conec)."!si",$stringcсс,$inf);
$inf[0]=str_replace('</div></td></tr><tr><td id=submitcell><table><td id=selectcell>', "", $inf[0]);
$inf[0]=str_replace('<div id=result_box dir=ltr>', "", $inf[0]);
$inf[0]=convert_cyr_string($inf[0], k, w);
$trantext=trim($inf[0]);
#вывод перевода
echo $trantext;
?>
 

Valery Shostak

Новичок
В данный момент скрипт не работает.
Я полагаю, из-за внедрения JavaScript.

Кто в курсе, какие есть альтернативы?
Gogle Translate API не устраивает. В основном, из-за использования JS и ограничения в 500 символов (в реальности, с кириллицей, ещё меньше).
 

Армян

Новичок
Там пост запрос отправляется. Можно курлом воспользоваться :)
 

Valery Shostak

Новичок
А не суть важно, чем отправлять запрос.
Если раньше, как я понимаю, в <div id=result_box dir=ltr></div> возвращался результат, то теперь возвращается пустой div, innerHTML которого присвается джаваскриптом, который в свою очередь выполняется на стороне клиента. А как получить итоговый HTML с исполненными скриптами, я не знаю...
 

Армян

Новичок
С отключенным яваскриптом в браузере у меня все замечательно работает - делаем выводы.
 
Сверху