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.