    # File lib/gettext/runtime/textdomain_manager.rb, line 139
        def translate_plural_message(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 = @@plural_message_cache[key]
          unless (msgs and @@cached)
            # Find messages from related classes.
            msgs = nil
            each_textdomains(klass) do |textdomain, lang|
              msgs = textdomain.translate_plural_message(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
            @@plural_message_cache[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