Este artículo es algo complejo, pero posiblemente algunos traductores con inclinaciones técnicas lo consideren útil.
Hace algún tiempo escribí sobre el formato TMX para memorias de traducción. Estas memorias pueden ser archivos muy pesados, con miles y hasta millones de renglones. El procesamiento de estos archivos con los métodos tradicionales con frecuencia puede constituir un problema. Por ejemplo, la mayoría de los editores de texto cargan todo el archivo en la memoria antes de dejarlo listo para realizar cualquier trabajo útil. Además una simple tarea de búsqueda y reemplazo en más de un par de archivos puede convertirse rápidamente en tediosa y proclive al error.
No obstante, hay editores de texto que procesan archivos de a un renglón, o algunos, lo que produce un resultado instantáneo, listo para el renglón siguiente, y libera recursos in situ. Uno de los programas más conocidos de este tipo es SED (Stream EDitor, editor de flujos). Está disponible en cualquier sistema Unix (incluido, por supuesto, cualquier Linux y, en particular, Ubuntu) y hay versiones para Windows, también (como esta).
La sintaxis del lenguaje sed es algo críptica, pero esto no desalentará a gente acostumbrada a entender a Shakespeare, ¡claro que no! No solo eso, la lógica de esta versión en particular está algo retorcida. Críptica y retorcida, bonito nombre para la cafetería de un barrio bohemio.
Imprimiremos todos los segmentos de un archivo TMX que contenga las palabras: regla, reglas, Regla o Reglas. El patrón utilizado será el siguiente: [Rr]eglas?[^a-zA-Z] (He escrito sobre patrones y expresiones regulares aquí). En español coloquial, se lee así: “Mayúscula o minúscula ‘r’ seguida de ‘egla’ seguida de ‘s’ opcional seguida por cualquier otro signo que no sea una letra”. La última restricción es para eliminar palabras como “reglamento”, por ejemplo.
Así que aquí vamos:
# trabaja solamente dentro de las unidades de traducción/<tu[ >]/ {# si el patrón está en el primer renglón, ir a la etiqueta encontrada/[Rr]eglas?[^a-zA-Z]/b encontrada :siguiente# si llegamos al final de la unidad de traducción, hemos terminado,# y no se ha encontrado el patrón/</tu>/b no_encontrado# aún no estamos en el final de la unidad de traducción/[Rr]eglas?[^a-zA-Z]/!{N;b siguiente}# debido al !, si estamos aquí, el patrón aún no se ha encontrado:encontrado# recoge el resto de los renglones hasta el final de la unidad de traducción/</tu>/!{N;b encontrado}# comando que se ejecutará si encontramos el patrónp b salir :no_encontrado# comando que se ejecutará si no encontramos el patrónw archivo_de_no_encontrados :salir }
Explicación rápida de los comandos utilizados:
b salta a la siguiente etiqueta
/XYZ/ ejecuta el siguiente comando solo si XYZ coincide
! invierte el sentido de la prueba anterior
N lee el siguiente renglón y lo agrega al contenido actual
p imprime el espacio del patrón
w escribe el espacio del patrón en un archivo
Si guarda esto como encontrar_en_tmx.sed, podrá utilizarlo desde la línea de comando de un sistema Unix así: sed encontrar_en_tmx.sed memoria_grande.tmx
Esto es solo un ejemplo. Pero el mecanismo básico puede adaptarse a varias situaciones, por ejemplo, la búsqueda de segmentos que no contienen ciertos patrones, etc.
Artículo original: Processing TMX with sed