Gonduana

Contenidos para traductores

  • Blog
  • Empieza por aquí
    • Encuesta: coger
    • Encuesta: ratón o mouse
    • Artículos más leídos
    • Vídeos más vistos
    • Gonduana en las redes sociales
    • ¿Quieres saber más sobre mí?
  • Recursos
    • Software para traductores
    • Hardware para traductores
    • Internet para traductores
    • WordPress para traductores
  • Servicios
  • Sobre mí
  • Contacto

Cómo españolizar palabras con AutoHotkey

Publicado el 19/septiembre/2015 por Jesús Prieto

Share on twitter
Share on linkedin
Share on facebook
Share on google
Share on pocket

españolizar palabras con AutoHotkeyNo sé si se entiende bien el título, así que lo primero vamos a centrar el problema, ¿vale?

Empezamos con una pregunta:

¿Sabes qué tienen en común todas las palabras que hay en la imagen de arriba?

Sí, todas son palabras en inglés. ¿Algo más?

¡Bien visto! Todas tienen la terminación -tion.

Pero lo que hace interesantes a todas esas palabras es que su traducción al español implicaría solo cambiar la terminación -tion por -ción. Por ejemplo, locomotion se traduciría por locomoción, ¿verdad?

¿Te ha pasado encontrarte con estas palabras y que sea un engorro teclear solo esos pocos caracteres? Para mí sí lo es… Ir al final de palabra, borrar tión, escribir ción puede ser un infierno. Por cierto: ¡lo que fallo con la tecla de la tilde!

🙁

Al final, a menudo calculo que habría tardado menos si hubiera borrado la palabra del todo y escrito desde cero…

Por eso desarrollé una macro de AutoHotkey que me simplificó mucho la vida con estas palabras tan especiales.

¡Las españolizo automáticamente!

¿Te interesa saber cómo?

Macro de AutoHotkey para españolizar palabras

Lo vamos a ver para el caso de inglés, pero puede hacerse lo mismo para otros idiomas. Estoy pensando en el francés; en fin, es cuestión de que cada uno personalice esta macro para lo que necesite.

Ya sabes que al trabajar con AutoHotkey logras siempre estos beneficios:

  • velocidad al trabajar (sobre todo si no eres hábil con el teclado);
  • seguridad de que lo que haces está bien tecleado;
  • flexibilidad, es decir, puedes ejecutar la macro en cualquier aplicación, ya sea Word, Studio, memoQ.

Para ejecutar el reemplazo, sigue estos pasos:

  • selecciona la palabra que quieres españolizar con AutoHotkey (un doble clic con el ratón funciona de maravilla);
  • pulsa la tecla CONTROL de tu teclado;
  • y al mismo tiempo que haces clic con el ratón.

Es una combinación bastante rápida.

1.ª macro (básica)

Luego lo iremos complicando, pero la macro de AutoHotkey más básica que reemplaza tion por ción es:

; Macro 1 para ESPAÑOLIZAR. 
; Reemplazar tion por ción
!LButton::
	; Vacía el Portapapeles
	clipboard =
	; CONTROL+ C = copia el texto seleccionado
	Send ^c
	; Espera a que el Portapapeles tenga contenido
	ClipWait
	; Reemplazar contenido del Portapapeles por otra cadena.
	; Resultado: en el mismo Portapapeles
	StringReplace, clipboard, clipboard, tion, ción, All
	; Escribir contenido del Portapapeles
	SendInput %clipboard%
return

Donde se emplea envía CONTROL+C para copiar el texto seleccionado (línea 7) y la función StringReplace para cambiar la cadena tion por ción. El parámetro All hace que se reemplacen todos los tion que haya. En la línea 14 se envía la palabra españolizada.

Notas:

  • puedes seleccionar una o varias palabras;
  • internamente, la macro reemplaza solo texto, así que ten en cuenta que perderás cualquier otra cosa seleccionada que no sea texto, como imágenes, formato, etiquetas, campos…

2.ª macro (plurales)

Vamos a complicar la macro un poco más, para conseguir más beneficios aún.

Por ejemplo, vamos a añadir que la macro nos reemplace la cadena tions por ciones.

La macro que los hace es:

; Macro 2 para ESPAÑOLIZAR.
; Reemplazar plurales: tion/tions por ción/ciones
!LButton::	
	; Vacía el Portapapeles
	clipboard =
	; CONTROL+ C = copia el texto seleccionado
	Send ^c
	; Espera a que el Portapapeles tenga contenido
	ClipWait
	; Reemplazar contenido del Portapapeles por otra cadena.
	; Resultado: en el mismo Portapapeles
	StringReplace, clipboard, clipboard, tions, ciones, All
	StringReplace, clipboard, clipboard, tion, ción, All
	; Escribir contenido del Portapapeles
	SendInput %clipboard%
return

Se ha añadido la nueva línea 12, que reemplaza la forma plural, antes de la línea con la forma singular. Fíjate que el reemplazo del plural debe ir antes del reemplazo del singular, porque si reemplazaras primero tion en la palabra associations por ción, quedaría asociacións, que no sería correcto.

3.ª macro (terminación isation)

Vamos a incluir otro reemplazo más. ¿Adivinas cuál?

Supongo que sabes que en inglés británico hay un buen número de palabras terminadas en isation, como authorisation, amortisation, globalisation, etc. Pues bien, vamos a reemplazar esta terminación isation por la española ización. Por ejemplo, reemplazará amortisation por amortización.

Además, tendremos en cuenta los plurales (cambiaremos isations por izaciones).

Todo esto se considera en la siguiente macro:

; Macro 3 para ESPAÑOLIZAR.
; Reemplazar plurales: tion/tions por ción/ciones
; Reemplazar isation por ización (más plurales)
!LButton::
	; Vacía el Portapapeles
	clipboard =
	; CONTROL+ C = copia el texto seleccionado
	Send ^c
	; Espera a que el Portapapeles tenga contenido
	ClipWait
	; Reemplazar contenido del Portapapeles por otra cadena.
	; Resultado: en el mismo Portapapeles
	StringReplace, clipboard, clipboard, isations, izaciones, All
	StringReplace, clipboard, clipboard, isation, ización, All
	StringReplace, clipboard, clipboard, tions, ciones, All
	StringReplace, clipboard, clipboard, tion, ción, All
	; Escribir contenido del Portapapeles
	SendInput %clipboard%
return

Esta 3.ª versión de la macro funciona y es correcta, pero la vamos a dejar niquelada y robusta para cualquier situación.

4.ª y última macro para españolizar palabras con AutoHotkey

La última macro que considera con todas las mejoras es:

; Macro 4 para ESPAÑOLIZAR.
; Reemplazar plurales: tion/tions por ción/ciones
; Reemplazar isation por ización (más plurales)
; Restablecer el contenido del Portapapeles 

; ¡Solo funcionará en Microsoft Word!
#IfWinActive ahk_exe WINWORD.EXE
^LButton::
	; Copiar TODO el contenido del Portapapeles
	portapapeles := ClipboardAll
	
	; Vacía el Portapapeles
	clipboard =
	; CONTROL+ C = copia el texto seleccionado
	SendInput ^c
	; Espera a que el Portapapeles tenga contenido
	ClipWait
	; Reemplazar contenido del Portapapeles por otra cadena.
	; Resultado: en el mismo Portapapeles
	cambios := 0
	StringReplace, clipboard, clipboard, isations, izaciones, All, ErrorLevel
	if ErrorLevel = 0
		cambios := cambios + 1
	StringReplace, clipboard, clipboard, isation, ización, All, ErrorLevel
	if ErrorLevel = 0
		cambios := cambios + 1
	StringReplace, clipboard, clipboard, tions, ciones, All, ErrorLevel
	if ErrorLevel = 0
		cambios := cambios + 1
	StringReplace, clipboard, clipboard, tion, ción, All, ErrorLevel
	if ErrorLevel = 0
		cambios := cambios + 1

	; Comprobando que la tecla CONTROL está levantada
	while GetKeyState("Control", P)
		Sleep, 20

	; Escribir contenido del Portapapeles
	if cambios
		SendInput %clipboard%
	
	; Devolver contenido original al Portapapeles
	Clipboard = %portapapeles%	
	; Liberar memoria de la variable temporal
	portapapeles =
return
; Final de #IfWinActive de los programas seleccionados
#IfWinActive

Te puedes descargar la macro desde este enlace.

Veamos las mejoras una a una:

1.- Mantener el contenido del Portapapeles

Como ya vimos en el artículo 4 aplicaciones de AutoHotkey y el Portapapeles de Windows, vamos a mantener el contenido del Portapapeles de Windows, así no lo pierdes por ejecutar la macro.

Básicamente, al principio de la macro se copia el contenido del Portapapeles en una variable temporal (línea 10) y se restituye al final (línea 43).

2.- Ejecutar solo en Word

Otro punto que vamos a conseguir es que la macro solo se ejecute en una determinada aplicación. De esta forma, evitaremos disparar la macro si nos equivocamos en otras aplicaciones.

En esta macro, en la línea 7 elegí Microsoft Word, es decir, como si solo tuviera sentido que estuvieras españolizando en Word. Puedes elegir otra aplicación, como SDL Trados Studio. En ese caso, debes cambiar la misma línea 7 a:

#IfWinActive ahk_exe SDLTradosStudio.exe

En realidad, en mi PC lo tengo funcionando de otra manera distinta, pero para el objetivo de este artículo, de momento dejamos la macro así de sencilla, ¿vale?

3.- Solo después de levantar la tecla CONTROL

Otro punto que vamos a corregir es evitar comportamientos no deseados en aplicaciones, como podría ser Word.

A ver si logro explicarme; sígueme, no es complicado, pero requiere un punto de atención: imagínate que estás en Word, y que ejecutas esta macro de AutoHotkey pulsando la tecla CONTROL y pulsando el ratón al mismo tiempo; hasta aquí, de acuerdo, ¿verdad? Fíjate que si levantas el botón de ratón antes de soltar la tecla CONTROL, entonces Word irá sacando cada uno de los caracteres pero con la tecla CONTROL pulsada, ya que aún no la has soltado. Por ejemplo, al momento de sacar la letra P, si se le une el efecto de mantener pulsada la tecla CONTROL, eso significaría que empezarías a imprimir el documento (CONTROL+P), ¡algo que no quieres ni de lejos!

Las líneas 35 y 36 evitan esto. En concreto, la línea 35 comprueba si la tecla CONTROL está físicamente pulsada (parámetro P de la función GetKeyState), y si es así, espera 20 milisegundos (función Sleep) y vuelve a comprobarlo en un bucle del que solo se sale al levantar la tecla CONTROL.

Es decir, la macro solo escribirá la cadena españolizada al levantar la tecla CONTROL.

4.- Solo si hay que españolizar

Además, la macro solo escribirá la cadena españolizada si ha habido algún reemplazo.

El número de reemplazos lo controla la variable cambios, que tiene en cuenta la variable interna ErrorLevel en cada reemplazo con la función StringReplace. Si no se reemplaza nada, porque no has seleccionado nada «españolizable», entonces cambios valdrá cero y no se ejecutará la línea 40 con SendInput %clipboard%.

Realmente no sería necesario este control de los cambios implementados, pero no tiene sentido reemplazar un texto por otro, cuando ya vimos que es posible que falten formatos, etiquetas, campos, etc.

Con este código tenemos una macro más robusta, que no te dará tantos problemas como la más básica.

Conclusiones

Aquí tienes una forma rápida de «españolizar» palabras especiales de un idioma.

Puedes añadir otros criterios, los que consideres que te permiten exprimir las posibilidades que más se presentan en inglés (o en el idioma que quieras).

Lo que sí me gustaría es saber los criterios que añades a la macro de AutoHotkey. Así todos nos podremos aprovechar de las ideas de todos.

Cualquier idea, ya sabes: en el formulario de comentarios.

* * * * *

Aunque durante mucho tiempo disparé la macro pulsando la tecla CONTROL y haciendo clic con el ratón sobre la palabra seleccionada, desde hace unas semanas lo disparo de otra forma.

¿Qué forma?

Para saberlo, me temo que habrá que esperar hasta la semana que viene, donde en otro artículo tocaré un tema totalmente distinto, pero que, de paso, puedo aprovechar para facilitar mucho el disparo.

🙂

¿Hay suspense?

Artículos relacionados:

contar palabras con AutoHotkeyCómo contar palabras con AutoHotkey comillas con AutoHotkeyComillas con AutoHotkey AutoHotkey 4AutoHotkey: macros más avanzadas (4) Autocorrección de Word con AutoHotkeyAutocorrección de Word con AutoHotkey
Jesús Prieto

Jesús Prieto

Querido traductor: quiero compartir contigo muchas cosas que podrás aprovechar como profesional: desde herramientas especiales hasta técnicas comerciales; desde estrategias de marketing hasta trucos de productividad personal; desde cómo diseñar tu marca personal hasta novedades de impuestos.
Todos los artículos

Archivado en: macros, productividad Etiquetado como: AutoHotkey, regex, Word

Comentarios

  1. traductor dice

    4/enero/2016 en 10:19 am

    Otra posibilidad:

    #IfWinActive, ahk_exe WINWORD.EXE
    ^LButton::
    clipboard =
    Send ^c
    ClipWait, 0
    if ErrorLevel
    return
    Sleep, 50
    If RegExMatch(clipboard, "[a-z]{2,}tion\b")
    {
    clipboard := RegExReplace(clipboard, "i[sz]ation\b", "ización")
    clipboard := RegExReplace(clipboard, "i[sz]ations\b", "izaciones")
    clipboard := RegExReplace(clipboard, "tion\b", "ción")
    clipboard := RegExReplace(clipboard, "tions\b", "ciones")
    Send ^v
    }
    else
    {
    ToolTip, No matches found
    Sleep, 1000
    ToolTip
    }
    return
    #IfWinActive

    Responder
    • Jesús Prieto dice

      4/enero/2016 en 11:36 am

      Gracias, traductor, una posibilidad elegante, a base de expresiones regulares.

      Una cosa importante: en la macro de AutoHotkey habría que cambiar la línea:
      If RegExMatch(clipboard, "[a-z]{2,}tion\b")

      a esta otra:
      If RegExMatch(clipboard, "[a-z]{2,}tion")

      o bien a:
      If RegExMatch(clipboard, "[a-z]{2,}tions?\b")

      De este modo, tu macro podrá cambiar también las palabras en plural, terminadas en «tions».

      Veo que para escribir el comentario has empleado una dirección de correo desechable, así que no tengo forma de avisarte; espero que puedas ver mi comentario, para que puedas corregir tu macro de AutoHotkey, porque la idea me parece muy interesante.

      Nota: al igual que con mi macro, queda pendiente que funcione tanto si son palabras minúsculas («translation») como mayúsculas («TRANSLATION»).

      Un saludo.

      ... Jesús Prieto ...

      Responder
      • traductor dice

        4/enero/2016 en 1:27 pm

        Tienes razón, Jesús, lo correcto hubiera sido:

        If RegExMatch(clipboard, "[a-z]{2,}tions?\b")

        Corregido, ¡gracias!

        Para que funcione también con mayúsculas:

        #IfWinActive, ahk_exe WINWORD.EXE
        ^LButton::
        clipboard =
        Send ^c
        ClipWait, 0
        if ErrorLevel
        return
        Sleep, 50
        If RegExMatch(clipboard, "i)[a-z]{2,}tions?\b")
        {
        clipboard := RegExReplace(clipboard, "i[sz]ation\b", "ización")
        clipboard := RegExReplace(clipboard, "i[sz]ations\b", "izaciones")
        clipboard := RegExReplace(clipboard, "tion\b", "ción")
        clipboard := RegExReplace(clipboard, "tions\b", "ciones")
        clipboard := RegExReplace(clipboard, "I[SZ]ATION\b", "IZACIÓN")
        clipboard := RegExReplace(clipboard, "I[SZ]ATIONS\b", "IZACIONES")
        clipboard := RegExReplace(clipboard, "TION\b", "CIÓN")
        clipboard := RegExReplace(clipboard, "TIONS\b", "CIONES")
        Send ^v
        }
        else
        {
        ToolTip, No matches found
        Sleep, 1000
        ToolTip
        }
        return
        #IfWinActive

        Responder
        • Jesús Prieto dice

          4/enero/2016 en 1:38 pm

          ¡Fenomenal, muchas gracias por la idea!

          Responder

Comentar Cancelar respuesta

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

 

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Jesús Prieto

Jesús Prieto 2015

Sobre mí

Encuesta: coger

SUSCRÍBETE AL BOLETÍN

Serás el primero en saber que hay un nuevo artículo en Gonduana.

Lo más visto…

Artículos más leídos de Gonduana
Vídeos más vistos de Gonduana
Gonduana en las redes sociales

Últimos artículos

  • Comodín para buscar paréntesis anidados en Word
  • Comodín para buscar palabras repetidas en Word
  • ¡Feliz año 2019!
  • Cómo es la pantalla de presentación de Trados Studio
  • Cómo borrar duplicados en Word con comodines
  • Una parábola para comerciales: «Los 3 jóvenes en la nieve»
  • Cómo cambiar el formato de texto para WhatsApp con AutoHotkey
  • Seleccionar todos los segmentos de Trados Studio con AutoHotkey
  • Novedades de Trados Studio 2019
  • Opciones de la vista Memorias de traducción en Trados Studio

Nube de etiquetas

anglicismos AutoHotkey cobros comodines copias de seguridad correo español Excel foto fórmulas geografía geometría GTD imagen impagos impuestos libros marca matemáticas memoQ mouse MT negociación Outlook parábolas PDF PHP poesía power PowerPoint ratón regex retrasos sector tarifas tipografía TM Trados Studio VBA vídeo webinarios Word WordPress XML zoología

Categorías

  • adaptación (3)
  • blog (10)
  • comercial (23)
  • contabilidad (2)
  • encuesta (1)
  • etimología (4)
  • fiscalidad (2)
  • hardware (3)
  • macros (29)
  • marketing (8)
  • noticias (4)
  • productividad (39)
  • seguridad (5)
  • social (9)
  • software (39)
  • TAO (40)
  • terminología (8)
  • traducción automática (2)
  • traducción literaria (1)
  • tradumática (36)
  • vídeo (17)
Política de privacidad
Política de cookies
Aviso legal
Creative Commons

Licencia Creative Commons

Blog de Gonduana: recursos para traductores

Esta web usa cookies
Es cansino, sí, pero la ley europea me obliga a avisarte que este blog, como casi el 100%, usa cookies para recabar datos. ¿Estás de acuerdo con mi Política de cookies? Vale Más información