Implementando um tradutor de línguas no seu web site
Implementando o script - parte final
O coração do nosso programa é a parte que efetua comunicação com o babelfish. Abriremos uma conexão via sockets com o programa engine e enviaremos as informações necessárias, que serão as constantes que definimos, o texto a ser traduzido e a linguagem selecionada. Neste procedimento estaremos simulando um browser, que envia a requisição ao programa CGI e aguarda a resposta. Assim que recebermos a resposta, trataremos o código HTML retornado com expressões regulares de modo a buscar apenas o que nos interessa, o texto traduzido.
Vamos ao código da rotina:
Prontinho, um tradutor web acabou de sair da boca do forno ! Que conclusão podemos tirar deste exemplo prático de programa complexo em forma simples ? Hmmm, conclui-se que associando os recursos de rede com expressões regulares temos a bomba atômica e o detonador em mãos para causar bastante barulho Internet à fora. Não deixem de dar atenção especial à esses dois tópicos, valem à pena.
Atenciosamente,
Fábio Berbert de Paula
http://www.vivaolinux.com.br
O coração do nosso programa é a parte que efetua comunicação com o babelfish. Abriremos uma conexão via sockets com o programa engine e enviaremos as informações necessárias, que serão as constantes que definimos, o texto a ser traduzido e a linguagem selecionada. Neste procedimento estaremos simulando um browser, que envia a requisição ao programa CGI e aguarda a resposta. Assim que recebermos a resposta, trataremos o código HTML retornado com expressões regulares de modo a buscar apenas o que nos interessa, o texto traduzido.
Vamos ao código da rotina:
<?php function traduzir($urltext,$lp) { // definição de variáveis $host = 'babelfish.altavista.com'; // codificar a linha que será enviada ao programa CGI do babelfish $vars = "doit=$DOIT&tt=$TT&urltext=" . urlencode(utf8_encode($urltext)) . "&lp=$lp"; $url = "/tr?$vars"; // efetuando conexão com o babelfish $fp = fsockopen ($host, 80, $errno, $errstr, 30); if (!$fp) { echo "Ocorreu um erro ao tentar conexão com $host: $errstr ($errno)<br>\n"; exit; } else { // informações adicionais: nossa localidade e mapa // de caracteres $addinfo .= "Accept-Language: en\r\nAccept-Charset: iso-8859-1,*,utf-8\r\n"; // envie as informações e jogue todo o retorno para a // variável $html fputs ($fp, "GET $url HTTP/1.1\r\nHost: $host\r\n$addinfo\r\n"); while (!feof($fp)) { $html .= fgets ($fp,128); } fclose ($fp); } // removendo quebras de linhas do resultado para facilitar // a expressão regular $html = ereg_replace("\n"," ",$html); // capturando o texto traduzido, que está na linha que casa // com a expressão abaixo ereg("name=\"q\" value=(.*)>",$html,$saida); $traducao = $saida[1]; $traducao = ereg_replace(">.*$","",$traducao); // decodificar a string, pois os acentos vem em formato UNICODE, // ilegíveis para nós $traducao = utf8_decode($traducao); return($traducao); } ?>
Prontinho, um tradutor web acabou de sair da boca do forno ! Que conclusão podemos tirar deste exemplo prático de programa complexo em forma simples ? Hmmm, conclui-se que associando os recursos de rede com expressões regulares temos a bomba atômica e o detonador em mãos para causar bastante barulho Internet à fora. Não deixem de dar atenção especial à esses dois tópicos, valem à pena.
Atenciosamente,
Fábio Berbert de Paula
http://www.vivaolinux.com.br
Cara gostei do script mas tem so um problema, eu coloco tipo um texto com mais de 40 caracteres e ele nao traduz nd pq isso cara será q vc poderia me ajudar.......
qualquer duvida entre e veja o meu script e coloque um texto tipo mais q 40 caracteres e veja se traduz algo nao da cara ..... so funciona tipo o maximo uma s 30 palavras.........
.
até mais
a o endereço é http://kelvinz.netmaster.inf.br/trad.php
qualquer duvida entre e veja o meu script e coloque um texto tipo mais q 40 caracteres e veja se traduz algo nao da cara ..... so funciona tipo o maximo uma s 30 palavras.........
.
até mais
a o endereço é http://kelvinz.netmaster.inf.br/trad.php
10/05/2004 5:55pm
(~20 anos atrás)
Achei otimo o artigo!!! estava precisando de algo do tipo .
[]'s
Lucas
[]'s
Lucas
16/10/2003 6:13am
(~21 anos atrás)
Italo,
Tenta por IP:
$fp = fsockopen ('216.239.39.120', 80, $errno, $errstr, 30);
[]'s
Fábio
Tenta por IP:
$fp = fsockopen ('216.239.39.120', 80, $errno, $errstr, 30);
[]'s
Fábio
27/09/2002 7:34am
(~22 anos atrás)
Fábio, o translate.google.com deu o mesmo erro..... tentei o do babalfish..... deu o mesmo
Fiz o que vc falou... coloquei o babelfish.altavista.com na url e ele executou
O q será veio??????
Fiz o que vc falou... coloquei o babelfish.altavista.com na url e ele executou
O q será veio??????
26/09/2002 12:09pm
(~22 anos atrás)
Ítalo,
Verifique se a sua máquina está conseguindo resolver o host translate.gogle.com. Aqui funciona perfeitamente. Veja em www.vivaolinux.com.br/phpscripts/ uma versão online do script.
[]'s
Fábio
Verifique se a sua máquina está conseguindo resolver o host translate.gogle.com. Aqui funciona perfeitamente. Veja em www.vivaolinux.com.br/phpscripts/ uma versão online do script.
[]'s
Fábio
26/09/2002 7:25am
(~22 anos atrás)
Olá,
Na página 2 existe o seguinte código:
<?
if ($urltext) {
$traducao = traduzir($urltext,$lp);
} else {
$traducao = '-';
}
?>
Se o usuário tiver submetido o formulário com algum texto a ser traduzido, ele executa a linha $traducao = traduzir($urltext,$lp).
Na página 3 está definida a função traduzir.
Fábio
Na página 2 existe o seguinte código:
<?
if ($urltext) {
$traducao = traduzir($urltext,$lp);
} else {
$traducao = '-';
}
?>
Se o usuário tiver submetido o formulário com algum texto a ser traduzido, ele executa a linha $traducao = traduzir($urltext,$lp).
Na página 3 está definida a função traduzir.
Fábio
26/09/2002 7:22am
(~22 anos atrás)
E aí Fabio, beleza.... amigo, deu esse erro.
Ocorreu um erro ao tentar conexão com translate.google.com: ()
Ocorreu um erro ao tentar conexão com translate.google.com: ()
26/09/2002 6:25am
(~22 anos atrás)
Olá pessoal,
Já que deram a idéia, fiz a versão desse script para o engine do Google, está publicado na sessão de scripts do site:
Título: Tradutor de Idiomas (Google)
Categoria: Internet/Network
Atenciosamente,
Fábio Berbert de Paula
fabio@vivaolinux.com.br
www.vivaolinux.com.br
Já que deram a idéia, fiz a versão desse script para o engine do Google, está publicado na sessão de scripts do site:
Título: Tradutor de Idiomas (Google)
Categoria: Internet/Network
Atenciosamente,
Fábio Berbert de Paula
fabio@vivaolinux.com.br
www.vivaolinux.com.br
25/09/2002 9:09am
(~22 anos atrás)
substitui:
ereg("name=\"q\" value=(.*)>",$html,$saida);
$traducao = $saida[1];
$traducao = ereg_replace(">.*$","",$traducao);
por:
$saida = explode("<td bgcolor=white class=s><div style=padding:10px;>", $html);
$saida = explode("</div></td>", $saida[1]);
$traducao = $saida[0];