class TkMsgCatalog
# File tk/lib/tk/msgcat.rb, line 59 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 >-------" if TkCore::WITH_ENCODING msg.force_encoding('utf-8') else msg.instance_variable_set(:@encoding, 'utf-8') end 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 292 def self.def_unknown_proc(cmd=Proc.new) TkMsgCatalog::UNKNOWN_CBTBL[TkCore::INTERP.__getip]['::'] = cmd end
# File tk/lib/tk/msgcat.rb, line 235 def self.load(dir) self.load_rb(dir) end
# File tk/lib/tk/msgcat.rb, line 199 def self.load_rb(dir) count = 0 preferences().each{|loc| file = File.join(dir, loc + self::MSGCAT_EXT) if File.readable?(file) count += 1 if TkCore::WITH_ENCODING eval(IO.read(file, :encoding=>"ASCII-8BIT")) else eval(IO.read(file)) end end } count end
# File tk/lib/tk/msgcat.rb, line 195 def self.load_tk(dir) number(tk_call('::msgcat::mcload', dir)) end
# File tk/lib/tk/msgcat.rb, line 174 def self.locale tk_call('::msgcat::mclocale') end
# File tk/lib/tk/msgcat.rb, line 181 def self.locale=(locale) tk_call('::msgcat::mclocale', locale) end
# File tk/lib/tk/msgcat.rb, line 167 def self.maxlen(*src_strings) tk_call('::msgcat::mcmax', *src_strings).to_i end
# File tk/lib/tk/msgcat.rb, line 93 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 28 def self.package_name PACKAGE_NAME end
# File tk/lib/tk/msgcat.rb, line 188 def self.preferences tk_split_simplelist(tk_call('::msgcat::mcpreferences')) end
# File tk/lib/tk/msgcat.rb, line 240 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(ip_eval_without_enc("::msgcat::mcset {#{locale}} {#{_get_eval_string(src_str, true)}} {#{trans_str}}")) else Tk.UTF8_String(ip_eval_without_enc("::msgcat::mcset {#{locale}} {#{_get_eval_string(src_str, true)}}")) end end
# File tk/lib/tk/msgcat.rb, line 261 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_String(_toUTF8(trans, enc)) else list << _get_eval_string(src, true) << '' end } #number(tk_call_without_enc('::msgcat::mcmset', locale, list)) number(ip_eval_without_enc("::msgcat::mcmset {#{locale}} {#{_get_eval_string(list)}}")) end
# File tk/lib/tk/msgcat.rb, line 295 def def_unknown_proc(cmd=Proc.new) TkMsgCatalog::UNKNOWN_CBTBL[TkCore::INTERP.__getip][@namespace.path] = cmd end
# File tk/lib/tk/msgcat.rb, line 219 def load_rb(dir) count = 0 preferences().each{|loc| file = File.join(dir, loc + @msgcat_ext) if File.readable?(file) count += 1 if TkCore::WITH_ENCODING @namespace.eval(IO.read(file, :encoding=>"ASCII-8BIT")) else @namespace.eval(IO.read(file)) end end } count end
# File tk/lib/tk/msgcat.rb, line 215 def load_tk(dir) number(@namespace.eval{tk_call('::msgcat::mcload', dir)}) end
# File tk/lib/tk/msgcat.rb, line 177 def locale @namespace.eval{tk_call('::msgcat::mclocale')} end
# File tk/lib/tk/msgcat.rb, line 184 def locale=(locale) @namespace.eval{tk_call('::msgcat::mclocale', locale)} end
# File tk/lib/tk/msgcat.rb, line 170 def maxlen(*src_strings) @namespace.eval{tk_call('::msgcat::mcmax', *src_strings).to_i} end
# File tk/lib/tk/msgcat.rb, line 107 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) # trans_list self.set_translation_list(loc, *args) 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 191 def preferences tk_split_simplelist(@namespace.eval{tk_call('::msgcat::mcpreferences')}) end
# File tk/lib/tk/msgcat.rb, line 248 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{ ip_eval_without_enc("::msgcat::mcset {#{locale}} {#{_get_eval_string(src_str, true)}} {#{trans_str}}") }) else Tk.UTF8_String(@namespace.eval{ ip_eval_without_enc("::msgcat::mcset {#{locale}} {#{_get_eval_string(src_str, true)}}") }) end end
# File tk/lib/tk/msgcat.rb, line 275 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) ip_eval_without_enc("::msgcat::mcmset {#{locale}} {#{_get_eval_string(list)}}") }) end
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.