Implementando um tradutor de línguas no seu web site

Neste artigo mostro como criar uma interface transparente para o programa de tradução de línguas Babelfish.AltaVista.com usando sockets e expressões regulares.

[ Hits: 46.718 ]

Por: Fábio Berbert de Paula em 04/11/2002 | Blog: https://fabio.automatizando.dev


Implementando o script - parte 2



Implementando o script - parte 2


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:
<?
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 de forma simples ? Hum, conclui-seque 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
fabio@vivaolinux.com.br

Página anterior    

Páginas do artigo
   1. Implementando o script - parte 1
   2. Implementando o script - parte 2
Outros artigos deste autor

Organizando projetos com a classe FastTemplate (parte 1)

Como criar um bot para curtir e comentar perfis do Instagram

Utilizando o Buffer de Gravação no Editor Vim

Como jogar poker no Full Tilt Poker pelo Linux

Criando um painel de rede em PHP

Leitura recomendada

Servidor LAMP + PHPMyAdmin + Webalizer

Estatísticas para todos

O que é o e107

Enganando o proxy Squid (download de arquivos)

Aces Downz - Gerenciador de downloads e controle de tráfego

  
Comentários
[1] Comentário enviado por arknoid em 29/12/2003 - 16:52h

hehehehehe esse é o fabiovivaolinux....
cara muito massa esse tradutor soh espero que funcione!

[2] Comentário enviado por jllucca em 01/09/2004 - 19:40h

Arknoid, perdidão... não tem o que falar mantenha-se calado!

Como sei que não vou receber cortada dele huahuahua :D

[3] Comentário enviado por comfaa em 28/10/2008 - 13:05h

muito legal !!!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts