Google Translate API

18.10.2009 23:06

Нет ничего проще, чем использовать переводчик на своем сайте. Например, как я уже упоминал, для автоматического перевода названий стран в своей Google Analytics статистике.
Код простого класса для работы с Google Translate API под катом.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class Google_Translate_API {
	function translate($text, $from = '', $to = 'en') {
		$url = 'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q='.rawurlencode($text).'&langpair='.rawurlencode($from.'|'.$to);
		$response = file_get_contents(
			$url,
			null,
			stream_context_create(
				array(
					'http'=>array(
					'method'=>"GET",
					'header'=>"Referer: http://".$_SERVER['HTTP_HOST']."/\r\n"
					)
				)
			)
		);
		if (preg_match("/{\"translatedText\":\"([^\"]+)\"/i", $response, $matches)) {
			return self::_unescapeUTF8EscapeSeq($matches[1]);
		}
		return $text;
	}
 
	function _unescapeUTF8EscapeSeq($str) {
		return preg_replace_callback("/\\\u([0-9a-f]{4})/i", create_function('$matches', 'return html_entity_decode(\'&#x\'.$matches[1].\';\', ENT_NOQUOTES, \'UTF-8\');'), $str);
	}
}

Пример использования для перевода с английского на русский язык:

1
$text = Google_Translate_API::translate($text, 'en', 'ru');

Первый параметр функции – текст для перевода, второй язык с которого переводить, третий – язык на который переводить.
Списки языков для перевода можно посмотреть тут. Кстати, для авто определения языка с которого переводить, можете использовать пустые кавычки.

1
$text = Google_Translate_API::translate($text, '', 'ru');

Результат возвращается в UTF-8. Если Вас, как и меня не устраивает такой расклад вещей, можно модифицировать строку 17:

17
return iconv('UTF-8','WINDOWS-1251',self::_unescapeUTF8EscapeSeq($matches[1]));

Также, как и результат, текст отправляемый на Google Translate API должен быть в UFT-8.
Если у вас он в CP-2151, то придется еще добавить между строчками 2 и 3:

2
$text = iconv('WINDOWS-1251','UTF-8',$text);

ПС: не забывайте, что для работы Google Translate API на сервере должна быть включена опция allow_url_fopen и iconv для перекодировки в windows-1251.


Метки: , ,


Оставить камент