# Classes for translating text similar to GNU gettext # Translation class: contains translation data class Translation attr_reader :events attr_reader :scripts attr_reader :actors attr_reader :items end # Translator class: translate text to another language class Translator # Create Translator object def initialize(code = :en) if code == :en @data = nil else begin @data = load_data("Languages/#{code.to_s}.rxdata") rescue @data = nil end end end # Translate all database items def translate_database $data_actors.each do |i| i.name = actor(i.name) if i && !i.name.empty? end $data_items.each do |i| i.name, i.description = item(i.name, i.description) if i && !i.name.empty? end end # Translate script text def script(name, text) if @data == nil return text else return @data.scripts["#{name}/#{text}"] || text end end # Translate text from event def event(name, text) if @data == nil return text else return @data.events["#{name}/#{text}"] || text end end private # Translate Actor name def actor(name) if @data == nil return name else return @data.actors[name] || name end end # Translate Item name (and description) def item(name, description) if @data == nil return [name, description] else return @data.items[name] || [name, description] end end end # Hacky translation helper function def tr(text) $tr.script(Kernel.caller.first.split(':', 3)[1], text) end