Jump to content

Más en DLAN: Nuestras Traducciones | Otras Traducciones | Mods y modding | Revisiones y Guías | Videojuegos | Arte | Literatura | Rol y Rol por foro e IRC | Mapa de la web
Photo

Sobre los textos en el IE, nociones básicas, y como sacarlos, y programarlos.


6 replies to this topic

#1 Mhoram

Mhoram

    Trapalleiro

  • Staff inactivo
  • PipPipPipPipPip
  • 4,421 posts

Posted 31 December 2002 - 06:15 PM

Vale, como me aburro, he decidido editar este post y ampliarlo, así que empezaremos por los conceptos básicos.

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 , 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 --out dialog.tra

El resultado será algo como:

C:Documents and SettingsRaul>cd c:juegosblack isleplanescape torment

C:JuegosBlack IslePlanescape Torment>weidu --traify-tlk dialog.tlk --out
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 --out 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:JuegosBlack IslePlanescape 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:JuegosBlack IslePlanescape 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 --out 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.
Porque blanco es el matiz del hueso
estructura de la carne
disciplina de la vida


El viento de la angustia aún las suele arrastrar.
Huracanes de sueños aún a veces las tumban.
Escuchas otras voces en mi voz dolorida.
Llanto de viejas bocas, sangre de viejas súplicas.
Amame, compañero. No me abandones. Sígueme.
Sígueme, compañero, en esa ola de angustia.

#2

  • Invitado

Posted 31 December 2002 - 06:36 PM

antes que nada: gracias!! seguro que le servira a mucha gente que quiere comenzar a coordinar los proyectos ???

Esto es solo para los novatos, para los que tienen un poco mas de experiencia en eso del IE yo recomiendo encarecidamente WeiDu


anda ya que ahora que estas convertido en experto weidu... 8) ??? 8) ???

#3 Mhoram

Mhoram

    Trapalleiro

  • Staff inactivo
  • PipPipPipPipPip
  • 4,421 posts

Posted 31 December 2002 - 06:38 PM

No, todavia no, pero con un poco de tiempo.... quizas
Porque blanco es el matiz del hueso
estructura de la carne
disciplina de la vida


El viento de la angustia aún las suele arrastrar.
Huracanes de sueños aún a veces las tumban.
Escuchas otras voces en mi voz dolorida.
Llanto de viejas bocas, sangre de viejas súplicas.
Amame, compañero. No me abandones. Sígueme.
Sígueme, compañero, en esa ola de angustia.

#4 palafoxx

palafoxx

    Restless One

  • Staff inactivo
  • PipPipPipPipPip
  • 3,485 posts

Posted 21 April 2003 - 05:23 AM

Wow. Este si que es un tutorial !!! Muchas gracias por el trabajo, y en este caso me parece que es tremendamente justo que "barras para casa" ??? ??? al decir que recomendarías el WeiDu. Espero probarlo pronto

restlesstiny3gd.jpg    Inmortalidad es sólo una palabra. Todo lo que existe puede morir. Cada ente viviente tiene un arma contra la que no tiene defensa. Tiempo. Enfermedad. Hierro. Culpa


#5 Interloper

Interloper

    Ancillae

  • Miembro DLAN
  • PipPipPip
  • 377 posts

Posted 20 December 2003 - 06:18 PM

Aunque ya hace tiempo que el tutorial está aquí, yo me apunto a las felicitaciones!!! (si he de ser sincero, olvidé darte las gracias por un tutorial tan currado!! :-[)
Interloper. Traductor de La Academia de Sundabar

#6 SirLancelot

SirLancelot

    BGEE

  • EXPULSADO
  • PipPipPipPipPip
  • 2,440 posts

Posted 18 July 2004 - 02:19 AM

Me has ahorrado algún trabajo de traducir toooodo el rato los tutoriales que leo sobre el weidu con esto Mho, te agradezco el detalle del 2002. ???

Ahí van un par de preguntas:

weidu --make-tlk dialog01.tra

Nos sale algo como esto

C:JuegosBlack IslePlanescape 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


¿De las 106497 referencias a strings, sólo hemos traducido 51? ¿si el antiguo tlk tenía 106497, por qué el nuevo sólo tiene 251?

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


Muy interesante, ahora a ver si entiendo bien como funciona el tlkcmp
<i>Puede más la constancia de una gota que la fuerza de una ola.</i>

#7 Mhoram

Mhoram

    Trapalleiro

  • Staff inactivo
  • PipPipPipPipPip
  • 4,421 posts

Posted 18 July 2004 - 11:09 AM

Lance, como puedes comprobar podemos scara el intervalo de caenas que queramos, no hace falta sacarlas todas, y no me iba a poner a hacer otros 10 megas de dialog a lo tonto ¿no? saque solo unas pocas para tener los ejemplos, puedes sacar las que quieras, con el traify puedes especificar tambien a partir de que numero deseas que empieze el tra, en vez del cero puede ser el que tu digas, no se si con traify-tlk servirá igual.

lo de tlkcmp es muy facil.

weidu --tlkcmp-from dialog1.tlk --tlkcmp-to dialog2.tlk --out convertir.tp2

Esa instruccion convierte el dialog 1 en el 2,(o viceversa, es muy facil de ver) vamos no los convierte genera una lista con sentencia set_string para el tp2 y un tra con esas sentencias, lo cual quiere decir que si se aplica dicho parxche tal cual al dialog oportuno se convierte en el otro, la utilidad para tu caso es evidente, puesto que los set strings y los tra son justamente las lineas diferentes en cada dialog, asi que comparando un dialog con un mod instalado que cambia strings originales con otro original del todo te saldrá una lista de los strings cambiados, y podrás volver a cambiarlos o traducirlos muy facilmente, además el tlkcmp tambien funciona con --min y --max asi que puedes comparar intervalos unicamente.
Porque blanco es el matiz del hueso
estructura de la carne
disciplina de la vida


El viento de la angustia aún las suele arrastrar.
Huracanes de sueños aún a veces las tumban.
Escuchas otras voces en mi voz dolorida.
Llanto de viejas bocas, sangre de viejas súplicas.
Amame, compañero. No me abandones. Sígueme.
Sígueme, compañero, en esa ola de angustia.



Reply to this topic



  


A Bragol. Tus amigos te echan de menos.