qna_rpg
Thread Id: 11051
Thread Name: Una duda o problema [PE DS]
#0
DreaMiT 13738
Buenos días.

Desde ayer, he tratado cambiar el idioma (más bien, traducirlo) del juego, pero a la hora de implementarlo me quedo pillado. (Soy nuevo en ésto).

A la hora de extraer los textos, bien. Los traduzco y los compilo y bien, los renombre los meto en la carpeta DATA y bien. Ahora, he aquí el fallo. Que no me aparecen los textos traducidos.

Seguí la guía que ponía en el notes.html y ví que me aparecería un menú con lenguage que no me aparece.
También me percaté de que debía editar no se qué en el script de PokémonSystem y como no supe bien que había que editar del apartado lenguages, cambié lo que se me ocurrió, y me quedó así:

def pbSafeLoad(file)
if (FileTest.exist?("./Game.rgssad") || FileTest.exist?("./Game.rgss2a")) && FileTest.exist?(file)
File.delete(file) rescue nil
end
return load_data(file)
end

def pbLoadRxData(file)
if $RPGVX
return load_data(file+".rvdata")
else
return load_data(file+".rxdata")
end
end

LANGUAGES=[
# Languages used in the game. When the game starts and no save file exists,
# a menu displays the available languages and a "Language" option appears on
# the main menu.
# Uncomment to add entries to the array
# Name of language in native language, message file in Data folder
# ["Castellano","es.dat"],
# ["Deutsch","es.dat"]
]


def pbChooseLanguage
commands=[]
for lang in LANGUAGES
commands.push(lang[0])
end
return Kernel.pbShowCommands(nil,commands)
end

$pp=0
def dbgp
$pp+=1; p $pp
end

def pbSetUpSystem
#############
#############
begin
trainer=nil
framecount=0
havedata=false
File.open(RTP.getSaveFileName("Game.rxdata")){|f|
trainer=Marshal.load(f)
framecount=Marshal.load(f)
$game_system=Marshal.load(f)
$PokemonSystem=Marshal.load(f)
}
raise "Corrupted file" if !trainer.is_a?(PokeBattle_Trainer)
raise "Corrupted file" if !framecount.is_a?(Numeric)
raise "Corrupted file" if !$game_system.is_a?(Game_System)
raise "Corrupted file" if !$PokemonSystem.is_a?(PokemonSystem)
havedata=true
rescue
$PokemonSystem=PokemonSystem.new
$game_system=Game_System.new
end
$ResizeOffsetX=[0,0,80,80][$PokemonSystem.screensize]
$ResizeOffsetY=[0,0,80,80][$PokemonSystem.screensize]
resizefactor=[0.5,1.0,0.5,1.0][$PokemonSystem.screensize]
pbSetResizeFactor(resizefactor)
# Load constants
begin
consts=pbSafeLoad("Data/Constants.rxdata")
consts=[] if !consts
rescue
consts=[]
end
for script in consts
next if !script
eval(Zlib::Inflate.inflate(script[2]),nil,script[1])
end
if LANGUAGES.length>=2
if !havedata
$PokemonSystem.language=pbChooseLanguage
end
pbLoadMessages("Data/"+LANGUAGES[$PokemonSystem.language][1])
end
end
def pbScreenCapture
capturefile=nil
5000.times {|i|
filename=RTP.getSaveFileName(sprintf("capture%03d.bmp",i))
if !FileTest.exist?(filename)
capturefile=filename
break
end
i+=1
}
if capturefile && FileTest.exist?("rubyscreen.dll")
takescreen=Win32API.new("rubyscreen.dll","TakeScreenshot","%w(p)","i")
takescreen.call(capturefile)
if FileTest.exist?(capturefile)
pbSEPlay("expfull") if FileTest.audio_exist?("Audio/SE/expfull")
end
end
end

def pbLoadFromCodes
str=[]
File.open("codes.txt","rb"){|f|
while !f.eof?
ln=f.gets
if ln[/^[A-F0-9]+\:([A-F0-9][A-F0-9])([A-F0-9][A-F0-9])([A-F0-9][A-F0-9])([A-F0-9][A-F0-9])\s*$/]
str.push($4.hex,$3.hex,$2.hex,$1.hex)
end
end
}
bytes=str.pack("C*")
$Trainer.party[0]=pbLoadFromFile(bytes)
end

module Input
unless defined?(update_KGC_ScreenCapture)
class << Input
alias update_KGC_ScreenCapture update
end
end
def self.update
update_KGC_ScreenCapture
if trigger?(Input::F8)
pbScreenCapture
end
if trigger?(Input::F7)
pbDebugF7
end
end
end
def pbDebugF7
if $DEBUG
Console::setup_console
begin
debugBitmaps
rescue
end
pbSEPlay("expfull") if FileTest.audio_exist?("Audio/SE/expfull")
end
end
pbSetUpSystem()


El archivo .dat se llama 'es.dat'.
Aparte de cambiar eso, que seguro que está mal, hice un script con una persona para que me saliera para elegir un idioma, pero a la hora de hacerlo, me salía el cuadro arriba a la derecha de la pantalla del juego y sin ninguna opción.
El script era éste:
$PokemonSystem.language=pbChooseLanguage

Seguro, que también lo tengo mal. Ya dije, que era nuevo en ésto.

Pues eso. Si necesitáis algún dato más... pedidlo. Se que puede ser una tontería, y pido disculpas, pero sin ésto, no puedo continuar mi hack. Ya tengo todo preparado, tiles, minis, scripts listos para insertar el texto... etc.

¡Saludos!
#1
enanogm 17687
hola, como va?
Primero que nada Bienvenido!!

mirá, yo al principio tenía el mismo problema...cuando compilas y modificas el script no pasa nada. A mí me aparecía la opción de lenguajes pero nunca cargaba el español. en fin, la forma de hacerlo directa y simple es traduciendo los mismos scripts

Para hacerlo no hay que saber prog, porque solo tenés que traducir los textos que están en color violeta, fucsia, rosa o parecido. NO traduzcas los que están en negro, verde, azul o rojo, porque son parte de los comandos y variables del código, eso dejalo intacto. Solo hay que traducir lo que dice en pantalla.

Para que te des una idea, cuando entras al juego te aparece una pantalla que te dice New game y Options. Bueno, eso se puede traducir desde el script PokemonLoad. Entras a ese, desde el editor, y buscas en el código hasta donde dice algo así como:

...commands[cmdNewGame=commands.length]=_INTL("New Game")....

entonces cambias el new game a Nuevo Juego o Nueva Partida, y listo, cuando inicies el juego estará lo que pusiste.

el proceso es el mismo para lo que quieras traducir.
Como consejo, solo traducí los textos que veas en pantalla, ya que los demás no convendría, una porque no hace falta, nadie los ve, y la otra es que puede llegar a generar algún error (digo, tal vez XD)

bueno, espero que te sirva. Yo así, llevo traducido un montón, sin ningún problema.

saludos
#2
DreaMiT 13738
Edit:
No me lo traduce igual. :S Lo he traducido y en el juego aparece igual 'Continue' traducido a 'Continuar' y se queda en 'Continue' (pero sin embargo, en los scripts si me aparece en castellano.

Copiado del PokémonLoad lo que he traducido:
loctext=""
loctext+=_INTL("Nombre<r><c2=65467b14>{1}</c2><br>",fmtescape(trainer.name))
loctext+=_INTL("Medallas<r><c2=65467b14>{1}</c2><br>",trainer.numbadges)
loctext+=_INTL("Pokédex<r><c2=65467b14>{1}</c2><br>",trainer.pokedexOwned)
loctext+=_ISPRINTF("Tiempo<r><c2=65467b14>{1:02d}:{2:02d}</c2>",hour,min)
@scene.pbSetAuxiliaryWindow(loctext)
end
commands[cmdContinue=commands.length]=_INTL("Continuar") if showContinue
commands[cmdNewGame=commands.length]=_INTL("Nueva partida")
commands[cmdOption=commands.length]=_INTL("Opciones")
else
commands[cmdNewGame=commands.length]=_INTL("Nueva partida")
commands[cmdOption=commands.length]=_INTL("Opciones")
end
if LANGUAGES.length>=2
commands[cmdLanguage=commands.length]=_INTL("Idioma")
¿Qué puede ser?

¡Vaya! Gracias. Sinceramente no me había percatado de que podría traducir desde la base de los scripts... ¿cómo habré sido tan tonto de no imaginármelo?

¡Muchas gracias, enserio! :)

Ya podéis cerrar el tema. Muy agradecido estoy. :)