¡Hola a todos!

Retomo el blog con una entrada que mi amigo y antiguo profe Rubén me sugirió escribir en su día: Okapi Framework. Como ya habéis sido testigos de mis parrafadas habituales, y dado que esta herramienta es muy amplia, escribiré varias entradas sobre el tema. Aquí va la primera de ellas.

INTRODUCCIÓN

Me imagino que muchos de vosotros os habréis preguntado al leer el título: «¿Qué es Okapi Framework?». Nadie mejor que sus creadores para contárnoslo. Si prestamos atención a su página web, podemos averiguar que Okapi Framework (de ahora en en adelante, Okapi) es «un conjunto de componentes y aplicaciones de código abierto, libre y multiplataforma diseñado como apoyo a los procesos de traducción y localización». Así pues, nos queda claro que Okapi es gratuito y que no se trata de una herramienta de traducción asistida por ordenador al uso, sino de un complemento de ayuda en las tareas de traducción y localización.

A su vez, Okapi consta de varias herramientas escritas en lenguaje Java entre las que destaco Rainbow (a la que dedicaré esta entrada en exclusiva), que nos permite ejecutar multitud de procesos relacionados con la traducción y localización, CheckMate, utilizada para realizar controles de calidad en archivos bilingües y, dentro de las antiguas aplicaciones de Okapi en .NET framework, Olifant, que sirve para realizar búsquedas y cambios en distintos formatos de memorias de traducción. Cabe mencionar, así mismo, la presencia de aplicaciones en línea de comandos, destinadas a usuarios más avanzados, como Tikal, que permite unir varios archivos XLIFF, llevar a cabo conversiones de archivos o incluso traducir utilizando sistemas de memorias de traducción; o Ratel, un editor WYSIWYG empleado para crear reglas de segmentación SRX (Segmentation Rules eXchange).

RAINBOW

La primera vez que abrimos Rainbow, nos encontramos con una ventana como la de la siguiente imagen:

Rainbow

Ventana principal de Rainbow

Como se puede observar, en dicha ventana figura la clásica barra de menús, común a la mayoría de aplicaciones, donde nos serán de especial utilidad los menús Utilities y Tools (Utilidades y Herramientas, respectivamente) y una sección de botones que ejecutan las funciones más básicas, como abrir un proyecto, guardarlo, etc. Debajo de esta sección vemos de un directorio titulada Root (Raíz), que es el directorio de nuestro proyecto. El resto de la pantalla lo ocupa una sección con varias pestañas, destinadas a la listas de documentos con los que queremos trabajar (hasta un total de tres), así como otra pestaña, Languages and Encodings (Idiomas y codificaciones), donde podemos establecer, como su nombre indica, los idiomas y codificaciones de los archivos que hayamos añadido. Para terminar, en Other Settings (Otros ajustes) podemos configurar algunas características de los archivos de destino.

Creación de paquetes de traducción

La primera función de Rainbow que quiero destacar es la creación de paquetes de traducción. De esta manera, podemos preparar nuestros archivos para convertirlos a formatos compatibles con diversas herramientas tanto gratuitas como de pago, como QT Linguist (recordad que hablé de esta herramienta en la entrada anterior), OmegaT, Trados, Swordish III (que mencioné en esta entrada) o Wordfast. Así que por falta de alternativas no será.

Para acceder a esta función, tendremos que, en primer lugar, cargar los archivos que queremos convertir mediante la combinación de teclas Alt + Insert. Una vez elegidos, nos dirigiremos a Utilities > Translation Kit Creation… (Utilidades > Creación de paquetes de traducción). En la siguiente captura de pantalla podemos ver un ejemplo de esta ventana. En la parte derecha de la ventana que aparece, podemos ver la lista de formatos a los que se pueden convertir los archivos. Cuando seleccionamos uno, en la sección inferior se nos aporta una breve descripción que soluciona más de una duda. Asimismo, en la pestaña Output Location (Ubicación de los archivos de destino) podemos decidir la ubicación del paquete que creemos, así como si deseamos que el programa cree un archivo comprimido con los archivos de dicho paquete.

Creación de paquetes de traducción

Captura de pantalla de la ventana de Creación de paquetes de traducción de Rainbow

El programa nos creará un paquete en la carpeta que le hayamos indicado, con una carpeta destinada a los archivos originales y otra, de nombre, work, que contiene los archivos de trabajo o borradores, que son el resultado de la conversión que ha realizado Rainbow para hacerlos compatibles con el programa de traducción asistida elegido. Aquí tenemos un ejemplo de un paquete PO que puedo traducir mediante QT Linguist, y que he creado a partir de un archivo en formato ODT.

Archivo PO en QT Linguist

Captura de pantalla de un archivo PO en QT Linguist creado por Rainbow

Las siguientes capturas muestran, respectivamente, los paquetes de este mismo archivo obtenidos siguiendo este proceso para su posterior traducción en Swordfish III (a partir de un archivo XLIFF), OmegaT y Trados (a partir de un archivo RTF).

Archivo XLIFF en Swordfish

Captura de pantalla de archivo XLIFF creado con Rainbow y abierto en Swordfish

Traducción en OmegaT

Captura de pantalla de un texto para traducir abierto en OmegaT creado desde Rainbow

Archivo RTF bilingüe

Captura de pantalla de un archivo RTF bilingüe para Trados creado con Rainbow.

Como habréis podido comprobar ya, contamos con muchas opciones de creación de paquetes de traducción, compatibles tanto con herramientas de traducción asistida gratuitas como comerciales. Aparte de lo mostrado anteriormente, podemos crear archivos compatibles con Transifex, Wordfast y otras herramientas de traducción asistida.

Creación de memorias de traducción

Imaginaos que, utilizando Rainbow, hemos podido convertir un archivo siguiendo los pasos anteriores a un programa de traducción asistida de nuestra elección como, por ejemplo, QT Linguist. Cuando hemos terminado de traducir el archivo, caemos en la cuenta de que queremos guardar una memoria de traducción basada en dicho archivo para poder aprovechar la traducción en futuros proyectos. Sin embargo, herramientas como QT Linguist no funcionan con el concepto de memoria de traducción, al contrario que otras alternativas como Trados o Wordfast o, si hablamos de software libre, OmegaT o Anaphraseus. Pues bien, en vez de maldecir nuestra mala suerte, Rainbow nos puede ayudar a salir del apuro mediante su función de conversión de archivos, en concreto la conversión a formato TMX (Translation Memory eXchange).

A diferencia de la función de paquetes de traducción, la conversión de archivos se limita a convertir los documentos que queramos a otro formato, sin crear la estructura de carpetas más propia de un proyecto de traducción (es decir, carpetas para documentos originales y borradores y otros archivos necesarios para ser compatibles con el programa elegido). Si bien es cierto que estas dos funciones pueden llegar a solaparse (en especial en el caso de los archivos PO), creo que dan la posibilidad de que cada traductor trabaje según más le convenga.

En la situación que nos ocupa, el primer paso para obtener nuestro archivo TMX a partir de un archivo bilingüe (PO, XLIFF o bilingües de Trados) es añadirlo a la lista de archivos mediante al atajo Ctrl + Insert. A continuación nos dirigimos a Utilities > Conversion Utilities > File Format Conversion… (Utilidades > Utilidades de conversión > Conversión de formatos de archivos), donde aparecerá la siguiente ventana:

Conversión de archivos

Ventana de Rainbow de la función de conversión de archivos

En la sección Output Format (Formato de destino), elegimos el formato al que convertiremos el texto (en este caso, TMX). Marcando las casillas de debajo, podemos elegir, entre otras opciones, si solamente queremos convertir los segmentos aprobados o si queremos crear un único archivo de destino en vez de un archivo de destino por archivo original. Para terminar, elegimos el nombre y la ruta del archivo de destino y pulsamos el botón Ejecutar.

Una vez terminado el proceso, obtendremos un archivo TMX compatible con la gran mayoría de herramientas de traducción asistida, ya sean de pago o gratuitas. En la siguiente captura de pantalla podemos ver un archivo TMX creado con Rainbow a partir de un documento RTF bilingüe (convertido a su vez con Rainbow a este formato desde un archivo original ODT), y que he abierto con el programa Notepad++ (una alternativa al Bloc de notas de Windows que recomiendo encarecidamente), lo que supone una buena forma de averiguar más información sobre la estructura interna de un archivo TMX.

Archivo TMX

Captura de pantalla de archivo TMX abierto con Notepad++

Con estas dos funciones doy por terminada esta entrada dedicada a Okapi Framework y, en particular, a Rainbow. Como siempre, os animo a trastear con Okapi y con Rainbow, porque así seguro que descubrís muchas más funciones de las que da tiempo a hablar en este blog y, de paso, podéis sacarle el máximo partido de manera acorde con vuestras necesidades profesionales y particulares.

En las siguientes entradas seguiré hablando de Rainbow, así como de otras aplicaciones pertenecientes a Okapi Framework. Con respecto a vosotros: ¿conocíais esta herramienta? ¿Alguno la habéis utilizado? ¿Qué funciones destacáis y cuáles echáis de menos? ¡Espero vuestro comentarios! 😉

Retomo el blog después de una larga ausencia por diversas razones. Sin más dilación, os dejo con mi entrada ;-):

Como algunos que me conocen ya sabéis, a pesar de llevar un tiempo traduciendo encargos de manera aislada, solamente me he decidido a dar el paso de darme de alta como traductor autónomo hace apenas unos meses. Dado este cambio en mi vida, decidí que, si quería dedicarme a la traducción, más me valía encontrar clientes, aunque fuera buscándolos debajo de las piedras. Mientras me documentaba y buscaba consejo de algunos colegas y amigos, me encontré con dos entradas en sendos blogs, X e Y, en los que se describían formas de obtener experiencia como traductor, aunque no fuera de manera profesional, así que los leí e investigué un poco más por mi cuenta en aquellas opciones que más me llamaron la atención o que vi más interesantes en relación con mis preferencias, que se encuentran en la localización de software.

De esta manera, llegué a una web donde desarrolladores de aplicaciones de software libre de toda clase y para todos los usos dejan los archivos de texto que conforman la aplicación al alcance de traductores voluntarios de multitud de idiomas que deseen localizarlo por iniciativa propia y de manera gratuita, de acuerdo con los principios del software libre. Este proyecto que sirve de enlace a los traductores y desarrolladores se llama Transifex y, si os atrae tanto como a mí la idea del software libre, recomiendo que le echéis un vistazo.

TRANSIFEX

En Transifex, los desarrolladores se dan de alta en la página y crean un proyecto para localizar ese software. Tienen las opciones de que cualquiera se encargue de la traducción, o bien de que haya un equipo de traducción por idioma. El segundo paso consiste en cargar los archivos con las cadenas de texto para que los posibles traductores puedan echarles un vistazo y se decidan a localizarlos. De esta manera, el traductor puede solicitar crear un equipo de traducción para el idioma que sea y, a continuación, el desarrollador decide si le interesa localizar el software a ese idioma y, en caso afirmativo, acepta la creación de un equipo de traducción para ese idioma.

A partir de ahí, el traductor puede elegir entre trabajar con los archivos en el propio navegador web o, por el contrario, descargarse los documentos para traducirlos de manera local con el programa que prefiera. En mi caso, me decanté por la segunda alternativa, dado que no me convencía el aspecto de la ventana de traducción en el navegador. Cómo es lógico, me hacía falta un programa que me sirviera para traducir el archivo (en mi caso, archivos .po) que me había descargado de manera cómoda. Al tratarse de un archivo con apenas unas decenas de cadenas de texto, no me hacía falta una herramienta de traducción asistida como la conocemos normalmente, con sus memorias de traducción y glosarios, sino más bien un programa que me mostrara información sobre las cadenas, que me permitiera introducir comentarios si así lo estimaba oportuno y, por supuesto, que me permitiera traducir de la manera más cómoda, sencilla y fácil posible. Cuando tenía XP instalado, trasteé con Virtaal, pero nunca he conseguido que funcione en Windows 7, por lo que quedaba descartado automáticamente.

Así que me puse a pensar y me acordé de QT Linguist, un programa que tenía instalado en mi partición dedicada a la distribución de Linux Ubuntu que era justo lo que estaba buscando. Investigando en la red, di con una versión de este programa para Windows. Antes de ni siquiera instalarla, me llamó la atención que el archivo ejecutable apenas ocupa 3 MB, mientras que en Ubuntu se descargan unos 100 MB, debido a que se necesitan el resto de componentes de QT. A continuación añado una captura de pantalla de la ventana principal de este programa.

INTRODUCCIÓN A QT LINGUIST

QT Linguist en WindowsQT Linguist en Ubuntu

La interfaz de QT Linguist se divide en varias secciones (views en inglés) y barras de herramientas (formadas por los botones situados debajo de los menús, que cumplen las funciones habituales de estos programas). En la esquina inferior derecha se indica el número de segmentos traducidos y el número de segmentos de que consta el archivo, respectivamente. Si queremos saber el número de palabras que contiene el archivo, tenemos que ir al menú View > Statistics (Ver > Estadísticas), donde se nos mostrará el número de palabras, caracteres y caracteres con espacios tanto del original como de la traducción.

Para empezar con las diferentes vistas o secciones, encontramos una columna llamada Context (Contexto) en la que se muestra en qué parte del programa aparece cada segmento (por ejemplo, en el menú Acerca de, en la vista de reproducción, etc.), así como el número de segmentos de los que se compone cada sección. A su derecha vemos la columna Strings (Cadenas de texto), donde se incluyen los segmentos de origen que hay que traducir. Más a su derecha figura otra columna, llamada Sources and forms (Fuentes y formas), donde aparecen otros archivos vinculados a cada segmento en concreto.

Debajo de estas columnas se encuentra la sección de traducción propiamente dicha. En el primer cuadro de texto vemos el texto de origen y, debajo de él, el cuadro dedicado a la traducción. Hay un tercer cuadro de texto que emplearemos cuando queramos insertar comentarios, dudas o sugerencias relativas al segmento en que nos encontremos. Esta posibilidad que nos ofrece QT Linguist, aunque pueda parecer una minucia, es, en mi opinión, extremadamente útil tanto para el traductor como para los revisores o jefes de proyectos, ya que permite una comunicación más fluida entre ambas partes y justificar nuestra traducción en aquellos segmentos dudosos o ambiguos.

En el borde inferior de la ventana principal encontramos dos secciones. Una de ellas, llamada Phrases and guesses (Frases y sugerencias) nos muestra sugerencias de traducción. Si la cadena de texto en la que nos encontremos es igual o similar a otra que forme parte de los diccionarios (phrase books) que hayamos añadido a este proyecto, su traducción aparecerá en esta sección. Podemos crear nuestros diccionarios según nuestras preferencias, lo que resulta interesante para agilizar nuestra tarea, ya que podemos incluir en ellos algunas cadenas de texto que podemos ver en la práctica totalidad de las aplicaciones, sean del tipo que sean, como Abrir, Nuevo, Guardar, Copiar, etc. En el manual de QT Linguist al que hago referencia más adelante figura un tutorial para la creación de estos diccionarios.

A su izquierda encontramos una sección de avisos que aparecen en caso de que haya algún problema con la traducción, otra función de gran interés y utilidad para el traductor, especialmente cuando hemos revisado la traducción y se nos ha podido escapar algún error. Por ejemplo, en la siguiente captura de pantalla he forzado un error para que me muestre un aviso. En este caso, el programa indica tanto en esta sección como en la barra de estado (esquina inferior izquierda) que en la traducción se ha omitido una variable (grosso modo, un código que hace referencia a elementos del programa que pueden variar durante la ejecución del programa, tales como la versión, el número de elementos seleccionados, etc.) que aparece en la versión original. Quedan claras, pues, la utilidad y la importancia de que un programa de traducción asistida por ordenador cuenta con esta función. Podéis encontrar más ejemplos de variables en la cuarta entrega del excelente curso de introducción a la localización de La paradoja de Chomsky que menciono al final de esta entrada.

Ejemplo de aviso en QT Linguist

También puede darse el caso de que el programa nos indique un error que, tras comprobarlo, no sea tal. Así ocurre en esta captura de pantalla, donde QT Linguist me indica que la puntuación del texto original es distinta que la de la traducción. En este caso, podemos ignorar el error validando el segmento mediante la combinación de teclas Ctrl + Retroceso.

Ejemplo de falso error en QT Linguist

Para terminar, añadiré que la ventana de QT Linguist es totalmente personalizable, puesto que podemos añadir o quitar los botones o secciones que queramos. Para ello, basta con ir a View > Toolbars / Views y podremos hacer cambios en las barras de herramientas y secciones, respectivamente.

Como tampoco pretendo convertir esta entrada en una parrafada (me conozco :-P) y todavía me quedan unos cuantos párrafos para terminarla (os lo dije :D), no voy a adentrarme en el resto de funciones de esta programa, ya que, en su mayoría, son las mismas que cualquier otro programa de traducción asistida por ordenador. Además, al final de esta entrada incluyo un enlace a un manual muy completo en inglés sobre QT Linguist orientado a traductores. También podéis hacer como yo y probar a traducir proyectos de Transifex con este programa e ir descubriendo sus posibilidades.

RESULTADO DE MI TRADUCCIÓN CON TRANSIFEX

En el comienzo de esta entrada comentaba que había descubierto QT Linguist después de haberme adentrado en el proyecto de localización de software libre Transifex. Cuando descubrí que existía un proyecto de localización de Minitunes, me animé a traducirlo al español. Para los que no lo conozcan, Minitunes es un reproductor de música para Linux que utilizaba mucho cuando mi ordenador de sobremesa todavía aguantaba tener dos sistemas operativos juntos. Me hacía mucha ilusión probar y traduje el archivo con los segmentos de este programa (que es el que he utilizado para las capturas de pantalla de esta entrada).

Entregué el archivo en su día y me olvidé del tema, hasta que un día, hace unos meses, vi una noticia en un blog sobre Ubuntu al que estoy suscrito sobre el lanzamiento de una nueva versión de Minitunes. Abrí el enlace a su página web y me encontré con que esta versión incluía las traducciones realizadas en Transifex. Tenía que instalarme Ubuntu (en este caso, mediante Wubi) y hacer algunas de capturas de pantalla :).

Vista inicial de Minitunes

Vista de álbumes en Minitunes
Menú Acerca de en Minitunes

Aquí tenéis la prueba de que, a veces, no es necesario pasar días y días traduciendo, ni hace falta que nos dejemos un riñon en programas sofisticados, para que nuestro trabajo se vea en la red, para envidia de amigos y familiares no traductores :-P.

Y DE POSTRE…

Os dejo con los enlaces prometidos relacionados con QT Linguist, la localización y formas de ganar experiencia en traducción.