#web-services #internationalization #google-translate
#веб-сервисы #интернационализация #google-translate
Вопрос:
Я нашел этот код на нескольких веб-сайтах (http://goo.gl/usUSP ):
<?php
// Basic request parameters:
// s = source language
// d = destination language
// q = Text to be translated
$s = $_REQUEST['s'];
if(!$s)echo "translate.php?s=enamp;d=esamp;q=Hello World";
$d = $_REQUEST['d'];
$lang_pair = urlencode($s.'|'.$d);
$q = urlencode($_REQUEST['q']);
// Google's API translator URL
$url = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0amp;q=".$q."amp;langpair=".$lang_pair;
// Make sure to set CURLOPT_REFERER because Google doesn't like if you leave the referrer out
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, "http://www.yoursite.com/translate.php");
$body = curl_exec($ch);
curl_close($ch);
$json = json_decode($body, true);
echo $json['responseData']['translatedText'];
?>
Хорошо, в принципе, из того, что я знаю, каждый вызов с использованием Google translate API должен предоставлять действительный ключ (ключ пользователя).
Однако в приведенном выше примере кода ключ не указан, и это работает! докажите: http://juzcode.com/translate.php?s=enamp;d=esamp;q=Hello World .
У меня есть 3 вопроса по этой проблеме:
1) Как это вообще возможно? (я не очень разбираюсь в php)
2) Ограничение, налагаемое Google, составляет 100 тыс. символов на Google-ключ. В примере не используется ключ. То есть в принципе у меня было бы неограниченное использование?
3) Нарушает ли это http://code.google.com/apis/language/translate/terms.html ? (Я пытался прочитать это, правда! Но я не юрист, я просто хотел бы быть уверенным)
Ответ №1:
1) Как это вообще возможно? (я не очень разбираюсь в php)
Предназначен ли REST API для вызовов на основе AJAX, а не для автоматизированного серверного API.
2) Ограничение, налагаемое Google, составляет 100 тысяч символов на Google-ключ. В примере не используется ключ. То есть в принципе у меня было бы неограниченное использование?
3) Нарушает ли это http://code.google.com/apis/language/translate/terms.html ? (Я пытался прочитать это, правда! Но я не юрист, я просто хотел бы быть уверенным)
Вы не хотите этого делать, потому что:
API Google Translate должен использоваться для пользовательских переводов. Автоматизированные или пакетные запросы любого рода строго запрещены.
использование curl из PHP считается автоматическим запросом. Вместо этого используйте Rest API. Вам понадобится ключ.