Los textos en los juegos del IE están todos contenidos en un solo archivo, llamado dialog.tlk, este archivo no es más que una serie de strings o cadenas de caracteres que tiene asociado un número de referencia y están guardados en formato tlk, en el Infinity Engine Hacking Project se explican los detalles tecnicos de este formato, pero no nos hacen falta. Bien, cuando digo que todos los textos están en ese archivo me refiero a absolutamente todos los textos, por ejemplo, los objetos o ficheros itm pese a que en el juego tengan sus textos no tienen textos en si mismos, esta es la razon por la que hay que exportarlos a tbg o usar WeiDU para que dichos textos aparezcan en otros juegos.Esto es aplicable a cualquier tipo de fichero del IE, no contienen textos. Cuando abrimos por ejemplo un arma, y vemos su descripción, en realidad estamos usando dos ficheros, por un lado el itm y por el otro el dialog.tlk, todos los archivos en los que aparece algún tipo de texto, o los textos que aparecen en el juego, la interface, etc, etc vienen descritos como un valor de referencia, dicho valor tiene asignado en el dialog.tlk un string o cadena de caracteres que es el que se muestra. De esta forma para traducir un juego simplemente hay que traducir su dialog.tlk, eso si, sin cambiar ni eliminar las referencias ya que sin ellas no podemos hacer nada. Consecuencias de esto son que si queremos introducir nuevo texto en el juego, es decir, texto que no estuviera previamente en el dialog.tlk tenemos que introducirlo en el dialog.tlk y asignarle un valor de referencia, luego, cuando queramos usarlo damos dicho valor al engine del juego para que inserte el texto. Otra consecuencia es que es muy facil parchear los juegos con las nuevas traducciones, simplemente hay que sustituir el dialog sin traducir por el nuevo traducido, no hay que cambiar nada mas, ni empezar otra partida ni nada por el estilo, ya que en los juegos guardados no se salvan textos sino las referencias y el juego no lee textos sino que inserta strings, y para él lo mismo es una frase que un dibujo que un conjunto de bytes, los que sepais algo de programación lo entendereis perfectamente. Un inconveniente que tiene es que es un trabajo muy pesado, ya que al estar TODOS, incluyendo por ejemplo los nombres de los botones, etc, etc, en un único fichero de texto este es enorme, sin ir más lejos, el tlk pasado a modo texto (ya veremos más adelante como hacerlo) del PST ocupa 11,7 megas, para un fichero de texto es mucho. Bueno, espero haber explicado como funciona el tema de los textos, ahora vamos a la parte practica, como sacarlos y volverlos a insertar. Antes se podian usar varios programas, ahora se siguen pudiendo usar, pero nadie en su sano juicio utilizaria otra cosa que no fuera WeiDU, http://www.cs.berkeley.edu/~weimer/bgate/ , ya que sus posibilidades de manejo de ficheros tlk y de exportar importar son enormes, muy faciles de usar y por si fuera poco, automatizadas completamente, te adoramos Weimer. Supongamos que tenemos un juego completamente nuevo, por ejemplo el IWD2 y queremos sacar sus textos para traducirlos, pues simplemente, y una vez instalado WeiDU, osea, simplemente despues de haber descomprimido el zip al directorio del juego, tenemos que abrir una ventana del DOS y escribir: weidu --traify-tlk dialog.tlk --textout dialog.tra El resultado será algo como: C:\Documents and Settings\Raul>cd c:\juegos\black isle\planescape torment C:\Juegos\Black Isle\Planescape Torment>weidu --traify-tlk dialog.tlk --textout dialog.tra [weidu] WeiDU version 115 [./chitin.key] 372 BIFFs, 12135 resources [dialog.tlk] 106497 string entries [./dialogf.tlk] 106497 string entries Donde podeis ver información sobre la versión de WeiDU empleada (115), información sobre el fichero key (una lista de todos los recursos del juego almacenados en subarchivos tipo bif, que son algo así como los zip) e información sobre el dialog.tlk (en este caso tiene 106497 referencias a cadenas de texto) De la misma forma al escribir esto se crea en el directoria del juego el archivo dialog.tra, que puedes abrir con cualquier editor de texto y es más o menos así: @0 = ~"I shall wait for you in death's halls, my Love." She smiles, but there is only sadness in it. She closes her eyes, and with an ethereal whisper, she fades.~ [DEN008B] ~"I shall wait for you in death's halls, my Love." She smiles, but there is only sadness in it. She closes her eyes, and with an ethereal whisper, she fades.~ [DEN008B] @1 = ~POUCH Weight: 0 A small bag made of some unidentifiable material.~ ~POUCH Weight: 0 A small bag made of some unidentifiable material.~ @2 = ~Morte's Bite (Sharpened)~ ~Morte's Bite (Sharpened)~ @3 = ~EMBALMING ROOM KEY Weight: 0 This long, thin key has a spiral head and smells faintly of embalming fluid. It looks extremely old, and numerous scratches cover its surface. NOTE: When using keys in Torment, you only need to have them in your inventory to unlock a door. In some cases, the key will vanish after it is used... this is done when the key is no longer needed and frees up your inventory slots for other, more important items. ~ ~EMBALMING ROOM KEY Weight: 0 This long, thin key has a spiral head and smells faintly of embalming fluid. It looks extremely old, and numerous scratches cover its surface. NOTE: When using keys in Torment, you only need to have them in your inventory to unlock a door. In some cases, the key will vanish after it is used... this is done when the key is no longer needed and frees up your inventory slots for other, more important items. ~ @4 = ~Dak'kon Zerth Armor~ ~Dak'kon Zerth Armor~ @5 = ~You see a strikingly beautiful ghostly form before you; her arms are crossed, and her eyes are closed. She has long, flowing hair, and her gown seems stirred by some ethereal breeze. As you watch, she stirs slightly, and her eyes flicker.~ ~You see a strikingly beautiful ghostly form before you; her arms are crossed, and her eyes are closed. She has long, flowing hair, and her gown seems stirred by some ethereal breeze. As you watch, she stirs slightly, and her eyes flicker.~ @6 = ~DAK'KON'S ZERTH ARMOR Armor Class: 5 Weight: 25 Usable only by Dak'kon Dak'kon's ceremonial zerth armor. It is fashioned of interlocking metal rings, formed of the same substance that Dak'kon's blade is made of. (Unlike the blade, however, it does not appear that the armor changes based on the mental state of the wielder.) The armor is worn over a padded red tunic, and spiked bracers and shoulder pads have been added to give greater protection to the arms and upper body. While Dak'kon's armor is similar to chain mail, it is lighter and more flexible, allowing him to wield his sword more effectively. It seems that when the sword and armor are used in tandem, the armor actually becomes lighter in weight and more flexible, more like cloth than chain mail. Whether this is a unique property of karach, or whether this is some magical effect of the two items, is unknown.~ ~DAK'KON'S ZERTH ARMOR Armor Class: 5 Weight: 25 Usable only by Dak'kon Dak'kon's ceremonial zerth armor. It is fashioned of interlocking metal rings, formed of the same substance that Dak'kon's blade is made of. (Unlike the blade, however, it does not appear that the armor changes based on the mental state of the wielder.) The armor is worn over a padded red tunic, and spiked bracers and shoulder pads have been added to give greater protection to the arms and upper body. While Dak'kon's armor is similar to chain mail, it is lighter and more flexible, allowing him to wield his sword more effectively. It seems that when the sword and armor are used in tandem, the armor actually becomes lighter in weight and more flexible, more like cloth than chain mail. Whether this is a unique property of karach, or whether this is some magical effect of the two items, is unknown.~ veamos un poco más a fondo el formato tra: @0 = ~"I shall wait for you in death's halls, my Love." She smiles, but there is only sadness in it. She closes her eyes, and with an ethereal whisper, she fades.~ [DEN008B] La @ es solo un simbolo, como el c: para referirse a un disco duro, el número de detras de la arroba es la referencia que el string tiene asignada, el igual es un igual, simplemente eso, quiere decir que la referencia 0 por ejemplo es igual a la cadena que viene detrás, y el texto en si, que va insertado tal cual aparece es lo que está entre las dos ~~. De vez en cuando aparece entre corchetes algo al final de la cadena, esto es el nombre de un fichero de audio en formato wav o wavc (este ultimo es un formato especial del IE) que se hace sonar a la vez que aparece el texto. Normalmente para cada referencia existen dos cadenas diferentes, la primera hace referencia al texto que se dirá si el protagonista es un hombre, el segundo si es una mujer. Muchas veces son identicas. Cuando ya tenemos todo el dialog en formato tra pues solo hay que traducir los textos, que recordemos, son lo que esta entre ~~. Una vez que tenemos todos los textos traducdos pues lo pasamos de nuevo a formato tlk, de nuevo es muy facil, solo hay que escribir: weidu --make-tlk dialog.tra Esto crea automaticamente el fichero dialog.tlk con las nuevas cadnas traducidas, como siempre es mejor tener copias de seguridad por si acaso lo más lógico es que al crear el dialog con el traify-tlk le demos otro nombre, como por ejemplo: weidu --traify-tlk dialog.tlk --textout dialog01.tra de esta forma se crea el archivo dialo01.tra con los textos, de tal forma que al escribir: weidu --make-tlk dialog01.tra Nos sale algo como esto: C:\Juegos\Black Isle\Planescape Torment>weidu --make-tlk dialo.tra [weidu] WeiDU version 115 [./chitin.key] 372 BIFFs, 12135 resources [./dialog.tlk] 106497 string entries [./dialogf.tlk] 106497 string entries [dialo.tra] parsed [dialo.tra] has 51 translation strings New TLK will have 251 entries Basicamente nos dice lo mismo que antes, dandonos información sobre el nuevo fichero tlk creado, en este caso que esta formado por 51 strings o cadenas de caracteres y que el nuevo tlk tiene 251 entradas, o de otra forma, que su ultima referencia es la 251. Una vez hecho esto, solo tenemos que pasar el antiguo dialog.tlk a lugar seguro y cambiar el nombre del dialog01.tlk ( o en mi ejemplo dialo.tlk) a dialog.tlk. ¿A que es sencillo?. El parche de traducción seria simplemente el nuevo dialog.tlk creado, y la forma de instalarlo cambiar el dialog.tlk original del juego por el nuevo traducido. Esto por lo que respecta a juegos enteros o mods que modifiquen completamente el dialog.tlk, pero hay mods que simplemente añaden unas cuantas lineas al dialog.tlk, el caso de los mods en formato WeiDU lo veremos más delante, por lo cual no es necesario traducirlo entero, la forma más sencilla de traducir estos mods, más bien de sacar los textos, ya que programar el nuevo lenguaje es más complicado, es la siguiente. ANTES de instalar el mod escribimos: weidu dialog.tlk Lo que nos da aslgo así como: C:\Juegos\Black Isle\Planescape Torment>weidu dialog.tlk [weidu] WeiDU version 115 [./chitin.key] 372 BIFFs, 12135 resources [dialog.tlk] 106497 string entries [./dialogf.tlk] 106497 string entries Que es la información sobre el dialog.tlk, anotamos el numero de entradas (string entries), en este caso 106497. Ahora instalamos el mod y volvemos a escribir lo mismo. Nos dará un numero de string entries diferente y mayor que el que tenemos apuntado, esas son las nuevas cadenas de texto que se añaden al juego, imaginemos que el numero es 106500. Eso quiere decir que desde la 106498 hasta la 106500 todo son cadenas nuevas, para sacarlas escribimos: weidu --min 106497 --max 106500 --traify-tlk dialog.tlk --textout textomod.tra Y ya tenemos un fichero tra con los nuevos textos. Una vez traducidos los textos lo más facil es enviarselo a alguien que entienda los distintos formatos de mods para que lo programe, explicar aquí como hacerlo seria muy largo y habria que contar cosas que se escapan totalmente al proposito de este tutorial que es explicar brevemente como funcionan los textos en el IE y como se pueden conseguir , y en los casos más sencillos, como se pueden programar. Un caso aparte son los mods en WeiDU, normalmente no hace ni falta sacar los textos ya que viene de por si los ficheros tra con el mod, simplemente abrirlos y traducirlos, hecho esto, hay que enviar los nuevos tra traducidos a su creador para que los programe. Si no hay ficheros tra pues se le pide a su creador que convierta el mod a usar tra, es muy sencillo, y salvo que el creador no quiera traducciones seguro que lo hace; de hecho lo más probable es que ya use los tra, es mucho más sencillo y la tendencia es a usarlos cada vez más. Bueno, espero que este tutorial sirva para algo y aclare las cosas a los traductores.