Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

[XP]Language Change Script

Haki

Member

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.

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
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top