sábado, 26 de novembro de 2011

(PHP) Função para traduzir textos no Google Translate

Essa função aqui eu demorei horas para fazer. Ainda lembro o prestigio que tive após acaba-la. Tudo começou quando eu não estava conseguindo uma API eficiente para o Google Translate. Pensando nisto criei minha própria função que retorna o texto traduzido. Sem contar que até o final deste ano a Google terminará suas atividades com APIs para Google Translate devido ao alto índice de requisições na página deles (também, foram implementar tradução automatia no Google Chrome)

A função utiliza Sockets para efetuar a conexão entre a página e o site da Google. Espero que gostem

function getTranslationText($texto, $entrada, $saida) //Data Base by Google
{
//======= [ Tratar Endereço ] ==============================
$UrlTranslate = parse_url("http://translate.google.com/translate_t");
$DataReceived = " ";
$post_google = array('sl' => $entrada, 'tl' => $saida ,'text' => utf8_encode(($texto)));
$post_google = http_build_query(($post_google));

//======= [ Abrir a conexão ] ====================
$TranslateSock = fsockopen($UrlTranslate['host'], 80, $errno, $errstr, 30);
if (!$TranslateSock)
{
fclose($TranslateSock);
die("[ERRO] Erro de conexão, verifique o pedido");
}
fputs($TranslateSock, "POST ". $UrlTranslate['path'] . " HTTP/1.1\r\n");
fputs($TranslateSock, "Host: " . $UrlTranslate['host'] . " \r\n");
fputs($TranslateSock, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($TranslateSock, "Content-length: ". strlen($post_google) ."\r\n");
fputs($TranslateSock, "Connection: close\r\n\r\n");
fputs($TranslateSock, $post_google);
while(!feof($TranslateSock))
{
$DataReceived .= fgets($TranslateSock, 128);
}
fclose($TranslateSock);
//======= [ Tratar resposta ] ====================
$DataReceived = explode("short_text", $DataReceived);
$DataReceived[1] = strip_tags(substr($DataReceived[1] ,2, -(strlen($DataReceived[1]) - strpos($DataReceived[1], "< / span>") )));
return ($DataReceived[1]);
}
* Os textos destacados em negrito são para retirar espaços

Também tem um link para ver a função: http://pastebin.com/ruzTSdxG

Aqui um exemplo do uso da mesma:
echo(getTranslationText("Testando o sistema de tradutor", "pt", "en"));

Criado por Bruno da Silva

Um comentário:

  1. tentei usar sua função, porém não está funcionando será por quê? valew.

    ResponderExcluir