Рабочие будни

Архивы

Предложения для магазинов ламинат Германия у метро Медведково недорого. . бронирование гостиниц москвы . Очистка высолов. Производство пластификаторов с помощью очистителей. Очистка высолов . На веб-сайте этой компании найдете гранитные памятники москва 8301 - Москва . качественная обработка дерева для пола и для вагонки  Новости Казахстана

Использование 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&amp;q=".urlencode($s_text)."&amp;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 в последней строке. Как вариант использование для  автоперевода иностранных блогов. А вы что скажете? Куда можно пристроить автоматический корявый перевод?

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

16 комментариев to “Использование Google Translate API в PHP”

  1. Жомарт Says:

    Его можно брать как основу для статей, обрабатывать напильником и выкладывать на блог.

  2. Валентин Says:

    Так же можно зеркало буржуйского сайта сделать. Типа ГС эдакий. Можно даже не обрабатывать. Но ГС это не наше

  3. Gonzo Punkass Says:

    Отличное решение для многоязычных сайтов. Например, админ забудет добавить текст для англоязычной версии документа. В таком случае можно делать проверку присутствия / отсутствия текста и в случае его отсутствия автоматически переводить через гугл.

  4. madbirdy Says:

    Ведь знал, что и свои могут... Так нет надо было на phpclasses.org лесть за их танцующими и поющими классами!

    Валентин, спасибо вам большое за простой и рабочий(!) код!

    С меня ссылка =)

  5. Andipas Says:

    Хм... Проверил не работает.

  6. proq Says:

    Таки не работает.

    Здесь гугл выложил как скриптами такое сделать

    code.google.com/intl/ru-R...tation/#Examples

  7. Дмитрий Says:

    Всё работает, если заменить & на &

  8. hecka Says:

    но ничего не работает если переводить с русского на инглиш :(

    я уже перепробовал на че фантазии хватило, на нужный результат не вышел :(

  9. onlinetv Says:

    У меня тоже не работает — $json['responseStatus'] равно не 200, а 204

  10. Константин Says:

    Спасибо большое. как раз то, что нужно.

    Насчёт автоматического перевода недостающих страниц немного не согласен. ИМХО, лучше просто гугловский же бар выводить просто. Опять же — сугубо ИМХО.

    А вот как подспорье при генерации страниц — самое оно.

    Мне, например, надо заголовки переводить не в транслит, а в англоязычный вариан. Как раз то, что надо.

  11. NoX Says:

    хотелось бы добавить, т.к. запрос идёт методом GET, то есть существенные ограничения на объём передаваемого текста. И при большом объёме гугл возвращает ответ "The request url is to large". С другой стороны, если зайти на офф. сайт переводчика гугл, то видим что никаких проблем с переводом большого текста там нет. После самостоятельного изучения вопроса, оказалось что в зависимости от длины текста, они посылают разные запросы. При переводе небольших текстов используется АРI, а при больших, делается непосредственно POST-запрос к самому сервису, и ответ возвращается уже в виде НТМL-куска, с тегами и самим текстом перевода. Это конечно не JSОN, но средствами того же РНР отпарсить ответ не проблема. Пара нюансов, если использовать АРI, то параметр "авто определения языка", при передаче $langpair, будет пустым, а при запросе через РОSТ, к сервису, значение будет "аutо".

    И ещё, у кого проблемы с русским языком, попробуйте поэксперементировать с кодировкой, используя UTF-8 вместо CP1251, или наоборот.

  12. Maxim Says:

    А не знаете, как с помощью гугла получить звуковой перевод введенного слова?

  13. Dmitry Says:

    А с русского языка перевод не поддерживается ( http://code.google.com/intl/ru/apis/ajaxlanguage/...

  14. Aleksey Says:

    вот это в примере надо поменять

    urlencode ($s_lang.'|'.$d_lang);

    на

    urlencode ($s_lang).'|'.urlencode ($d_lang);

  15. Valentin Says:

    Уверены? Сомнительно как то энкодить переменную дважды.

  16. Vista Says:

    Очень часто curl заблокирован на бесплатных хостингах, из-за чего соответственно не будет работать перевод, поэтому стоит знающим людям в таких случаях переписать на socket-ы

Leave a Reply