Ya vimos los comodines de Word en este artículo, los vimos uno a uno y pusimos pequeños ejemplos de cada uno de ellos.
Ahora vamos a ver un caso práctico real, al que me enfrenté yo mismo, y que puede servirte como idea: convertir una memoria TMX en una tabla.
No es un problema evidente ni corto, así que tendremos la oportunidad de:
- practicar con los comodines de Word;
- demostrar que saber aplicar los comodines puede significar poder hacer algo en muy poco tiempo.
Índice
- Planteamiento del problema
- Abrir la memoria TMX en Word
- Preparación: borrado manual
- 1.er borrado con comodines de Word
- 2.º borrado con comodines de Word
- 3.er borrado con comodines de Word
- 4.º borrado con comodines de Word
- 5.º borrado con comodines de Word
- 6.º borrado con comodines de Word
- 7.º borrado con comodines de Word
- 8.º borrado con comodines de Word
- Formateado final
- Conclusiones de convertir una memoria TMX en una tabla con comodines de Word
Planteamiento del problema
Tienes una memoria de traducción en formato TMX y se la quieres enviar a otro traductor para que la tenga en cuenta para una traducción o revisión.
Ahora bien, y aquí empiezan los problemas: tu traductor no tiene ninguna herramienta de traducción asistida, así que una memoria de traducción en formato TMX le viene muy, muy grande…
Tu traductor solo quiere abrir la memoria en Word o Excel, hacer búsquedas ahí, para ver si se ha traducido algo de una determinada manera, y así poder seguir el estilo, por ejemplo.
Con esto en mente, imagínate que le envías un pequeño archivo TMX, que es un simple archivo de texto con esta pinta:
<?xml version="1.0" encoding="utf-8"?> <tmx version="1.4"> <header creationtool="SDL Language Platform" creationtoolversion="8.0" o-tmf="SDL TM8 Format" datatype="xml" segtype="sentence" adminlang="en-US" srclang="en-US" creationdate="20150308T192831Z" creationid="jesus"> <prop type="x-Recognizers">RecognizeAll</prop> <prop type="x-TMName">Gonduana</prop> </header> <body> <tu creationdate="20150308T192908Z" creationid="jesus" changedate="20150308T192910Z" changeid="jesus" lastusagedate="20150308T192910Z"> <prop type="x-Context">3248827995436491686, 104800894253067632</prop> <prop type="x-Origin">TM</prop> <prop type="x-ConfirmationLevel">Translated</prop> <tuv xml:lang="en-US"> <seg>Yes</seg> </tuv> <tuv xml:lang="es-ES"> <seg>Sí</seg> </tuv> </tu> <tu creationdate="20150308T192915Z" creationid="jesus" changedate="20150308T192916Z" changeid="jesus" lastusagedate="20150308T192916Z"> <prop type="x-Context">118222065, 3807978</prop> <prop type="x-Origin">TM</prop> <prop type="x-ConfirmationLevel">Translated</prop> <tuv xml:lang="en-US"> <seg>No</seg> </tuv> <tuv xml:lang="es-ES"> <seg>No</seg> </tuv> </tu> <tu creationdate="20150308T192918Z" creationid="jesus" changedate="20150308T193256Z" changeid="jesus" lastusagedate="20150314T182430Z" usagecount="1"> <prop type="x-Context">3803359, 3803359</prop> <prop type="x-Origin">TM</prop> <prop type="x-ConfirmationLevel">Translated</prop> <tuv xml:lang="en-US"> <seg>I only know that <bpt i="1" type="1" x="1" />I know nothing<ept i="1" /></seg> </tuv> <tuv xml:lang="es-ES"> <seg>Solo sé que <bpt i="1" type="1" x="1" />no sé nada<ept i="1" /></seg> </tuv> </tu> </body> </tmx>
Aquí no se ve nada, ¿verdad? ¡Y eso que solo tiene 3 unidades de traducción!
Imagínate si le envías una memoria de 50.000 unidades.
Tu traductor tampoco vería nada, no creo que deba insistir más, ¿verdad?
Tu traductor solo necesita una tabla sencilla:
con las 3 únicas unidades de traducción que hay en esta simple memoria.
Por tanto, hay muchas líneas que sobran, mucha información que solo marearía a tu traductor y que es preciso borrar antes de enviar la memoria simplificada. Así que hay que borrar mucho, y no lo puedes hacer manualmente.
Como diría, Ioda:
Los comodines de Word, en tu ayuda vienen. Con ellos, de toda información superflua e innecesaria, limpiar la memoria podrás.
El objetivo es convertir una memoria TMX en una tabla sencilla que sea útil al traductor.
¿Empezamos a cortar con la espada jedi?
Abrir la memoria TMX en Word
Primero tenemos que abrimos este TMX en Word de una manera que nos convenga. Te comento la forma que uso, aunque no sé si es la mejor:
- Abres el archivo TMX con el Bloc de notas.
- Seleccionas todo el contenido (CTRL+E) y lo copias (CTRL+C).
- Cambias a Word, y ahí pegas el contenido del portapapeles (CTRL+V).
Si lo has hecho así, verás tu documento de Word con el contenido mostrado arriba.
Si ves que falta información, es que lo has abierto de otra manera, y Word reconoce automáticamente el formato de archivo como un XML y te lo presenta algo más limpio. Si es así, da marcha atrás y sigue mi procedimiento, por favor.
Preparación: borrado manual
Una vez que tenemos el contenido del TMX en Word, borramos manualmente todo lo que esté fuera del elemento body, es decir, nos quedamos solo con lo que hay entre las líneas <body> y </body>:
<tu creationdate="20150308T192908Z" creationid="jesus" changedate="20150308T192910Z" changeid="jesus" lastusagedate="20150308T192910Z"> <prop type="x-Context">3248827995436491686, 104800894253067632</prop> <prop type="x-Origin">TM</prop> <prop type="x-ConfirmationLevel">Translated</prop> <tuv xml:lang="en-US"> <seg>Yes</seg> </tuv> <tuv xml:lang="es-ES"> <seg>Sí</seg> </tuv> </tu> <tu creationdate="20150308T192915Z" creationid="jesus" changedate="20150308T192916Z" changeid="jesus" lastusagedate="20150308T192916Z"> <prop type="x-Context">118222065, 3807978</prop> <prop type="x-Origin">TM</prop> <prop type="x-ConfirmationLevel">Translated</prop> <tuv xml:lang="en-US"> <seg>No</seg> </tuv> <tuv xml:lang="es-ES"> <seg>No</seg> </tuv> </tu> <tu creationdate="20150308T192918Z" creationid="jesus" changedate="20150308T193256Z" changeid="jesus" lastusagedate="20150314T182430Z" usagecount="1"> <prop type="x-Context">3803359, 3803359</prop> <prop type="x-Origin">TM</prop> <prop type="x-ConfirmationLevel">Translated</prop> <tuv xml:lang="en-US"> <seg>I only know that <bpt i="1" type="1" x="1" />I know nothing<ept i="1" /></seg> </tuv> <tuv xml:lang="es-ES"> <seg>Solo sé que <bpt i="1" type="1" x="1" />no sé nada<ept i="1" /></seg> </tuv> </tu>
Ha sido un buen corte, ¡pero solo hemos empezado!
El resto lo quitaremos en un abrir y cerrar de ojos con ayuda de los comodines de Word.
1.er borrado con comodines de Word
Primera misión para los comodines de Word: borrar todas las líneas con la cadena <tu creationdate.
A tu traductor le da igual cuándo se creó cada unidad de traducción, quién la creó, quién y cuándo se cambió, cuándo se empleó por última vez en la herramienta de traducción asistida.
¡Todo esto, borrarlo necesario es!
Para ello, el patrón de búsqueda será:
{1;}\<tu creationdate*\>^13
Mientras que el patrón de sustitución estará vacío completamente, lo que supone borrar la cadena encontrada.
Desgranaremos algo este primer patrón de búsqueda, porque hay conceptos que se repetirán en los siguientes «borrados»:
- {1;} buscará uno o varios espacios seguidos.
- \<tu creationdate buscará la cadena <tu creationdate.
- * buscará los caracteres necesarios hasta el siguiente criterio de búsqueda.
- Finalmente, \>^13 buscará la cadena > seguida de un salto de párrafo.
Por tanto, este patrón encontrará esta cadena:
<tu creationdate="20150308T192908Z"
creationid="jesus"
changedate="20150308T192910Z"
changeid="jesus"
lastusagedate="20150308T192910Z">¶
En Word, no olvides marcar la casilla Usar caracteres comodín. El cuadro de diálogo para esta operación de búsqueda y reemplazo quedaría así:
Si pulsamos el botón Reemplazar todos, Word nos avisa con este mensaje:
Aceptamos, y simplemente borrará cada cadena encontrada (ya que el patrón de sustitución está vacío). Recuerda que también borramos el salto de párrafo (indicado aquí con el símbolo del calderón ¶, exactamente como en Word).
El documento quedará así, algo más limpio:
<prop type="x-Context">3248827995436491686, 104800894253067632</prop> <prop type="x-Origin">TM</prop> <prop type="x-ConfirmationLevel">Translated</prop> <tuv xml:lang="en-US"> <seg>Yes</seg> </tuv> <tuv xml:lang="es-ES"> <seg>Sí</seg> </tuv> </tu> <tu creationdate="20150308T192915Z" creationid="jesus" changedate="20150308T192916Z" changeid="jesus" lastusagedate="20150308T192916Z"> <prop type="x-Context">118222065, 3807978</prop> <prop type="x-Origin">TM</prop> <prop type="x-ConfirmationLevel">Translated</prop> <tuv xml:lang="en-US"> <seg>No</seg> </tuv> <tuv xml:lang="es-ES"> <seg>No</seg> </tuv> </tu> <tu creationdate="20150308T192918Z" creationid="jesus" changedate="20150308T193256Z" changeid="jesus" lastusagedate="20150314T182430Z" usagecount="1"> <prop type="x-Context">3803359, 3803359</prop> <prop type="x-Origin">TM</prop> <prop type="x-ConfirmationLevel">Translated</prop> <tuv xml:lang="en-US"> <seg>I only know that <bpt i="1" type="1" x="1" />I know nothing<ept i="1" /></seg> </tuv> <tuv xml:lang="es-ES"> <seg>Solo sé que <bpt i="1" type="1" x="1" />no sé nada<ept i="1" /></seg> </tuv> </tu>
Más claro, ahora lo veo …
2.º borrado con comodines de Word
Ahora vemos que lo siguiente que nos molesta son tres líneas con el elemento prop, que empiezan por <prop y terminan por </prop>.
Para ello, el patrón de búsqueda será:
{1;}\<prop*/prop\>^13
y el patrón de sustitución estará otra vez vacío.
La primera cadena que encontrará Word será:
<prop type="x-Context">3248827995436491686, 104800894253067632</prop>¶
Después de pulsar Reemplazar todo, el documento quedará así:
<tuv xml:lang="en-US"> <seg>Yes</seg> </tuv> <tuv xml:lang="es-ES"> <seg>Sí</seg> </tuv> </tu> <tu creationdate="20150308T192915Z" creationid="jesus" changedate="20150308T192916Z" changeid="jesus" lastusagedate="20150308T192916Z"> <prop type="x-Context">118222065, 3807978</prop> <prop type="x-Origin">TM</prop> <prop type="x-ConfirmationLevel">Translated</prop> <tuv xml:lang="en-US"> <seg>No</seg> </tuv> <tuv xml:lang="es-ES"> <seg>No</seg> </tuv> </tu> <tu creationdate="20150308T192918Z" creationid="jesus" changedate="20150308T193256Z" changeid="jesus" lastusagedate="20150314T182430Z" usagecount="1"> <prop type="x-Context">3803359, 3803359</prop> <prop type="x-Origin">TM</prop> <prop type="x-ConfirmationLevel">Translated</prop> <tuv xml:lang="en-US"> <seg>I only know that <bpt i="1" type="1" x="1" />I know nothing<ept i="1" /></seg> </tuv> <tuv xml:lang="es-ES"> <seg>Solo sé que <bpt i="1" type="1" x="1" />no sé nada<ept i="1" /></seg> </tuv> </tu>
Interesante es, continúa simplificando…
3.er borrado con comodines de Word
Luego vamos a borrar las líneas con <tuv xml:lang="en-US">.
Para ello, el patrón de búsqueda será:
{1;}\<tuv xml:lang=\"en-US\"\>
y el patrón de sustitución estará otra vez vacío.
La cadena encontrada es:
<tuv xml:lang="en-US">
De nuevo, al pulsar el botón Reemplazar todo, supone borrar todas estas líneas, dejando el salto de párrafo.
Al pulsar Reemplazar todo, el documento quedaría así:
<seg>Yes</seg> </tuv> <tuv xml:lang="es-ES"> <seg>Sí</seg> </tuv> </tu> <seg>No</seg> </tuv> <tuv xml:lang="es-ES"> <seg>No</seg> </tuv> </tu> <seg>I only know that <bpt i="1" type="1" x="1" />I know nothing<ept i="1" /></seg> </tuv> <tuv xml:lang="es-ES"> <seg>Solo sé que <bpt i="1" type="1" x="1" />no sé nada<ept i="1" /></seg> </tuv> </tu>
Ya está mejor, ¿verdad?
4.º borrado con comodines de Word
Luego vamos a borrar las líneas con <tuv xml:lang="es-ES">.
Para ello, el patrón de búsqueda será:
{1;}\<tuv xml:lang=\"es-ES\"\>
y el patrón de sustitución será:
^t
Esta vez, hemos cambiado el patrón de sustitución: ^t es una tabulación. Es motivo es que nos ayudará al final del proceso para formatear el texto como una tabla.
La primera cadena encontrada es:
<tuv xml:lang="es-ES">
Al pulsar Reemplazar todo, el documento quedará así:
Esta captura muestra por primera vez los caracteres normalmente invisibles en Word (espacios ·, saltos de párrafo ¶ y tabuladores ). Para verlos en Word, en la cinta Inicio, sección Párrafo, pulsa el botón
.
5.º borrado con comodines de Word
Ahora vamos a borrar todas esas líneas que tienen </tuv> o </tu>.
Para ello, el patrón de búsqueda que encuentra estas dos cadenas es:
{1;}\</tu*\>^13
y el patrón de sustitución estará vacío. Esto hace que se borren estas líneas, incluidos los saltos de párrafos.
Al pulsar Reemplazar todo, nos quedará así el documento:
6.º borrado con comodines de Word
Ahora nos ocupamos de las unidades original y traducida, que es lo que nos interesa de verdad: <seg>Yes</seg>, <seg>Sí</seg>, etc.
El primer patrón de búsqueda que se nos ocurre que encuentra los elementos <seg> es:
\<seg\>*\</seg*\>
Pero fíjate que necesitamos borrar:
- los espacios iniciales;
- las cadenas <seg> y </seg>;
- el salto de párrafo final.
Aparte, hay que dejar intacto el contenido del elemento <seg>, (lo que encuentra el asterisco *).
El patrón de búsqueda definitivo que nos permite hacer todo esto es:
( {1;}\<seg\>)(*)(\</seg*\>^13)
y el patrón de sustitución será:
\2
\2 significa que se sustituirá la cadena encontrada por el contenido del segundo paréntesis del patrón de búsqueda, en este caso, es el contenido encontrado por el asterisco (*), borrándose el resto (en el patrón de sustitución no aparecen \1 y \3 precisamente para que se borren).
La primera vez, Word encuentra esta cadena:
<seg>Yes</seg>¶
Y la sustituye por Yes.
Al pulsar Reemplazar todo, nos quedará así el documento:
¡Manejas bien la espada, aprendiz de jedi!
7.º borrado con comodines de Word
Ya solo nos quedan los detalles: vamos a reemplazar la cadena tabulación seguida de salto de párrafo por la tabulación.
Para ello, el patrón de búsqueda será:
^t^13
y el patrón de sustitución será:
^t
Al pulsar Reemplazar todo, nos quedará así el documento:
Nota: esta parte la podríamos haber hecho perfectamente sin comodines. En este caso los patrones de búsqueda y sustitución sin comodines habrían sido: \t\p y ^t, respectivamente, pero no olvides dejar desmarcada la casilla Usar caracteres comodín.
8.º borrado con comodines de Word
Casi hemos terminado…
Si te fijas, en la tercera línea hay unas etiquetas de formato en:
<bpt i="1" type="1" x="1" />I know nothing<ept i="1" />.
Como al traductor tampoco le interesa saber el formato del texto, vamos a borrar también esta información.
Para ello, el patrón de búsqueda será:
(\<bpt i*\>)(*)(\<*/\>)
y el patrón de sustitución será:
\2
Si lo has hecho bien, el documento, limpio estará.
Lo dice Ioda, pero se ve aquí:
Formateado final
Aprovecharemos ahora las tabulaciones insertadas en el 4.º borrado para formatear un poco el texto:
Se trata de un texto que es muy fácil de convertir a tabla desde Word. Para ello, ve a la ficha Insertar de la cinta > botón Tabla de la sección Tablas > menú Convertir texto en tabla, y asegúrate de que está marcada la opción Tabulaciones:
Y tenemos una bonita y sencilla tabla que ahora sí que nos puede ser útil:
¡Ya listo lo tienes para, a tu traductor, enviar!
Conclusiones de convertir una memoria TMX en una tabla con comodines de Word
En este artículo hemos limpiado toda la información necesaria para poder enviar una memoria TMX a un traductor que solo necesita la información simplificada: texto original y texto traducido.
Para ello, hemos usado los siguientes comodines de Word *, (), {}, ^ y \ en el patrón de búsqueda, y espacio , ^ y \n en el patrón de sustitución.
Hemos ido diseñando poco a poco los patrones de búsqueda y sustitución, para ir avanzando y dejando el documento de Word cada vez más limpio.
En una memoria con decenas de miles de unidades, el trabajo se hace en cuestión de 2 minutos, gracias a los comodines de Word (y también gracias al procedimiento que tienes aquí). Síguelo al pie de la letra y lo tendrás hecho.
¡Ha sido un ejemplo completo que nos ha permitido repasar casi todos los comodines de Word!
Ahora, piensa un momento en las veces que dijiste que algo no se podía hacer. Piensa en lo que puedes aprovechar ahora de los comodines para hacer rápidamente eso que parecía imposible. Piensa ahora en que antes de volver a decir que algo es imposible no es factible en Word, te lo pensarás dos veces y sopesarás la posibilidad de hacerlo con los comodines.
* * * * *
En el próximo artículo, veremos un patrón de búsqueda que nos simplifica muchísimo el número de pasos. En concreto, unificamos en uno los reemplazos del tercero al séptimo.
Además, haremos con comodines el reemplazo manual que hemos hecho en este artículo. También es un comodín más complejo, así que lo dejamos para la próxima, ¿vale?
Por cierto: te puedes ir pensando estos dos comodines.
La película completa es que haciendo todo el proceso con comodines de Word nos permitirá programar una macro en VBA y ejecutarla de la manera más sencilla posible ¡y en un segundo!
Mientras tanto,
¡Que los comodines te acompañen!
Estimado:
Muchas gracias por esta herramienta. Me va a ser tremendamente útil ya que tengo problemas con unas Tms y caracteres chinos y creo que la única forma de solucionarlos va a ser esta. De todos modos, he intentado y me tira un error que dice que algunos de los caracteres del campo Find no es correcto. He copiado tal cual los datos, pero sigue dando el mismo error. Tendrás idea de cuál puede ser el error? Incluso en el documento de prueba que bajé de esta´página me da el mismo error.
Hola, Guillermo:
Vamos a ver si lo podemos hacer funcionar.
¿En qué paso del 1 al 8 Word te da error que comentas?
Asegúrate de que tienes marcada la casilla «Usar caracteres comodín».
Ya me dirás…
... Jesús Prieto ...