Hola,
hace tiempo que me pregunto como hacen para traducir juegos a otros idiomas como chino y japonés donde el numero de caracteres es claramente superior. Aun no he encontrado la respuesta asi que os la planteo a vosotros :P . Tambien me gustaría saber cuales son las medidas que se suelen tomar para facilitar la posterior traducción del juego.
venga, un saludo
RePAnd
La respuesta que buscas es UNICODE, que al final es usar SHORT en vez de CHAR para definir caracteres.
Cara incluir un buen soporte de idiomas en los juegos, yo uso las STD::WSTRING, y para hacer referencia a los textos, se usan indices de una tabla sacada de un fichero externo (en el que estan las cadenas de texto), asi solo hay que cambiar un indice para cambiar de idioma (que luego hay que cambiar todas las cajas de texto porque siempre se salen ) :jaja:
Un saludo
¿Un indice para cambiar de idioma? Basta con cambiar la tabla, el archivo donde esten todas las frases.
En mi caso, tenemos un archivo con todos los idiomas, asi que solo es cambiar el indice al idioma.
Ahh
¿Pero no sería mejor tener los idiomas en archivos diferentes? Que pasa si alguien quiere añadir un nuevo idioma... tendra que meter tb todos los otros en el archivo. No me parece útil esa forma.
gracias a los dos por contestar, pero sigo con dudas :P .
Astat: Si tu tienes las fuentes del juego en bitmaps lo que has comentado no soluciona todo. Oh si? es q no lo veo claro :( .
un saludo, RePAnd
Bueno yo te voy a decir cómo lo hago yo:
Tengo un archivo de texto normal y corriente con todas las frases/palabras. Se llama por ejemplo: español.len
Ejemplo:
ventana
coche
Pulsa sobre esta opción
Salir
Al iniciar el programa cargo en un array de strings llamado "cadena" todas las frases (mejor si lo creas en tiempo de ejecución con un malloc, puedes hacer que la primera palabra del archivo sea el número de palabras totales). A partir de ahora:
cadena
- = ventana
cadena [1] = coche
etc
Y dentro del programa no escribo nunca una palabra, sino la variable.
Ejemplo:
Write (cadena [1]); // Escribira "coche"
Si lo haces así, cuando quieras cambiar de idioma solo tienes que crear un nuevo fichero traducido, y cargarlo al principio del programa.
¿Fácil, no?
En cuanto a lo de si una palabra ocupará más o menos según el idioma... bueno tendrás que hacer el botón o sobre lo que estén sea lo suficientemente grande, jeje. O bueno, siempre puedes "contraer" la palabra (si la dibujas en pantalla como una imagen).
En constestacion a repand, no/si usamos fuentes en bitmaps.... me explico, al comenzar el juego, se crean esos bitmaps con las fuentes que hagan falta. En las siguientes ejecuciones se leen los generados anteriormente. Hechae un ojo a las librerias FreeType.
De nuevo gracias a los dos por aclararme las dudas :D .
un saludo, RePAnd
Aunque ya te han ayudado contare mi experiencia en traducir el Sistem Shock 2 y el IWar2 edge of chaos.
Los dos utilizan archivos de texto normales sean comprimidos o con formato csv del excel.
Nada mas grafico q un ejemplo:
IWar2
Citar
; Clay y cal jóven hablan del hecho que la base parece correr sobre la potencia de la emergencia....
a0_master_dialogue_young_cal_its_very_dark_in_here_clay,"Um... Esto está verdaderamente oscuro, Clay. ¿Esta totalmente seguro de que funciona?"
Sistem Shock 2
Citar
EmailName10:"POLITO 12.JULIO.14nre: Recomponga el nucleon"
EmailPortrait10:"Polito"
EmailIcon10:"OpsIcon"
EmailText10:"Esta ahora sobre la cubierta de la ingenieria. Encuentre el nucleo del motor y recompongalo. Esto restaurara la corriente de los elevadores. Consigo algunas lecturas extranas de alli, mantenga los ojos bien abiertosn"
Por supuesto eso es despues de haberlos traducido
Ya de paso si algun@ esta interesado en estas traducciones mandarme un mail
Nada mas.... aunque ya lo dejaron claro espero que mi aportacion sirva al menos para mostrar como lo hacen las grandes compañias como LookingGlass e Infogrames.
SaludOTT
Antares
de acuerdo con lo que habeis dicho hasta ahora :)
en mi caso he utilizado tambien un archivo del tipo:
indice,indice,indice,indice...... texto,texto,texto,texto, ....
cada idioma esta en un archivo diferente, cuando seleccionas un idioma lo cargas en memoria tal cual esta. (indices primero y luego textos)
puedes tener un archivo excel con todos los textos y sabes que "hola que tal" es el texto 15 del archivo, asi que printf ("%s", GetTextoTrad (15));
para pillar el texto 15, en GetTextoTrad lees la cadena donde apunta indice 15.
es facil y comodo.
si te lo curras un poquito mas ademas puedes guardar en los textos los simbolos estandar %s, %d, etc. a veces necesitas poner un texto traducido que tiene una variable en medio. Por ejemplo: "Felicidades, has conseguido 14 puntos"....