#--------------------------------------------------------------- # # Langscore CoreScript "Unison" # Version 0.9.3 # Written by BreezeSinfonia 來奈津 # # 注意:このスクリプトは自動生成されました。編集は非推奨です。 #--------------------------------------------------------------- module Langscore SUPPORT_LANGUAGE = ["ja","zh-cn"] DEFAULT_LANGUAGE = "ja" LS_FONT = { "ja" => {:name => "VL Gothic", :size => 22}, "zh-cn" => {:name => "Source Han Sans CN Regular", :size => 22}, } TRANSLATE_FOLDER = "Data/Translate" $langscore_current_language = Langscore::DEFAULT_LANGUAGE #ハッシュそのものからハッシュを格納するハッシュに変更。 #イベント中にマップ移動が行われた場合、翻訳内容がクリアされる問題への対応のため。 $ls_current_map = {} $ls_graphic_cache = {} end #----------------------------------------------------- String.class_eval <<-eval def lstrans(line_info, *args) text = Langscore.translate_for_script(line_info) return sprintf(text, *args) end eval #==========LSCSV========== class LsDumpData attr_accessor :data end class LSCSV $lscsv_resource_locker = Mutex::new def self.to_hash(file_name) $lscsv_resource_locker.lock file = open(Langscore::TRANSLATE_FOLDER + "/" + file_name) $lscsv_resource_locker.unlock return {} if file == nil header = fetch_header(file) rows = parse_col(header, parse_row(file)) varidate(file_name, header, rows) row_index = [*1..header.size].select! do |i| Langscore::SUPPORT_LANGUAGE.include?(header[i]) end #To Hash result = {} rows[1...rows.size].each do |r| origin = r[0] trans = r[1...header.size] transhash = {} row_index.each do |i| transhash[header[i]] = r[i] end result[origin] = transhash end result end def self.to_array_without_origin(file_name) hash = to_hash(file_name) return hash.values end def self.varidate(file_name, header, rows) raise "Invalid CSV Data" if header.nil? size = rows[0].size mismatch_cells = rows.select{ |r| r.size != size } if mismatch_cells.empty? == false p "Error! : Missmatch Num Cells : #{mismatch_cells.first}" p "File : #{file_name}, Header size : #{size}, Languages : #{rows[0]}" raise "Error! : Missmatch Num Cells : #{mismatch_cells.first}" end end def self.open(name) result = nil begin file_name = name+".rvdata2" trans_file = load_data(file_name) if trans_file.class == LsDumpData p "load_data #{file_name}" result = trans_file.data end rescue => e begin file_name = name+".csv" trans_file = File.open(file_name, "rb:utf-8:utf-8") p "open #{file_name}" result = trans_file.read rescue p "Warning : Not Found Transcript File #{file_name}" end end return result end def self.fetch_header(csv_text) if !csv_text.nil? && 0 e $ls_graphic_cache[filename] = false end end if $ls_graphic_cache[filename] filename = new_filename end end ls_base_load_bitmap(folder_name, filename, hue) end #ロード時の変換処理も必須 eval module Langscore SYSTEM1 = "現在選択中の言語が表示されます。" $langscore_system = { SYSTEM1 => { "ja" => "現在選択中の言語が表示されます。", "zh-cn" => "显示当前选择的语言。", } } SYSTEM2 = { "ja" => "日本語", "zh-cn" => "中文(簡体)", } module UI class Window_Langscore < Window_Command attr_accessor :recreate def initialize super(0,0) self.x = (Graphics.width - self.window_width ) / 2 self.y = (Graphics.height - self.window_height) / 2 @_recreate = false SUPPORT_LANGUAGE.each.with_index do |l, i| select(i) if $langscore_current_language == l end open end def window_width return 210 end def make_command_list SUPPORT_LANGUAGE.each.with_index do |l, i| add_command(SYSTEM2[l], l.to_sym) end end def cursor_up(wrap = false) super wrap call_handler(:ls_update) end def cursor_down(wrap = false) super wrap call_handler(:ls_update) end end class Window_Langscore_OKCancel < Window_HorzCommand def initialize(y) @gray_color = $game_system.window_tone @gray_color.gray = 255 @def_color = $game_system.window_tone super((Graphics.width - self.window_width ) / 2, y) select(1) deactivate open end def make_command_list add_command("OK", :ok) add_command("Reselect", :select) add_command("Cancel", :cancel) end def window_width return 380 end def col_max return 3 end def activate self.tone.set(@def_color) super end def deactivate self.tone.set(@gray_color) super end end class Scene_Language < Scene_MenuBase def start super @before_lang = $langscore_current_language create_help_window create_lsmain_window create_ok_cancel_window @okcancel_window.deactivate end def terminate super @command_window.dispose Langscore.changeLanguage($langscore_current_language) LSSetting.save() end def create_lsmain_window @command_window.dispose unless @command_window.nil? @command_window = Window_Langscore.new @command_window.viewport = @viewport @command_window.set_handler(:ok, method(:to_okcancel)) @command_window.set_handler(:ls_update, method(:select_lang)) @command_window.set_handler(:cancel, method(:return_scene)) @help_window.set_text(Langscore.translate(SYSTEM1, $langscore_system)) end def update_basic super if @command_window != nil && @command_window.recreate @help_window.dispose unless @help_window.nil? create_help_window create_lsmain_window end end def select_lang return if @command_window.index == -1 $langscore_current_language = SUPPORT_LANGUAGE[@command_window.index] @help_window.set_text(Langscore.translate(SYSTEM1, $langscore_system)) if Langscore.updateFont($langscore_current_language) @command_window.recreate = true end end def to_okcancel @command_window.deactivate @okcancel_window.activate end def create_ok_cancel_window @okcancel_window.dispose unless @okcancel_window.nil? y_pos = @command_window.y + @command_window.height + 8 @okcancel_window = Window_Langscore_OKCancel.new(y_pos) @okcancel_window.viewport = @viewport @okcancel_window.set_handler(:select, method(:reselect)) @okcancel_window.set_handler(:ok, method(:accept)) @okcancel_window.set_handler(:cancel, method(:reject)) end def reselect @command_window.activate @okcancel_window.deactivate end def accept self.return_scene end def reject $langscore_current_language = @before_lang self.return_scene end end end #module UI class LSSetting GetPrivateProfileString = Win32API.new('kernel32', 'GetPrivateProfileString', %w(p p p p l p), 'L') WritePrivateProfileString = Win32API.new('kernel32', 'WritePrivateProfileString', %w(p p p p), 'i') BufferSize = 16+1 def self.load result = ' ' * BufferSize r = GetPrivateProfileString.call("Langscore", "Lang", "ja", result, BufferSize, "./Game.ini") if r == BufferSize-2 $langscore_current_language = "ja" else $langscore_current_language = result.slice(0...r) p "Langscore Load ini : #{$langscore_current_language}" end end def self.save WritePrivateProfileString.call("Langscore", "Lang", $langscore_current_language, "./Game.ini") end end LSSetting.load() def self.saveIni LSSetting.save() end def self.loadIni LSSetting.load() end end # module Langscore