-1

Implementando um tradutor de línguas no seu web site

criado por Fábio Berbert de Paula em 24/09/2002 12:34pm
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:

<?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

Comentários:

Mostrando 1 - 10 de 14 comentários
Cara, eu tive esse problema tb, e resolver assim:

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];
11/01/2005 8:58am (~14 anos atrás)

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
10/05/2004 5:55pm (~14 anos atrás)

Achei otimo o artigo!!! estava precisando de algo do tipo .

[]'s

Lucas
16/10/2003 6:13am (~15 anos atrás)

Italo,


Tenta por IP:

$fp = fsockopen ('216.239.39.120', 80, $errno, $errstr, 30);


[]'s
Fábio
27/09/2002 7:34am (~16 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??????
26/09/2002 12:09pm (~16 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
26/09/2002 7:25am (~16 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
26/09/2002 7:22am (~16 anos atrás)

E aí Fabio, beleza.... amigo, deu esse erro.

Ocorreu um erro ao tentar conexão com translate.google.com: ()
26/09/2002 6:25am (~16 anos atrás)

Buenas !

É isso ai tche, ficou blz...


Valeu,

Gordo
25/09/2002 4:52pm (~16 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
25/09/2002 9:09am (~16 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)