Como traducir cualquier texto en Ubuntu

traducción-ubuntu

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.

Cómo traducir textos con Ubuntu

Creando el script Notitrans

  1. Para poder usar el script, tenemos que hacer tres instalaciones:
    1. libnotify-bin para poder recibir notificaciones de escritorio.
    2. wget para conseguir la traducción de Google.
    3. 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
  1. A continuación, creamos un nuevo archivo de texto (basta con hacer clic derecho sobre el escritorio y seleccionar Documento nuevo/Documento vacío).

documento-nuevo

  1. 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}')"
  • guardar-notitrans
  • 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 (=).
  1. Guardamos el archivo anterior y lo llamamos «notitrans» (sin las comillas).
  2. 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
  1. El siguiente paso mover el archivo creado a la carpeta /usr/local/bin/ con el siguiente comando:
sudo mv ~/notitrans /usr/local/bin/
  1. 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:

atajo-notitrans

  1. 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.
  2. 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

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

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   aimarcongeti dijo

    Podrías haber cambiado las capturas, que canta un poco

  2.   El atareao dijo

    Que bárbaro…, que rápido…

    1.    aimarcongeti dijo

      Por lo menos tu has enlazado al original xD

  3.   aimarcongeti dijo

    Excelente, y funcionará con otros traductores como Yandex o Bing?

  4.   Aprendiz dijo

    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

  5.   Jimmy Olano dijo

    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!

  6.   Jimmy Olano dijo

    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».

    1.    Jimmy Olano dijo

      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! *-)

  7.   mauricio dijo

    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

  8.   Manuel Arnulfo Plata Espinosa dijo

    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.

  9.   New_Savage dijo

    Me ha encantando y me resulta muy útil, pero… Alguien sabe porque me añade un «en» al final de todas las traducciones???

    1.    Carlos dijo

      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!!

  10.   Carlos dijo

    Buenas.

    Quita (, $6) y listo.

    Saludos.

  11.   Ángel dijo

    Muchísimas gracias por el aporte y por el «Quita (,$6)» ;-P

  12.   ruben gutierrez dijo

    muchas gracias por el aporte, a mi me funciono en la ruta /usr/bin

  13.   ruben gutierrez dijo

    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

  14.   r dijo

    Para quitar los en en en

    modificar la ultima linea por esta

    notify-send –icon=info «$text» «${translate:0:-17}»

  15.   Matthias dijo

    Hola

    Cuando le doy a chmod +x ~/notitrans , me dice que el archivo no se encuentra
    he llegado hasta aquí…

  16.   cesar althieri dijo

    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?