[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Google translate API на PHP
kasichvadim
Здравствуйте! Возникла необходимость перевода текстов на сайте. В нете нашел информацию о использовании Google translate API.

Вобщем есть код:

PHP
<? 
function translate
($s_text, $s_lang, $d_lang){
$post_data['q']=$s_text;
$post_data['langpair']=$s_lang."|".$d_lang;
$query=http_build_query($post_data);
$url = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0";
$c = curl_init();
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_POST, 0);
curl_setopt($c, CURLOPT_POSTFIELDS, $query);
$b = curl_exec($c);
curl_close($c);
$json = json_decode($b, true);
if ($json['responseStatus'] != 200)return false;
return $json['responseData']['translatedText'];
}


когда пытаюсь вызвать функцию:

PHP
echo translate('Hello', 'en', 'ru');


то все ок. Текст нормально переводится. Но... когда пытаюсь с русского перевести на английский:

PHP
echo translate('Привет', 'ru', 'en');


то функция возвращает false

Видимо проблема в кириллице, которая отправляется в пост запросе.

Как выйти с этого положения?

Большое спасибо!



Спустя 10 часов, 13 минут, 35 секунд (11.08.2009 - 10:05) kasichvadim написал(а):
Большое спасибо за помощь wink.gif

Проблему решил.

PHP
<? 
function 
translate($s_text$s_lang$d_lang){
$s_text iconv("windows-1251""utf-8"$s_text);
$post_data['q']=$s_text;
$post_data['langpair']=$s_lang."|".$d_lang;
$query=http_build_query($post_data);
$url "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0";
$c curl_init();
curl_setopt($cCURLOPT_URL$url);
curl_setopt($cCURLOPT_RETURNTRANSFER1);
curl_setopt($cCURLOPT_POST0);
curl_setopt($cCURLOPT_POSTFIELDS$query);
$b curl_exec($c);
curl_close($c);
$json json_decode($btrue);
if (
$json['responseStatus'] != 200)return false;
return 
$json['responseData']['translatedText'];
}

echo 
translate('Все работает''ru''en');



Текст для перевода нужно было передавать в utf-8

Спустя 1 месяц, 7 дней, 1 час, 4 минуты, 38 секунд (18.09.2009 - 11:09) Roman написал(а):
Цитата (kasichvadim @ 10.08.2009 - 20:51)
Здравствуйте! Возникла необходимость перевода текстов на сайте. В нете нашел информацию о использовании Google translate API.

Вобщем есть код:

PHP
<? 
function translate
($s_text, $s_lang, $d_lang){
$post_data['q']=$s_text;
$post_data['langpair']=$s_lang."|".$d_lang;
$query=http_build_query($post_data);
$url = "http://[SPAN=darling]ajax[/SPAN].googleapis.com/[SPAN=darling]ajax[/SPAN]/services/language/translate?v=1.0";
$c = curl_init();
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_POST, 0);
curl_setopt($c, CURLOPT_POSTFIELDS, $query);
$b = curl_exec($c);
curl_close($c);
$json = json_decode($b, true);
if ($json['responseStatus'] != 200)return false;
return $json['responseData']['translatedText'];
}


когда пытаюсь вызвать функцию:

PHP
echo translate('Hello', 'en', 'ru');


то все ок. Текст нормально переводится. Но... когда пытаюсь с русского перевести на английский:

PHP
echo translate('Привет', 'ru', 'en');


то функция возвращает false

Видимо проблема в кириллице, которая отправляется в пост запросе.

Как выйти с этого положения?

Большое спасибо!

Добрый день.
<?
function translate($s_text, $s_lang, $d_lang){
$post_data['q']=$s_text;
$post_data['langpair']=$s_lang."|".$d_lang;
$query=http_build_query($post_data);
$url = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0";
$c = curl_init();
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_POST, 0);
curl_setopt($c, CURLOPT_POSTFIELDS, $query);
$b = curl_exec($c);
curl_close($c);
$json = json_decode($b, true);
if ($json['responseStatus'] != 200)return false;
return $json['responseData']['translatedText'];
}
echo translate('Hello', 'en', 'ru');
?>

У меня при выполнении этого кода - возвращается Я╤А╨╕╨▓╨╡╤В
В чем может быть проблема?

Спустя 1 день, 12 часов, 51 минута, 11 секунд (20.09.2009 - 00:01) AxeJ написал(а):
Добрый день!
У меня немножко другая проблема с этим скриптом... Как в него добавить форму дляввода текста? (Так чтоб было поле для ввода текста, кнопка "Перевод" И поле - для вывода текста!)
Подскажите пожалуйста!!!
Зарание благодарен!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.