Использование Google Translate API в PHP
У Google реализовано множество различных API. Я предлагаю ознакомиться с сервисом перевода. Ниже в примере будет показано, как легко перевести исходную фразу с одного языка в другой используя PHP и Google Translate API.
Запросы к Google Translate API это HTTP запросы, а ответ возвращается в формате JSON.
Пример:
< ? function translate($s_text, $s_lang, $d_lang){
$url = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=".urlencode($s_text)."&langpair=".urlencode($s_lang.'|'.$d_lang); $c = curl_init();
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_REFERER, "http://gritsinger.com");
$b = curl_exec($c);
curl_close($c);
$json = json_decode($b, true);
if ($json['responseStatus'] != 200)return false;
return $json['responseData']['translatedText'];
}
print(translate('hello world, this example, easy translate', 'en', 'ru')); ?>
$url = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=".urlencode($s_text)."&langpair=".urlencode($s_lang.'|'.$d_lang); $c = curl_init();
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_REFERER, "http://gritsinger.com");
$b = curl_exec($c);
curl_close($c);
$json = json_decode($b, true);
if ($json['responseStatus'] != 200)return false;
return $json['responseData']['translatedText'];
}
print(translate('hello world, this example, easy translate', 'en', 'ru')); ?>
Направление перевода легко меняется заменой en и ru в последней строке. Как вариант использование для автоперевода иностранных блогов. А вы что скажете? Куда можно пристроить автоматический корявый перевод?
января 13, 2009 at 17:55
Его можно брать как основу для статей, обрабатывать напильником и выкладывать на блог.
января 13, 2009 at 18:19
Так же можно зеркало буржуйского сайта сделать. Типа ГС эдакий. Можно даже не обрабатывать. Но ГС это не наше
февраля 2, 2009 at 20:02
Отличное решение для многоязычных сайтов. Например, админ забудет добавить текст для англоязычной версии документа. В таком случае можно делать проверку присутствия / отсутствия текста и в случае его отсутствия автоматически переводить через гугл.
июля 17, 2009 at 3:19
Ведь знал, что и свои могут... Так нет надо было на phpclasses.org лесть за их танцующими и поющими классами!
Валентин, спасибо вам большое за простой и рабочий(!) код!
С меня ссылка =)
июля 26, 2009 at 10:49
Хм... Проверил не работает.
августа 26, 2009 at 20:36
Таки не работает.
Здесь гугл выложил как скриптами такое сделать
code.google.com/intl/ru-R...tation/#Examples
декабря 29, 2009 at 23:40
Всё работает, если заменить & на &
января 17, 2010 at 19:29
но ничего не работает если переводить с русского на инглиш :(
я уже перепробовал на че фантазии хватило, на нужный результат не вышел :(
января 23, 2010 at 21:19
У меня тоже не работает — $json['responseStatus'] равно не 200, а 204
марта 3, 2010 at 18:35
Спасибо большое. как раз то, что нужно.
Насчёт автоматического перевода недостающих страниц немного не согласен. ИМХО, лучше просто гугловский же бар выводить просто. Опять же — сугубо ИМХО.
А вот как подспорье при генерации страниц — самое оно.
Мне, например, надо заголовки переводить не в транслит, а в англоязычный вариан. Как раз то, что надо.
апреля 28, 2010 at 9:33
хотелось бы добавить, т.к. запрос идёт методом GET, то есть существенные ограничения на объём передаваемого текста. И при большом объёме гугл возвращает ответ "The request url is to large". С другой стороны, если зайти на офф. сайт переводчика гугл, то видим что никаких проблем с переводом большого текста там нет. После самостоятельного изучения вопроса, оказалось что в зависимости от длины текста, они посылают разные запросы. При переводе небольших текстов используется АРI, а при больших, делается непосредственно POST-запрос к самому сервису, и ответ возвращается уже в виде НТМL-куска, с тегами и самим текстом перевода. Это конечно не JSОN, но средствами того же РНР отпарсить ответ не проблема. Пара нюансов, если использовать АРI, то параметр "авто определения языка", при передаче $langpair, будет пустым, а при запросе через РОSТ, к сервису, значение будет "аutо".
И ещё, у кого проблемы с русским языком, попробуйте поэксперементировать с кодировкой, используя UTF-8 вместо CP1251, или наоборот.
мая 17, 2010 at 2:35
А не знаете, как с помощью гугла получить звуковой перевод введенного слова?
июня 22, 2010 at 23:23
А с русского языка перевод не поддерживается ( http://code.google.com/intl/ru/apis/ajaxlanguage/...
июля 15, 2010 at 15:50
вот это в примере надо поменять
urlencode ($s_lang.'|'.$d_lang);
на
urlencode ($s_lang).'|'.urlencode ($d_lang);
июля 15, 2010 at 10:21
Уверены? Сомнительно как то энкодить переменную дважды.
августа 4, 2010 at 4:00
Очень часто curl заблокирован на бесплатных хостингах, из-за чего соответственно не будет работать перевод, поэтому стоит знающим людям в таких случаях переписать на socket-ы