Method: GetText::TextDomainManager#translate_plural_message
- Defined in:
- lib/gettext/runtime/textdomain_manager.rb
#translate_plural_message(klass, arg1, arg2, arg3 = "|", arg4 = "|") ⇒ Object
This function is similar to the get_singluar_message function as it finds the message catalogs in the same way. But it takes two extra arguments for plural form. The msgid parameter must contain the singular form of the string to be converted. It is also used as the key for the search in the catalog. The msgid_plural parameter is the plural form. The parameter n is used to determine the plural form. If no message catalog is found msgid1 is returned if n == 1, otherwise msgid2. And if msgid includes “div”, it returns a last part of msgid separeted “div”.
-
msgid: the singular form with “div”. (e.g. “Special|An apple”, “An apple”)
-
msgid_plural: the plural form. (e.g. “%num Apples”)
-
n: a number used to determine the plural form.
-
div: the separator. Default is “|”.
-
Returns: the localized text which key is msgid_plural if n is plural(follow plural-rule) or msgid. “plural-rule” is defined in po-file.
or
- msgid, msgid_plural
-
: msgid and msgid_plural an Array
-
n: a number used to determine the plural form.
-
div: the separator. Default is “|”.
139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 |
# File 'lib/gettext/runtime/textdomain_manager.rb', line 139 def (klass, arg1, arg2, arg3 = "|", arg4 = "|") klass = ClassInfo.normalize_class(klass) # parse arguments if arg1.kind_of?(Array) msgid = arg1[0] msgid_plural = arg1[1] n = arg2 if arg3 and arg3.kind_of? Numeric raise ArgumentError, _("3rd parmeter is wrong: value = %{number}") % {:number => arg3} end div = arg3 else msgid = arg1 msgid_plural = arg2 n = arg3 div = arg4 end key = [Locale.current, klass, msgid, msgid_plural, div].hash msgs = [key] unless (msgs and @@cached) # Find messages from related classes. msgs = nil each_textdomains(klass) do |textdomain, lang| msgs = textdomain.(lang, msgid, msgid_plural) break if msgs end msgs = [[msgid, msgid_plural], TextDomain::DEFAULT_PLURAL_CALC] unless msgs msgstrs = msgs[0] if div and msgstrs[0] == msgid and index = msgstrs[0].rindex(div) msgstrs[0] = msgstrs[0][(index + 1)..-1] end [key] = msgs end # Return the singular or plural message. msgstrs = msgs[0] plural = msgs[1].call(n) return msgstrs[plural] if plural.kind_of?(Numeric) return plural ? msgstrs[1] : msgstrs[0] end |