Language Change ver. 1.0
by Haki
Introduction:
This script allows to change in game language. Language must be provided as an external text file if you are using it. Parts that are going to be changed inside the game are optional. For more instructions please refer to the script or take a look at one of the text files provided in the demo.
Script:
Please follow the instructions inside the script. If there's anything you don't get please download the demo.
Download:
http://www.megaupload.com/?d=XC06ZY70
Other Notes:
If you use this script credit me (Haki). The script hasn't been tested with any other scripts but it should work because few edits have been made to existing classes. If you find any compatibility issues post them in this topic or e-mail me at ivica.hakstok@du.t-com.hr
by Haki
Introduction:
This script allows to change in game language. Language must be provided as an external text file if you are using it. Parts that are going to be changed inside the game are optional. For more instructions please refer to the script or take a look at one of the text files provided in the demo.
Script:
Please follow the instructions inside the script. If there's anything you don't get please download the demo.
Code:
#===================================================================================
# Language Change Script ver. 1.0 by Haki
#===================================================================================
#
# Insructions:
# -To add a language, create a text file in your game's folder. Name the file
# equal to the language.
# Inside the file, each line of in-game dialog should have this form:
#
# map id, event id, dialog number, text
#
# Example:
# 1,1,1,Hello!
#
# To change language inside the game, call:
# "$scene = Scene_Lang.new"
#
# Dialog is called by using "Script..." event command.
# Text can include variable calling etc.
# To call a dialog, use "self.call_dialog(n)", where n is the dialog number,
# mentioned above.
#
# If you want to include basic terms, such as attack" and "dexterity, use these
# lines inside the text file:
# woed new_word
#
# where new_word is the language's expression for the word. Following words
# can be used to start the line (please notice that "atk" and "attack" are not
# the same):
#
# atk, attack, pdef, mdef, dex, agi, int, eva, hp, sp, exp, gold, weapon, armor,
# shield, helmet, accessory, equip, item, skill, defend
#
# Changing skill, item, status, element, enemy, actor, class, weapons and armors
# must be done with an array. A comma (",") is needed behind the last element of the array.
# Weapon, armor, item and skill description words are optional:
# weapons_d, armors_d, items_d, skills_d
#
# Example: If you want to change weapon names and descriptions to croatian
# weapon ["Broncani mac", "Zeljezni mac", "Celicni mac"]
# weaponsd ["Oruzje za macevaoca","Oruzje za macevaoca","Oruzje za macevaoca"]
#
# Credits:
# -If you use this script credit me (Haki)
#
# Bug report:
# -If you find any bugs please e-mail me at ivica.hakstok@du.t-com.hr
#
# Compatibility:
# -This script does not change any methods. It should be compatible with all
# scripts. However, avoid using any script which uses it's own text display.
#
# Notes:
#If you don't understand any part of these instructions, please take a look at the
#provided language text files.
#Also notice that some words can't be changed. I'm currently working on expanding
#the RPG::System::Words class and I'm going to rewrite any class that uses it's
#own words (Scene_Title,Scene_Menu etc.).
#The event commands "Show Choices" and "Input Number" can't be displayed in the
#same window with a message called using "self.call_dialog()". I'll try to fix
#this soon.
#=================================================================================
module Languages
LANGUAGES = ["English", "Hrvatski"] #put all languages here
DEF_LANG = 0 #default language
end
class Scene_Title
alias haki_main main
def main
haki_main
load_lang
end
def load_lang
$lang = Languages::LANGUAGES[Languages::DEF_LANG]
$language_file = File.open($lang + ".txt", "a+").readlines
$language_file.each { |line|
if line[0,1] == line[0,1].gsub(/\d/){""}
a = line.gsub(/\n/){""}
for i in 0..a.length
if a[i,1]== " "
b = a[0,i]
break
end
end
case b
when "atk"
$data_system.words.atk = a[b.length + 1,a.length - (b.length+1)]
when "pdef"
$data_system.words.pdef = a[b.length + 1,a.length - (b.length+1)]
when "mdef"
$data_system.words.mdef = a[b.length + 1,a.length - (b.length+1)]
when "gold"
$data_system.words.gold = a[b.length + 1,a.length - (b.length+1)]
when "hp"
$data_system.words.hp = a[b.length + 1,a.length - (b.length+1)]
when "sp"
$data_system.words.sp = a[b.length + 1,a.length - (b.length+1)]
when "str"
$data_system.words.str = a[b.length + 1,a.length - (b.length+1)]
when "dex"
$data_system.words.dex = a[b.length + 1,a.length - (b.length+1)]
when "agi"
$data_system.words.agi = a[b.length + 1,a.length - (b.length+1)]
when "int"
$data_system.words.int = a[b.length + 1,a.length - (b.length+1)]
when "weapon"
$data_system.words.weapon = a[b.length + 1,a.length - (b.length+1)]
when "shield"
$data_system.words.armor1 = a[b.length + 1,a.length - (b.length+1)]
when "helmet"
$data_system.words.armor2 = a[b.length + 1,a.length - (b.length+1)]
when "armor"
$data_system.words.armor3 = a[b.length + 1,a.length - (b.length+1)]
when "attack"
$data_system.words.attack = a[b.length + 1,a.length - (b.length+1)]
when "skill"
$data_system.words.skill = a[b.length + 1,a.length - (b.length+1)]
when "defend"
$data_system.words.guard = a[b.length + 1,a.length - (b.length+1)]
when "item"
$data_system.words.item = a[b.length + 1,a.length - (b.length+1)]
when "equip"
$data_system.words.equip = a[b.length + 1,a.length - (b.length+1)]
when "accessory"
$data_system.words.armor4 = a[b.length + 1,a.length - (b.length+1)]
when "actors"
name = []
names = a[b.length + 2,a.length - (b.length+3)]
pr_i = 0
for i in 0..names.length
if names[i,1] == ","
name.push(names[pr_i,i - pr_i])
pr_i = i + 1
end
end
for i in 1...name.size + 1
$game_actors[i].name = name[i-1]
end
when "skills"
name = []
names = a[b.length + 2,a.length - (b.length+3)]
pr_i = 0
for i in 0..names.length
if names[i,1] == ","
name.push(names[pr_i,i - pr_i])
pr_i = i + 1
end
end
for i in 1...name.size + 1
$data_skills[i].name = name[i-1]
end
when "class"
name = []
names = a[b.length + 2,a.length - (b.length+3)]
pr_i = 0
for i in 0..names.length
if names[i,1] == ","
name.push(names[pr_i,i - pr_i])
pr_i = i + 1
end
end
for i in 1...name.size + 1
$data_classes[i].name = name[i-1]
end
when "items"
name = []
names = a[b.length + 2,a.length - (b.length+3)]
pr_i = 0
for i in 0..names.length
if names[i,1] == ","
name.push(names[pr_i,i - pr_i])
pr_i = i + 1
end
end
for i in 1...name.size + 1
$data_items[i].name = name[i-1]
end
when "weapons"
name = []
names = a[b.length + 2,a.length - (b.length+3)]
pr_i = 0
for i in 0..names.length
if names[i,1] == ","
name.push(names[pr_i,i - pr_i])
pr_i = i + 1
end
end
for i in 1...name.size + 1
$data_weapons[i].name = name[i-1]
end
when "armors"
name = []
names = a[b.length + 2,a.length - (b.length+3)]
pr_i = 0
for i in 0..names.length
if names[i,1] == ","
name.push(names[pr_i,i - pr_i])
pr_i = i + 1
end
end
for i in 1...name.size + 1
$data_armors[i].name = name[i-1]
end
when "states"
name = []
names = a[b.length + 2,a.length - (b.length+3)]
pr_i = 0
for i in 0..names.length
if names[i,1] == ","
name.push(names[pr_i,i - pr_i])
pr_i = i + 1
end
end
for i in 1...name.size + 1
$data_states[i].name = name[i-1]
end
when "enemies"
name = []
names = a[b.length + 2,a.length - (b.length+3)]
pr_i = 0
for i in 0..names.length
if names[i,1] == ","
name.push(names[pr_i,i - pr_i])
pr_i = i + 1
end
end
for i in 1...name.size + 1
$data_enemies[i].name = name[i-1]
end
when "weapons_d"
name = []
names = a[b.length + 2,a.length - (b.length+3)]
pr_i = 0
for i in 0..names.length
if names[i,1] == ","
name.push(names[pr_i,i - pr_i])
pr_i = i + 1
end
end
for i in 1...name.size + 1
$data_weapons[i].description = name[i-1]
end
when "armors_d"
name = []
names = a[b.length + 2,a.length - (b.length+3)]
pr_i = 0
for i in 0..names.length
if names[i,1] == ","
name.push(names[pr_i,i - pr_i])
pr_i = i + 1
end
end
for i in 1...name.size + 1
$data_armors[i].description = name[i-1]
end
when "skills_d"
name = []
names = a[b.length + 2,a.length - (b.length+3)]
pr_i = 0
for i in 0..names.length
if names[i,1] == ","
name.push(names[pr_i,i - pr_i])
pr_i = i + 1
end
end
for i in 1...name.size + 1
$data_skills[i].description = name[i-1]
end
when "items_d"
name = []
names = a[b.length + 2,a.length - (b.length+3)]
pr_i = 0
for i in 0..names.length
if names[i,1] == ","
name.push(names[pr_i,i - pr_i])
pr_i = i + 1
end
end
for i in 1...name.size + 1
$data_items[i].description = name[i-1]
end
end
end
}
end
end
class Scene_Lang
def main
@window = Window_Command.new(160,Languages::LANGUAGES)
@spriteset = Spriteset_Map.new
@window.x = 240
@window.y = 200
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
@window.dispose
end
def update
@window.update
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
$lang = Languages::LANGUAGES[@window.index]
load_lang
$scene = Scene_Map.new
end
end
def load_lang
$language_file = File.open($lang + ".txt", "a+").readlines
$language_file.each { |line|
if line[0,1] == line[0,1].gsub(/\d/){""}
a = line.gsub(/\n/){""}
for i in 0..a.length
if a[i,1]== " "
b = a [0,i]
break
end
end
case b
when "atk"
$data_system.words.atk = a[b.length + 1,a.length - (b.length+1)]
when "pdef"
$data_system.words.pdef = a[b.length + 1,a.length - (b.length+1)]
when "mdef"
$data_system.words.mdef = a[b.length + 1,a.length - (b.length+1)]
when "gold"
$data_system.words.gold = a[b.length + 1,a.length - (b.length+1)]
when "hp"
$data_system.words.hp = a[b.length + 1,a.length - (b.length+1)]
when "sp"
$data_system.words.sp = a[b.length + 1,a.length - (b.length+1)]
when "str"
$data_system.words.str = a[b.length + 1,a.length - (b.length+1)]
when "dex"
$data_system.words.dex = a[b.length + 1,a.length - (b.length+1)]
when "agi"
$data_system.words.agi = a[b.length + 1,a.length - (b.length+1)]
when "int"
$data_system.words.int = a[b.length + 1,a.length - (b.length+1)]
when "weapon"
$data_system.words.weapon = a[b.length + 1,a.length - (b.length+1)]
when "shield"
$data_system.words.armor1 = a[b.length + 1,a.length - (b.length+1)]
when "helmet"
$data_system.words.armor2 = a[b.length + 1,a.length - (b.length+1)]
when "armor"
$data_system.words.armor3 = a[b.length + 1,a.length - (b.length+1)]
when "attack"
$data_system.words.attack = a[b.length + 1,a.length - (b.length+1)]
when "skill"
$data_system.words.skill = a[b.length + 1,a.length - (b.length+1)]
when "defend"
$data_system.words.guard = a[b.length + 1,a.length - (b.length+1)]
when "item"
$data_system.words.item = a[b.length + 1,a.length - (b.length+1)]
when "equip"
$data_system.words.equip = a[b.length + 1,a.length - (b.length+1)]
when "accessory"
$data_system.words.armor4 = a[b.length + 1,a.length - (b.length+1)]
when "actors"
name = []
names = a[b.length + 2,a.length - (b.length+3)]
pr_i = 0
for i in 0..names.length
if names[i,1] == ","
name.push(names[pr_i,i - pr_i])
pr_i = i + 1
end
end
for i in 1...name.size + 1
$game_actors[i].name = name[i-1]
end
when "skills"
name = []
names = a[b.length + 2,a.length - (b.length+3)]
pr_i = 0
for i in 0..names.length
if names[i,1] == ","
name.push(names[pr_i,i - pr_i])
pr_i = i + 1
end
end
for i in 1...name.size + 1
$data_skills[i].name = name[i-1]
end
when "class"
name = []
names = a[b.length + 2,a.length - (b.length+3)]
pr_i = 0
for i in 0..names.length
if names[i,1] == ","
name.push(names[pr_i,i - pr_i])
pr_i = i + 1
end
end
for i in 1...name.size + 1
$data_classes[i].name = name[i-1]
end
when "items"
name = []
names = a[b.length + 2,a.length - (b.length+3)]
pr_i = 0
for i in 0..names.length
if names[i,1] == ","
name.push(names[pr_i,i - pr_i])
pr_i = i + 1
end
end
for i in 1...name.size + 1
$data_items[i].name = name[i-1]
end
when "weapons"
name = []
names = a[b.length + 2,a.length - (b.length+3)]
pr_i = 0
for i in 0..names.length
if names[i,1] == ","
name.push(names[pr_i,i - pr_i])
pr_i = i + 1
end
end
for i in 1...name.size + 1
$data_weapons[i].name = name[i-1]
end
when "armors"
name = []
names = a[b.length + 2,a.length - (b.length+3)]
pr_i = 0
for i in 0..names.length
if names[i,1] == ","
name.push(names[pr_i,i - pr_i])
pr_i = i + 1
end
end
for i in 1...name.size + 1
$data_armors[i].name = name[i-1]
end
when "states"
name = []
names = a[b.length + 2,a.length - (b.length+3)]
pr_i = 0
for i in 0..names.length
if names[i,1] == ","
name.push(names[pr_i,i - pr_i])
pr_i = i + 1
end
end
for i in 1...name.size + 1
$data_states[i].name = name[i-1]
end
when "enemies"
name = []
names = a[b.length + 2,a.length - (b.length+3)]
pr_i = 0
for i in 0..names.length
if names[i,1] == ","
name.push(names[pr_i,i - pr_i])
pr_i = i + 1
end
end
for i in 1...name.size + 1
$data_enemies[i].name = name[i-1]
end
when "weapons_d"
name = []
names = a[b.length + 2,a.length - (b.length+3)]
pr_i = 0
for i in 0..names.length
if names[i,1] == ","
name.push(names[pr_i,i - pr_i])
pr_i = i + 1
end
end
for i in 1...name.size + 1
$data_weapons[i].description = name[i-1]
end
when "armors_d"
name = []
names = a[b.length + 2,a.length - (b.length+3)]
pr_i = 0
for i in 0..names.length
if names[i,1] == ","
name.push(names[pr_i,i - pr_i])
pr_i = i + 1
end
end
for i in 1...name.size + 1
$data_armors[i].description = name[i-1]
end
when "skills_d"
name = []
names = a[b.length + 2,a.length - (b.length+3)]
pr_i = 0
for i in 0..names.length
if names[i,1] == ","
name.push(names[pr_i,i - pr_i])
pr_i = i + 1
end
end
for i in 1...name.size + 1
$data_skills[i].description = name[i-1]
end
when "items_d"
name = []
names = a[b.length + 2,a.length - (b.length+3)]
pr_i = 0
for i in 0..names.length
if names[i,1] == ","
name.push(names[pr_i,i - pr_i])
pr_i = i + 1
end
end
for i in 1...name.size + 1
$data_items[i].description = name[i-1]
end
end
end
}
end
end
class Interpreter
attr_accessor :event_id
def call_dialog(dn)
$language_file = File.open($lang + ".txt", "a+")
$language_file = $language_file.readlines
$language_file.each { |line|
a = line.sub(/\d,\d,\d,/){@b = $&}
a.sub!(/\d,\d,\d,/){""}
a.gsub!(/\n/){""}
if @b == $game_map.map_id.to_s + "," + self.event_id.to_s + "," + dn.to_s + ","
for i in 1..a.length / 42
a.insert (i,"\n")
end
show_dialog(a)
break
return
end
}
end
def show_dialog(str)
if $game_temp.message_text != nil
return false
end
@message_waiting = true
$game_temp.message_proc = Proc.new { @message_waiting = false }
$game_temp.message_text = str
return true
@index += 1
end
end
Download:
http://www.megaupload.com/?d=XC06ZY70
Other Notes:
If you use this script credit me (Haki). The script hasn't been tested with any other scripts but it should work because few edits have been made to existing classes. If you find any compatibility issues post them in this topic or e-mail me at ivica.hakstok@du.t-com.hr