Algo más que traducir
Blog sobre traducción profesional, localización de videojuegos, software, aplicaciones móviles, sitios web y tecnologías de la traducción por Pablo MuñozTraductor inglés-español especializado en localización

Proteger texto para que no sea editable con Trados

Como ya adelanté en un comentario de la anterior entrada del blog, me he decidido a explicar cómo es posible aprovechar la potencia de las macros de Office —y, más específicamente, de Word— para proteger texto que no queremos que sea editable cuando traducimos con Trados. Primero expondré el problema para, a continuación, pasar a la lógica de la posible solución y explicar la implementación. Y todo ello sin necesidad de saber apenas programación.

El problema

Supongamos que el cliente nos envía varios archivos de Excel cuya primera columna tiene el texto original en inglés y cuya segunda columna tiene el texto Insert translation here. Lo más cómodo para traducir será copiar el contenido de la primera columna a un archivo de Word para traducirlo con Trados y, una vez hayamos acabado, peguemos la tabla en la segunda columna del archivo de Excel pertinente. El archivo de Word con el que tenemos que trabajar tendría el siguiente aspecto:

Word con códigos

Ahora bien, cada celda cuenta con una particularidad que dificulta el proceso traductor, y es que la primera y última palabra de la celda es un código entre comillas angulares (<>) que siempre varía y que es importantísimo respetar. Por tanto, si traducimos el archivo de Word que hemos creado sin un mínimo de preparación, correremos el riesgo de escribir incorrectamente dichos códigos, sobre todo si nos encontramos con coincidencias parciales (fuzzies).

Dado que sabemos que hay un estilo de Trados para Word que permite pasar por alto todo lo que esté marcado con dicho estilo, la solución es seleccionar estos códigos de inicio y fin y aplicar el mencionado estilo. Sin embargo, como el proyecto con el que tratamos es bastante grande, la tarea, aparte de repetitiva, llevaría mucho tiempo. ¿Cómo podríamos, pues, hacerlo todo de una vez?

La posible solución

Lo primero que debemos tener claro es nuestro objetivo: hallar la manera de seleccionar automáticamente los códigos de inicio y fin de cada celda (puede haber más de una frase entre ellos) y aplicar el estilo de Trados. Para ello, debemos pensar cuáles son las constantes que se repiten para poder hallar una “fórmula” con la que automatizar el proceso.

  • Los códigos siempre van entre comillas angulares. Pero no solo eso, sino que siempre acaban con “m>”. Esto nos da una idea de lo que debemos buscar de forma que el proceso que queremos automatizar sea seguro, pues si solo trabajamos con el carácter ‘>’ es posible que metamos la pata en algún lado.
  • Siempre hay un código al principio y otro al final. O sea, que tenemos dos códigos en cada celda independientemente de las frases que contenga. Por tanto, debemos hacer el proceso de seleccionar un código y marcarlo con el estilo de Trados dos veces por celda.
  • Si el cursor está en medio de un código, el ‘<‘ va a ser la posición de inicio del código y el ‘>’ el final. Parece obvio, pero es una pista importante que debemos tener en cuenta.

Así pues, tras un rato devanándonos los sesos podemos llegar a la conclusión de que podemos buscar los caracteres ‘m>’ con la función de buscar de Word para situarnos en la posición final del código e ir ampliando la selección carácter a carácter hacia la izquierda hasta que el primer carácter de la selección sea ‘<‘. Si se da esta condición, debemos aplicar el estilo de Trados a la selección y repetir la operación hasta el final del documento. Si no tenéis Trados, podéis descargar este documento de Word con el estilo necesario.

La implementación de la solución

Vamos a ver cómo podemos traducir esta solución a código de una macro de Word. La solución más sencilla es repetir los mismos pasos que he descrito (con una vez basta, claro) teniendo activada la función de grabar macro (en Herramientas > Macro o en la pestaña Programador en Office 2007). Cuando hayamos detenido la operación, deberíamos tener un código como el siguiente en el editor de Visual Basic:

Selection.Find.ClearFormatting

With Selection.Find
.Text = “m>”
.Replacement.Text = “”
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With

Selection.Find.Execute
Selection.MoveRight Unit:=wdCharacter, Count:=1 ‘Para estar justo a la izquierda del >
Selection.MoveRight Unit:=wdCharacter, Count:=6, Extend:=wdExtend ‘Este número variará en función de los caracteres del código
Selection.Style = ActiveDocument.Styles(“tw4winExternal”)
Selection.MoveRight Unit:=wdCharacter, Count:=1 ‘Para dejar atrás el código procesado

Ahora bien, necesitamos algunas variables y un bucle para que tengamos lista nuestra macro. Debemos saber las celdas que hay en la tabla para ejecutar el código el número de veces pertinente hasta el final del documento y escribir código para detectar el primer carácter de la selección para saber si aplicar el estilo de Trados o no. El código final que utilizaremos es el siguiente (creo que es bastante legible aunque no se tengan conocimientos de programación):

Sub HiddenTextForTrados()

‘Declaramos las variables
Dim TotalRows As Integer
Dim i As Integer

‘Obtenemos el número total de filas de la tabla
TotalRows = ActiveDocument.Tables(1).Rows.Count

For i = 1 To (TotalRows * 2)

Selection.Find.ClearFormatting
With Selection.Find
.Text = “m>”
.Replacement.Text = “”
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With
Selection.Find.Execute
Selection.MoveRight Unit:=wdCharacter, Count:=1

‘Bucle para saber cuál es el primer código de la selección
Do Until Left(Selection.Text, 1) = “<”

Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend

Loop

‘Aplicamos el estilo
Selection.Style = ActiveDocument.Styles(“tw4winExternal”)
Selection.MoveRight Unit:=wdCharacter, Count:=1

Next

End Sub

Ejecutad la macro y… ¡voilà, mirad el resultado!

Word con código oculto para Trados

Comprendo que alguien sin conocimientos de programación vea solución como algo complejo y difícil de implementar, pero de verdad, creedme: con unas nociones básicas de Visual Basic que se pueden aprender leyendo en Internet y a base de buscar mucho en la ayuda del editor del Visual Basic de Office y el clásico prueba y error, se pueden hacer auténticas maravillas.

A continuación os dejo con un vídeo que he preparado que vale más que mil palabras (lástima que no se vea demasiado bien):

¿De verdad no os entran ganas de aprender algo de programación? 😉

Actualización: viendo el vídeo me he dado cuenta de que para que la macro llegue hasta el final del documento hay que multiplicar la variable TotalRows por dos, ya que hay dos códigos por celda. Basta con cambiar For i = 1 To TotalRows por For i = 1 To (TotalRows * 2).

¡Comparte esta entrada! 🙂
Share on Facebook0Tweet about this on TwitterShare on Google+0Share on LinkedIn0
Pablo Muñoz Sánchez

Pablo Muñoz Sánchez

English > Spanish Game Translator
Soy traductor inglés > español con más de 8 años de experiencia especializado en localización de videojuegos y software. He traducido juegos como Metroid y Fire Emblem y ahora trabajo, entre otras cosas, como revisor para un gigante tecnológico. También soy cofundador de Traduversia, una plataforma de cursos online para traductores. Más sobre mí | Mis cursos | Mi web
Pablo Muñoz Sánchez
Pablo Muñoz Sánchez

¡Suscríbete al blog!

¿Te ha gustado lo que has leído?
Recibe nuevas entradas en tu correo e información exclusiva para suscriptores.

¡Apúntate gratis al curso online «Herramientas para la localización y la traducción audiovisual» de Traduversia!

Herramientas para la localización y la traducción audiovisual

Esto es lo que obtendrás si te apuntas:

  • Acceso gratuito e inmediato al curso online de Traduversia
  • 5 minicursos gratuitos por correo sobre localización, productividad, etc.
  • Cupones de descuento para matricularte en cursos de Traduversia a precio reducido

 

Y además, aprovecha este cupón exclusivo para lectores de Algo más que traducir. ;)

Cupón Algo más que traducir

11 comentarios

  1. Pues la verdad es que hace tiempo que intento lograr crear una macro para proteger texto para que no se pueda editar con Trados.

    Mi necesidad no es exactamente la del ejemplo (¡lástima!), pero creo que a partir de él podré acercarme bastante a lo que necesito.

    ¡Gracias!

  2. Pablo Muñoz Sánchez dice:

    Bueno, si te puedo echar una mano no tienes más que decírmelo 🙂

  3. yo por un tiempo use Trados para mis traducciones, pero lo encontré muy complicado y poco amigable para el usuario asé que lo dejé de usar

  4. No llaméis los símbolos «comillas angulares», por favor. Son los signos «menor que» y «mayor que», respectivamente.

  5. Today, you can protect the tags in the Excel filetype in Trados Studio – http://wp.me/p2xDjK-sO

  6. J Rowda dice:

    Otra opcion seria reemplazar todo lo que este entre (una regex como , o tal vez sin el punto en Word) por el mismo valor con formato twinexternal. Pero es verdad que el uso de macros de Word ya es un poco cosa del pasado (sin desmerecer esta publicacion, ojo), ya que con Trados Studio o Memoq, es muy sencillo proteger etiquetas.

Deja un comentario