In Files

  • tk/lib/tk/msgcat.rb

Class/Module Index [+]

Quicksearch

TkMsgCat

class TkMsgCatalog

Attributes

msgcat_ext[RW]

Public Class Methods

[](*args) click to toggle source
Alias for: translate
callback(namespace, locale, src_str, *args) click to toggle source
 
               # 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
            
def_unknown_proc(cmd=Proc.new) click to toggle source
 
               # File tk/lib/tk/msgcat.rb, line 292
def self.def_unknown_proc(cmd=Proc.new)
  TkMsgCatalog::UNKNOWN_CBTBL[TkCore::INTERP.__getip]['::'] = cmd
end
            
load(dir) click to toggle source
 
               # File tk/lib/tk/msgcat.rb, line 235
def self.load(dir)
  self.load_rb(dir)
end
            
load_rb(dir) click to toggle source
 
               # 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
            
load_tk(dir) click to toggle source
 
               # File tk/lib/tk/msgcat.rb, line 195
def self.load_tk(dir)
  number(tk_call('::msgcat::mcload', dir))
end
            
locale() click to toggle source
 
               # File tk/lib/tk/msgcat.rb, line 174
def self.locale
  tk_call('::msgcat::mclocale')
end
            
locale=(locale) click to toggle source
 
               # File tk/lib/tk/msgcat.rb, line 181
def self.locale=(locale)
  tk_call('::msgcat::mclocale', locale)
end
            
maxlen(*src_strings) click to toggle source
 
               # File tk/lib/tk/msgcat.rb, line 167
def self.maxlen(*src_strings)
  tk_call('::msgcat::mcmax', *src_strings).to_i
end
            
mc(*args) click to toggle source
Alias for: translate
new(namespace = nil) click to toggle source
 
               # 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
            
package_name() click to toggle source
 
               # File tk/lib/tk/msgcat.rb, line 28
def self.package_name
  PACKAGE_NAME
end
            
preferences() click to toggle source
 
               # File tk/lib/tk/msgcat.rb, line 188
def self.preferences
  tk_split_simplelist(tk_call('::msgcat::mcpreferences'))
end
            
set_translation(locale, src_str, trans_str=None, enc='utf-8') click to toggle source
 
               # 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
            
set_translation_list(locale, trans_list, enc='utf-8') click to toggle source
 
               # 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
            
translate(*args) click to toggle source

*args ::= form, arg, arg, …

 
               # File tk/lib/tk/msgcat.rb, line 147
def self.translate(*args)
  dst = args.collect{|src|
    tk_call_without_enc('::msgcat::mc', _get_eval_string(src, true))
  }
  Tk.UTF8_String(sprintf(*dst))
end
            
Also aliased as: mc, []

Public Instance Methods

[](*args) click to toggle source
Alias for: translate
def_unknown_proc(cmd=Proc.new) click to toggle source
 
               # 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
            
load(dir) click to toggle source
Alias for: load_rb
load_rb(dir) click to toggle source
 
               # 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
            
Also aliased as: load
load_tk(dir) click to toggle source
 
               # File tk/lib/tk/msgcat.rb, line 215
def load_tk(dir)
  number(@namespace.eval{tk_call('::msgcat::mcload', dir)})
end
            
locale() click to toggle source
 
               # File tk/lib/tk/msgcat.rb, line 177
def locale
  @namespace.eval{tk_call('::msgcat::mclocale')}
end
            
locale=(locale) click to toggle source
 
               # File tk/lib/tk/msgcat.rb, line 184
def locale=(locale)
  @namespace.eval{tk_call('::msgcat::mclocale', locale)}
end
            
maxlen(*src_strings) click to toggle source
 
               # File tk/lib/tk/msgcat.rb, line 170
def maxlen(*src_strings)
  @namespace.eval{tk_call('::msgcat::mcmax', *src_strings).to_i}
end
            
mc(*args) click to toggle source
Alias for: translate
method_missing(id, *args) click to toggle source
 
               # 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
            
preferences() click to toggle source
 
               # File tk/lib/tk/msgcat.rb, line 191
def preferences
  tk_split_simplelist(@namespace.eval{tk_call('::msgcat::mcpreferences')})
end
            
set_translation(locale, src_str, trans_str=None, enc='utf-8') click to toggle source
 
               # 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
            
set_translation_list(locale, trans_list, enc='utf-8') click to toggle source
 
               # 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
            
translate(*args) click to toggle source
 
               # File tk/lib/tk/msgcat.rb, line 157
def translate(*args)
  dst = args.collect{|src|
    @namespace.eval{tk_call_without_enc('::msgcat::mc',
                                        _get_eval_string(src, true))}
  }
  Tk.UTF8_String(sprintf(*dst))
end
            
Also aliased as: mc, []

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.