El problema original
Hace unos días estaba preparando un proyecto y me encontré con un problema que me obligó a buscar un método para modificar una memoria SDLTM sin Trados Studio.
Este problema surgió cuando estaba revisando las memorias en el panel Memorias de traducción del programa y descubrí diferentes cuestiones que había que subsanar. Algunas memorias tenían mal la combinación de idiomas, en otras el autor de los segmentos no tenía un nombre de usuario válido según el sistema de gestión de mi cliente y en varias había que cambiar el nombre del creador de la memoria por el de la empresa.
Por ejemplo, una de estas memorias tenía la combinación de inglés de Reino Unido a español de México, en vez de inglés de Estados Unidos a español de España. Por otro lado, el nombre del usuario que creó la memoria tampoco era el correcto:

Asimismo, por ciertas características concretas de los archivos de origen del cliente, había que desactivar el reconocimiento automático de los códigos alfanuméricos.

¿Cómo hacer cambios en bloque en una memoria?
Dado que varios de estos cambios no se pueden hacer directamente en Trados Studio, se pueden exportar las memorias al estándar TMX desde Trados Studio. Luego podemos usar un editor de textos como Notepad++ para hacer los cambios y reimportar los TMX modificados en una memoria SDLTM vacía.
No obstante, es un proceso que puede alargarse con varias memorias o si contienen muchísimos segmentos. Además, como hemos comentado antes, estas memorias SDLTM también tenían la peculiaridad de que estaba desactivado el reconocimiento automático de los códigos alfanuméricos por diferentes cuestiones de operativa. Este tipo de información se suele perder al exportar a TMX. Por todas estas razones, tuve que poner la mente a carburar para hallar una alternativa válida para modificar una memoria SDLTM sin Trados Studio.
Entonces recordé que las memorias SDLTM propias de este programa son en realidad bases de datos de SQLite, en las cuales tanto los segmentos de origen como los de destino y el resto de los metadatos están estructurados en forma de tablas. A tenor de ello, se me ocurrió que casi seguro habría una forma de hacer estas modificaciones mediante un editor de bases de datos.
Uso de Beekeeper Studio para modificar memorias SDLTM
Primero probé con un complemento para Firefox, SQLite Manager, al que había recurrido un par de veces, pero no terminaba de parecerme cómodo. Al final me convenció más la interfaz del programa Beekeeper Studio, que se puede usar en Windows incluso en versión portátil, sin necesidad de instalarlo. En la siguiente sección explico cómo pude llevar a cabo los cambios que necesitaba.
Crear una conexión en Beekeeper Studio
Antes de ponernos con los cambios, es muy recomendable hacer una copia de seguridad de la memoria SDLTM. Así podremos recuperarla si nos equivocamos en algún paso.
Una vez abierto el programa, lo primero que hay que hacer es crear una conexión (1) de tipo SQLite (2):

En esta conexión indicamos la ruta donde está la memoria SDLTM que queremos modificar (3). También le podemos dar un nombre identificativo a la conexión para identificarla en el futuro (4). Cuando pulsamos el botón Connect (5), se abre la memoria que hayamos elegido.
Análisis de las tablas de la base de datos
Entonces podemos ver en la barra lateral izquierda las diferentes tablas que conforman la memoria, de las cuales nos centramos para el propósito de esta entrada en las dos señaladas en la siguiente captura: translation_memories y translation_units.

Si hacemos doble clic en alguna de estas tablas, el programa la abre en la sección central y podemos ver las columnas en que está distribuida la información. Por ejemplo, en la tabla translation_memories encontramos los idiomas de origen y de destino y el autor de la memoria.

Si queremos realizar un pequeño ajuste en ciertas tablas, como cambiar la variante de un idioma, tan solo tenemos que hacer doble clic sobre la celda, modificar el valor y pulsar el botón Apply situado en la esquina inferior derecha del programa.

Este sistema para modificar una memoria SDLTM sin Trados Studio funciona si el cambio es sencillo, pero no cuando queremos hacer cambios en bloque, como modificar el nombre del usuario que tradujo todos los segmentos de la memoria. También podemos cambiar el usuario que modificó las traducciones o que las consultó por última vez, o todos estos valores al mismo tiempo.
Consultas en la base de datos
Estos cambios en bloque los podemos realizar mediante consultas a la base de datos (o queries en inglés). Así pues, supongamos que queremos hacer los siguientes cambios para corregir los errores en la memoria SDLTM mencionados antes:
- Modificar el autor de la memoria.
- Cambiar los idiomas de origen y de destino.
- Marcar la opción para no reconocer los códigos alfanuméricos.
- Cambiar el usuario que creó las traducciones, el que las modificó y el que las consultó por última vez, independientemente de los valores que haya. También se podría hacer el cambio en una sola columna solo si hay un valor determinado en otra, por ejemplo.
Podemos acceder a las consultas pulsando Ctrl + T o el botón + y luego en Add Query en la barra superior:

La consulta que he creado para llevar a cabo todos estos cambios tiene la siguiente sintaxis SQL:
-- Quiero hacer cambios en la tabla translation_memories.
UPDATE translation_memories
-- SET se usa para fijar valores.
SET settings = '63', --Fijar desactiva el reconocimiento de los códigos alfanuméricos en Trados Studio.
source_language = 'en-US', --Cambio el idioma de origen que haya por el que conste aquí.
target_language= 'es-ES', --Cambio el idioma de destino que haya por el que conste aquí.
creation_user = 'josemanuel'; --Cambio el usuario que creó la memoria que haya por el que conste aquí.
-- Ahora paso a la tabla translation_units.
UPDATE translation_units
SET creation_user = 'melodiadetraduccion', --Cambio el usuario que tradujo el segmento por primera vez en toda la columna por el que consta aquí, sin importar el valor que haya en la columna.
last_used_user = 'melodiadetraduccion', --Cambio el usuario que accedió el segmento por última vez en toda la columna por el que consta aquí, sin importar el valor que haya en la columna.
change_user = 'melodiadetraduccion'; --Cambio el usuario que modificó la traducción del segmento en toda la columna por el que consta aquí, sin importar el valor que haya en la columna.
-- Mediante SELECT * pido una muestra de todas las columnas de la tabla translation_units, con un límite de 100 filas, para comprobar si el cambio de usuarios se ha hecho de forma correcta.
SELECT * from 'translation_units' LIMIT 100Así es cómo se ve en Beekeeper Studio:

Cuando queramos hacer la consulta, pulsamos el botón Run All situado en la esquina inferior derecha de esta sección. También podemos guardar la consulta para reutilizarla más adelante si pulsamos el botón Save.
Comprobación de los cambios
Dado que al final de mi consulta se muestran hasta 100 filas de la tabla translation_units, puedo saber a simple vista si los cambios se han hecho correctamente:

También puedo comprobar otras modificaciones abriendo la memoria de nuevo en Trados Studio. Así me aseguro de que la combinación de idiomas ahora es diferente y de que ya no está activado el reconocimiento de los códigos alfanuméricos:

Por lo tanto, he conseguido lo que pretendía: modificar una memoria SDLTM sin Trados Studio, sin convertirla a otro formato y sin dañar el archivo por el camino.
Conclusión
Las memorias SDLTM de Trados Studio son bases de datos que almacenan mucha información, además de las propias traducciones, en una estructura de tablas. Aunque en el panel Memorias de traducción del programa podemos cambiar alguno de los datos, hay ciertos metadatos, como los idiomas o el nombre del usuario que creó o cambió una traducción en concreto, que no podemos modificar de esa manera.
La alternativa más conocida es exportar las memorias a TMX, modificarlas con un editor de textos y volverlas a importar en una memoria SDLTM vacía, pero no es el proceso más óptimo en ciertas situaciones donde queremos conservar algunos metadatos y configuraciones que se pierden al exportar a TMX.
Como hemos repasado en la entrada, mediante un editor de bases de datos y con un mayor o menor conocimiento de cómo funcionan las consultas y la sintaxis SQL, tenemos la posibilidad de modificar una memoria SDLTM sin Trados Studio, haciendo los cambios directamente en la base de datos. No solo sirve para cambiar valores de uno a otro, sino que también podemos llevar a cabo otras operaciones, como borrar en bloque un conjunto de segmentos con unas características concretas. También es una buena alternativa si queremos investigar la memoria pero no tenemos acceso a Trados Studio.
Deja una respuesta