Traducciones en la consola de Linux con BabelFish
Este “shell script” busca en el servicio BabelFish la traducción de una línea de texto en el lenguaje que se especifique:
# Este if determina si el usuario necesita ayuda
#
if [ $# -lt 2 ] || [ “$1″ = “–help” ] || [ “$1″ = “-h” ]; then
echo
echo “=================================================”
echo traduce v1.0
echo Este programa hace traducciones
echo utilizando el servicio Babelfish
echo “=================================================”
echo “Licencia GPL 2.0″
echo “Derechos Reservados 2006: Edwood Ocasio”
echo “Email: edwood_ocasio at yahoo.com”
echo “——————————————–”
echo
echo “Uso: traduce ‘término’ ‘lenguajeoriginal_lenguajefinal’”
echo
echo ” Ej. traduce escaner es_en”
echo
echo Para consultar términos que incluyen espacios
echo deben encerrarse entre comillas dobles
echo
echo ” Ej. traduce \”soy yo\” es_fr”
echo
echo “traduce -h o traduce –help muestran esta ayuda”
echo
echo “** Códigos de lenguajes **”
echo
echo “zh_en” -Chinese-simp to English “zt_en” -Chinese-trad to English
echo “en_zh” -English to Chinese-simp “en_zt” -English to Chinese-trad
echo “en_nl” -English to Dutch “en_fr” -English to French
echo “en_de” -English to German “en_el” -English to Greek
echo “en_it” -English to Italian “en_ja” -English to Japanese
echo “en_ko” -English to Korean “en_pt” -English to Portuguese
echo “en_ru” -English to Russian “en_es” -English to Spanish
echo “nl_en” -Dutch to English “nl_fr” -Dutch to French
echo “fr_nl” -French to Dutch “fr_en” -French to English
echo “fr_de” -French to German “fr_el” -French to Greek
echo “fr_it” -French to Italian “fr_pt” -French to Portuguese
echo “fr_es” -French to Spanish “de_en” -German to English
echo “de_fr” -German to French “el_en” -Greek to English
echo “el_fr” -Greek to French “it_en” -Italian to English
echo “it_fr” -Italian to French “ja_en” -Japanese to English
echo “ko_en” -Korean to English “pt_en” -Portuguese to English
echo “pt_fr” -Portuguese to French “ru_en” -Russian to English
echo “es_en” SELECTED-Spanish to English “es_fr” -Spanish to French
exit 0
fi
#
# Aquí comienza el código
#
echo
echo “Traduciendo ‘$1′ ($2) …”
echo “trtext=$1&lp=$2&doit=done&intl=1&tt=urltext&btnTrTxt=Translate”|lynx -dump -post_data http://babelfish.altavista.com/tr|sed -e ‘1,/fish-right.gif/ d’ \
-e ‘/Search\sthe\sweb/,$ d’
echo
En este ejemplo se pide la traducción al inglés (en) de la palabra “aguacate” en español (es):
Traduciendo ‘aguacate’ (es_en) …
In English:
avocado
Ahora en francés:
Traduciendo ‘aguacate’ (es_fr) …
En français:
avocat
Si se quieren traducir frases se deben encerrar entre comillas dobles:
Traduciendo ‘Good bye and thanks for all the fish’ (en_es) …
En español:
Adiós y gracias por todos los pescados
Ahora del español al francés:
Traduciendo ‘Adiós y gracias por todos los pescados’ (es_fr) …
En français:
Au revoir et merci pour tous les poissons
No podemos esperar traducciones perfectas, a veces no tendrán sentido ya que son generadas automáticamente por un programa que a veces puede ser muy literal en su traducción.
El reto de programar estos servicios para la consola de Linux está en filtrar lo que queremos, desechando lo que no necesitamos. En el caso de la página web que genera Babelfish, usé como referencia el nombre de la imagen de su icono fish-right.gif para marcar el inicio de la traducción y el encasillado de búsqueda con el texto Search the web para marcar el final de la traducción. Todo lo demás fue eliminado. Este es el pedazo de código que logra eso mediante el programa sed (stream editor):
-e ‘/Search\sthe\sweb/,$ d’
Busqué un poco más en el web y encontré unos cuantos programitas, pero en los lenguajes Python y Tcl. Tienen muchas más líneas de código y no son fáciles de leer si no se tiene experiencia en programación ya que utilizan el enfoque orientado a objetos. Desde el punto de vista del programador con experiencia, orientado a objetos es la ruta a seguir, pero para quien empieza o quiere enseñar a otros no iniciados es mejor el enfoque imperativo clásico, como el que he utilizado en este programa.
Creo que ya tengo más o menos lo que necesitaba, aunque me gustaría añadirle más funcionalidad al programa traduce. Por ejemplo, que reciba un archivo como argumento y lo traduzca todo en otro archivo. Mientras tanto, el cóigo es GPL así que ustedes mismos pueden mejorarlo y adaptarlo a sus necesidades
.
Instalación en Linux
- Copie y pegue el código de arriba en un editor de texto.
- Guarde el archivo como ‘traduce’
- Desde la consola de texto haga el archivo ejecutable:
chmod +x traduce
Más artículos como este en:
Algunos artículos relacionados:



