Introdução
Frequentemente precisamos descobrir a tradução de uma palavra e não temos um dicionário por perto e muito menos um programa que nos ajude nessa tarefa. Então, devemos entrar na internet e buscar pela tradução. Como isso acontece muito comigo, resolvi criar um shell script que busca na Internet a tradução de terminada palavra.
Site tradutor: Babylon
Dos vários sites que realizam tradução, percebi que o babylon é o mais interessante para ser usado em scripts por retornar uma página fácil de ser manipulada. Muitos scripts de tradução utilizam o babylon como tradutor [1].
Como traduzir
Por enquando só consegui traduzir do inglês para qualquer idioma utilizando o link abaixo:
http://bis.babylon.com/?rt=ol&tid=pop&mr=2&term=PALAVRA&tl=IDIOMA
Em word=PALAVRA indicamos a palavra em inglês a ser traduzida. Em lang=IDIOMA indicamos o idioma, use pt para português, en para inglês (fornece definições), fr para francês e assim por diante.
Saída da página
Utilizando o lynx e traduzindo a palavra love para o português obtemos como resultado:
$ lynx --dump 'http://bis.babylon.com/?rt=ol&tid=pop&mr=2&term=love&tl=pt' [?rt=GetFile&uri=!!BJKS8ZN2QJ&type=1&index=11] Babylon English-Portuguese [1]Download this dictionary love v. amar; gostar; adorar; apaixonar-se; querer muito s. amor; amado, querido; afeição; pessoa amada; zero pontos (no jogo de tênis) [?rt=GetFile&uri=!!9G2CGKRAUE&type=1&index=11] Wikipedia Português - A enciclopédi... [2]Download this dictionary LOVE LOVE é um espetáculo do [3]Cirque du Soleil que tem a trilha sonora de músicas dos [4]Beatles. As canções foram remixadas e resmasterizadas pelo produtor [5]George Martin, conhecido como o quinto Beatle, e seu filho Giles. [?rt=GetFile&uri=!!9G2CGKRAUE&type=0&index=1360] [6]Veja mais na Wikipédia.org...
Quando procuramos por uma palavra que não existe no tradutor, a seguinte página aparece:
$ lynx --dump 'http://bis.babylon.com/?rt=ol&tid=pop&mr=2&term=naoexisto&tl=pt' This is a single Word Translation tool. Click [1]here for Full Text Translation Babylon software IFRAME: [2]http://www.babylon.com/systems/pages/tbox/tbox.php?lang=EN&tl=PT&ter m=naoexisto&cid=&affID= References 1. http://www.babylon.com/systems/affiliates/landing/index.php 2. http://www.babylon.com/systems/pages/tbox/tbox.php?lang=EN&tl=PT&term=naoexisto&cid=&affID=
Observando as saídas do babylon foi possível criar o script abaixo.
O script: dtradutor.sh
Segue o código:
#!/bin/bash # [dtradutor.sh] # Traduz palavras do inglês para qualquer # idioma. Por padrão o idioma português # utilizado. (Veja a variável IDIOMA) # # [Autor] # Marcos Paulo Ferreira (Daemonio) # undefinido gmail com # daemoniolabs.wordpress.com # # [Dependências] # lynx # # Versão 1, Wed Jan 4 00:15:30 BRST 2012 # Versão 1.1, Fri Mar 23 11:57:54 BRT 2012 # Versão 2.0 by daemonio @ Thu Jan 2 15:23:28 BRST 2014 # [+] A saía do lynx acrescentou uma nova linha e por isso # as versões anteriores não funcionam mais. O script de # agora não depende mais da numeração das linhas. # [+] As cores agora são manuseadas com tput # # Idioma final (Padrão: inglês -> português) IDIOMA='pt' # Importante: se a saída tiver caracteres estranhos # utilize o outro valor para essa variável CODIFICACAO='UTF-8' #CODIFICACAO='ISO-8859-1' # Variáveis referente a cor (código do tput) CORPALAVRA='1' # 1 = vermelho CORTEXTO='2' # 2 = verde # Função que retorna erro caso uma dependência não foi # encontrada function encontrar_dependencia { local A=`whereis "$1"` if ! [[ $A =~ '/' ]] then tput setaf 1; tput bold echo "O programa $1 parece não estar instalado. Instale-o antes" echo "de usar." tput sgr0 exit 1; fi } # # MAIN # encontrar_dependencia 'lynx' while [ $# != "0" ]; do tput setaf $CORPALAVRA; tput bold; echo "$1"; tput setaf $CORTEXTO; lynx -dump -nolist "http://bis.babylon.com/?rt=ol&tid=pop&mr=2&term=$1&tl=$IDIOMA" | sed -n ':c;/^$/{d;bc;};/Babylon$/!q; n;n;n; :a;p;n;/\(^ *\[\|IFRAME:\)/!ba;q;' | fmt -80 | sed '/^ *$/d' | iconv -t $CODIFICACAO tput sgr0 shift done # EOF
Uso
Salve o código acima em um arquivo de nome dtradutor.sh. Em seguida dê permissão de execução com o chmod. Para usar o scritpt basta invocá-lo com as palavras em inglês como parâmetro:
$ chmod +x dtradutor.sh $ ./dtradutor.sh what is love baby don\'t hurt me what: conj. até quando interj. quê! (exclamação de surpresa ou protesto) pron. que, qual; quanto; aquilo que adv. o que, qual; quanto; até quanto adj. que, o que, qual, quais s. o que, qual is: Sistema Internacional, sistema métrico de unidades consistente para cientistas (que tem a quantidade básica de comprimento, tempo, corrente elétrica, temperatura, intesidade de luz, quantidade de substância e massa) be v. ser; estar; existir; ocorrer, acontecer; ficar, ocupar um espaço love: v. amar; gostar; adorar; apaixonar-se; querer muito s. amor; amado, querido; afeição; pessoa amada; zero pontos (no jogo de tênis) baby: adj. criança de peito, nenê, pessoa infantil; boneca (gíria) s. bebê; querido/a, meu bem (tratamento carinhoso) v. mimar; tratar como um bebê don't: v. contração de do not; não (palavra negativa) don't s. proibição, preceito de não fazer determinada coisa hurt: adj. ferido v. ferir; doer; magoar; estragar; danificar s. ferimento; prejuízo me: pron. mim; eu; para mim ME (Maine) Maine, estado no leste dos Estados Unidos ME (Middle East) Oriente Médio ME (Middle English) inglês médio, forma da língua inglesa que foi usada aprox. 1100 a aprox. 1500
Se a saída do script tiver caracteres estranhos então é por causa do problema de codificação. As codificações mais comuns são UTF-8 e ISO-5589-1, daí basta saber qual dessas é usada em seu terminal e comentar/descomentar o valor correto da variável CODIFICACAO.
Referências
[1] scr by Thobias Salazar Trevisan (Acessado em: Março/2012)
http://thobias.org/scr/scr