Hoy en día, con tanto dispositivo conectado a Internet y tantos sitios que visitar en la red, es de lo más normal que encontremos la información que estamos buscando en un idioma que no dominamos. Incluso podemos encontrar un texto en un idioma que creemos que conocemos bien y leer alguna palabra que no sabemos lo que significa. En esos casos ¿qué hacemos? Pues lo normal es consultar la página de algún traductor, como los de Bing o Google, pero ¿no sería mejor si tuviéramos una manera más rápida y cómoda de hacerlo? Pues como prácticamente todo en los sistemas operativos basados en Linux, hay varias maneras de conseguirlo y en este artículo os enseñaremos cómo traducir cualquier texto en Ubuntu, siempre y cuando el idioma esté incluido en Google Translator.
Es posible que la siguiente guía le de un poco de respeto a los usuarios que no les gusta mucho tocar el terminal, pero no se explica nada diferente a cuando decimos cómo añadir un repositorio e instalar algún paquete que no está en los oficiales. La diferencia es que vamos a crear un script que nos permitirá lanzar componentes disponibles en Ubuntu. Dicho esto, a continuación tenéis los pasos a seguir para traducir cualquier texto en Ubuntu.
Índice
Cómo traducir textos con Ubuntu
Creando el script Notitrans
- Para poder usar el script, tenemos que hacer tres instalaciones:
- libnotify-bin para poder recibir notificaciones de escritorio.
- wget para conseguir la traducción de Google.
- xsel para leer el texto que tenemos marcado.
Para ello, abrimos un terminal y escribimos lo siguiente:
sudo apt-get install libnotify-bin wget xsel
- A continuación, creamos un nuevo archivo de texto (basta con hacer clic derecho sobre el escritorio y seleccionar Documento nuevo/Documento vacío).
- Dentro del documento tenemos que pegar lo siguiente:
#!/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}')"
- Nota: en el script anterior hay una linea que pone «tl=es». Si no queréis traducir al español, sólo tenéis que cambiar el idioma que tenéis detrás del símbolo igual (=).
- Guardamos el archivo anterior y lo llamamos «notitrans» (sin las comillas).
- A continuación tenemos que convertir el documento anterior a archivo ejecutable. Para ello, lo copiamos en nuestra carpeta personal y escribimos en un terminal lo siguiente:
chmod +x ~/notitrans
- El siguiente paso mover el archivo creado a la carpeta /usr/local/bin/ con el siguiente comando:
sudo mv ~/notitrans /usr/local/bin/
- Aún no habremos terminado. Nos falta (por lo menos) dos pasos más: ahora tenemos que crear un atajo del teclado. Para ello vamos a Configuración del sistema/Teclado/Atajos y hacemos clic sobre el símbolo de suma (+). Veréis una ventana como la siguiente:
- En la ventana, ponemos de nombre lo que queramos (yo le he puesto Notitrans) y de comando «notitrans» (sin las comillas). Podemos poner otro comando, pero tendríamos que usar el mismo nombre con el que guardamos el script.
- Ahora sólo falta crear la combinación de teclas. Para ello hacemos clic sobre el texto que pone Desactivado e introducimos la combinación deseada. Yo he usado Control+punto (.), puesto que sé que no hay ninguna combinación de teclas que use ese atajo.
Variantes
Si no os gusta la manera en la que nos muestra la traducción con el script anterior, que de hecho no puede mostrar traducciones muy largas porque está limitado por el tamaño de la notificación, también podemos usar algunas variantes. Para usar estas variantes tendremos que hacer el mismo proceso que el anterior (también cambiar el idioma si lo deseamos), pero usando el código correspondiente en el paso 2.
Usando Xclip
Si queremos que además de la notificación nos copie la traducción en el cortapapeles, usaremos también xclip. Primero nos aseguramos de que lo tenemos instalado con el comando:
sudo apt-get install xclip
Y en el script que crearemos escribimos lo siguiente:
#!/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"
Usando Zenity
Y si lo que queremos es que se nos muestre como la imagen anterior (mi preferida), nos aseguraremos de que tenemos Zenity instalado escribiendo el comando:
sudo apt-get install zenity
Y en el documento escribiremos los siguiente:
#!/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
¿Habéis probado alguno de estos scripts? ¿Qué os parecen?
19 comentarios, deja el tuyo
Podrías haber cambiado las capturas, que canta un poco
Que bárbaro…, que rápido…
Por lo menos tu has enlazado al original xD
Excelente, y funcionará con otros traductores como Yandex o Bing?
Y si añades esta linea al final
spd-say «$translate»
te lo canta con esa voz tan romántica
Obviamente es necesario tener instalado spd-say
Estamos aquí para aprender:
—Lo del xsel yo no lo sabía a pesar que fue creado en el 2001 por Conrad Parker:
htt p:/ / linux.die .net/man/1/xsel <-(Quitad los espacios y navegareís).
es así que podemos escribir "xsel -o" e imprimirá en la linea de comandos lo que hayamos seleccionado y almacenado en el portapapeles de Ubuntu.
—Lo de notify-send pues tampoco lo conocía (última actualización data del 2008)
pero leyendo en:
ht tp :// manpages.ubu ntu.com/man pages/gutsy/man1/notify-send.1.html
podemos practicar el enviar cualquier mensaje de manera gráfica al Ubuntu:
notify-send –icon=info "¡HOLA MUNDO!"
Podemos mandarle un título y mensaje a la notificación, probad:
notify-send –icon=info Date "`date`"
{OJO con esas comillas simples dentro de las dobles, el código ASCII es 239}
—Ni hablar del venerable wget, solo recordareís cuan poderoso es en este enlace web:
ht tp: // blog.phen obarbital.info/ 2015 /02/sabias-que-como-descargar-un-sitio-web-completo-wget/
–El comando sed TAMPOCO lo conocía ("solo se que no se nada") pero indagando podemos observar cuán útil es, estos ejemplos me gustaron mucho (en inglés):
h t t p: //ww w.folkstal k.com/2012 /01/sed-command-in-unix-examples.html
Estuve "corriendo" los ejemplos y funcionan muy bien en mi ubuntu.
HE AQUÍ QUE ALCANZAMOS EL "LLEGADERO":
la traducción no funciona, por eso "diseccioné" los comandos componentes para ver cual era funciona bien y cual funciona mal.
Es por ello que le pedí ayuda al patico que lo sabe todo DUCKDUCKGO y hallo:
ht tp://w ww. webupd8.or g/20 16/03/translate-any-text-you-select-on-your.html
"The original script, which dates back to 2012, no longer works however, I've managed to fix it and decided to share it with you."
Y CREO QUE NO FUNCIONA PORQUE:
"Google Translate API is a paid service. For website translations, we encourage you to use the Google Website Translator gadget."
h t t p s :// cloud. google. com/translate/v2/using_rest
Así que si teneís unos dolarillos que os sobren, ellos cobran por millones de letras:
h t t p s :// cloud. google. com/translate/v2/pricing
—ESA ES MI TEORÍA DEL POR QUÉ NO FUNCIONA si alguien sabe cómo ponerlo en modo demostrativo y para propósitos didácticos pues "postead" vuestra respuesta, ¡gracias por su atención!
POR SI ACASO volví a seguir, paso a paso (y con una dirección IP diferente para conectarme a Google porque me «bloqueó brevemente por tráfico inusual» -inusual que usemos GNU/Linux wget sin cabecera ja ja ja ) los pasos que describe el ciudadano ruso
htt ps:// habr ahabr.ru/ post/137215/ y tampoco funciona, lástima. 8-(
Плюсы и минусы
+ Возможность переводить фрагменты текста.
+ Требуется минимальное количество действий для получения перевода.
+ Поддержка практически всех языков.
+ Отсутствие необходимости в установке отдельных словарей.
– Не работает без подключения к интернету.
– Нет возможности выделить текст перевода.
*Проверенно в Unity, GNOME2, Xfce4, KDE4.
«Pros y contras
+ Capacidad para traducir fragmentos de texto.
+ Requiere número mínimo de acciones para obtener la traducción.
+ Soporte para prácticamente todos los idiomas.
+ No es necesario instalar los diccionarios específicos.
– No funciona sin conexión a Internet.
– No es posible asignar el texto traducido.
* Probado en la Unidad, Gnome2, Xfce4, KDE4.»
TRADUCCIÓN DEL RUSO AL CASTELLANO GRACIAS A «Google Translate».
El autor del post en inglés me respondió amablemente y confirmó mi sospecha: abusé del servicio google con mis pruebas:
https://twitter.com/ks7000/status/708398151351341058
Es ahora, seís dias después que volví a intentar muy cuidadosamente para no cometer errores y además probé traducir del inglés al francés cambiando el «tl=fr» y he aquí el resultado:
https://twitter.com/ks7000/status/708397624890662915
¡Muchas gracias, hoy aprendí algo nuevo! *-)
maldita la hora en q quise instalar el traductor…tuve algunos problemas y cuando lo quise desinstalar por terminal ya no pude conectarme a internet ni cableada ni wifi, creo desinstalé driver de placa de red o algo así. Como instalo estas cosas sin conexión a interne? saludos
Excelente. Me solucionaste la vida con este post. Quería tener un traductor fácil de usar sin tener que meterme al navegador o a ningún programa. Muchas gracias.
Me ha encantando y me resulta muy útil, pero… Alguien sabe porque me añade un «en» al final de todas las traducciones???
Buenas!
En la linea:
| sed «s/,,,0]],,.*//g» | awk -F'»‘ ‘{print $2, $6}’)»
quita (, $6) que quede así:
| sed «s/,,,0]],,.*//g» | awk -F'»‘ ‘{print $2}’)»
y listos!! sin el «en» al final.
Saludos!!
Buenas.
Quita (, $6) y listo.
Saludos.
Muchísimas gracias por el aporte y por el «Quita (,$6)» ;-P
muchas gracias por el aporte, a mi me funciono en la ruta /usr/bin
Para quitar los «en en» que aparecen al final cambie el codigo de la siguiente manera
#!/usr/bin/env bash
text=»$(xsel -o)»
translate=»$(wget -U «Mozilla/5.0» -qO – «http://translate.googleapis.com/trans$
translate2=${translate%??????}
echo «$translate2» | xclip -selection clipboard
notify-send –icon=info «$text» «$translate2»
y listo
Para quitar los en en en
modificar la ultima linea por esta
notify-send –icon=info «$text» «${translate:0:-17}»
Hola
Cuando le doy a chmod +x ~/notitrans , me dice que el archivo no se encuentra
he llegado hasta aquí…
hola, cuando pongo un parrafo para traducir solo traduce el primer enunciado, hasta donde hay un punto, no lo traduce completo y tengo que estar de punto en punto para traducir todo el parrafo, como lo puedo solucionar?