Preparación de nuevos tipos de archivos con herramientas CAT (con JSON de ejemplo)

Hola a todos:

En los últimos meses me he venido encontrando un formato de archivo que no había recibido antes para preparar para traducción. Se trata de JSON (JavaScript Object Notation). JSON se utiliza principalmente como una alternativa a XML para transferir e intercambiar datos de forma sencilla. Además es también bastante común el encontrarse este tipo de datos como información integrada (embedded) dentro de otros tipos de archivo (por ejemplo, dentro de archivos JavaScript).

La cuestión es que en este post adjunto el tipo de archivo JSON que he preparado para SDL Trados Studio. No obstante, en este caso lo que me parece interesante es el comentar el proceso para aprender a crear (conceptualmente, con independencia de la herramienta CAT usada para traducir) cualquier definición de tipo de archivo.

Lo primero que hay que hacer al encontrarnos con un nuevo tipo de archivo es documentarnos. En el caso de JSON (y de la mayoría de archivos ligados a la programación web), Wikipedia (http://en.wikipedia.org/wiki/JSON) y w3schools (http://www.w3schools.com/json/) son siempre una buena opción. Tras documentarnos sobre las características formales el tipo de archivo es importante hacerse con unas copias y ejemplos (a ser posible, reales y del cliente para el que trabajemos) para comprobar que siempre vamos a trabajar con la estructura correcta. En el caso de JSON, según la definición estándar, la sintaxis se estructura en torno a pares de valores entrecomillados (comillas dobles) y separados por dos puntos. Por ejemplo:

“nombre” : “Alvaro”, donde “nombre” es el campo y “Alvaro” es el valor.

Dado que JSON se emplea a menudo como alternativa a XML, es interesante ver la analogía con la sintaxis de éste último, <nombre>Alvaro</nombre>.

Esta estructura (“elemento” : “valor traducible”) es la base sobre la que se crean otras más complejas como se puede observar en los diversos archivos de ejemplos, en los que hay diferentes niveles anidados y matrices con información. Pero, ¿es esto realmente importante?

Estructura Json

Estructura Json

En realidad, no es algo decisivo. A efectos de traducción, lo interesante es que hemos identificado que la información que se desea traducir es únicamente el valor entrecomillado que hay tras los dos puntos en cada par de valores. Por tanto, al crear nuestro tipo de archivo, conceptualmente hay que pensar algo como “sólo quiero traducir todo lo que haya entre dos puntos, comillas dobles de apertura y las comillas dobles de cierre” (:”TODO ESTO SERIA TRADUCIBLE, PERO NO MAS”).

Una vez hemos llegado a este punto, lo que hay que hacer es trasladar esa idea a la herramienta que utilicemos a fin de que al procesar los archivos únicamente se extraiga como texto traducible lo deseado.

Seleccionar tipo de definición de archivo

Seleccionar tipo de definición de archivo

En el caso de la definición de archivo JSON que he preparado para SDL Trados Studio, partí de la base de usar expresiones regulares porque me siento bastante cómodo con ellas (y porque era la opción más viable que había). Una vez hecho eso, la cuestión fue plasmar “sólo quiero traducir todo lo que haya entre dos puntos, comillas dobles de apertura y las comillas dobles de cierre” en una expresión regular. Este podría ser un desglose del razonamiento

  1. “elemento” : “valor traducible” –> Estructura general
  2. : “valor traducible” –> Estructura traducible (incluyendo espacios)
  3. : “cualquiertexto” –> Estructura traducible (incluyendo espacios)
  4. : “–> Expresión de inicio de segmento
  5. Cualquiertexto –> Texto traducible
  6. ” –> Expresión de fin de segmento

Tras desmembrar la idea, ya solo es cuestión de escribir la expresión regular en el lugar adecuado en la herramienta CAT (Studio en mi caso). De todas formas, nunca está de más hacer unas cuantas pruebas en herramientas que permitan hacer búsquedas con expresiones regulares como, por ejemplo, Notepad ++. En el caso de JSON, la expresión completa para pruebas sería :\s*?”.*?” (descripción de la expresión regular: dos puntos seguidos no obligatoriamente por 1 o más espacios en blanco, comillas dobles, cualquier combinación de números, letras y espacios en blanco y finalmente otras comillas dobles).

Pruebas

Pruebas

Tras hacer todas las comprobaciones que se deseen y configurar la regla general de extracción del texto traducible en el archivo podemos definir otros parámetros (entre otros la extensión de archivo predeterminada para la definición que en la que yo os ofrezco es .json) adicionales como la gestión de elementos internos, etc. En mi definición, aunque no tenga mucho sentido he puesto, por si las moscas, que se traten como elementos no traducibles todas las posibles etiquetas (por si alguien integra html dentro de JSON).

Creo que eso es todo. Me parece que con esta breve explicación cualquiera que se ponga a pensar un rato podrá hacer frente a nuevos tipos de archivo como JSON y prepararlos para traducirlos con CAT en lugar de manualmente.

Archivo de ejemplo 4 preparado

Archivo de ejemplo 4 preparado

Y ya que estamos, además la definición de JSON para Studio, también os dejo la de los archivos .rc de Windows que, aunque parezca mentira (¡a estas alturas de la vida!), hace poco me llegó un archivo rc para traducir. Aquí va pues la definición de tipo de archivo RC.

Con eso me despido. Espero que algunos os animéis con archivos “raros” a partir de ahora.

Un saludo,

Álvaro

Recomendación musical: Miracle un tema un poco antiguo de los Foo Figthers que escuché de fondo en Camden mientras paseaba con mi mujer y se me ha quedado en el coco.

Anuncios

Más sobre expresiones regulares

Saludos a todos:

En los últimos meses he publicado una serie de artículos sobre expresiones regulares (parte I, parte II y parte III) y me han llegado algunos correos electrónicos privados con preguntas, consultas y sugerencias. Gracias a todos los que os habeis molestado en ofrecerme vuestra opinión y os habeis interesado por el tema.

A pesar de que las expresiones regulares puedan resultar relativamente crípticas al principio, son algo fundamental para aquellos que tengáis intención que hacer pinitos o dedicaros profesionalmente a la ingeniería lingüística. Dicho esto, me he decidido a escribir este artículo corto y rápido (a diferencia de las parrafadas que suelo escribir) para facilitar un enlace a un vídeo de 26 minutos de duración que me pareció bastante explicativo para los que todavía puedan pensar que esto de las regexp es demasiado complejo y que no tiene mucha utilidad. Aquí va:

CS50 - Pattern Matching with Regular Expressions

Se trata de una sesión introductoria en el curso CS50 de Harvard. Aunque la explicación se hace sobre el lenguaje de programación Python los conceptos son extrapolables a cualquier implementación de regexp.

Lo que me parece más interesante que se tratan algunos de los puntos que ya vimos en los artículos mencionados al principio y además se ve muy claro con un par de ejemplo el comportamiento “avaricioso” de las regexp (tienden a encontrar el máximo de texto en una cadena), algo que no traté muy a fondo en la serie que yo escribí.

Eso es no es todo. Para presentar una alternativa a mis propios tutoriales, y a raíz de la visualización del vídeo que os propongo arriba, os dejo un tutorial de 30 minutos sobre expresiones regulares que tenéis en http://www.codeproject.com/Articles/9099/The-30-Minute-Regex-Tutorial. Muy completito, ¡y desde cero a cien en 30 minutos!

Por último, para los que ya se han puesto las pilas con las regexp y quieren convertirse en auténticos maestros, os paso los enlaces a los libros que recomendé para continuar avanzando (descarga gratuita autorizada):

Mastering RegExp

Regular Expressions Cookbook

En ambos casos se trata de libros bastantes extensos. En la mayoría de las ocasiones pueden resultar muy útiles para encontrar regexp ya definidas que podemos aplicar a situaciones o búsquedas comunes. Además, para los que quieran hacer búsquedas y reemplazos complejos utilizando variables y subexpresiones son una fuente de referencia inmejorable.

Bueno, ahora sí, eso es todo.

Nos leemos en la red. Un saludo,

Álvaro

Recomendación musical: el nuevo single de mis admirados Stereophonics, Indian Summer. Recuerda a los temas de sus primeros álbumes, ¿no?