¿Cuántas veces hemos deseado que esa aplicación que usamos, estuviera en nuestro idioma? Y cuantas nos hemos peguntado, ¿por qué nadie la ha traducido?
Con el fin de que cada uno pueda intentar traducir su programa favorito, voy a procurar explicar aquí los pasos a seguir y como hacerlo.
Seguro que mas de uno pensará, si soy capaz de traducir un programa, es que comprendo el idioma en el que está y entonces, ¿para qué traducirlo? Bueno, los motivos para traducir aplicaciones, no son objeto de este tutorial, pero a lo mejor hay alguien en tu casa que no entiende el idioma original, o quieres deslumbrar a esa chica de la Uni que no te hace mucho caso, no sé…, poned vosotros los motivos.
Antes de empezar con la traducción, deberíamos tener en cuenta, que podemos estar rozando la ilegalidad. En algunas Licencias de Usuario, se especifica que no se permite la modificación, ni traducción del programa, por lo que deberíamos pedir permiso a su autor, para realizar tal menester. En mi opinión particular, cuando compro un programa o cualquier otra cosa, esta pasa a ser de mi propiedad y puedo hacer con ella lo que quiera. Os imagináis que no nos permitieran añadir, por ejemplo, una regrabadora u otro disco duro a nuestro PC, ¿a que eso es impensable?, entonces ¿por qué no puedo modificar un programa que he comprado? Bueno, como ya os decía, esta es mi opinión personal. Lo legal es hacer lo que pone en la Licencia de Usuario.
En fin, basta ya de preámbulos y vamos a entrar en materia.
Herramientas y utilidades
Veremos aquí los programas que vamos a necesitar, para meternos en faena. Ninguno de ellos es imprescindible y por supuesto hay muchos más, pero desde luego con ellos y las necesarias nociones del idioma a traducir, podremos empezar.
Exescope
Este programa, es un editor de recursos y con él se pueden abrir y modificar los menús de los archivos exe y de las dll, así como el tamaño y disposición de los botones, cuadros de diálogos, exportar e importar iconos, etc., incluso podremos activar opciones del menú que estén deshabilitadas ;-). Esta en inglés, pero es muy fácil de usar y bastante intuitivo. Es shareware.
La página de su autor es http://hp.vector.co.jp/authors/VA003525/Eindex.htmResource Hacker
Este es otro editor de recursos. Su función es similar a la del anterior, pero hay veces que los archivos que no se pueden abrir con el Exescope, se abren con este o viceversa, por ello es recomendable tener los dos. Este programa no lee ejecutables de 16 bits. Es freeware.
Se descarga desde http://www.users.on.net/johnson/resourcehacker/PEID
Esta es una utilidad para analizar y averiguar si los archivos esta o no comprimidos. Es muy fácil de utilizar, solo hay que arrastrar el programa que queramos analizar, a la ventana de Peid y obtendremos toda la información. Es freeware.
Se puede descargar desde http://peid.has.itUltraedit
Este es un editor hexadecimal, que creo que casi todo el mundo conoce. Lo utilizaremos para abrir los archivos y modificar los textos que no se hayan podido traducir con los editores de recursos. Es shareware. Esta en castellano y se puede descargar de www.ultraedit.comWinHex
Otro editor hexadecimal. Es muy parecido al anterior, también en castellano e igualmente shareware, aunque este no tiene limitación de tiempo, la única limitación es que no deja guardar archivos de más de 200 KB. Pagina de descarga www.winhex.comPSPad
Este es otro editor hexadecimal. Nos servirá igual que el anterior, para modificar esos textos que no pudimos con los editores de recursos. Es freeware.
Se descarga desde www.pspad.com/enBinText
Este programa encuentra las cadenas de texto Ascii, Unicode y de Recursos que hay dentro de un archivo, pudiendo guardar el resultado en un archivo de texto. Es freeware. Lo descargamos desde la pagina del autor www.foundstonw.comTextScan
Esta aplicación nos extrae, todos los textos, incluso algunos que no veremos con los editores de recursos, escritos en un archivo exe o dll. El archivo resultante es de extensión .csv que renombraremos a .txt para abrirlo con cualquier editor de texto. Será útil, para buscar las cadenas de texto que luego cambiaremos con algún editor hexadecimal. Según su autor, quizás nos interese “…even for just looking for the occasional Easter egg!”, o sea, para mirar los famosos huevos de pascua :-) Es freeware.
Enlace de descarga www.analogx.com/files/txtscani.exeTextPad
Este es un editor de texto, del tipo WordPad, que nos servirá para editar algunos archivos (.ini, .lng) y traducirlos directamente. Es un programa bastante completo, aunque tiene el inconveniente que es de pago. Claro que acudiendo al mercado adecuado, ya sabeis…
Se puede descargar desde http://textpad.comNos encontraremos con programas que están comprimidos, esto lo veremos utilizando el Peid. ¿Que por qué los comprimen? En principio, para que ocupen menos espacio, pero también, para intentar evitar que sean crackeados… rara vez consiguen esto ultimo :-) Para poder trabajar con ellos, los tenemos que descomprimir, ya que de otra manera no hay nada que hacer. Hay muchos compresores, por lo que es difícil aconsejar un programa determinado. Tenéis que buscar en cada caso o preguntar cual utilizar.
En cuanto a los traductores, yo suelo utilizar los de Word Magic Software, el English-Spanish Interpreter Profesional, un buen traductor, y el diccionario, Translation Dictionary & Tools Profesional. También tienen una suite, que lleva estos dos programas y alguna otra utilidad. Están en castellano, pero son de pago, muy caros.
Otros programas que quizás nos hagan falta, sobre todo si pensamos elaborar el parche de traducción, pueden ser el PatchMaker, éste detecta las diferencias y crea un parche de actualización, solo con los cambios efectuados y el InstallCreator aplicación para crear programas instaladores.
Entrando en faena
Bueno, ya tenemos los programas necesarios, ya hemos elegido cual será nuestra victima y la siguiente pregunta que nos hacemos es, ¿por donde empiezo? ¿que traduzco?.
Normalmente, los menús, imágenes, textos, ventanas de aviso, etc. se encuentran en los archivos ejecutables (exe) y en las librerías (dll), pero también podemos encontrarlos en otros tipos de archivos, por ejemplo del tipo .ocx
Sin embrago, hay otro tipo de programas, multilingües, que ya vienen preparados para que el propio usuario se cree su módulo de idioma. En estos, los textos y menús, están en un archivo de texto plano, con diferentes extensiones, como .txt, .ini, .lng, que son editables con el WordPad, el Notepad o TextPad. El proceso es tan sencillo, como abrir el archivo, del idioma de origen, e ir cambiando las frases por su correspondiente traducción a nuestro idioma. Debemos tener cuidado de no modificar la estructura del archivo y no cambiar el nombre de las variables, de lo contrario quedará corrupto y no funcionará. Normalmente debemos traducir lo que sigue al signo “=”.
Aquí os pongo un trozo, a modo de ejemplo, del archivo en español del Spybot. Los archivos de idioma de este programa, tienen extensión .sbl
[formMain.actionListMain]
aActiveXCheckAgain=&Analizar de nuevo
aActiveXHelp=Ay&uda
aActiveXImmunize=&Inmunizar
aActiveXImmunizeUndo=Deshacer
Observad, que aparece en algunas palabras el símbolo &, esto sirve para indicar que la letra siguiente es la tecla de acceso rápido y es la que aparece subrayada cuando ejecutamos el programa. Hay que tener mucho cuidado, de que no aparezca la misma letra marcada, en dos opciones distintas, dentro de la misma rama del menú. En el ejemplo de arriba, si escribimos “&Analizar de nuevo” y "&Ayuda”, provocaremos un error.
Una vez traducido, solo queda cambiar el nombre al archivo, añadirlo a la carpeta que contiene los demás archivos de idioma (suele ser una, llamada “languaje” ;-)), ejecutamos el programa, buscamos la opción de elegir idioma y seleccionamos el nuestro. Así de fácil…
Algunos programas de este tipo son, el ya mencionado Spybot, el Ad-Aware, el Easycleaner, etc. No son muy abundantes, pero hay algunos, y por ellos podemos empezar a practicar. Del resto, de los que llevan los recursos en los archivos .exe y .dll, nos vamos a dedicar a continuación.
En este otro tipo de programas, al abrir los archivos, podemos encontrarnos con que están compilados con diferentes lenguajes, los mas usuales son el Visual Basic y el Delphi, por lo que nos vamos a centrar en estos dos.
Programas en Visual Basic
Son los mas cómodos de traducir y quizás del tipo que mas nos vamos a encontrar. Para editar los ejecutables de estos programas, utilizaremos el eXeScope o el Resource Hacker. Yo suelo utilizar el primero y es por ello, que en las imágenes que veréis aquí aparecerá éste, pero como ya os decía antes, los dos son muy parecidos, aunque habrá veces que lo que no podamos abrir con uno, lo abriremos con el otro. Antes de empezar, seria bueno que hiciéramos una copia del ejecutable, más que nada para evitar sorpresas desagradables, como esta. Algunos programas tienen un control del CRC y si modificamos cualquier cosa, dejan de funcionar.
Para iros mostrando lo pasos a seguir, he utilizado como ejemplo el programa Teleport Pro. Si editamos el ejecutable de éste, el pro.exe, con el eXeScope, veremos esto (imagen 1). En la raíz resource, es donde esta todo lo que a nosotros nos interesa y por donde meteremos mano al programa en cuestión. Intentaré explicar lo que hay en cada apartado.
BITMAP- Aquí están todos los archivos de mapas de bits, con las imágenes (imagen 2) que nos muestra el programa. Las podemos exportar, como archivo bmp, y modificarlas con un editor grafico, por ejemplo el Photoshop, Saint Shop Pro, o el Paint de Windows y de nuevo importarlas al ejecutable. Solo debemos tener la precaución de no modificar el tamaño de la imagen, por lo demás, podemos modificarla a nuestro antojo.
MENU- Este apartado nos muestra los menús que hay en el programa (imagen 3). Estos serán, los que aparecen en la parte de arriba de la ventana del programa, los menús contextuales, esos que aparecen al hacer clic con el botón derecho, y cualquier otro tipo de menú que haya en el programa. Para modificarlos, únicamente hay que hacer doble clic, sobre la parte a modificar, en la ventana de la derecha y escribir. Veréis que aparece a menudo el símbolo &. Recordad lo que ya os dije anteriormente para qué era y el cuidado que teníamos que tener. En cuanto al tamaño o la extensión del término escrito, por lo general no debemos preocuparnos, se adaptará automáticamente.
DIALOG- Aquí encontramos todos y cada uno de los cuadros de diálogos que nos mostrará el programa (imagen 4), y que pulsando este botón
, los podremos ver de forma gráfica (imagen 5). Esta parte será la mas problemas nos dará al traducir. Normalmente, las palabras en español, ocupan mas espacio, que sus correspondientes en ingles (Ok-aceptar, add-añadir), y por ello nos vamos a ver en la obligación de modificar la disposición y el tamaño de algunos elementos del cuadro de dialogo. Seria bueno que esto ocurriera de forma automática, pero no es así, tenemos que hacerlo con nuestras propias manitas.
No es difícil realizar esta operación, aunque debemos ser un poquito cuidadosos. La podemos llevar a cabo de dos maneras posibles.Una es, mediante la modificación de los valores X, Y y height , width, que aparecen en la ventana de la derecha (imagen 6). Estos valores indican la posición y el tamaño respectivamente. Desde luego se refieren al elemento que tengamos seleccionado y que habremos traducido en la ventana llamada caption.
La otra manera será, modificando el tamaño, con el procedimiento de pinchar y arrastrar, directamente en el editor de dialogo (imagen 7). Ya vimos anteriormente, como mostrar este editor.
En la parte derecha del eXeScope, tenemos tres pestañas (imagen 8), donde podemos modificar el aspecto de los botones, habilitarlos, deshabilitarlos, etc.
STRING- En esta parte nos encontraremos, las frases que nos muestran los cuadros de aviso, los “consejos del día”, las explicaciones que nos muestran al poner el ratón encima de un icono, etc. (imagen 9). Igual que ocurre con los menús, aquí no debemos preocuparnos del tamaño o posición, se adapta automáticamente. Eso si, debemos tener especial cuidado en no modificar los números identificativos, ni eliminar la coma que sigue a este número, ni alterar el orden. Aunque el eXeScope, nos avisará en alguna ocasiones (imagen 10), si hacemos algo mal, debemos tener cuidado en esta parte. Asimismo, hemos de prestar atención a no modificar unas cadenas que aparecen (“%d”, “&0AD”, “%s”, etc.)
CURSOR- Aquí están los cursores del programa (imagen 11). Se pueden exportar, modificar e importar de nuevo.
ICON- Los iconos del programa (imagen 12). También son exportables.
Aparecen algunas opciones mas, como Acelerador, Version, XPManifest, las cuales no tenemos nada que hacerles. Sin embargo, hay otras, que en el caso de las imágenes que he ido mostrando, no aparecen, que si podremos modificar. Son estas:
AVI- Aquí están los archivos en formato .gif o .avi con las animaciones vemos en el programa (imagen 13). Las podemos exportar para, con el programa adecuado, modificarlas y volverlas a importar. Por lo general y como comprenderéis, estos archivos no vamos a necesitar modificarlos, pero que sepáis que se puede hacer.
DIALOGODATA- (imagen 14) Aquí están las palabras que vemos en los cuadros de dialogo desplegables. Debemos tratarlas igual que hacíamos con las que aparecen en string.
Programas en Delphi
A veces, al analizar un ejecutable con el Peid, nos encontramos con que esta escrito en otro lenguaje de programación, el Delphi (imagen 15). Este tipo es un poco mas lioso de manejar, pero igualmente traducible. Cuando los editamos con el eXescope o el ResHacker, veremos los mismos o casi los mismos apartados, que en los de tipo Basic. La diferencia esta en que los cuadros de diálogos no están en DIALOG, sino en un apartado llamado RCData (imagen 16) y que no los vamos a ver de forma grafica, sino en una especie de lista.
Aquí, las palabras o frases a traducir, debemos ir buscándolas en esa lista. Las veremos escritas entre comillas simples y por lo general, solo podremos escribir el mismo número de letras que ya viene, en todo caso menos, pero no más.
Para modificar el tamaño y disposición de los botones o elementos en los cuadros de diálogos, debemos buscar unas líneas (imagen 17), donde aparecen sus dimensiones. La dificultad aquí, estriba en que debemos cerrar el editor y ejecutar el programa, para ver si el resultado es satisfactorio.
Programas comprimidos
Algunos programadores, comprimen sus programas, con el fin de que éste ocupe menos espacio antes de ejecutarse, os encontrareis con ASProtect, Armadillo, UPX, tElock, neolite y muchos más. Otras veces lo hacen como medio de protección, para evitar que sean crackeados. El caso es que a nosotros, que lo que intentamos es, simplemente, traducir el programa, esto nos va a perjudicar, ya que cuando queramos abrir el ejecutable, con el editor de recursos, nos parecerá algo como esto.
No va a resultar fácil traducir estos programas, la mayoría de ellos, llevan además un control del CRC y al descomprimirle, como el tamaño es mas grande, nos saldrá una ventana de error, que puede ser como esta.
Nos queda la alternativa, de traducir y volver a comprimir, antes de ejecutarlo. Si lo hemos hecho bien, no habrá problemas, pero os aseguro que no es fácil, aunque tampoco imposible.
Quizás, el que menos problemas presente, sea el packer UPX,
éste lo podemos descomprimir con el programa Guipex. Es un programa muy sencillo de utilizar y muy útil, ya que nos permitirá comprimir y descomprimir tanto ejecutables, como librerías. En estos dos enlaces lo podéis buscar www.blueorbsoft.com/guipex y http://upx.sourceforge.net.
Conclusión, recomendaciones y otras cosas
Algunas veces, cuando pensamos que ya tenemos todo traducido, nos las prometemos muy felices, ejecutamos el programa y… plaf!! resulta que aparece algún texto sin traducir. Esto es debido, a que estos textos, están en una zona diferente que la que contiene los recursos. Aquí no nos queda más remedio que tirar de un editor hexadecimal, Ultraedit, WinHex o el que tengamos mano.
Hemos de abrir el archivo, buscar el texto a traducir y con mucho cuidado de no alterar nada mas, modificamos la cadena de texto. Hay que tener en cuenta que no podemos añadir ni una letra mas de las que hay.
Para ayudarnos es la tarea de buscar los textos no traducidos, nos podemos servir del programa TextScan. Ya os explique antes, como funciona este programa.Recordad que esto no es una ciencia exacta, que os encontrareis con muchos problemas, pero nada que no tenga solución. Hay que probar e insistir, hasta que cojamos la experiencia necesaria.
No olvidéis, nunca, hacer una copia del ejecutable y probad de vez en cuando, para ver si todo va correctamente. Yo me puse a traducir el WinZip 9.0 SR-1 y cuando creía que había terminado, al abrir el programa, el menú (Archivo Acciones Opciones…) salía corrupto, totalmente ilegible, como podéis ver en esta imagen . Tuve que repasar todo de nuevo, hasta que encontré el fallo. Resulta, que si traduzco la siguiente string “9091, System memory is low”, se produce ese error. No se si debe a alguna protección de los programadores o quizás a algún chequeo del CRC, pero solo con cambiar dos o tres letras de la cadena, ya no sale bien el menú. Al final la dejé sin traducir, pero aun así sigo sin tener la traducción del WinZip finalizada. El problema ahora, es que si abro el WinZip con la interfaz clásica, el menú que os mencionaba antes, sale en inglés, pero si lo abro con la interfaz del asistente (Wizard) y en la ventana que aparece, pincho en el botón “WinZip Clásico”, todo sale correcto. He peguntado a conocidos que también traducen aplicaciones y tampoco han conseguido solucionar este problema. A ver si alguno descubre que pasa.
Solo me queda añadir, que cuando intentéis traducir algo, preguntéis todas las dudas o problemas que os surjan. Podéis hacerlo en www.hispabyte.com o en g_macloud@hotmail.com.
Un saludo.
Maki