UPD: Перевод текста с помощью Google Translate на php

Думаю многим уже известно, что с помощью Google Translate можно делать незатейливые рерайты текста. Нужно просто перевести текст в другой язык (например, английский), затем перевести в изначальный. Сколько не пробовал - получается уникальный текст :). Правда читабельность иногда чрезвычайно ухудшается..

Предлагаю вашему вниманию скрипт хелпера для перевода текста с помощью Google Переводчика:

  1. <?php
  2. /**
  3. * @package Google Translate Helper
  4. * @author B1rdEX http://stuff-coding.blogspot.com/
  5. */
  6. // языковая пара из_какого_языка|в_какой переводить, список на translte.google.com
  7. $langpair = 'ru|en';
  8. // текст для перевода. Максимальная длина = 5120 (проверял на момент написания поста)
  9. $text = 'Важная законодательная инициатива президента: Россия может использовать свои Вооруженные силы за рубежом для отражения нападения, предотвращения агрессии против другого государства, защиты своих граждан и борьбы с пиратством. Президентский законопроект уже внесен в Госдуму.';
  10. function translate( $text, $langpair ) {
  11. $postdata = http_build_query (
  12. array (
  13. 'v' => '1.0',
  14. // обрезаем строку и переводим в Юникод
  15. 'q' => iconv ( 'windows-1251', 'utf-8', substr( strip_tags( $text ), 0, 5120 ) ),
  16. 'langpair' => $langpair,
  17. )
  18. );
  19. $options = array (
  20. 'http' => array (
  21. 'method' => 'POST',
  22. 'header' => 'Content-type: application/x-www-form-urlencoded',
  23. 'referrer' => 'http://google.com',
  24. 'content' => $postdata
  25. )
  26. );
  27. $context = stream_context_create ( $options );
  28. // Google возвращает результат в JSON
  29. $result = json_decode( file_get_contents ( 'http://ajax.googleapis.com/ajax/services/language/translate', false, $context ), 1 );
  30. return $result['responseStatus'] == 200
  31. ? iconv( 'utf-8', 'windows-1251', $result['responseData']['translatedText'] )
  32. : 'Error!' . "n" . 'Code: ' . $result['responseStatus'] . "n" . 'Details: ' . $result['responseDetails'];
  33. }
  34. echo translate( $text, $langpair );

6 комментариев: