Algo más que traducir

Blog sobre traducción profesional, localización de videojuegos y tecnologías de la traducción

Archivos de la categoría ‘Informática’

Proteger texto para que no sea editable con Trados

Publicado por Pablo Muñoz Sánchez en 07/04/2008

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

Publicado en Informática, informática aplicada a la traducción, localización | Etiquetado: , | 2 Comentarios »

“Mamá, quiero ser informático y traductor”

Publicado por Pablo Muñoz Sánchez en 03/04/2008

Homer informáticaTras asistir a la genial charla de Aitor Medrano sobre perfiles profesionales en el sector de la localización que dio el pasado martes en la Facultad de Traducción e Interpretación de la Universidad de Granada, así como con la lectura del artículo Cómo convertirse en hacker, me he decidido a escribir un poco acerca de las posibilidades que brinda la informática al mundo de la traducción según mi propia experiencia. Aunque bueno, mentiría si no dijera que el verdadero impulso para escribir este artículo se encuentra en que actualmente ocupo casi toda mi jornada laboral como técnico de tecnologías de la información (TI) en AbroadLink.

Es posible que el término “técnico de TI” asuste a un estudiante de traducción que haya estudiado humanidades. Sin embargo, lo que estudiemos en el instituto no debería condicionarnos totalmente, ya que, por ejemplo, hay mucha gente a la que le encanta el deporte y no por ello estudia Ciencias de la Actividad Física y el Deporte (INEF). Nuestras aficiones y motivaciones ajenas a nuestros estudios son las que nos van a permitir diferenciarnos de los demás y dirigir mejor nuestra carrera profesional. Así pues, si nos gusta el derecho seguramente nos decantaremos por traducir temas jurídicos, y si nos gustan los videojuegos aspiraremos a traducirlos en el futuro.

A mí, desde pequeño, me fascina la informática. Me gusta conocer los entresijos del hardware y el software y trastear con ellos. Me gusta probar nuevos programas para ver qué es lo que mejor se adapta a mis necesidades o hacer cosas que ni siquiera me había planteado y que me podrían venir muy bien. Ello hizo que con 14 años me interesara por el mundo del romhacking y que pasara horas y horas no solo traduciendo y definiendo mi futura profesión, sino averiguando la manera de cómo extraer el texto de los archivos de los videojuegos que quería traducir y de facilitar la labor de traducción al reducir los aspectos técnicos que debía tener en cuenta en dicho proceso. De hecho, tal fue la experiencia adquirida que plasmé mis conocimientos sobre el tema en un manual sobre romhacking.

Llegados a este punto, seguro que muchos pensarán que debo de ser un friki de cuidado, a lo que yo respondo que, hoy día, todo el mundo es un friki de algo. No solo son frikis los informáticos, sino también los que se saben al dedillo las últimas estadísticas de un partido de baloncesto o la vida de un autor. Para mí, el ordenador me parece un invento lleno de posibilidades infinitas capaz de solucionar una gran cantidad de problemas con las habilidades necesarias.

Steve Jobs, presidente de Apple, dijo una vez en un alentador discurso de graduación que los puntos de lo que hemos hecho en el pasado se pueden conectar desde el presente, aunque nunca se sabe cuándo llegará ese momento. Y eso me ha pasado a mí ahora. Con 15 años, sentí la necesidad de profundizar en el vasto mundo de la informática. Sentí la necesidad de crear aplicaciones para facilitar o automatizar algunas tareas que hacía de vez en cuando y que eran repetitivas. De este modo, puse mis ojos en la programación de aplicaciones y empecé a estudiar por mi cuenta un lenguaje de programación que parecía sencillo: Visual Basic.

Con el tiempo, descubrí cómo este lenguaje de programación podía solucionarme la vida, como cuando tenía que renombrar archivos masivamente según unos criterios y programé la aplicación The Renamer. Ahora ocupo gran parte de mi trabajo delante de la ventana de Visual Basic creando aplicaciones que puedan facilitarle la vida a nuestro director de ventas o a nuestros traductores internos. A pesar de los numerosos detractores de Visual Basic, creo que es un lenguaje maravilloso para los que no tenemos intención de crear aplicaciones muy complejas y no vamos a trabajar como verdaderos informáticos.

Sin embargo, el mayor atractivo de trabajar como programador y técnico de TI en una empresa de traducción es la cantidad de retos que se te plantean semanalmente y lo mucho que aprendes cada día. No se trata de buscar una solución terminológica que probablemente no recuerdes en el futuro para un texto científico o técnico, sino de idear una solución a un problema real que puede llevarte al éxito o al fracaso o incluso a que tengas que rechazar un encargo. Y parece que no, pero es posible que un día cualquiera tengas que lidiar con un problema de copiar y pegar en una tabla en función del color del texto de una columna y que lo puedas solucionar rápidamente —y, por tanto, que sea rentable— con una pequeña macro de Excel.

“Claro —algunos dirán—, este tío es un máquina y lo sabe todo”. Craso error, pues al comenzar en AbroadLink sabía más bien poco de utilizar las API de otros programas y menos aún de que Trados y SDLX dispusieran de métodos con los que ser controlados externamente desde otra aplicación. Tampoco sabía lo que suponía instalar una máquina virtual para emular un sistema operativo como Linux sin necesidad de instalarlo como tal en el disco duro y así poder usar ]project-open[, ni dividir o unificar archivos de TagEditor cortando y pegando trozos de código. Y esto son tan solo unos ejemplos.

Hay que tener espíritu de superación; y no hay sensación más maravillosa en el trabajo que ver que has sido capaz de resolver algo que parecía imposible hace unas horas tras mucho esfuerzo. Por todo ello, os animo a que, si os gusta mucho la informática y la traducción, comencéis a investigar, a profundizar y, sobre todo, a ser autodidactas. No son los cursos ni la facultad los que os van a iluminar, sino los problemas reales con los que os enfrentéis diariamente y las soluciones que les deis. Yo he cambiado —o, mejor dicho, ampliado— mi perfil profesional dadas mis inquietudes y las necesidades de la empresa. ¿Por qué no te iba a pasar a ti?

Publicado en Informática, informática aplicada a la traducción, localización | 8 Comentarios »