    # File lib/gettext.rb, line 411
      def nsgettext(arg1, arg2, arg3 = "|", arg4 = "|")
        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

        cached_key = [bound_target, Locale.current, msgid + "\000" + msgid_plural]
        msgs = nil
        if @@__cached
          if @@__cache_nmsgids.has_key?(cached_key)
            msgs = @@__cache_nmsgids[cached_key]  # [msgstr, cond_as_string]
          end
        end
        unless msgs
          # Use "for"(not "each") to support JRuby 1.1.0.
          for target in bound_targets(self)
            manager = @@__textdomainmanagers[target]
            for textdomain in manager.textdomains
              msgs = textdomain[1].ngettext_data(msgid, msgid_plural)
              break if msgs
            end
            break if msgs
          end
          msgs = [[msgid, msgid_plural], "n != 1"] unless msgs
          @@__cache_nmsgids[cached_key] = msgs
        end
        msgstrs = msgs[0]
        if div and msgstrs[0] == msgid
          if index = msgstrs[0].rindex(div)
            msgstrs[0] = msgstrs[0][(index + 1)..-1]
          end
        end
        plural = eval(msgs[1])
        if plural.kind_of?(Numeric)
          ret = msgstrs[plural]
        else
          ret = plural ? msgstrs[1] : msgstrs[0]
        end
        ret
      end