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
(~21 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
(~23 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
(~23 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
(~23 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
(~23 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
(~23 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
(~23 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];