class TkMsgCatalog
# File tk/lib/tk/msgcat.rb, line 58 def self.callback(namespace, locale, src_str, *args) src_str = sprintf(src_str, *args) unless args.empty? cmd_tbl = TkMsgCatalog::UNKNOWN_CBTBL[TkCore::INTERP.__getip] cmd = cmd_tbl[namespace] cmd = cmd_tbl['::'] unless cmd # use global scope as interp default return src_str unless cmd # no cmd -> return src-str (default action) begin cmd.call(locale, src_str) rescue SystemExit exit(0) rescue Interrupt exit!(1) rescue Exception => e begin msg = _toUTF8(e.class.inspect) + ': ' + _toUTF8(e.message) + "\n" + "\n---< backtrace of Ruby side >-----\n" + _toUTF8(e.backtrace.join("\n")) + "\n---< backtrace of Tk side >-------" msg.instance_variable_set(:@encoding, 'utf-8') rescue Exception msg = e.class.inspect + ': ' + e.message + "\n" + "\n---< backtrace of Ruby side >-----\n" + e.backtrace.join("\n") + "\n---< backtrace of Tk side >-------" end fail(e, msg) end end
# File tk/lib/tk/msgcat.rb, line 284 def self.def_unknown_proc(cmd=Proc.new) TkMsgCatalog::UNKNOWN_CBTBL[TkCore::INTERP.__getip]['::'] = cmd end
# File tk/lib/tk/msgcat.rb, line 220 def self.load(dir) self.load_rb(dir) end
# File tk/lib/tk/msgcat.rb, line 192 def self.load_rb(dir) count = 0 preferences().each{|loc| file = File.join(dir, loc + self::MSGCAT_EXT) if File.readable?(file) count += 1 eval(open(file){|f| f.read}) end } count end
# File tk/lib/tk/msgcat.rb, line 188 def self.load_tk(dir) number(tk_call('::msgcat::mcload', dir)) end
# File tk/lib/tk/msgcat.rb, line 167 def self.locale tk_call('::msgcat::mclocale') end
# File tk/lib/tk/msgcat.rb, line 174 def self.locale=(locale) tk_call('::msgcat::mclocale', locale) end
# File tk/lib/tk/msgcat.rb, line 160 def self.maxlen(*src_strings) tk_call('::msgcat::mcmax', *src_strings).to_i end
# File tk/lib/tk/msgcat.rb, line 88 def initialize(namespace = nil) if namespace.kind_of?(TkNamespace) @namespace = namespace elsif namespace == nil @namespace = TkNamespace.new('::') # global namespace else @namespace = TkNamespace.new(namespace) end @path = @namespace.path @msgcat_ext = '.msg' end
# File tk/lib/tk/msgcat.rb, line 27 def self.package_name PACKAGE_NAME end
# File tk/lib/tk/msgcat.rb, line 181 def self.preferences tk_split_simplelist(tk_call('::msgcat::mcpreferences')) end
# File tk/lib/tk/msgcat.rb, line 225 def self.set_translation(locale, src_str, trans_str=None, enc='utf-8') if trans_str && trans_str != None trans_str = Tk.UTF8_String(_toUTF8(trans_str, enc)) Tk.UTF8_String(tk_call_without_enc('::msgcat::mcset', locale, _get_eval_string(src_str, true), trans_str)) else Tk.UTF8_String(tk_call_without_enc('::msgcat::mcset', locale, _get_eval_string(src_str, true))) end end
# File tk/lib/tk/msgcat.rb, line 255 def self.set_translation_list(locale, trans_list, enc='utf-8') # trans_list ::= [ [src, trans], [src, trans], ... ] list = [] trans_list.each{|src, trans| if trans && trans != None list << _get_eval_string(src, true) list << Tk.UTF8_Stirng(_toUTF8(trans, enc)) else list << _get_eval_string(src, true) << '' end } number(tk_call_without_enc('::msgcat::mcmset', locale, list)) end
# File tk/lib/tk/msgcat.rb, line 287 def def_unknown_proc(cmd=Proc.new) TkMsgCatalog::UNKNOWN_CBTBL[TkCore::INTERP.__getip][@namespace.path] = cmd end
# File tk/lib/tk/msgcat.rb, line 208 def load_rb(dir) count = 0 preferences().each{|loc| file = File.join(dir, loc + @msgcat_ext) if File.readable?(file) count += 1 @namespace.eval(open(file){|f| f.read}) end } count end
# File tk/lib/tk/msgcat.rb, line 204 def load_tk(dir) number(@namespace.eval{tk_call('::msgcat::mcload', dir)}) end
# File tk/lib/tk/msgcat.rb, line 170 def locale @namespace.eval{tk_call('::msgcat::mclocale')} end
# File tk/lib/tk/msgcat.rb, line 177 def locale=(locale) @namespace.eval{tk_call('::msgcat::mclocale', locale)} end
# File tk/lib/tk/msgcat.rb, line 163 def maxlen(*src_strings) @namespace.eval{tk_call('::msgcat::mcmax', *src_strings).to_i} end
# File tk/lib/tk/msgcat.rb, line 102 def method_missing(id, *args) # locale(src, trans) ==> set_translation(locale, src, trans) loc = id.id2name case args.length when 0 # set locale self.locale=(loc) when 1 # src only, or trans_list if args[0].kind_of?(Array) # trans_list #list = args[0].collect{|src, trans| # [ Tk::UTF8_String.new(src), Tk::UTF8_String.new(trans) ] #} self.set_translation_list(loc, args[0]) else # src #self.set_translation(loc, Tk::UTF8_String.new(args[0])) self.set_translation(loc, args[0]) end when 2 # src and trans, or, trans_list and enc if args[0].kind_of?(Array) else #self.set_translation(loc, args[0], Tk::UTF8_String.new(args[1])) self.set_translation(loc, *args) end when 3 # src and trans and enc self.set_translation(loc, *args) else super(id, *args) # fail NameError, "undefined method `#{name}' for #{self.to_s}", error_at end end
# File tk/lib/tk/msgcat.rb, line 184 def preferences tk_split_simplelist(@namespace.eval{tk_call('::msgcat::mcpreferences')}) end
# File tk/lib/tk/msgcat.rb, line 238 def set_translation(locale, src_str, trans_str=None, enc='utf-8') if trans_str && trans_str != None trans_str = Tk.UTF8_String(_toUTF8(trans_str, enc)) Tk.UTF8_String(@namespace.eval{ tk_call_without_enc('::msgcat::mcset', locale, _get_eval_string(src_str, true), trans_str) }) else Tk.UTF8_String(@namespace.eval{ tk_call_without_enc('::msgcat::mcset', locale, _get_eval_string(src_str, true))}) end end
# File tk/lib/tk/msgcat.rb, line 268 def set_translation_list(locale, trans_list, enc='utf-8') # trans_list ::= [ [src, trans], [src, trans], ... ] list = [] trans_list.each{|src, trans| if trans && trans != None list << _get_eval_string(src, true) list << Tk.UTF8_String(_toUTF8(trans, enc)) else list << _get_eval_string(src, true) << '' end } number(@namespace.eval{ tk_call_without_enc('::msgcat::mcmset', locale, list) }) end