Class String
In: lib/gettext/string.rb
Parent: Object

Extension for String class.

String#% method which accept "named argument". The translator can know the meaning of the msgids using "named argument" instead of %s/%d style.

Methods

%  

External Aliases

% -> _old_format_m

Public Instance methods

Format - Uses str as a format specification, and returns the result of applying it to arg. If the format specification contains more than one substitution, then arg must be an Array containing the values to be substituted. See Kernel::sprintf for details of the format string. This is the default behavior of the String class.

  • arg: an Array or other class except Hash.
  • Returns: formatted String
 (e.g.) "%s, %s" % ["Masao", "Mutoh"]

Also you can use a Hash as the "named argument". This is recommanded way for Ruby-GetText because the translators can understand the meanings of the msgids easily.

  • hash: {:key1 => value1, :key2 => value2, … }
  • Returns: formatted String
 (e.g.) "%{firstname}, %{familyname}" % {:firstname => "Masao", :familyname => "Mutoh"}

[Source]

    # File lib/gettext/string.rb, line 37
37:   def %(args)
38:     if args.kind_of?(Hash)
39:       ret = dup
40:       args.each {|key, value|
41:         ret.gsub!(/\%\{#{key}\}/, value.to_s)
42:       }
43:       ret
44:     else
45:       ret = gsub(/%\{/, '%%{')
46:       begin
47:         ret._old_format_m(args)
48:       rescue ArgumentError => e
49:         if $DEBUG
50:            $stderr.puts "  The string:#{ret}"
51:            $stderr.puts "  args:#{args.inspect}"
52:            puts e.backtrace
53:         else   
54:           raise ArgumentError, e.message
55:         end
56:       end
57:     end
58:   end

[Validate]