API Google Translate
Назначение
PHP скрипт, предназначенный для автоматического перевода текста при помощи сайта translate.google.com.ua
Требования, технологии
Программа использует библиотеку CURL, написана на языке PHP, версии 4.0.2 и выше.
Описание
Сайт translate.google.com.ua получает текст в кодировке UTF-8, и после выполнения запроса возвращает переведенный, на выбранный пользователем язык в той же кодировке.
Приведенный пример переводит текст в кодеровке Windows-1251. Для этого исходный текст перекодируеться в UTF-8, а результирующий (переведенный) обратно в Windows-1251. Для пеекодирования текста в кодировку UTF-8 можно воспользлваться функцией iconv(), либо пользовательской функцией str_encode().
Для перевода текста используеться пользовательская функция google_translate($text_initial, $from_lang, $to_lang) В функцию передаеться три обязательных параметра:
- $text_initial - исходный текст.
- $from_lang - язык исходного текта (ниже приведены обозначения для некоторых языков).
- $to_lang - язык текста перевода (ниже приведены обозначения для некоторых языков).
Обозначения для некоторых языков
"af" - африкаанс (не знаю что это), "sq" - албанский, "ar" - арабский, "be" - белорусский, "bg" - болгарский, "ca" - каталанский, "zh-CN" - китайский, "hr" - хорватский, "cs" - чешский, "da" - датский, "nl" - голландский, "en" - английский, "et" - эстонский, "tl" - филиппинский, "fi" - финский, "fr" - французский, "gl" - галисийский, "de" - немецкий, "el" - греческий, "iw" - иврит, "hi" - хинди, "hu" - венгерский, "is" - исландский, "id" - индонезийский, "ga" - ирландский, "it" - итальянский, "ja" - японский, "ko" - корейский, "lv" - латышский, "lt" - литовский, "mk" - македонский, "ms" - малайский, "mt" - мальтийский, "no" - норвежский, "fa" - персидский, "pl" - польский, "pt" - португальский, "ro" - румынский, "ru" - русский, "sr" - сербский, "sk" - словацкий, "sl" - словенский, "es" - испанский, "sw" - суахили, "sv" - шведский, "th" - тайский, "tr" - турецкий, "uk" - украинский, "vi" - вьетнамский, "cy" - валлийский, "yi" - идиш.
Для справки
Кодировка Windows-1251 содержит все символы русского, украинского, белорусского, сербского и болгарского языков.
Далее рассмотрим простой пример PHP кода выполняющий перевод с английского на русский язык. Скрипт написан в кодировке Windows-1251.
Пример кода на PHP:
function str_encode($string){
$encode = array('А'=>'%D0%90', 'Б'=>'%D0%91', 'В'=>'%D0%92', 'Г'=>'%D0%93', 'Д'=>'%D0%94', 'Е'=>'%D0%95', 'Ё'=>'%D0%81', 'Ж'=>'%D0%96', 'З'=>'%D0%97', 'И'=>'%D0%98', 'Й'=>'%D0%99', 'К'=>'%D0%9A', 'Л'=>'%D0%9B', 'М'=>'%D0%9C', 'Н'=>'%D0%9D', 'О'=>'%D0%9E', 'П'=>'%D0%9F', 'Р'=>'%D0%A0', 'С'=>'%D0%A1', 'Т'=>'%D0%A2', 'У'=>'%D0%A3', 'Ф'=>'%D0%A4', 'Х'=>'%D0%A5', 'Ц'=>'%D0%A6', 'Ч'=>'%D0%A7', 'Ш'=>'%D0%A8', 'Щ'=>'%D0%A9', 'Ъ'=>'%D0%AA', 'Ы'=>'%D0%AB', 'Ь'=>'%D0%AC', 'Э'=>'%D0%AD', 'Ю'=>'%D0%AE', 'Я'=>'%D0%AF', 'а'=>'%D0%B0', 'б'=>'%D0%B1', 'в'=>'%D0%B2', 'г'=>'%D0%B3', 'д'=>'%D0%B4', 'е'=>'%D0%B5', 'ё'=>'%D1%91', 'ж'=>'%D0%B6', 'з'=>'%D0%B7', 'и'=>'%D0%B8', 'й'=>'%D0%B9', 'к'=>'%D0%BA', 'л'=>'%D0%BB', 'м'=>'%D0%BC', 'н'=>'%D0%BD', 'о'=>'%D0%BE', 'п'=>'%D0%BF', 'р'=>'%D1%80', 'с'=>'%D1%81', 'т'=>'%D1%82', 'у'=>'%D1%83', 'ф'=>'%D1%84', 'х'=>'%D1%85', 'ц'=>'%D1%86', 'ч'=>'%D1%87', 'ш'=>'%D1%88', 'щ'=>'%D1%89', 'ь'=>'%D1%8C', 'ъ'=>'%D1%8A', 'ы'=>'%D1%8B', 'э'=>'%D1%8D', 'ю'=>'%D1%8E', 'я'=>'%D1%8F', '<'=>'%3C', '>'=>'%3E', '/'=>'%2F', ' '=>'%20', '&'=>'%26', ','=>'%2C', '='=>'%3D', '"'=>'%22', ';'=>'%3B', ':'=>'%3A', '“'=>'%E2%80%9C', '”'=>'%E2%80%9D', '№'=>'%E2%84%96', '«'=>'%C2%AB', '»'=>'%C2%BB', 'І'=>'%D0%86', 'і'=>'%D1%96', 'Ї'=>'%D0%87', 'ї'=>'%D1%97', 'Є'=>'%D0%84', 'є'=>'%D1%94', 'Ґ'=>'%D2%90', 'ґ'=>'%D2%91', '–'=>'%E2%80%93', '•'=>'%E2%80%A2', "\t"=>'%09', '°'=>'%C2%B0', '’'=>'%E2%80%99', '—'=>'%E2%80%94', ' '=>'%20', '§'=>'%C2%A7', ''=>'%C2%AD', '„'=>'%E2%80%9E');
return str_replace(array_keys($encode), array_values($encode), $string);
}
function google_translate($text_initial, $from_lang, $to_lang){
//$text = iconv('windows-1251', 'UTF-8', $text_initial);
$text = str_encode($text_initial); //можно закомментировать эту и раскомментировать верхнюю строку
$url = "http://translate.google.com.ua/translate_t";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.10) Gecko/2009042523 Ubuntu/8.10 (intrepid) Firefox/3.0.10");
$headers = array(
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*;q=0.8',
'Accept-Language: ru,en-us;q=0.7,en;q=0.3',
'Accept-Encoding: deflate',
'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7'
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, "prev=hp&hl=en&js=n&sl=$from_lang&tl=$to_lang&text=$text");
$result = curl_exec($ch);
curl_close($ch);
if(!$result)
return google_translate($text_initial, $from_lang, $to_lang);
$beg = strpos($result, '<span id=result_box');
$result = substr($result, $beg);
$end = strpos($result, '</span></span>');
$result = substr($result, 0, $end);
$result = str_replace("<br>", "\n", $result);
$result = strip_tags($result);
return iconv('UTF-8', 'windows-1251', $result);
}
$text_for_translate = 'Beauty is found in the women of the three types, Nordic, Mediterranean and Alpine,
but the fundamental and dominating feature of them all is the Mediterranean, and there is a
natural tendency among women to revert to this dark, long-headed, oval-faced type; in fact,
the pictures of the ancient Cretan women with their dark curly hair, large eyes and tip-tilted
noses are reproduced to-day, especially among the Irish. On the other hand there is the
artificial force at work tending to draw the race away from this type and to evolve a negative,
average woman. The result will depend on the freedom of the males to make their choice, and
this is likely to increase. It is an important factor, as those who have acquaintance with lower
middle-class nonconformists will realize. There the influence of the "chapel-connection"
is very strong, and the tendency when I was a boy was to induce a young man to marry a
godly young woman well known is his circle. To marry for beauty was considered a deadly
sin, and the tenets of Christianity were invoked in the interests of mortification of the flesh.
This debased, Alpine-Puritan-Nonconformist ideal is responsible for much of the appalling
ugliness we see around us to-day, both physical and artistic. During the war London was
crowded with beautiful women, the bolder and more enfranchised spirits being drawn into
public activity from all corners of the country. When the war ceased there was a sad reversion,
and we meet more of the spectacled, long-faced, adenoid-jawed, the products of an uneugenic
religion, malnutrition, bad social conditions and race reversion. But there are signs that the
pretty, well-dressed London girl is reasserting herself.
On the whole, in comparing the beauty of the Italian woman and the charm of the French
with the average, uncomely lower-middle class women of our own country, I cannot help
feeling that we are suffering from the sins of our fathers in neglecting life and the body for a
problematic advantage hereafter. Fortunately the neo-Georgian feeling for beauty is doing what
it can to restore the race.';
echo '<pre>';
echo google_translate($text_for_translate, "en", "ru");
echo '</pre>';
?>
Выводится на экран:
но фундаментальных и Доминантой из них является Средиземное море, и есть
естественная тенденция среди женщин вернуться к этой темной, давно возглавлял, овальной сталкиваются типа, в самом деле,
фотографии древних женщин критского с темными вьющимися волосами, большими глазами и вздернутый кончик
носов приводятся в день, особенно среди ирландцев. С другой стороны, существует
искусственной силы на работе стремящейся привлечь гонки от этого типа и развиваться отрицательным,
Средняя женщина. Результат будет зависеть от свободы мужчин, чтобы сделать свой выбор, и
это, вероятно, увеличится. Это важный фактор, как те, кто знакомый с более низкими
среднего класса нонконформистов поймут. Там влияние "часовня-связь"
очень сильный, и тенденция, когда я был мальчиком, чтобы побудить молодого человека вступать в брак
благочестивой молодая женщина хорошо известна его круга. Выйти замуж за красоты считалась смертельной
грех, и догматы христианства были призваны в интересах умерщвление плоти.
Это debased, альпийские-пуританин-нонконформистского идеально отвечает за большую часть ужасно
безобразие мы видим вокруг нас сегодня, как физические, так и художественных. Во время войны Лондон
переполнен красивыми женщинами, смелее и избирательные права духов втягивается в
общественной активности из всех уголков страны. Когда война прекратилась было печальное возвращение,
, и мы встречаемся больше в очках, с вытянутым лицом, аденоидной челюстью, продукты uneugenic
религии, недоедание, плохие социальные условия и расы реверсии. Но Есть признаки того, что
красивая, хорошо одетая девушка Лондоне восстанавливает себя.
В целом, в сравнении красоту итальянской женщины и очарование французской
со средним, красивой ниже среднего класса женщин нашей страны, я не могу помочь
ощущение, что мы страдаем от грехов отцов наших в пренебрежении жизнью и телом для
проблематично преимущество в дальнейшем. К счастью нео-грузинских чувство красоты делает то, что
она может восстановить гонки.
Как видите, перевод не совершенен.
Переводы текстов в UTF-8.
Для перевода текстов в кодировке UTF-8 преобразование кодировок ненужно, однако Вы можете воспользоваться функцией str_encode() для преобразования символов для передачи их в GET либо POST запросе HTTP протокола.
Используйте для этого весь приведенный код в кодировке UTF-8: скопируйте код в буфер обмена и сохраните в текстовом редакторе (либо в среде разработке PHP) с указанием выбранной кодировки UTF-8.
