traducir_documentos.jpg

Hace unos días que llevo en mente desarrollar una nueva aplicación para Ubuntu basándome en algunas que he visto para Android que me parecen realmente interesantes, y sobre todo orientadas a la productividad, expandir texto, reemplazar texto, traducir en Ubuntu, etc.

Me refiero a aplicaciones que monitorizan lo que escribimos y cuando detectan una palabra clave o una combinación de teclas determinada, ejecutan una acción, ya sea buscar una palabra en el diccionario, cambiar una palabra clave por otra predeterminada, etc.

De esta manera cuando he leído en WebUpd8, sobre como traducir cualquier tecto seleccionado con un atajo de teclado, no he podido resistirme a publicar una referencia al artículo original, por supuesto con alguna que otra variante o modificación de cosecha propia.

Traducir en Ubuntu.png

Traducir en Ubuntu un texto seleccionado

Tal y como mencionan en el artículo de WebUpd8, se trata de una variación de un script original de 2.012.

Se trata de una herramienta verdaderamente útil, pero sobre todo productiva, ya que permite traducir cualquier texto previamente seleccionado, ya sea en el navegador, en un documento de texto, en un PDF, etc, cuando pulsamos un atajo de teclado.

El funcionamiento para traducir en Ubuntu es sencillo, pues utiliza el motor de traducción de Google para esta operación, con lo que según tu mismo te puedes imaginar, esto es funcional para palabras y frases cortas, pero no para textos largos. Además tiene un tres problemas adicionales; por un lado si el motor de Google es incapaz de detectar el idioma de partida dará un error, por otro, evidentemente, necesitas una conexión a internet, y por último si abusas de las traducciones Google terminará por bloquear tu IP temporalmente.

Otra opción para traducir en Ubuntu es utilizar apertium, un motor de traducción de código abierto que está disponible para la mayoría de las distribuciones Linux.

Pero, no nos adelantemos a la jugada, vamos paso a paso, veamos las diferentes opciones disponibles, y elijamos aquella que mas nos conviene en función de nuestras circustancias.

Necesidades para nuestro sistema

Lo primero es determinar que es lo que tenemos seleccionado, es decir, poder capturar la selección actual para poder manipularla, ya sea traducir en Ubuntu, o realizar la operación que consideremos. Para esta primera operación, necesitamos xsel. Para instalarlo, abrimos un emulador de terminal, y ejecutamos la siguiente orden,

sudo apt-get install xsel

Para mostraar la traducción tenemos diferentes opciones; desde utilizar el sistema de notificaciones de Ubuntu, para lo que tenemos que ejecutar la orden,

sudo apt-get install libnotify-bin

O bien utilizar zenity, para lo que ejecutaremos la orden

sudo apt-get install zenity

La ventaja de zenity frente al sistema de notificaciones de Ubuntu es que mientras que este último desaparecerá de forma automática al cabo de un tiempo, al tratarse de una notificación, zenity, es un cuadro de diálogo, que se ocultará cuando nosotros queramos.

Otra opción interesante, es que la traducción vaya directamente aal portapapeles, es decir, cuando seleccionamos una palabra, al pulsar nuestra combinación de teclas, se traduce y se copia directamente al portapapeles. Para utilizar esta última opción, necesitaremos instalar xclip,

sudo apt-get install xclip

Para utiliza la traducción de Google, necesitaremos utilizar wget, que podemos instalar ejecutando la orden,

sudo apt-get install wget

Todo junto…

Traducir en Ubuntu utilizando Google y utilizar el sistema de notificaciones de Ubuntu

Para esta opción tenemos que crear el siguiente script,

1
2
#!/usr/bin/env bash
notify-send --icon=info "$(xsel -o)" "$(wget -U "Mozilla/5.0" -qO - "http://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=es&dt=t&q=$(xsel -o | sed "s/[\"'<>]//g")" | sed "s/,,,0]],,.*//g" | awk -F'"' '{print $2, $6}')"

En este script, hemos indicado el idioma de destino como español, indicando el parámetro tl=es.

Una vez creado, debemos darle permiso de ejecución y copiarlo al directorio /usr/bin, y crear un atajo de teclado para su ejecución. Por ejemplo supuesto que le hemos llamado trans1. Todo esto, traducido a ordenes, vendría a ser:

chmod +x trans1
sudo cp trans1 /usr/bin

Para crear el atajo de teclado, nos vamos a Configuración del sistema > Teclado y seleccionamos la pestaña Atajos, donde crearemos un nuevo atajo para nuestro comando en Combinaciones personales, pulsando el botón mas y añadiendo el comando que hemos creado

traducir en Ubuntu

Traducir en Ubuntu con Google y zenity para mostrarlo

En este caso el comando, trans2, sería,

1
2
3
4
5
6
#!/usr/bin/env bash
text="$(xsel -o)"
translate="$(wget -U "Mozilla/5.0" -qO - "http://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=es&dt=t&q=$(echo $text | sed "s/[\"'<>]//g")" | sed "s/,,,0]],,.*//g" | awk -F'"' '{print $2, $6}')"
echo -e "Original text:" "$text"'\n' > /tmp/notitrans
echo "Translation:" "$translate" >> /tmp/notitrans
zenity --text-info --title="Translation" --filename=/tmp/notitrans

Igualmente, lo debemos copiar a /usr/bin/ y darle permisos de ejecución.

Traducir en Ubuntu utilizando Google y copia al portapapeles

Esto es básicamente igual que en el primer caso, pero además utilizamos xclip para realizar la copia al portapapeles.

1
2
3
4
5
#!/usr/bin/env bash
text="$(xsel -o)"
translate="$(wget -U "Mozilla/5.0" -qO - "http://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=es&dt=t&q=$(echo $text | sed "s/[\"'<>]//g")" | sed "s/,,,0]],,.*//g" | awk -F'"' '{print $2, $6}')"
echo "$translate" | xclip -selection clipboard
notify-send --icon=info "$text" "$translate"

Traducir en Ubuntu utilizando apertium y el sistema de notificaciones de Ubuntu

El primer paso es instalar apertium y el diccionario que queramos utilizar, por ejemplo de inglés a español.

sudo apt-get install apertium apertium-en-es

Evidentemente, la ventaja reside en que no necesitaremos conexión a internet, pero las traducciones dejan bastante que desear, aunque para palabras es mas que suficiente

El comando, trans4, será el siguiente,

1
2
#!/usr/bin/env bash
notify-send --icon=info "$(xsel -o)" "$(xsel | apertium en-es)"

Igualmente, tenemos que darle permisos de ejecución y copiar a /usr/bin/.

Traducir en Ubuntu utilizando apertium y zenity

En este caso el script será,

1
2
3
4
5
6
#!/usr/bin/env bash
text="$(xsel -o)"
translate="$(xsel | apertium en-es)"
echo -e "Original text:" "$text"'\n' > /tmp/notitrans
echo "Translation:" "$translate" >> /tmp/notitrans
zenity --text-info --title="Translation" --filename=/tmp/notitrans

Traducir en Ubuntu utilizando apertium y el portapaples. Ultima opción.

En esta última opción el script será,

1
2
3
4
5
#!/usr/bin/env bash
text="$(xsel -o)"
translate="$(xsel | apertium en-es)"
echo "$translate" | xclip -selection clipboard
notify-send --icon=info "$text" "$translate"

Que al igual que en los casos anteriores, deberás dar permisos de ejecución y copiar al directorio /usr/bin/, creando posteriormente el atajo de teclado para su utilización.

Conclusiones

Aquí has visto algunas opciones, pero las alternativas son innumerables, solo tienes que tener un poco de imaginación para hacer casi cualquier cosa…

 

Más información: WebUpd8

Fuente: atareao

¿Quién está en línea?

Hay 14285 invitados y ningún miembro en línea