? configure.lineno ? install.log ? Mailman/Defaults.py.in.patch ? Mailman/Commands/cmd_password.py.patch ? Mailman/Handlers/Scrubber.py.patch ? Mailman/Queue/CommandRunner.py.patch ? bin/update.patch ? messages/ja/LC_MESSAGES/mailman.po.x ? messages/ja/LC_MESSAGES/mailman.po.z Index: Mailman/Bouncer.py =================================================================== RCS file: /cvsroot/mailman/mailman/Mailman/Bouncer.py,v retrieving revision 2.37.2.3 diff -u -r2.37.2.3 Bouncer.py --- Mailman/Bouncer.py 10 Feb 2004 22:38:26 -0000 2.37.2.3 +++ Mailman/Bouncer.py 25 Apr 2004 04:43:02 -0000 @@ -268,6 +268,8 @@ # provided in the exception argument. sender = msg.get_sender() subject = msg.get('subject', _('(no subject)')) + subject = Utils.oneline(subject, + Utils.GetCharSet(self.preferred_language)) if e is None: notice = _('[No bounce details are available]') else: Index: Mailman/Defaults.py.in =================================================================== RCS file: /cvsroot/mailman/mailman/Mailman/Defaults.py.in,v retrieving revision 2.112.2.15 diff -u -r2.112.2.15 Defaults.py.in --- Mailman/Defaults.py.in 25 Apr 2004 02:30:03 -0000 2.112.2.15 +++ Mailman/Defaults.py.in 25 Apr 2004 04:43:02 -0000 @@ -256,6 +256,10 @@ # should modify the Message object as necessary. ARCHIVE_SCRUBBER = 'Mailman.Handlers.Scrubber' +# Mailman.Handlers.Scrubber uses attachment's filename as is. +# If you don't like this (long MIME filename) then set this true. +SCRUBBER_DONT_USE_ATTACHMENT_FILENAME = False + # This variable defines what happens to text/html subparts. They can be # stripped completely, escaped, or filtered through an external program. The # legal values are: @@ -453,6 +457,7 @@ 'Moderate', 'Hold', 'MimeDel', + 'Scrubber', 'Emergency', 'Tagger', 'CalcRecips', @@ -785,9 +790,13 @@ DEFAULT_MAX_NUM_RECIPIENTS = 10 DEFAULT_MAX_MESSAGE_SIZE = 40 # KB +# Discard held messages after this days +DEFAULT_MAX_DAYS_TO_HOLD = 3 # days + # These format strings will be expanded w.r.t. the dictionary for the # mailing list instance. -DEFAULT_SUBJECT_PREFIX = "[%(real_name)s] " +# Add %d (seqnum) in prefix +DEFAULT_SUBJECT_PREFIX = "[%(real_name)s %%d]" DEFAULT_MSG_HEADER = "" DEFAULT_MSG_FOOTER = """_______________________________________________ %(real_name)s mailing list @@ -795,6 +804,9 @@ %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s """ +# Scrub regular delivery +DEFAULT_SCRUB_NONDIGEST = False + # Mail command processor will ignore mail command lines after designated max. DEFAULT_MAIL_COMMANDS_MAX_LINES = 25 Index: Mailman/MailList.py =================================================================== RCS file: /cvsroot/mailman/mailman/Mailman/MailList.py,v retrieving revision 2.100.2.19 diff -u -r2.100.2.19 MailList.py --- Mailman/MailList.py 4 Mar 2004 14:10:28 -0000 2.100.2.19 +++ Mailman/MailList.py 25 Apr 2004 04:43:03 -0000 @@ -382,6 +382,10 @@ self.encode_ascii_prefixes = 0 else: self.encode_ascii_prefixes = 2 + # automatic discarding + self.max_days_to_hold = mm_cfg.DEFAULT_MAX_DAYS_TO_HOLD + # scrub regular delivery + self.scrub_nondigest = mm_cfg.DEFAULT_SCRUB_NONDIGEST # @@ -963,7 +967,8 @@ text = Utils.maketext( "adminsubscribeack.txt", {"listname" : realname, - "member" : formataddr((name, email)), + "member" : email, + #"member" : formataddr((name, email)), }, mlist=self) msg = Message.OwnerNotification(self, subject, text) msg.send(self) @@ -1166,6 +1171,10 @@ whence = 'email confirmation' else: whence = 'web confirmation' + if self.unsubscribe_policy == 1: + self.HoldUnsubscription(addr) + raise Errors.MMNeedApproval, _( + 'unsubscriptions require moderator approval') # Can raise NotAMemberError if they unsub'd via other means self.ApprovedDeleteMember(addr, whence=whence) return op, addr Index: Mailman/Version.py =================================================================== RCS file: /cvsroot/mailman/mailman/Mailman/Version.py,v retrieving revision 2.51.2.16 diff -u -r2.51.2.16 Version.py --- Mailman/Version.py 25 Apr 2004 02:38:11 -0000 2.51.2.16 +++ Mailman/Version.py 25 Apr 2004 04:43:03 -0000 @@ -36,7 +36,7 @@ (REL_LEVEL << 4) | (REL_SERIAL << 0)) # config.pck schema version number -DATA_FILE_VERSION = 90 +DATA_FILE_VERSION = 92 # qfile/*.db schema version number QFILE_SCHEMA_VERSION = 3 Index: Mailman/versions.py =================================================================== RCS file: /cvsroot/mailman/mailman/Mailman/versions.py,v retrieving revision 2.38.2.3 diff -u -r2.38.2.3 versions.py --- Mailman/versions.py 1 Dec 2003 00:58:44 -0000 2.38.2.3 +++ Mailman/versions.py 25 Apr 2004 04:43:04 -0000 @@ -394,6 +394,9 @@ add_only_if_missing('encode_ascii_prefixes', encode) add_only_if_missing('news_moderation', 0) add_only_if_missing('header_filter_rules', []) + # automatic discard + add_only_if_missing('max_days_to_hold', 0) + add_only_if_missing('scrub_nondigest', 0) Index: Mailman/Archiver/Archiver.py =================================================================== RCS file: /cvsroot/mailman/mailman/Mailman/Archiver/Archiver.py,v retrieving revision 2.28.2.2 diff -u -r2.28.2.2 Archiver.py --- Mailman/Archiver/Archiver.py 1 Dec 2003 01:07:26 -0000 2.28.2.2 +++ Mailman/Archiver/Archiver.py 25 Apr 2004 04:43:04 -0000 @@ -25,6 +25,7 @@ import os import errno import traceback +import re from cStringIO import StringIO from Mailman import mm_cfg @@ -135,15 +136,15 @@ self.internal_name() + '.mbox') def GetBaseArchiveURL(self): + url = self.GetScriptURL('private', absolute=1) + '/' if self.archive_private: - return self.GetScriptURL('private', absolute=1) + '/' + return url else: - inv = {} - for k, v in mm_cfg.VIRTUAL_HOSTS.items(): - inv[v] = k + hostname = re.match('[^:]*://([^/]*)/.*', url).group(1)\ + or mm_cfg.DEFAULT_URL_HOST url = mm_cfg.PUBLIC_ARCHIVE_URL % { 'listname': self.internal_name(), - 'hostname': inv.get(self.host_name, mm_cfg.DEFAULT_URL_HOST), + 'hostname': hostname } if not url.endswith('/'): url += '/' Index: Mailman/Cgi/confirm.py =================================================================== RCS file: /cvsroot/mailman/mailman/Mailman/Cgi/confirm.py,v retrieving revision 2.31.2.4 diff -u -r2.31.2.4 confirm.py --- Mailman/Cgi/confirm.py 10 Feb 2004 22:50:10 -0000 2.31.2.4 +++ Mailman/Cgi/confirm.py 25 Apr 2004 04:43:05 -0000 @@ -410,6 +410,7 @@ mlist.Unlock() sys.exit(0) + listname = mlist.real_name mlist.Lock() try: try: @@ -420,6 +421,16 @@ i18n.set_language(lang) doc.set_language(lang) op, addr = mlist.ProcessConfirmation(cookie) + except Errors.MMNeedApproval: + title = _('Awaiting moderator approval') + doc.SetTitle(title) + doc.AddItem(Header(3, Bold(FontAttr(title, size='+2')))) + doc.AddItem(_("""\ + You have successfully confirmed your unsubscription request to the + mailing list %(listname)s, however final approval is required from + the list moderator before you will be unsubscribed. Your request + has been forwarded to the list moderator, and you will be notified + of the moderator's decision.""")) except Errors.NotAMemberError: bad_confirmation(doc, _('''Invalid confirmation string. It is possible that you are attempting to confirm a request for an Index: Mailman/Gui/General.py =================================================================== RCS file: /cvsroot/mailman/mailman/Mailman/Gui/General.py,v retrieving revision 2.22.2.1 diff -u -r2.22.2.1 General.py --- Mailman/Gui/General.py 17 Feb 2004 19:27:46 -0000 2.22.2.1 +++ Mailman/Gui/General.py 25 Apr 2004 04:43:05 -0000 @@ -145,7 +145,10 @@ posted to the list, to distinguish mailing list messages in in mailbox summaries. Brevity is premium here, it's ok to shorten long mailing list names to something more concise, as long as it - still identifies the mailing list.""")), + still identifies the mailing list. You can also add a sequencial + number by %%d directive when the prefix is closed in [], {} or + (). Example: [listname %%d] -> [listname 123], (listname %%05d) + -> (listname 00123)""")), ('anonymous_list', mm_cfg.Radio, (_('No'), _('Yes')), 0, _("""Hide the sender of a message, replacing it with the list @@ -408,6 +411,12 @@ does not affect the inclusion of the other List-*: headers.)""")) ) + # Discard held messages after this number of days + rtn.append( + ('max_days_to_hold', mm_cfg.Number, 7, 0, + _("""Discard held messages older than this number of days. + Use 0 for no automatic discarding.""")) + ) return rtn Index: Mailman/Gui/NonDigest.py =================================================================== RCS file: /cvsroot/mailman/mailman/Mailman/Gui/NonDigest.py,v retrieving revision 2.10.2.1 diff -u -r2.10.2.1 NonDigest.py --- Mailman/Gui/NonDigest.py 20 Apr 2003 04:02:05 -0000 2.10.2.1 +++ Mailman/Gui/NonDigest.py 25 Apr 2004 04:43:05 -0000 @@ -134,6 +134,15 @@ _('''Text appended to the bottom of every immediately-delivery message. ''') + headfoot + extra), ]) + + info.extend([ + ('scrub_nondigest', mm_cfg.Toggle, (_('No'), _('Yes')), 0, + _('Scrub attachments of regular delivery message?'), + _('''When you scrub attachments, they are stored in archive + area and links are made in the message so that the member can + access via web browser. If you want the attachments totally + disappear, you can use content filter options.''')), + ]) return info def _setValue(self, mlist, property, val, doc): Index: Mailman/Handlers/CookHeaders.py =================================================================== RCS file: /cvsroot/mailman/mailman/Mailman/Handlers/CookHeaders.py,v retrieving revision 2.33.2.6 diff -u -r2.33.2.6 CookHeaders.py --- Mailman/Handlers/CookHeaders.py 18 Dec 2003 14:58:22 -0000 2.33.2.6 +++ Mailman/Handlers/CookHeaders.py 25 Apr 2004 04:43:06 -0000 @@ -15,6 +15,7 @@ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. """Cook a message's Subject header. + (sequence version) """ from __future__ import nested_scopes @@ -22,7 +23,7 @@ from types import UnicodeType from email.Charset import Charset -from email.Header import Header, decode_header +from email.Header import Header, decode_header, make_header from email.Utils import parseaddr, formataddr, getaddresses from Mailman import mm_cfg @@ -39,21 +40,19 @@ def _isunicode(s): return isinstance(s, UnicodeType) +nonascii = re.compile('[^\s!-~]') + def uheader(mlist, s, header_name=None, continuation_ws='\t', maxlinelen=None): - # Get the charset to encode the string in. If this is us-ascii, we'll use - # iso-8859-1 instead, just to get a little extra coverage, and because the - # Header class tries us-ascii first anyway. + # Get the charset to encode the string in. Then search if there is any + # non-ascii character is in the string. If there is and the charset is + # us-ascii then we use iso-8859-1 instead. If the string is ascii only + # we use 'us-ascii' if another charset is specified. charset = Utils.GetCharSet(mlist.preferred_language) - if charset == 'us-ascii': - charset = 'iso-8859-1' - charset = Charset(charset) - # Convert the string to unicode so Header will do the 3-charset encoding. - # If s is a byte string and there are funky characters in it that don't - # match the charset, we might as well replace them now. - if not _isunicode(s): - codec = charset.input_codec or 'ascii' - s = unicode(s, codec, 'replace') - # We purposefully leave no space b/w prefix and subject! + if nonascii.search(s): + if charset == 'us-ascii': + charset = 'iso-8859-1' + else: + charset = 'us-ascii' return Header(s, charset, maxlinelen, header_name, continuation_ws) @@ -71,7 +70,12 @@ # VirginRunner sets _fasttrack for internally crafted messages. fasttrack = msgdata.get('_fasttrack') if not msgdata.get('isdigest') and not fasttrack: - prefix_subject(mlist, msg, msgdata) + try: + prefix_subject(mlist, msg, msgdata) + except (UnicodeError, ValueError): + # TK: Sometimes subject header is not MIME encoded for 8bit + # simply abort prefixing. + pass # Mark message so we know we've been here, but leave any existing # X-BeenThere's intact. msg['X-BeenThere'] = mlist.GetListEmail() @@ -127,7 +131,7 @@ # because some folks think that some MUAs make it easier to delete # addresses from the right than from the left. if mlist.reply_goes_to_list == 1: - i18ndesc = uheader(mlist, mlist.description) + i18ndesc = uheader(mlist, mlist.description, 'Reply-To') add((str(i18ndesc), mlist.GetListEmail())) del msg['reply-to'] # Don't put Reply-To: back if there's nothing to add! @@ -150,7 +154,7 @@ d = {} for pair in getaddresses(msg.get_all('cc', [])): add(pair) - i18ndesc = uheader(mlist, mlist.description) + i18ndesc = uheader(mlist, mlist.description, 'Cc') add((str(i18ndesc), mlist.GetListEmail())) del msg['Cc'] msg['Cc'] = COMMASPACE.join([formataddr(pair) for pair in new]) @@ -165,15 +169,13 @@ return # This will act like an email address for purposes of formataddr() listid = '%s.%s' % (mlist.internal_name(), mlist.host_name) + cset = Utils.GetCharSet(mlist.preferred_language) if mlist.description: - # Don't wrap the header since here we just want to get it properly RFC - # 2047 encoded. - h = uheader(mlist, mlist.description, 'List-Id', maxlinelen=10000) - desc = str(h) + i18ndesc = uheader(mlist, mlist.description, 'List-Id') + listid_h = formataddr((str(i18ndesc), listid)) else: - desc = '' - listid_h = formataddr((desc, listid)) - # BAW: I think the message object should handle any necessary wrapping. + listid_h = '<%s>' % listid + # We always add a List-ID: header. del msg['list-id'] msg['List-Id'] = listid_h # For internally crafted messages, we @@ -218,7 +220,9 @@ # Add the subject prefix unless the message is a digest or is being fast # tracked (e.g. internally crafted, delivered to a single user such as the # list admin). - prefix = mlist.subject_prefix + prefix = mlist.subject_prefix.strip() + if not prefix: + return subject = msg.get('subject', '') # Try to figure out what the continuation_ws is for the header if isinstance(subject, Header): @@ -229,35 +233,91 @@ if len(lines) > 1 and lines[1] and lines[1][0] in ' \t': ws = lines[1][0] msgdata['origsubj'] = subject - if not subject: + # The subject may be multilingual but we take the first charset + # as major one and try to decode. If it is decodable, returned + # subject is in one line and cset is properly set. If fail, + # subject is mime-encoded and cset is set as us-ascii. See detail + # for ch_oneline() (CookHeaders one line function). + subject, cset = ch_oneline(subject) + # Note: searching prefix in subject is REMOVED. (seq version) + # If the subject_prefix contains '%d', it is replaced with the + # mailing list sequential number. Also, if the prefix is closed with + # [],(), or {}, the prefix in the responding post subject will be cared. + # sequential number format allows '%05d' like pattern. + p = re.compile('%\d*d') + if p.search(prefix,1): + # prefix have number, so we should search prefix w/number + # in subject. + prefix_pattern = p.sub(r'\s*\d+\s*', prefix) + else: + prefix_pattern = prefix + prefix_pattern = re.sub('([\[\(\{\)])', '\\\\\g<1>', prefix_pattern) + subject = re.sub(prefix_pattern, '', subject) + subject = re.compile('(RE:\s*)+', re.I).sub('Re: ', subject, 1) + # At this point, subject may become null if someone post mail with + # subject: [subject prefix] + if subject.strip() == '': subject = _('(no subject)') - # The header may be multilingual; decode it from base64/quopri and search - # each chunk for the prefix. BAW: Note that if the prefix contains spaces - # and each word of the prefix is encoded in a different chunk in the - # header, we won't find it. I think in practice that's unlikely though. - headerbits = decode_header(subject) - if prefix and subject: - pattern = re.escape(prefix.strip()) - for decodedsubj, charset in headerbits: - if re.search(pattern, decodedsubj, re.IGNORECASE): - # The subject's already got the prefix, so don't change it - return - del msg['subject'] + cset = Utils.GetCharSet(mlist.preferred_language) + # and substitute %d in prefix with post_id + try: + prefix = prefix % mlist.post_id + except TypeError: + pass + # If charset is 'us-ascii', try to concatnate as string because there + # is some weirdness in Header module (TK) + if cset == 'us-ascii': + try: + h = prefix + ' ' + subject + if type(h) == UnicodeType: + h = h.encode('us-ascii') + else: + h = unicode(h, 'us-ascii').encode('us-ascii') + del msg['subject'] + msg['Subject'] = h + return + except UnicodeError: + pass # Get the header as a Header instance, with proper unicode conversion h = uheader(mlist, prefix, 'Subject', continuation_ws=ws) - for s, c in headerbits: - # Once again, convert the string to unicode. - if c is None: - c = Charset('iso-8859-1') - if not isinstance(c, Charset): - c = Charset(c) - if not _isunicode(s): - codec = c.input_codec or 'ascii' - try: - s = unicode(s, codec, 'replace') - except LookupError: - # Unknown codec, is this default reasonable? - s = unicode(s, Utils.GetCharSet(mlist.preferred_language), - 'replace') - h.append(s, c) + # in seq version, subject header is already concatnated + if not _isunicode(subject): + try: + subject = unicode(subject, cset, 'replace') + except (LookupError, TypeError): + # unknown codec + cset = Utils.GetCharSet(mlist.preferred_language) + subject = unicode(subject, cset, 'replace') + subject = subject.encode(cset,'replace') + h.append(subject, cset) + del msg['subject'] msg['Subject'] = h + + +def ch_oneline(s): + # Decode header string in one line and convert into single charset + # copied and modified from ToDigest.py and Utils.py + # return (string, cset) tuple as check for failure + try: + d = decode_header(s) + # at this point, we should rstrip() every string because some + # MUA deliberately add trailing spaces when composing return + # message. + i = 0 + for (s,c) in d: + s = s.rstrip() + d[i] = (s,c) + i += 1 + cset = 'us-ascii' + for x in d: + # search for no-None charset + if x[1]: + cset = x[1] + break + h = make_header(d) + ustr = h.__unicode__() + oneline = u''.join(ustr.splitlines()) + return oneline.encode(cset, 'replace'), cset + except (LookupError, UnicodeError, HeaderParseError): + # possibly charset problem. return with undecoded string in one line. + return ''.join(s.splitlines()), 'us-ascii' Index: Mailman/Handlers/Decorate.py =================================================================== RCS file: /cvsroot/mailman/mailman/Mailman/Handlers/Decorate.py,v retrieving revision 2.21.2.3 diff -u -r2.21.2.3 Decorate.py --- Mailman/Handlers/Decorate.py 1 Dec 2003 14:21:08 -0000 2.21.2.3 +++ Mailman/Handlers/Decorate.py 25 Apr 2004 04:43:06 -0000 @@ -53,7 +53,12 @@ # BAW: Hmm, should we allow this? d['user_password'] = mlist.getMemberPassword(member) d['user_language'] = mlist.getMemberLanguage(member) - d['user_name'] = mlist.getMemberName(member) or _('not available') + username = mlist.getMemberName(member) + if username: + username = username.encode(Utils.GetCharSet(d['user_language'])) + else: + username = member + d['user_name'] = username d['user_optionsurl'] = mlist.GetOptionsURL(member) except Errors.NotAMemberError: pass @@ -83,18 +88,36 @@ # BAW: If the charsets don't match, should we add the header and footer by # MIME multipart chroming the message? wrap = True - if not msg.is_multipart() and msgtype == 'text/plain' and \ - msg.get('content-transfer-encoding', '').lower() <> 'base64' and \ - (lcset == 'us-ascii' or mcset == lcset): - oldpayload = msg.get_payload() - frontsep = endsep = '' - if header and not header.endswith('\n'): - frontsep = '\n' - if footer and not oldpayload.endswith('\n'): - endsep = '\n' - payload = header + frontsep + oldpayload + endsep + footer - msg.set_payload(payload) - wrap = False + if not msg.is_multipart() and msgtype == 'text/plain': + # TK: Try to keep the message plain by converting the header/ + # footer/oldpayload into unicode and encode with mcset/lcset. + # Try to decode qp/base64 also. + uheader = unicode(header, lcset) + ufooter = unicode(footer, lcset) + try: + oldpayload = unicode(msg.get_payload(decode=1), mcset) + frontsep = endsep = u'' + if header and not header.endswith('\n'): + frontsep = u'\n' + if footer and not oldpayload.endswith('\n'): + endsep = u'\n' + payload = uheader + frontsep + oldpayload + endsep + ufooter + try: + # first, try encode with list charset + payload = payload.encode(lcset) + newcset = lcset + except UnicodeError: + if lcset != mcset: + # if fail, encode with message charset (if different) + payload = payload.encode(mcset) + newcset = mcset + # if this fails, fallback to outer try and wrap=true + del msg['content-transfer-encoding'] + del msg['content-type'] + msg.set_payload(payload, newcset) + wrap = False + except (LookupError, UnicodeError): + pass elif msg.get_type() == 'multipart/mixed': # The next easiest thing to do is just prepend the header and append # the footer as additional subparts Index: Mailman/Handlers/Scrubber.py =================================================================== RCS file: /cvsroot/mailman/mailman/Mailman/Handlers/Scrubber.py,v retrieving revision 2.18.2.6 diff -u -r2.18.2.6 Scrubber.py --- Mailman/Handlers/Scrubber.py 1 Dec 2003 01:43:18 -0000 2.18.2.6 +++ Mailman/Handlers/Scrubber.py 25 Apr 2004 04:43:06 -0000 @@ -27,7 +27,7 @@ import binascii import tempfile from cStringIO import StringIO -from types import IntType +from types import IntType, StringType from email.Utils import parsedate from email.Parser import HeaderParser @@ -167,6 +167,13 @@ outer = True if msgdata is None: msgdata = {} + if msgdata: + # msgdata is available if it is in GLOBAL_PIPELINE + # check if the list owner want to scrub regular delivery + if mlist.scrub_nondigest: + pass + else: + return dir = calculate_attachments_dir(mlist, msg, msgdata) charset = None lcset = Utils.GetCharSet(mlist.preferred_language) @@ -180,11 +187,29 @@ # message. if charset is None: charset = part.get_content_charset(lcset) + # TK: if part is attached then check charset and scrub if none + if part.get('content-disposition') and \ + not part.get_content_charset(): + omask = os.umask(002) + try: + url = save_attachment(mlist, part, dir) + finally: + os.umask(omask) + filename = part.get_filename(_('not available')) + filename = Utils.oneline(filename, lcset) + del part['content-type'] + del part['content-transfer-encoding'] + part.set_payload(_("""\ +An embedded and charset-unspecified text was scrubbed... +Name: %(filename)s +Url: %(url)s +"""), lcset) elif ctype == 'text/html' and isinstance(sanitize, IntType): if sanitize == 0: if outer: raise DiscardMessage del part['content-type'] + del part['content-transfer-encoding'] part.set_payload(_('HTML attachment scrubbed and removed'), # Adding charset arg and removing content-tpe # sets content-type to text/plain @@ -202,6 +227,7 @@ finally: os.umask(omask) del part['content-type'] + del part['content-transfer-encoding'] part.set_payload(_("""\ An HTML attachment was scrubbed... URL: %(url)s @@ -267,6 +293,7 @@ os.umask(omask) desc = part.get('content-description', _('not available')) filename = part.get_filename(_('not available')) + filename = Utils.oneline(filename, lcset) del part['content-type'] del part['content-transfer-encoding'] part.set_payload(_("""\ @@ -285,7 +312,7 @@ # By default we take the charset of the first text/plain part in the # message, but if there was none, we'll use the list's preferred # language's charset. - if charset is None or charset == 'us-ascii': + if not charset or charset == 'us-ascii': charset = lcset # We now want to concatenate all the parts which have been scrubbed to # text/plain, into a single text/plain payload. We need to make sure @@ -294,17 +321,27 @@ # BAW: Martin's original patch suggested we might want to try # generalizing to utf-8, and that's probably a good idea (eventually). text = [] - for part in msg.get_payload(): + for part in msg.walk(): + if part.get_content_maintype() == 'multipart': + continue # All parts should be scrubbed to text/plain by now. partctype = part.get_content_type() if partctype <> 'text/plain': - text.append(_('Skipped content of type %(partctype)s')) + text.append(_('Skipped content of type %(partctype)s\n')) continue try: t = part.get_payload(decode=True) except binascii.Error: t = part.get_payload() - partcharset = part.get_content_charset() + # TK: get_content_charset() returns 'iso-2022-jp' for internally + # crafted (scrubbed) 'euc-jp' text part. So, first try + # get_charset(), then get_content_charset() for the parts + # which are already embeded in the incoming message. + partcharset = part.get_charset() + if partcharset: + partcharset = str(partcharset) + else: + partcharset = part.get_content_charset() if partcharset and partcharset <> charset: try: t = unicode(t, partcharset, 'replace') @@ -320,9 +357,10 @@ except (UnicodeError, LookupError, ValueError): t = t.encode(lcset, 'replace') # Separation is useful - if not t.endswith('\n'): - t += '\n' - text.append(t) + if isinstance(t, StringType): + if not t.endswith('\n'): + t += '\n' + text.append(t) # Now join the text and set the payload sep = _('-------------- next part --------------\n') del msg['content-type'] @@ -356,7 +394,11 @@ # e.g. image/jpg (should be image/jpeg). For now we just store such # things as application/octet-streams since that seems the safest. ctype = msg.get_content_type() - fnext = os.path.splitext(msg.get_filename(''))[1] + # i18n file name is encoded + lcset = Utils.GetCharSet(mlist.preferred_language) + filename = Utils.oneline(msg.get_filename(''), lcset) + fnext = os.path.splitext(filename)[1] + # fnext = os.path.splitext(msg.get_filename(''))[1] ext = guess_extension(ctype, fnext) if not ext: # We don't know what it is, so assume it's just a shapeless @@ -376,7 +418,7 @@ # Now base the filename on what's in the attachment, uniquifying it if # necessary. filename = msg.get_filename() - if not filename: + if not filename or mm_cfg.SCRUBBER_DONT_USE_ATTACHMENT_FILENAME: filebase = 'attachment' else: # Sanitize the filename given in the message headers Index: Mailman/Queue/CommandRunner.py =================================================================== RCS file: /cvsroot/mailman/mailman/Mailman/Queue/CommandRunner.py,v retrieving revision 2.26.2.4 diff -u -r2.26.2.4 CommandRunner.py --- Mailman/Queue/CommandRunner.py 1 Dec 2003 01:52:12 -0000 2.26.2.4 +++ Mailman/Queue/CommandRunner.py 25 Apr 2004 04:43:06 -0000 @@ -77,7 +77,7 @@ subj = make_header(decode_header(subj)).__unicode__() # Always process the Subject: header first self.commands.append(subj) - except HeaderParseError: + except (HeaderParseError, UnicodeError, LookupError): # We couldn't parse it so ignore the Subject header pass # Find the first text/plain part Index: cron/checkdbs =================================================================== RCS file: /cvsroot/mailman/mailman/cron/checkdbs,v retrieving revision 2.17.2.3 diff -u -r2.17.2.3 checkdbs --- cron/checkdbs 26 Dec 2003 22:51:10 -0000 2.17.2.3 +++ cron/checkdbs 25 Apr 2004 04:43:06 -0000 @@ -52,6 +52,8 @@ _ = i18n._ i18n.set_language(mm_cfg.DEFAULT_SERVER_LANGUAGE) +now = time.time() + def usage(code, msg=''): @@ -99,16 +101,24 @@ if count: i18n.set_language(mlist.preferred_language) realname = mlist.real_name - text = Utils.maketext( - 'checkdbs.txt', - {'count' : count, - 'host_name': mlist.host_name, - 'adminDB' : mlist.GetScriptURL('admindb', absolute=1), - 'real_name': realname, - }, mlist=mlist) - text += '\n' + pending_requests(mlist) + discarded = auto_discard(mlist) + if discarded: + count = count - discarded + text = _( + 'Notice: %(discarded)d old request(s) automatically expired.\n\n') + else: + text = '' + if count: + text += Utils.maketext( + 'checkdbs.txt', + {'count' : count, + 'host_name': mlist.host_name, + 'adminDB' : mlist.GetScriptURL('admindb', absolute=1), + 'real_name': realname, + }, mlist=mlist) + text += '\n' + pending_requests(mlist) subject = _( - '%(count)d %(realname)s moderator request(s) waiting') + '%(realname)s moderator requests notice') msg = Message.UserNotification(mlist.GetOwnerEmail(), mlist.GetBouncesEmail(), subject, text, @@ -121,6 +131,7 @@ def pending_requests(mlist): + lcset = Utils.GetCharSet(mlist.preferred_language) # Must return a byte string lcset = Utils.GetCharSet(mlist.preferred_language) pending = [] @@ -172,6 +183,18 @@ utext = unicode(text, incodec, 'replace') return utext.encode(outcodec, 'replace') +def auto_discard(mlist): + # Discard old held messages + discard_count = 0 + expire = mlist.max_days_to_hold * 86400 # days + heldmsgs = mlist.GetHeldMessageIds() + if expire and len(heldmsgs): + for id in heldmsgs: + if now - mlist.GetRecord(id)[0] > expire: + mlist.HandleRequest(id, mm_cfg.DISCARD) + discard_count += 1 + mlist.Save() + return discard_count if __name__ == '__main__': Index: messages/Makefile.in =================================================================== RCS file: /cvsroot/mailman/mailman/messages/Makefile.in,v retrieving revision 2.31.2.13 diff -u -r2.31.2.13 Makefile.in --- messages/Makefile.in 25 Apr 2004 02:30:04 -0000 2.31.2.13 +++ messages/Makefile.in 25 Apr 2004 04:43:06 -0000 @@ -107,7 +107,8 @@ po=$(srcdir)/$$d/LC_MESSAGES/mailman.po; \ mo=$(srcdir)/$$d/LC_MESSAGES/mailman.mo; \ dir=$(DESTDIR)$(prefix)/messages/$$d/LC_MESSAGES; \ - $(INSTALL) -m $(FILEMODE) $$po $$mo $$dir; \ + $(INSTALL) -m $(FILEMODE) $$po $$dir; \ + $(INSTALL) -m $(FILEMODE) $$mo $$dir; \ done mofiles: $(MOFILES) Index: messages/docstring.files =================================================================== RCS file: /cvsroot/mailman/mailman/messages/docstring.files,v retrieving revision 2.1.2.4 diff -u -r2.1.2.4 docstring.files --- messages/docstring.files 16 Mar 2004 06:04:00 -0000 2.1.2.4 +++ messages/docstring.files 25 Apr 2004 04:43:06 -0000 @@ -8,6 +8,7 @@ bin/clone_member bin/config_list bin/convert.py +bin/discard bin/dumpdb bin/find_member bin/fix_url.py @@ -17,23 +18,21 @@ bin/list_lists bin/list_members bin/list_owners +bin/newlist bin/mailmanctl bin/mmsitepass -bin/newlist +bin/msgfmt.py bin/qrunner +bin/rb-archfix bin/remove_members bin/rmlist +bin/show_qfiles bin/sync_members bin/transcheck bin/unshunt bin/update bin/version bin/withlist -bin/rb-archfix -bin/rb-archfix.~1~ -bin/msgfmt.py -bin/show_qfiles -bin/discard cron/bumpdigests cron/checkdbs cron/disabled Index: messages/mailman.pot =================================================================== RCS file: /cvsroot/mailman/mailman/messages/mailman.pot,v retrieving revision 2.37.2.11 diff -u -r2.37.2.11 mailman.pot --- messages/mailman.pot 16 Mar 2004 06:04:00 -0000 2.37.2.11 +++ messages/mailman.pot 25 Apr 2004 04:43:09 -0000 @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: Mon Mar 15 22:04:14 2004\n" +"POT-Creation-Date: Sun Apr 25 13:14:21 2004\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -220,13 +220,13 @@ msgstr "" #: Mailman/Bouncer.py:270 Mailman/Deliverer.py:136 -#: Mailman/Handlers/Acknowledge.py:44 Mailman/Handlers/CookHeaders.py:233 +#: Mailman/Handlers/Acknowledge.py:44 Mailman/Handlers/CookHeaders.py:260 #: Mailman/Handlers/Hold.py:205 Mailman/Handlers/ToDigest.py:217 #: Mailman/ListAdmin.py:215 msgid "(no subject)" msgstr "" -#: Mailman/Bouncer.py:272 +#: Mailman/Bouncer.py:274 msgid "[No bounce details are available]" msgstr "" @@ -498,15 +498,15 @@ msgid "Spam Filter Regexp:" msgstr "" -#: Mailman/Cgi/admin.py:763 Mailman/Cgi/admindb.py:289 -#: Mailman/Cgi/admindb.py:348 Mailman/Cgi/admindb.py:391 -#: Mailman/Cgi/admindb.py:625 +#: Mailman/Cgi/admin.py:763 Mailman/Cgi/admindb.py:294 +#: Mailman/Cgi/admindb.py:353 Mailman/Cgi/admindb.py:396 +#: Mailman/Cgi/admindb.py:630 msgid "Defer" msgstr "" -#: Mailman/Cgi/admin.py:763 Mailman/Cgi/admindb.py:291 -#: Mailman/Cgi/admindb.py:350 Mailman/Cgi/admindb.py:391 -#: Mailman/Cgi/admindb.py:625 Mailman/Gui/ContentFilter.py:37 +#: Mailman/Cgi/admin.py:763 Mailman/Cgi/admindb.py:296 +#: Mailman/Cgi/admindb.py:355 Mailman/Cgi/admindb.py:396 +#: Mailman/Cgi/admindb.py:630 Mailman/Gui/ContentFilter.py:37 #: Mailman/Gui/Privacy.py:216 Mailman/Gui/Privacy.py:290 msgid "Reject" msgstr "" @@ -516,19 +516,19 @@ msgid "Hold" msgstr "" -#: Mailman/Cgi/admin.py:764 Mailman/Cgi/admindb.py:292 -#: Mailman/Cgi/admindb.py:351 Mailman/Cgi/admindb.py:391 -#: Mailman/Cgi/admindb.py:625 Mailman/Gui/ContentFilter.py:37 +#: Mailman/Cgi/admin.py:764 Mailman/Cgi/admindb.py:297 +#: Mailman/Cgi/admindb.py:356 Mailman/Cgi/admindb.py:396 +#: Mailman/Cgi/admindb.py:630 Mailman/Gui/ContentFilter.py:37 #: Mailman/Gui/Privacy.py:216 Mailman/Gui/Privacy.py:290 msgid "Discard" msgstr "" -#: Mailman/Cgi/admin.py:764 Mailman/Cgi/admindb.py:391 +#: Mailman/Cgi/admin.py:764 Mailman/Cgi/admindb.py:396 #: Mailman/Gui/Privacy.py:290 msgid "Accept" msgstr "" -#: Mailman/Cgi/admin.py:767 Mailman/Cgi/admindb.py:631 +#: Mailman/Cgi/admin.py:767 Mailman/Cgi/admindb.py:636 msgid "Action:" msgstr "" @@ -764,18 +764,19 @@ #: Mailman/Gui/Bounce.py:155 Mailman/Gui/ContentFilter.py:70 #: Mailman/Gui/ContentFilter.py:103 Mailman/Gui/Digest.py:46 #: Mailman/Gui/Digest.py:62 Mailman/Gui/Digest.py:84 Mailman/Gui/Digest.py:89 -#: Mailman/Gui/General.py:150 Mailman/Gui/General.py:156 -#: Mailman/Gui/General.py:234 Mailman/Gui/General.py:261 -#: Mailman/Gui/General.py:288 Mailman/Gui/General.py:299 -#: Mailman/Gui/General.py:302 Mailman/Gui/General.py:312 -#: Mailman/Gui/General.py:317 Mailman/Gui/General.py:327 -#: Mailman/Gui/General.py:347 Mailman/Gui/General.py:375 -#: Mailman/Gui/General.py:398 Mailman/Gui/NonDigest.py:44 -#: Mailman/Gui/NonDigest.py:52 Mailman/Gui/Privacy.py:110 -#: Mailman/Gui/Privacy.py:116 Mailman/Gui/Privacy.py:149 -#: Mailman/Gui/Privacy.py:197 Mailman/Gui/Privacy.py:305 -#: Mailman/Gui/Privacy.py:318 Mailman/Gui/Usenet.py:52 -#: Mailman/Gui/Usenet.py:56 Mailman/Gui/Usenet.py:93 Mailman/Gui/Usenet.py:105 +#: Mailman/Gui/General.py:153 Mailman/Gui/General.py:159 +#: Mailman/Gui/General.py:237 Mailman/Gui/General.py:264 +#: Mailman/Gui/General.py:291 Mailman/Gui/General.py:302 +#: Mailman/Gui/General.py:305 Mailman/Gui/General.py:315 +#: Mailman/Gui/General.py:320 Mailman/Gui/General.py:330 +#: Mailman/Gui/General.py:350 Mailman/Gui/General.py:378 +#: Mailman/Gui/General.py:401 Mailman/Gui/NonDigest.py:44 +#: Mailman/Gui/NonDigest.py:52 Mailman/Gui/NonDigest.py:139 +#: Mailman/Gui/Privacy.py:110 Mailman/Gui/Privacy.py:116 +#: Mailman/Gui/Privacy.py:149 Mailman/Gui/Privacy.py:197 +#: Mailman/Gui/Privacy.py:305 Mailman/Gui/Privacy.py:318 +#: Mailman/Gui/Usenet.py:52 Mailman/Gui/Usenet.py:56 Mailman/Gui/Usenet.py:93 +#: Mailman/Gui/Usenet.py:105 msgid "No" msgstr "" @@ -789,19 +790,19 @@ #: Mailman/Gui/Bounce.py:146 Mailman/Gui/Bounce.py:155 #: Mailman/Gui/ContentFilter.py:70 Mailman/Gui/ContentFilter.py:103 #: Mailman/Gui/Digest.py:46 Mailman/Gui/Digest.py:62 Mailman/Gui/Digest.py:84 -#: Mailman/Gui/Digest.py:89 Mailman/Gui/General.py:150 -#: Mailman/Gui/General.py:156 Mailman/Gui/General.py:234 -#: Mailman/Gui/General.py:261 Mailman/Gui/General.py:288 -#: Mailman/Gui/General.py:299 Mailman/Gui/General.py:302 -#: Mailman/Gui/General.py:312 Mailman/Gui/General.py:317 -#: Mailman/Gui/General.py:327 Mailman/Gui/General.py:347 -#: Mailman/Gui/General.py:375 Mailman/Gui/General.py:398 +#: Mailman/Gui/Digest.py:89 Mailman/Gui/General.py:153 +#: Mailman/Gui/General.py:159 Mailman/Gui/General.py:237 +#: Mailman/Gui/General.py:264 Mailman/Gui/General.py:291 +#: Mailman/Gui/General.py:302 Mailman/Gui/General.py:305 +#: Mailman/Gui/General.py:315 Mailman/Gui/General.py:320 +#: Mailman/Gui/General.py:330 Mailman/Gui/General.py:350 +#: Mailman/Gui/General.py:378 Mailman/Gui/General.py:401 #: Mailman/Gui/NonDigest.py:44 Mailman/Gui/NonDigest.py:52 -#: Mailman/Gui/Privacy.py:110 Mailman/Gui/Privacy.py:116 -#: Mailman/Gui/Privacy.py:149 Mailman/Gui/Privacy.py:197 -#: Mailman/Gui/Privacy.py:305 Mailman/Gui/Privacy.py:318 -#: Mailman/Gui/Usenet.py:52 Mailman/Gui/Usenet.py:56 Mailman/Gui/Usenet.py:93 -#: Mailman/Gui/Usenet.py:105 +#: Mailman/Gui/NonDigest.py:139 Mailman/Gui/Privacy.py:110 +#: Mailman/Gui/Privacy.py:116 Mailman/Gui/Privacy.py:149 +#: Mailman/Gui/Privacy.py:197 Mailman/Gui/Privacy.py:305 +#: Mailman/Gui/Privacy.py:318 Mailman/Gui/Usenet.py:52 +#: Mailman/Gui/Usenet.py:56 Mailman/Gui/Usenet.py:93 Mailman/Gui/Usenet.py:105 msgid "Yes" msgstr "" @@ -966,206 +967,210 @@ msgid "Administrative requests for mailing list:" msgstr "" -#: Mailman/Cgi/admindb.py:191 Mailman/Cgi/admindb.py:234 +#: Mailman/Cgi/admindb.py:191 Mailman/Cgi/admindb.py:239 msgid "Submit All Data" msgstr "" -#: Mailman/Cgi/admindb.py:204 -msgid "all of %(esender)s's held messages." +#: Mailman/Cgi/admindb.py:195 +msgid "Discard all messages marked Defer" msgstr "" #: Mailman/Cgi/admindb.py:209 -msgid "a single held message." +msgid "all of %(esender)s's held messages." msgstr "" #: Mailman/Cgi/admindb.py:214 +msgid "a single held message." +msgstr "" + +#: Mailman/Cgi/admindb.py:219 msgid "all held messages." msgstr "" -#: Mailman/Cgi/admindb.py:249 +#: Mailman/Cgi/admindb.py:254 msgid "Mailman Administrative Database Error" msgstr "" -#: Mailman/Cgi/admindb.py:254 +#: Mailman/Cgi/admindb.py:259 msgid "list of available mailing lists." msgstr "" -#: Mailman/Cgi/admindb.py:255 +#: Mailman/Cgi/admindb.py:260 msgid "You must specify a list name. Here is the %(link)s" msgstr "" -#: Mailman/Cgi/admindb.py:268 +#: Mailman/Cgi/admindb.py:273 msgid "Subscription Requests" msgstr "" -#: Mailman/Cgi/admindb.py:270 +#: Mailman/Cgi/admindb.py:275 msgid "Address/name" msgstr "" -#: Mailman/Cgi/admindb.py:271 Mailman/Cgi/admindb.py:322 +#: Mailman/Cgi/admindb.py:276 Mailman/Cgi/admindb.py:327 msgid "Your decision" msgstr "" -#: Mailman/Cgi/admindb.py:272 Mailman/Cgi/admindb.py:323 +#: Mailman/Cgi/admindb.py:277 Mailman/Cgi/admindb.py:328 msgid "Reason for refusal" msgstr "" -#: Mailman/Cgi/admindb.py:290 Mailman/Cgi/admindb.py:349 -#: Mailman/Cgi/admindb.py:625 +#: Mailman/Cgi/admindb.py:295 Mailman/Cgi/admindb.py:354 +#: Mailman/Cgi/admindb.py:630 msgid "Approve" msgstr "" -#: Mailman/Cgi/admindb.py:300 +#: Mailman/Cgi/admindb.py:305 msgid "Permanently ban from this list" msgstr "" -#: Mailman/Cgi/admindb.py:321 +#: Mailman/Cgi/admindb.py:326 msgid "User address/name" msgstr "" -#: Mailman/Cgi/admindb.py:361 +#: Mailman/Cgi/admindb.py:366 msgid "Unsubscription Requests" msgstr "" -#: Mailman/Cgi/admindb.py:384 Mailman/Cgi/admindb.py:608 +#: Mailman/Cgi/admindb.py:389 Mailman/Cgi/admindb.py:613 msgid "From:" msgstr "" -#: Mailman/Cgi/admindb.py:387 +#: Mailman/Cgi/admindb.py:392 msgid "Action to take on all these held messages:" msgstr "" -#: Mailman/Cgi/admindb.py:399 +#: Mailman/Cgi/admindb.py:404 msgid "Preserve messages for the site administrator" msgstr "" -#: Mailman/Cgi/admindb.py:405 +#: Mailman/Cgi/admindb.py:410 msgid "Forward messages (individually) to:" msgstr "" -#: Mailman/Cgi/admindb.py:423 +#: Mailman/Cgi/admindb.py:428 msgid "Clear this member's moderate flag" msgstr "" -#: Mailman/Cgi/admindb.py:427 +#: Mailman/Cgi/admindb.py:432 msgid "The sender is now a member of this list" msgstr "" -#: Mailman/Cgi/admindb.py:436 +#: Mailman/Cgi/admindb.py:441 msgid "Add %(esender)s to one of these sender filters:" msgstr "" -#: Mailman/Cgi/admindb.py:441 +#: Mailman/Cgi/admindb.py:446 msgid "Accepts" msgstr "" -#: Mailman/Cgi/admindb.py:441 +#: Mailman/Cgi/admindb.py:446 msgid "Discards" msgstr "" -#: Mailman/Cgi/admindb.py:441 +#: Mailman/Cgi/admindb.py:446 msgid "Holds" msgstr "" -#: Mailman/Cgi/admindb.py:441 +#: Mailman/Cgi/admindb.py:446 msgid "Rejects" msgstr "" -#: Mailman/Cgi/admindb.py:450 +#: Mailman/Cgi/admindb.py:455 msgid "" "Ban %(esender)s from ever subscribing to this\n" " mailing list" msgstr "" -#: Mailman/Cgi/admindb.py:455 +#: Mailman/Cgi/admindb.py:460 msgid "" "Click on the message number to view the individual\n" " message, or you can " msgstr "" -#: Mailman/Cgi/admindb.py:457 +#: Mailman/Cgi/admindb.py:462 msgid "view all messages from %(esender)s" msgstr "" -#: Mailman/Cgi/admindb.py:479 Mailman/Cgi/admindb.py:611 +#: Mailman/Cgi/admindb.py:484 Mailman/Cgi/admindb.py:616 msgid "Subject:" msgstr "" -#: Mailman/Cgi/admindb.py:482 +#: Mailman/Cgi/admindb.py:487 msgid " bytes" msgstr "" -#: Mailman/Cgi/admindb.py:482 +#: Mailman/Cgi/admindb.py:487 msgid "Size:" msgstr "" -#: Mailman/Cgi/admindb.py:486 Mailman/Handlers/Decorate.py:56 -#: Mailman/Handlers/Scrubber.py:268 Mailman/Handlers/Scrubber.py:269 +#: Mailman/Cgi/admindb.py:491 Mailman/Handlers/Scrubber.py:198 +#: Mailman/Handlers/Scrubber.py:294 Mailman/Handlers/Scrubber.py:295 msgid "not available" msgstr "" -#: Mailman/Cgi/admindb.py:487 Mailman/Cgi/admindb.py:614 +#: Mailman/Cgi/admindb.py:492 Mailman/Cgi/admindb.py:619 msgid "Reason:" msgstr "" -#: Mailman/Cgi/admindb.py:491 Mailman/Cgi/admindb.py:618 +#: Mailman/Cgi/admindb.py:496 Mailman/Cgi/admindb.py:623 msgid "Received:" msgstr "" -#: Mailman/Cgi/admindb.py:549 +#: Mailman/Cgi/admindb.py:554 msgid "Posting Held for Approval" msgstr "" -#: Mailman/Cgi/admindb.py:551 +#: Mailman/Cgi/admindb.py:556 msgid " (%(count)d of %(total)d)" msgstr "" -#: Mailman/Cgi/admindb.py:562 +#: Mailman/Cgi/admindb.py:567 msgid "Message with id #%(id)d was lost." msgstr "" -#: Mailman/Cgi/admindb.py:571 +#: Mailman/Cgi/admindb.py:576 msgid "Message with id #%(id)d is corrupted." msgstr "" -#: Mailman/Cgi/admindb.py:635 +#: Mailman/Cgi/admindb.py:640 msgid "Preserve message for site administrator" msgstr "" -#: Mailman/Cgi/admindb.py:639 +#: Mailman/Cgi/admindb.py:644 msgid "Additionally, forward this message to: " msgstr "" -#: Mailman/Cgi/admindb.py:643 +#: Mailman/Cgi/admindb.py:648 msgid "[No explanation given]" msgstr "" -#: Mailman/Cgi/admindb.py:645 +#: Mailman/Cgi/admindb.py:650 msgid "If you reject this post,
please explain (optional):" msgstr "" -#: Mailman/Cgi/admindb.py:651 +#: Mailman/Cgi/admindb.py:656 msgid "Message Headers:" msgstr "" -#: Mailman/Cgi/admindb.py:656 +#: Mailman/Cgi/admindb.py:661 msgid "Message Excerpt:" msgstr "" -#: Mailman/Cgi/admindb.py:689 Mailman/Deliverer.py:134 +#: Mailman/Cgi/admindb.py:701 Mailman/Deliverer.py:134 msgid "No reason given" msgstr "" -#: Mailman/Cgi/admindb.py:750 Mailman/ListAdmin.py:288 +#: Mailman/Cgi/admindb.py:762 Mailman/ListAdmin.py:288 #: Mailman/ListAdmin.py:406 msgid "[No reason given]" msgstr "" -#: Mailman/Cgi/admindb.py:779 +#: Mailman/Cgi/admindb.py:791 msgid "Database Updated..." msgstr "" -#: Mailman/Cgi/admindb.py:782 +#: Mailman/Cgi/admindb.py:794 msgid " is already a member" msgstr "" @@ -1295,7 +1300,7 @@ msgid "You have canceled your subscription request." msgstr "" -#: Mailman/Cgi/confirm.py:354 +#: Mailman/Cgi/confirm.py:354 Mailman/Cgi/confirm.py:425 msgid "Awaiting moderator approval" msgstr "" @@ -1308,8 +1313,8 @@ " of the moderator's decision." msgstr "" -#: Mailman/Cgi/confirm.py:364 Mailman/Cgi/confirm.py:424 -#: Mailman/Cgi/confirm.py:513 Mailman/Cgi/confirm.py:736 +#: Mailman/Cgi/confirm.py:364 Mailman/Cgi/confirm.py:435 +#: Mailman/Cgi/confirm.py:524 Mailman/Cgi/confirm.py:747 msgid "" "Invalid confirmation string. It is\n" " possible that you are attempting to confirm a request for an\n" @@ -1347,26 +1352,35 @@ msgid "You have canceled your unsubscription request." msgstr "" -#: Mailman/Cgi/confirm.py:430 +#: Mailman/Cgi/confirm.py:428 +msgid "" +" You have successfully confirmed your unsubscription request to the\n" +" mailing list %(listname)s, however final approval is required from\n" +" the list moderator before you will be unsubscribed. Your request\n" +" has been forwarded to the list moderator, and you will be notified\n" +" of the moderator's decision." +msgstr "" + +#: Mailman/Cgi/confirm.py:441 msgid "Unsubscription request confirmed" msgstr "" -#: Mailman/Cgi/confirm.py:434 +#: Mailman/Cgi/confirm.py:445 msgid "" " You have successfully unsubscribed from the %(listname)s mailing\n" " list. You can now visit the list's main\n" " information page." msgstr "" -#: Mailman/Cgi/confirm.py:445 +#: Mailman/Cgi/confirm.py:456 msgid "Confirm unsubscription request" msgstr "" -#: Mailman/Cgi/confirm.py:460 Mailman/Cgi/confirm.py:550 +#: Mailman/Cgi/confirm.py:471 Mailman/Cgi/confirm.py:561 msgid "Not available" msgstr "" -#: Mailman/Cgi/confirm.py:463 +#: Mailman/Cgi/confirm.py:474 msgid "" "Your confirmation is required in order to complete the\n" " unsubscription request from the mailing list %(listname)s. You\n" @@ -1383,24 +1397,24 @@ " request." msgstr "" -#: Mailman/Cgi/confirm.py:479 Mailman/Cgi/options.py:696 +#: Mailman/Cgi/confirm.py:490 Mailman/Cgi/options.py:696 #: Mailman/Cgi/options.py:837 Mailman/Cgi/options.py:847 msgid "Unsubscribe" msgstr "" -#: Mailman/Cgi/confirm.py:480 Mailman/Cgi/confirm.py:579 +#: Mailman/Cgi/confirm.py:491 Mailman/Cgi/confirm.py:590 msgid "Cancel and discard" msgstr "" -#: Mailman/Cgi/confirm.py:490 +#: Mailman/Cgi/confirm.py:501 msgid "You have canceled your change of address request." msgstr "" -#: Mailman/Cgi/confirm.py:519 +#: Mailman/Cgi/confirm.py:530 msgid "Change of address request confirmed" msgstr "" -#: Mailman/Cgi/confirm.py:523 +#: Mailman/Cgi/confirm.py:534 msgid "" " You have successfully changed your address on the %(listname)s\n" " mailing list from %(oldaddr)s to %(newaddr)s. You\n" @@ -1408,15 +1422,15 @@ " login page." msgstr "" -#: Mailman/Cgi/confirm.py:535 +#: Mailman/Cgi/confirm.py:546 msgid "Confirm change of address request" msgstr "" -#: Mailman/Cgi/confirm.py:554 +#: Mailman/Cgi/confirm.py:565 msgid "globally" msgstr "" -#: Mailman/Cgi/confirm.py:557 +#: Mailman/Cgi/confirm.py:568 msgid "" "Your confirmation is required in order to complete the\n" " change of address request for the mailing list %(listname)s. You\n" @@ -1438,25 +1452,25 @@ " request." msgstr "" -#: Mailman/Cgi/confirm.py:578 +#: Mailman/Cgi/confirm.py:589 msgid "Change address" msgstr "" -#: Mailman/Cgi/confirm.py:587 Mailman/Cgi/confirm.py:701 +#: Mailman/Cgi/confirm.py:598 Mailman/Cgi/confirm.py:712 msgid "Continue awaiting approval" msgstr "" -#: Mailman/Cgi/confirm.py:595 +#: Mailman/Cgi/confirm.py:606 msgid "" "Okay, the list moderator will still have the\n" " opportunity to approve or reject this message." msgstr "" -#: Mailman/Cgi/confirm.py:621 +#: Mailman/Cgi/confirm.py:632 msgid "Sender discarded message via web." msgstr "" -#: Mailman/Cgi/confirm.py:623 +#: Mailman/Cgi/confirm.py:634 msgid "" "The held message with the Subject:\n" " header %(subject)s could not be found. The most likely\n" @@ -1465,28 +1479,28 @@ " time." msgstr "" -#: Mailman/Cgi/confirm.py:631 +#: Mailman/Cgi/confirm.py:642 msgid "Posted message canceled" msgstr "" -#: Mailman/Cgi/confirm.py:634 +#: Mailman/Cgi/confirm.py:645 msgid "" " You have successfully canceled the posting of your message with\n" " the Subject: header %(subject)s to the mailing list\n" " %(listname)s." msgstr "" -#: Mailman/Cgi/confirm.py:645 +#: Mailman/Cgi/confirm.py:656 msgid "Cancel held message posting" msgstr "" -#: Mailman/Cgi/confirm.py:670 +#: Mailman/Cgi/confirm.py:681 msgid "" "The held message you were referred to has\n" " already been handled by the list administrator." msgstr "" -#: Mailman/Cgi/confirm.py:684 +#: Mailman/Cgi/confirm.py:695 msgid "" "Your confirmation is required in order to cancel the\n" " posting of your message to the mailing list %(listname)s:\n" @@ -1502,22 +1516,22 @@ " allow the list moderator to approve or reject the message." msgstr "" -#: Mailman/Cgi/confirm.py:700 +#: Mailman/Cgi/confirm.py:711 msgid "Cancel posting" msgstr "" -#: Mailman/Cgi/confirm.py:712 +#: Mailman/Cgi/confirm.py:723 msgid "" "You have canceled the re-enabling of your membership. If\n" " we continue to receive bounces from your address, it could be deleted from\n" " this mailing list." msgstr "" -#: Mailman/Cgi/confirm.py:742 +#: Mailman/Cgi/confirm.py:753 msgid "Membership re-enabled." msgstr "" -#: Mailman/Cgi/confirm.py:746 +#: Mailman/Cgi/confirm.py:757 msgid "" " You have successfully re-enabled your membership in the\n" " %(listname)s mailing list. You can now list information page." msgstr "" -#: Mailman/Cgi/confirm.py:789 +#: Mailman/Cgi/confirm.py:800 msgid "not available" msgstr "" -#: Mailman/Cgi/confirm.py:793 +#: Mailman/Cgi/confirm.py:804 msgid "" "Your membership in the %(realname)s mailing list is\n" " currently disabled due to excessive bounces. Your confirmation is\n" @@ -1560,11 +1574,11 @@ " " msgstr "" -#: Mailman/Cgi/confirm.py:813 +#: Mailman/Cgi/confirm.py:824 msgid "Re-enable membership" msgstr "" -#: Mailman/Cgi/confirm.py:814 +#: Mailman/Cgi/confirm.py:825 msgid "Cancel" msgstr "" @@ -1974,8 +1988,8 @@ msgid "Passwords did not match!" msgstr "" -#: Mailman/Cgi/options.py:414 Mailman/Commands/cmd_password.py:79 -#: Mailman/Commands/cmd_password.py:105 +#: Mailman/Cgi/options.py:414 Mailman/Commands/cmd_password.py:83 +#: Mailman/Commands/cmd_password.py:109 msgid "Password successfully changed." msgstr "" @@ -2518,24 +2532,24 @@ " response is always sent to the subscribed address.\n" msgstr "" -#: Mailman/Commands/cmd_password.py:51 Mailman/Commands/cmd_password.py:64 +#: Mailman/Commands/cmd_password.py:51 Mailman/Commands/cmd_password.py:66 msgid "Your password is: %(password)s" msgstr "" -#: Mailman/Commands/cmd_password.py:55 Mailman/Commands/cmd_password.py:68 -#: Mailman/Commands/cmd_password.py:91 Mailman/Commands/cmd_password.py:117 +#: Mailman/Commands/cmd_password.py:57 Mailman/Commands/cmd_password.py:72 +#: Mailman/Commands/cmd_password.py:95 Mailman/Commands/cmd_password.py:121 #: Mailman/Commands/cmd_set.py:149 Mailman/Commands/cmd_set.py:219 msgid "You are not a member of the %(listname)s mailing list" msgstr "" -#: Mailman/Commands/cmd_password.py:81 Mailman/Commands/cmd_password.py:107 +#: Mailman/Commands/cmd_password.py:85 Mailman/Commands/cmd_password.py:111 msgid "" "You did not give the correct old password, so your password has not been\n" "changed. Use the no argument version of the password command to retrieve your\n" "current password, then try again." msgstr "" -#: Mailman/Commands/cmd_password.py:85 Mailman/Commands/cmd_password.py:111 +#: Mailman/Commands/cmd_password.py:89 Mailman/Commands/cmd_password.py:115 msgid "" "\n" "Usage:" @@ -2890,119 +2904,119 @@ msgid "Digest members:" msgstr "" -#: Mailman/Defaults.py:1249 +#: Mailman/Defaults.py:1261 msgid "Catalan" msgstr "" -#: Mailman/Defaults.py:1250 +#: Mailman/Defaults.py:1262 msgid "Czech" msgstr "" -#: Mailman/Defaults.py:1251 +#: Mailman/Defaults.py:1263 msgid "Danish" msgstr "" -#: Mailman/Defaults.py:1252 +#: Mailman/Defaults.py:1264 msgid "German" msgstr "" -#: Mailman/Defaults.py:1253 +#: Mailman/Defaults.py:1265 msgid "English (USA)" msgstr "" -#: Mailman/Defaults.py:1254 +#: Mailman/Defaults.py:1266 msgid "Spanish (Spain)" msgstr "" -#: Mailman/Defaults.py:1255 +#: Mailman/Defaults.py:1267 msgid "Estonian" msgstr "" -#: Mailman/Defaults.py:1256 +#: Mailman/Defaults.py:1268 msgid "Euskara" msgstr "" -#: Mailman/Defaults.py:1257 +#: Mailman/Defaults.py:1269 msgid "Finnish" msgstr "" -#: Mailman/Defaults.py:1258 +#: Mailman/Defaults.py:1270 msgid "French" msgstr "" -#: Mailman/Defaults.py:1259 +#: Mailman/Defaults.py:1271 msgid "Croatian" msgstr "" -#: Mailman/Defaults.py:1260 +#: Mailman/Defaults.py:1272 msgid "Hungarian" msgstr "" -#: Mailman/Defaults.py:1261 +#: Mailman/Defaults.py:1273 msgid "Italian" msgstr "" -#: Mailman/Defaults.py:1262 +#: Mailman/Defaults.py:1274 msgid "Japanese" msgstr "" -#: Mailman/Defaults.py:1263 +#: Mailman/Defaults.py:1275 msgid "Korean" msgstr "" -#: Mailman/Defaults.py:1264 +#: Mailman/Defaults.py:1276 msgid "Lithuanian" msgstr "" -#: Mailman/Defaults.py:1265 +#: Mailman/Defaults.py:1277 msgid "Dutch" msgstr "" -#: Mailman/Defaults.py:1266 +#: Mailman/Defaults.py:1278 msgid "Norwegian" msgstr "" -#: Mailman/Defaults.py:1267 +#: Mailman/Defaults.py:1279 msgid "Polish" msgstr "" -#: Mailman/Defaults.py:1268 +#: Mailman/Defaults.py:1280 msgid "Portuguese" msgstr "" -#: Mailman/Defaults.py:1269 +#: Mailman/Defaults.py:1281 msgid "Portuguese (Brazil)" msgstr "" -#: Mailman/Defaults.py:1270 +#: Mailman/Defaults.py:1282 msgid "Romanian" msgstr "" -#: Mailman/Defaults.py:1271 +#: Mailman/Defaults.py:1283 msgid "Russian" msgstr "" -#: Mailman/Defaults.py:1272 +#: Mailman/Defaults.py:1284 msgid "Serbian" msgstr "" -#: Mailman/Defaults.py:1273 +#: Mailman/Defaults.py:1285 msgid "Slovenian" msgstr "" -#: Mailman/Defaults.py:1274 +#: Mailman/Defaults.py:1286 msgid "Swedish" msgstr "" -#: Mailman/Defaults.py:1275 +#: Mailman/Defaults.py:1287 msgid "Ukrainian" msgstr "" -#: Mailman/Defaults.py:1276 +#: Mailman/Defaults.py:1288 msgid "Chinese (China)" msgstr "" -#: Mailman/Defaults.py:1277 +#: Mailman/Defaults.py:1289 msgid "Chinese (Taiwan)" msgstr "" @@ -3289,7 +3303,7 @@ " Is Disabled
warnings. This value must be an integer." msgstr "" -#: Mailman/Gui/Bounce.py:117 Mailman/Gui/General.py:259 +#: Mailman/Gui/Bounce.py:117 Mailman/Gui/General.py:262 msgid "Notifications" msgstr "" @@ -3759,20 +3773,23 @@ " posted to the list, to distinguish mailing list messages in in\n" " mailbox summaries. Brevity is premium here, it's ok to shorten\n" " long mailing list names to something more concise, as long as it\n" -" still identifies the mailing list." +" still identifies the mailing list. You can also add a sequencial\n" +" number by %%d directive when the prefix is closed in [], {} or\n" +" (). Example: [listname %%d] -> [listname 123], (listname %%05d)\n" +" -> (listname 00123)" msgstr "" -#: Mailman/Gui/General.py:151 +#: Mailman/Gui/General.py:154 msgid "" "Hide the sender of a message, replacing it with the list\n" " address (Removes From, Sender and Reply-To fields)" msgstr "" -#: Mailman/Gui/General.py:154 +#: Mailman/Gui/General.py:157 msgid "Reply-To: header munging" msgstr "" -#: Mailman/Gui/General.py:157 +#: Mailman/Gui/General.py:160 msgid "" "Should any existing Reply-To: header found in the\n" " original message be stripped? If so, this will be done\n" @@ -3780,26 +3797,26 @@ " added by Mailman or not." msgstr "" -#: Mailman/Gui/General.py:163 +#: Mailman/Gui/General.py:166 msgid "Explicit address" msgstr "" -#: Mailman/Gui/General.py:163 +#: Mailman/Gui/General.py:166 msgid "Poster" msgstr "" -#: Mailman/Gui/General.py:163 +#: Mailman/Gui/General.py:166 msgid "This list" msgstr "" -#: Mailman/Gui/General.py:164 +#: Mailman/Gui/General.py:167 msgid "" "Where are replies to list messages directed?\n" " Poster is strongly recommended for most mailing\n" " lists." msgstr "" -#: Mailman/Gui/General.py:169 +#: Mailman/Gui/General.py:172 msgid "" "This option controls what Mailman does to the\n" " Reply-To: header in messages flowing through this\n" @@ -3833,11 +3850,11 @@ " list." msgstr "" -#: Mailman/Gui/General.py:201 +#: Mailman/Gui/General.py:204 msgid "Explicit Reply-To: header." msgstr "" -#: Mailman/Gui/General.py:203 +#: Mailman/Gui/General.py:206 msgid "" "This is the address set in the Reply-To: header\n" " when the Reply-To: header, it will not be changed." msgstr "" -#: Mailman/Gui/General.py:232 +#: Mailman/Gui/General.py:235 msgid "Umbrella list settings" msgstr "" -#: Mailman/Gui/General.py:235 +#: Mailman/Gui/General.py:238 msgid "" "Send password reminders to, eg, \"-owner\" address instead of\n" " directly to user." msgstr "" -#: Mailman/Gui/General.py:238 +#: Mailman/Gui/General.py:241 msgid "" "Set this to yes when this list is intended to cascade only\n" " to other mailing lists. When set, meta notices like\n" @@ -3889,14 +3906,14 @@ " account name." msgstr "" -#: Mailman/Gui/General.py:246 +#: Mailman/Gui/General.py:249 msgid "" "Suffix for use when this list is an umbrella for other\n" " lists, according to setting of previous \"umbrella_list\"\n" " setting." msgstr "" -#: Mailman/Gui/General.py:250 +#: Mailman/Gui/General.py:253 msgid "" "When \"umbrella_list\" is set to indicate that this list has\n" " other mailing lists as members, then administrative notices like\n" @@ -3908,24 +3925,24 @@ " is \"No\"." msgstr "" -#: Mailman/Gui/General.py:262 +#: Mailman/Gui/General.py:265 msgid "Send monthly password reminders?" msgstr "" -#: Mailman/Gui/General.py:264 +#: Mailman/Gui/General.py:267 msgid "" "Turn this on if you want password reminders to be sent once\n" " per month to your members. Note that members may disable their\n" " own individual password reminders." msgstr "" -#: Mailman/Gui/General.py:269 +#: Mailman/Gui/General.py:272 msgid "" "List-specific text prepended to new-subscriber welcome\n" " message" msgstr "" -#: Mailman/Gui/General.py:272 +#: Mailman/Gui/General.py:275 msgid "" "This value, if any, will be added to the front of the\n" " new-subscriber welcome message. The rest of the welcome message\n" @@ -3944,11 +3961,11 @@ " " msgstr "" -#: Mailman/Gui/General.py:289 +#: Mailman/Gui/General.py:292 msgid "Send welcome message to newly subscribed members?" msgstr "" -#: Mailman/Gui/General.py:290 +#: Mailman/Gui/General.py:293 msgid "" "Turn this off only if you plan on subscribing people manually\n" " and don't want them to know that you did so. This option is most\n" @@ -3956,23 +3973,23 @@ " list manager to Mailman." msgstr "" -#: Mailman/Gui/General.py:296 +#: Mailman/Gui/General.py:299 msgid "" "Text sent to people leaving the list. If empty, no special\n" " text will be added to the unsubscribe message." msgstr "" -#: Mailman/Gui/General.py:300 +#: Mailman/Gui/General.py:303 msgid "Send goodbye message to members when they are unsubscribed?" msgstr "" -#: Mailman/Gui/General.py:303 +#: Mailman/Gui/General.py:306 msgid "" "Should the list moderators get immediate notice of new\n" " requests, as well as daily notices about collected ones?" msgstr "" -#: Mailman/Gui/General.py:306 +#: Mailman/Gui/General.py:309 msgid "" "List moderators (and list administrators) are sent daily\n" " reminders of requests pending approval, like subscriptions to a\n" @@ -3981,17 +3998,17 @@ " immediately on the arrival of new requests as well." msgstr "" -#: Mailman/Gui/General.py:313 +#: Mailman/Gui/General.py:316 msgid "" "Should administrator get notices of subscribes and\n" " unsubscribes?" msgstr "" -#: Mailman/Gui/General.py:318 +#: Mailman/Gui/General.py:321 msgid "Send mail to poster when their posting is held for approval?" msgstr "" -#: Mailman/Gui/General.py:320 +#: Mailman/Gui/General.py:323 msgid "" "Approval notices are sent when mail triggers certain of the\n" " limits except routine list moderation and spam filters,\n" @@ -3999,15 +4016,15 @@ " ever sending the notice." msgstr "" -#: Mailman/Gui/General.py:325 +#: Mailman/Gui/General.py:328 msgid "Additional settings" msgstr "" -#: Mailman/Gui/General.py:328 +#: Mailman/Gui/General.py:331 msgid "Emergency moderation of all list traffic." msgstr "" -#: Mailman/Gui/General.py:329 +#: Mailman/Gui/General.py:332 msgid "" "When this option is enabled, all list traffic is emergency\n" " moderated, i.e. held for moderation. Turn this option on when\n" @@ -4015,25 +4032,25 @@ " period." msgstr "" -#: Mailman/Gui/General.py:341 +#: Mailman/Gui/General.py:344 msgid "" "Default options for new members joining this list." msgstr "" -#: Mailman/Gui/General.py:344 +#: Mailman/Gui/General.py:347 msgid "" "When a new member is subscribed to this list, their initial\n" " set of options is taken from the this variable's setting." msgstr "" -#: Mailman/Gui/General.py:348 +#: Mailman/Gui/General.py:351 msgid "" "(Administrivia filter) Check postings and intercept ones\n" " that seem to be administrative requests?" msgstr "" -#: Mailman/Gui/General.py:351 +#: Mailman/Gui/General.py:354 msgid "" "Administrivia tests will check postings to see whether it's\n" " really meant as an administrative request (like subscribe,\n" @@ -4042,17 +4059,17 @@ " in the process." msgstr "" -#: Mailman/Gui/General.py:358 +#: Mailman/Gui/General.py:361 msgid "" "Maximum length in kilobytes (KB) of a message body. Use 0\n" " for no limit." msgstr "" -#: Mailman/Gui/General.py:362 +#: Mailman/Gui/General.py:365 msgid "Host name this list prefers for email." msgstr "" -#: Mailman/Gui/General.py:364 +#: Mailman/Gui/General.py:367 msgid "" "The \"host_name\" is the preferred name for email to\n" " mailman-related addresses on this host, and generally should be\n" @@ -4061,7 +4078,7 @@ " multiple addresses." msgstr "" -#: Mailman/Gui/General.py:376 +#: Mailman/Gui/General.py:379 msgid "" "Should messages from this mailing list include the\n" " RFC 2369\n" @@ -4069,7 +4086,7 @@ " recommended." msgstr "" -#: Mailman/Gui/General.py:381 +#: Mailman/Gui/General.py:384 msgid "" "RFC 2369 defines a set of List-* headers that are\n" " normally added to every message sent to the list membership.\n" @@ -4086,11 +4103,11 @@ " these headers may eventually go away)." msgstr "" -#: Mailman/Gui/General.py:399 +#: Mailman/Gui/General.py:402 msgid "Should postings include the List-Post: header?" msgstr "" -#: Mailman/Gui/General.py:400 +#: Mailman/Gui/General.py:403 msgid "" "The List-Post: header is one of the headers\n" " recommended by\n" @@ -4104,14 +4121,20 @@ " headers.)" msgstr "" -#: Mailman/Gui/General.py:418 +#: Mailman/Gui/General.py:417 +msgid "" +"Discard held messages older than this number of days. \n" +" Use 0 for no automatic discarding." +msgstr "" + +#: Mailman/Gui/General.py:427 msgid "" "real_name attribute not\n" " changed! It must differ from the list's name by case\n" " only." msgstr "" -#: Mailman/Gui/General.py:448 +#: Mailman/Gui/General.py:457 msgid "" "You cannot add a Reply-To: to an explicit\n" " address if that address is blank. Resetting these values." @@ -4318,6 +4341,18 @@ " message. " msgstr "" +#: Mailman/Gui/NonDigest.py:140 +msgid "Scrub attachments of regular delivery message?" +msgstr "" + +#: Mailman/Gui/NonDigest.py:141 +msgid "" +"When you scrub attachments, they are stored in archive\n" +" area and links are made in the message so that the member can\n" +" access via web browser. If you want the attachments totally\n" +" disappear, you can use content filter options." +msgstr "" + #: Mailman/Gui/Passwords.py:27 msgid "Passwords" msgstr "" @@ -5439,29 +5474,36 @@ msgid "The Mailman Replybot" msgstr "" -#: Mailman/Handlers/Scrubber.py:188 +#: Mailman/Handlers/Scrubber.py:202 +msgid "" +"An embedded and charset-unspecified text was scrubbed...\n" +"Name: %(filename)s\n" +"Url: %(url)s\n" +msgstr "" + +#: Mailman/Handlers/Scrubber.py:213 msgid "HTML attachment scrubbed and removed" msgstr "" -#: Mailman/Handlers/Scrubber.py:205 Mailman/Handlers/Scrubber.py:231 +#: Mailman/Handlers/Scrubber.py:231 Mailman/Handlers/Scrubber.py:257 msgid "" "An HTML attachment was scrubbed...\n" "URL: %(url)s\n" msgstr "" -#: Mailman/Handlers/Scrubber.py:243 +#: Mailman/Handlers/Scrubber.py:269 msgid "no subject" msgstr "" -#: Mailman/Handlers/Scrubber.py:244 +#: Mailman/Handlers/Scrubber.py:270 msgid "no date" msgstr "" -#: Mailman/Handlers/Scrubber.py:245 +#: Mailman/Handlers/Scrubber.py:271 msgid "unknown sender" msgstr "" -#: Mailman/Handlers/Scrubber.py:248 +#: Mailman/Handlers/Scrubber.py:274 msgid "" "An embedded message was scrubbed...\n" "From: %(who)s\n" @@ -5471,7 +5513,7 @@ "Url: %(url)s\n" msgstr "" -#: Mailman/Handlers/Scrubber.py:272 +#: Mailman/Handlers/Scrubber.py:299 msgid "" "A non-text attachment was scrubbed...\n" "Name: %(filename)s\n" @@ -5481,11 +5523,12 @@ "Url : %(url)s\n" msgstr "" -#: Mailman/Handlers/Scrubber.py:301 -msgid "Skipped content of type %(partctype)s" +#: Mailman/Handlers/Scrubber.py:330 +msgid "" +"Skipped content of type %(partctype)s\n" msgstr "" -#: Mailman/Handlers/Scrubber.py:327 +#: Mailman/Handlers/Scrubber.py:365 msgid "" "-------------- next part --------------\n" msgstr "" @@ -5640,35 +5683,35 @@ msgid "%(dbfile)s owned by %(owner)s (must be owned by %(user)s" msgstr "" -#: Mailman/MailList.py:756 +#: Mailman/MailList.py:760 msgid "You have been invited to join the %(listname)s mailing list" msgstr "" -#: Mailman/MailList.py:860 Mailman/MailList.py:1249 +#: Mailman/MailList.py:864 Mailman/MailList.py:1258 msgid " from %(remote)s" msgstr "" -#: Mailman/MailList.py:894 +#: Mailman/MailList.py:898 msgid "subscriptions to %(realname)s require moderator approval" msgstr "" -#: Mailman/MailList.py:958 bin/add_members:242 +#: Mailman/MailList.py:962 bin/add_members:242 msgid "%(realname)s subscription notification" msgstr "" -#: Mailman/MailList.py:977 +#: Mailman/MailList.py:982 Mailman/MailList.py:1176 msgid "unsubscriptions require moderator approval" msgstr "" -#: Mailman/MailList.py:997 +#: Mailman/MailList.py:1002 msgid "%(realname)s unsubscribe notification" msgstr "" -#: Mailman/MailList.py:1158 +#: Mailman/MailList.py:1163 msgid "subscriptions to %(name)s require administrator approval" msgstr "" -#: Mailman/MailList.py:1418 +#: Mailman/MailList.py:1427 msgid "Last autoresponse notification for today" msgstr "" @@ -5906,7 +5949,7 @@ msgstr "" #: bin/add_members:230 bin/change_pw:158 bin/check_db:114 bin/discard:83 -#: bin/sync_members:244 bin/update:552 cron/bumpdigests:78 +#: bin/sync_members:244 bin/update:555 cron/bumpdigests:78 msgid "Nothing to do." msgstr "" @@ -7282,39 +7325,6 @@ "This script is provided for convenience purposes only. It isn't supported.\n" msgstr "" -#: bin/rb-archfix.~1~:21 -#, docstring -msgid "" -"Reduce disk space usage for Pipermail archives.\n" -"\n" -"Only use this script if you have correctly installed the patch file\n" -"fixarchiver-2.1.3-0.1.patch that this file came with. Using this if you have\n" -"not installed the rest of the patch (including restarting mailmanctl) will ruin\n" -"your whole day.\n" -"\n" -"Usage: %(PROGRAM)s [options] file ...\n" -"\n" -"Where options are:\n" -" -h / --help\n" -" Print this help message and exit.\n" -"\n" -"Only use this to 'fix' archive -article database files that have been written\n" -"with Mailman 2.1.3 or earlier and have html_body attributes in them . These\n" -"attributes can cause huge amounts of memory bloat and impact performance for\n" -"high activity lists, particularly those having large text postings made to\n" -"them. Use like this from your $PREFIX directory:\n" -"\n" -"\n" -"%% ls -1 archives/private/*/database/*-article | xargs %(PROGRAM)s\n" -"\n" -"(note the backquotes are required)\n" -"\n" -"You will need to run `bin/check_perms -f' after running this script.\n" -"\n" -"You will probably want to delete the -article.bak files created by this script\n" -"when you are satisifed the upad\n" -msgstr "" - #: bin/remove_members:19 #, docstring msgid "" @@ -7681,7 +7691,7 @@ msgid "Fixing language templates: %(listname)s" msgstr "" -#: bin/update:196 bin/update:686 +#: bin/update:196 bin/update:689 msgid "WARNING: could not acquire lock for list: %(listname)s" msgstr "" @@ -7792,61 +7802,61 @@ msgid "updating old qfiles" msgstr "" -#: bin/update:509 +#: bin/update:512 msgid "message is unparsable: %(filebase)s" msgstr "" -#: bin/update:538 +#: bin/update:541 msgid "Updating Mailman 2.0 pending_subscriptions.db database" msgstr "" -#: bin/update:549 +#: bin/update:552 msgid "Updating Mailman 2.1.4 pending.pck database" msgstr "" -#: bin/update:573 +#: bin/update:576 msgid "Ignoring bad pended data: %(key)s: %(val)s" msgstr "" -#: bin/update:589 +#: bin/update:592 msgid "WARNING: Ignoring duplicate pending ID: %(id)s." msgstr "" -#: bin/update:642 +#: bin/update:645 msgid "getting rid of old source files" msgstr "" -#: bin/update:652 +#: bin/update:655 msgid "no lists == nothing to do, exiting" msgstr "" -#: bin/update:659 +#: bin/update:662 msgid "" "fixing all the perms on your old html archives to work with b6\n" "If your archives are big, this could take a minute or two..." msgstr "" -#: bin/update:664 +#: bin/update:667 msgid "done" msgstr "" -#: bin/update:666 +#: bin/update:669 msgid "Updating mailing list: %(listname)s" msgstr "" -#: bin/update:669 +#: bin/update:672 msgid "Updating Usenet watermarks" msgstr "" -#: bin/update:674 +#: bin/update:677 msgid "- nothing to update here" msgstr "" -#: bin/update:697 +#: bin/update:700 msgid "- usenet watermarks updated and gate_watermarks removed" msgstr "" -#: bin/update:711 +#: bin/update:714 msgid "" "\n" "\n" @@ -7867,22 +7877,22 @@ "\n" msgstr "" -#: bin/update:768 +#: bin/update:771 msgid "No updates are necessary." msgstr "" -#: bin/update:771 +#: bin/update:774 msgid "" "Downgrade detected, from version %(hexlversion)s to version %(hextversion)s\n" "This is probably not safe.\n" "Exiting." msgstr "" -#: bin/update:776 +#: bin/update:779 msgid "Upgrading from version %(hexlversion)s to %(hextversion)s" msgstr "" -#: bin/update:785 +#: bin/update:788 msgid "" "\n" "ERROR:\n" @@ -8093,21 +8103,27 @@ " Print this message and exit.\n" msgstr "" -#: cron/checkdbs:110 -msgid "%(count)d %(realname)s moderator request(s) waiting" +#: cron/checkdbs:107 +msgid "" +"Notice: %(discarded)d old request(s) automatically expired.\n" +"\n" msgstr "" -#: cron/checkdbs:130 -msgid "Pending subscriptions:" +#: cron/checkdbs:120 +msgid "%(realname)s moderator requests notice" msgstr "" #: cron/checkdbs:141 +msgid "Pending subscriptions:" +msgstr "" + +#: cron/checkdbs:152 msgid "" "\n" "Pending posts:" msgstr "" -#: cron/checkdbs:148 +#: cron/checkdbs:159 msgid "" "From: %(sender)s on %(date)s\n" "Subject: %(subject)s\n" Index: messages/marked.files =================================================================== RCS file: /cvsroot/mailman/mailman/messages/marked.files,v retrieving revision 2.1.2.4 diff -u -r2.1.2.4 marked.files --- messages/marked.files 16 Mar 2004 06:04:01 -0000 2.1.2.4 +++ messages/marked.files 25 Apr 2004 04:43:09 -0000 @@ -20,7 +20,7 @@ Mailman/Pending.py Mailman/Post.py Mailman/SafeDict.py -Mailman/Defaults.py +Mailman/SecurityManager.py Mailman/Site.py Mailman/TopicMgr.py Mailman/UserDesc.py @@ -84,6 +84,7 @@ Mailman/Handlers/AvoidDuplicates.py Mailman/Handlers/CalcRecips.py Mailman/Handlers/Cleanse.py +Mailman/Handlers/CookHeaders.py Mailman/Handlers/Decorate.py Mailman/Handlers/Emergency.py Mailman/Handlers/FileRecips.py @@ -102,7 +103,6 @@ Mailman/Handlers/ToOutgoing.py Mailman/Handlers/ToUsenet.py Mailman/Handlers/__init__.py -Mailman/Handlers/CookHeaders.py Mailman/Logging/Logger.py Mailman/Logging/MultiLogger.py Mailman/Logging/StampedLogger.py @@ -120,10 +120,10 @@ Mailman/Queue/MaildirRunner.py Mailman/Queue/NewsRunner.py Mailman/Queue/OutgoingRunner.py +Mailman/Queue/RetryRunner.py Mailman/Queue/Runner.py Mailman/Queue/Switchboard.py Mailman/Queue/VirginRunner.py Mailman/Queue/__init__.py Mailman/Queue/sbcache.py -Mailman/Queue/RetryRunner.py -Mailman/SecurityManager.py +Mailman/Defaults.py Index: messages/ja/LC_MESSAGES/mailman.po =================================================================== RCS file: /cvsroot/mailman/mailman/messages/ja/LC_MESSAGES/mailman.po,v retrieving revision 2.40.2.18 diff -u -r2.40.2.18 mailman.po --- messages/ja/LC_MESSAGES/mailman.po 16 Mar 2004 06:04:17 -0000 2.40.2.18 +++ messages/ja/LC_MESSAGES/mailman.po 25 Apr 2004 04:43:20 -0000 @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Mailman 2.1.4\n" -"POT-Creation-Date: Mon Mar 15 22:04:14 2004\n" -"PO-Revision-Date: 2004-01-20 12:00+09:00\n" +"POT-Creation-Date: Sun Apr 25 13:14:21 2004\n" +"PO-Revision-Date: 2004-04-25 14:00+09:00\n" "Last-Translator: Tokio Kikuchi \n" "Language-Team: Japanese \n" "MIME-Version: 1.0\n" @@ -218,13 +218,13 @@ msgstr "最後にエラーメールを受信した日付は %(date)s です" #: Mailman/Bouncer.py:270 Mailman/Deliverer.py:136 -#: Mailman/Handlers/Acknowledge.py:44 Mailman/Handlers/CookHeaders.py:233 +#: Mailman/Handlers/Acknowledge.py:44 Mailman/Handlers/CookHeaders.py:260 #: Mailman/Handlers/Hold.py:205 Mailman/Handlers/ToDigest.py:217 #: Mailman/ListAdmin.py:215 msgid "(no subject)" msgstr "(無題)" -#: Mailman/Bouncer.py:272 +#: Mailman/Bouncer.py:274 msgid "[No bounce details are available]" msgstr "[詳しい配送エラー情報はありません.]" @@ -531,15 +531,15 @@ msgid "Spam Filter Regexp:" msgstr "Spamフィルタ正規表現" -#: Mailman/Cgi/admin.py:763 Mailman/Cgi/admindb.py:289 -#: Mailman/Cgi/admindb.py:348 Mailman/Cgi/admindb.py:391 -#: Mailman/Cgi/admindb.py:625 +#: Mailman/Cgi/admin.py:763 Mailman/Cgi/admindb.py:294 +#: Mailman/Cgi/admindb.py:353 Mailman/Cgi/admindb.py:396 +#: Mailman/Cgi/admindb.py:630 msgid "Defer" msgstr "延期" -#: Mailman/Cgi/admin.py:763 Mailman/Cgi/admindb.py:291 -#: Mailman/Cgi/admindb.py:350 Mailman/Cgi/admindb.py:391 -#: Mailman/Cgi/admindb.py:625 Mailman/Gui/ContentFilter.py:37 +#: Mailman/Cgi/admin.py:763 Mailman/Cgi/admindb.py:296 +#: Mailman/Cgi/admindb.py:355 Mailman/Cgi/admindb.py:396 +#: Mailman/Cgi/admindb.py:630 Mailman/Gui/ContentFilter.py:37 #: Mailman/Gui/Privacy.py:216 Mailman/Gui/Privacy.py:290 msgid "Reject" msgstr "拒否" @@ -549,19 +549,19 @@ msgid "Hold" msgstr "保留" -#: Mailman/Cgi/admin.py:764 Mailman/Cgi/admindb.py:292 -#: Mailman/Cgi/admindb.py:351 Mailman/Cgi/admindb.py:391 -#: Mailman/Cgi/admindb.py:625 Mailman/Gui/ContentFilter.py:37 +#: Mailman/Cgi/admin.py:764 Mailman/Cgi/admindb.py:297 +#: Mailman/Cgi/admindb.py:356 Mailman/Cgi/admindb.py:396 +#: Mailman/Cgi/admindb.py:630 Mailman/Gui/ContentFilter.py:37 #: Mailman/Gui/Privacy.py:216 Mailman/Gui/Privacy.py:290 msgid "Discard" msgstr "破棄" -#: Mailman/Cgi/admin.py:764 Mailman/Cgi/admindb.py:391 +#: Mailman/Cgi/admin.py:764 Mailman/Cgi/admindb.py:396 #: Mailman/Gui/Privacy.py:290 msgid "Accept" msgstr "承認" -#: Mailman/Cgi/admin.py:767 Mailman/Cgi/admindb.py:631 +#: Mailman/Cgi/admin.py:767 Mailman/Cgi/admindb.py:636 msgid "Action:" msgstr "処置:" @@ -822,18 +822,19 @@ #: Mailman/Gui/Bounce.py:155 Mailman/Gui/ContentFilter.py:70 #: Mailman/Gui/ContentFilter.py:103 Mailman/Gui/Digest.py:46 #: Mailman/Gui/Digest.py:62 Mailman/Gui/Digest.py:84 Mailman/Gui/Digest.py:89 -#: Mailman/Gui/General.py:150 Mailman/Gui/General.py:156 -#: Mailman/Gui/General.py:234 Mailman/Gui/General.py:261 -#: Mailman/Gui/General.py:288 Mailman/Gui/General.py:299 -#: Mailman/Gui/General.py:302 Mailman/Gui/General.py:312 -#: Mailman/Gui/General.py:317 Mailman/Gui/General.py:327 -#: Mailman/Gui/General.py:347 Mailman/Gui/General.py:375 -#: Mailman/Gui/General.py:398 Mailman/Gui/NonDigest.py:44 -#: Mailman/Gui/NonDigest.py:52 Mailman/Gui/Privacy.py:110 -#: Mailman/Gui/Privacy.py:116 Mailman/Gui/Privacy.py:149 -#: Mailman/Gui/Privacy.py:197 Mailman/Gui/Privacy.py:305 -#: Mailman/Gui/Privacy.py:318 Mailman/Gui/Usenet.py:52 -#: Mailman/Gui/Usenet.py:56 Mailman/Gui/Usenet.py:93 Mailman/Gui/Usenet.py:105 +#: Mailman/Gui/General.py:153 Mailman/Gui/General.py:159 +#: Mailman/Gui/General.py:237 Mailman/Gui/General.py:264 +#: Mailman/Gui/General.py:291 Mailman/Gui/General.py:302 +#: Mailman/Gui/General.py:305 Mailman/Gui/General.py:315 +#: Mailman/Gui/General.py:320 Mailman/Gui/General.py:330 +#: Mailman/Gui/General.py:350 Mailman/Gui/General.py:378 +#: Mailman/Gui/General.py:401 Mailman/Gui/NonDigest.py:44 +#: Mailman/Gui/NonDigest.py:52 Mailman/Gui/NonDigest.py:139 +#: Mailman/Gui/Privacy.py:110 Mailman/Gui/Privacy.py:116 +#: Mailman/Gui/Privacy.py:149 Mailman/Gui/Privacy.py:197 +#: Mailman/Gui/Privacy.py:305 Mailman/Gui/Privacy.py:318 +#: Mailman/Gui/Usenet.py:52 Mailman/Gui/Usenet.py:56 Mailman/Gui/Usenet.py:93 +#: Mailman/Gui/Usenet.py:105 msgid "No" msgstr "いいえ" @@ -847,19 +848,19 @@ #: Mailman/Gui/Bounce.py:146 Mailman/Gui/Bounce.py:155 #: Mailman/Gui/ContentFilter.py:70 Mailman/Gui/ContentFilter.py:103 #: Mailman/Gui/Digest.py:46 Mailman/Gui/Digest.py:62 Mailman/Gui/Digest.py:84 -#: Mailman/Gui/Digest.py:89 Mailman/Gui/General.py:150 -#: Mailman/Gui/General.py:156 Mailman/Gui/General.py:234 -#: Mailman/Gui/General.py:261 Mailman/Gui/General.py:288 -#: Mailman/Gui/General.py:299 Mailman/Gui/General.py:302 -#: Mailman/Gui/General.py:312 Mailman/Gui/General.py:317 -#: Mailman/Gui/General.py:327 Mailman/Gui/General.py:347 -#: Mailman/Gui/General.py:375 Mailman/Gui/General.py:398 +#: Mailman/Gui/Digest.py:89 Mailman/Gui/General.py:153 +#: Mailman/Gui/General.py:159 Mailman/Gui/General.py:237 +#: Mailman/Gui/General.py:264 Mailman/Gui/General.py:291 +#: Mailman/Gui/General.py:302 Mailman/Gui/General.py:305 +#: Mailman/Gui/General.py:315 Mailman/Gui/General.py:320 +#: Mailman/Gui/General.py:330 Mailman/Gui/General.py:350 +#: Mailman/Gui/General.py:378 Mailman/Gui/General.py:401 #: Mailman/Gui/NonDigest.py:44 Mailman/Gui/NonDigest.py:52 -#: Mailman/Gui/Privacy.py:110 Mailman/Gui/Privacy.py:116 -#: Mailman/Gui/Privacy.py:149 Mailman/Gui/Privacy.py:197 -#: Mailman/Gui/Privacy.py:305 Mailman/Gui/Privacy.py:318 -#: Mailman/Gui/Usenet.py:52 Mailman/Gui/Usenet.py:56 Mailman/Gui/Usenet.py:93 -#: Mailman/Gui/Usenet.py:105 +#: Mailman/Gui/NonDigest.py:139 Mailman/Gui/Privacy.py:110 +#: Mailman/Gui/Privacy.py:116 Mailman/Gui/Privacy.py:149 +#: Mailman/Gui/Privacy.py:197 Mailman/Gui/Privacy.py:305 +#: Mailman/Gui/Privacy.py:318 Mailman/Gui/Usenet.py:52 +#: Mailman/Gui/Usenet.py:56 Mailman/Gui/Usenet.py:93 Mailman/Gui/Usenet.py:105 msgid "Yes" msgstr "はい" @@ -1042,112 +1043,116 @@ msgid "Administrative requests for mailing list:" msgstr "メーリングリストに対する管理申請" -#: Mailman/Cgi/admindb.py:191 Mailman/Cgi/admindb.py:234 +#: Mailman/Cgi/admindb.py:191 Mailman/Cgi/admindb.py:239 msgid "Submit All Data" msgstr "全部送信" -#: Mailman/Cgi/admindb.py:204 +#: Mailman/Cgi/admindb.py:195 +msgid "Discard all messages marked Defer" +msgstr "延期にチェックされているメールを全部破棄します" + +#: Mailman/Cgi/admindb.py:209 msgid "all of %(esender)s's held messages." msgstr "%(esender)s のすべての保留メール" -#: Mailman/Cgi/admindb.py:209 +#: Mailman/Cgi/admindb.py:214 msgid "a single held message." msgstr "1通の保留メール." -#: Mailman/Cgi/admindb.py:214 +#: Mailman/Cgi/admindb.py:219 msgid "all held messages." msgstr "すべての保留メール." -#: Mailman/Cgi/admindb.py:249 +#: Mailman/Cgi/admindb.py:254 msgid "Mailman Administrative Database Error" msgstr "Mailman 管理データベースエラー" -#: Mailman/Cgi/admindb.py:254 +#: Mailman/Cgi/admindb.py:259 msgid "list of available mailing lists." msgstr "ここにあるメーリングリストの一覧" -#: Mailman/Cgi/admindb.py:255 +#: Mailman/Cgi/admindb.py:260 msgid "You must specify a list name. Here is the %(link)s" msgstr "リスト名を指定してください. ここに %(link)s があります." -#: Mailman/Cgi/admindb.py:268 +#: Mailman/Cgi/admindb.py:273 msgid "Subscription Requests" msgstr "入会申請" -#: Mailman/Cgi/admindb.py:270 +#: Mailman/Cgi/admindb.py:275 msgid "Address/name" msgstr "アドレス/名前" -#: Mailman/Cgi/admindb.py:271 Mailman/Cgi/admindb.py:322 +#: Mailman/Cgi/admindb.py:276 Mailman/Cgi/admindb.py:327 msgid "Your decision" msgstr "決済" -#: Mailman/Cgi/admindb.py:272 Mailman/Cgi/admindb.py:323 +#: Mailman/Cgi/admindb.py:277 Mailman/Cgi/admindb.py:328 msgid "Reason for refusal" msgstr "拒否の理由" -#: Mailman/Cgi/admindb.py:290 Mailman/Cgi/admindb.py:349 -#: Mailman/Cgi/admindb.py:625 +#: Mailman/Cgi/admindb.py:295 Mailman/Cgi/admindb.py:354 +#: Mailman/Cgi/admindb.py:630 msgid "Approve" msgstr "承認" -#: Mailman/Cgi/admindb.py:300 +#: Mailman/Cgi/admindb.py:305 msgid "Permanently ban from this list" msgstr "このリストから永久排除" -#: Mailman/Cgi/admindb.py:321 +#: Mailman/Cgi/admindb.py:326 msgid "User address/name" msgstr "会員アドレス/会員名" -#: Mailman/Cgi/admindb.py:361 +#: Mailman/Cgi/admindb.py:366 msgid "Unsubscription Requests" msgstr "退会申請" -#: Mailman/Cgi/admindb.py:384 Mailman/Cgi/admindb.py:608 +#: Mailman/Cgi/admindb.py:389 Mailman/Cgi/admindb.py:613 msgid "From:" msgstr "発信者:" -#: Mailman/Cgi/admindb.py:387 +#: Mailman/Cgi/admindb.py:392 msgid "Action to take on all these held messages:" msgstr "これらすべての保留メールに対する処理:" -#: Mailman/Cgi/admindb.py:399 +#: Mailman/Cgi/admindb.py:404 msgid "Preserve messages for the site administrator" msgstr "サイト管理者のためにメールを保管する" -#: Mailman/Cgi/admindb.py:405 +#: Mailman/Cgi/admindb.py:410 msgid "Forward messages (individually) to:" msgstr "メールを(個別に)次のアドレスに転送する:" -#: Mailman/Cgi/admindb.py:423 +#: Mailman/Cgi/admindb.py:428 msgid "Clear this member's moderate flag" msgstr "この会員の制限フラグをクリアする" -#: Mailman/Cgi/admindb.py:427 +#: Mailman/Cgi/admindb.py:432 msgid "The sender is now a member of this list" msgstr "送信者はこのメーリングリストに入会しています." -#: Mailman/Cgi/admindb.py:436 +#: Mailman/Cgi/admindb.py:441 msgid "Add %(esender)s to one of these sender filters:" msgstr "%(esender)sをどれかの送信者フィルタに追加する" -#: Mailman/Cgi/admindb.py:441 +#: Mailman/Cgi/admindb.py:446 msgid "Accepts" msgstr "承認" -#: Mailman/Cgi/admindb.py:441 +#: Mailman/Cgi/admindb.py:446 msgid "Discards" msgstr "破棄" -#: Mailman/Cgi/admindb.py:441 +#: Mailman/Cgi/admindb.py:446 msgid "Holds" msgstr "保留" -#: Mailman/Cgi/admindb.py:441 +#: Mailman/Cgi/admindb.py:446 msgid "Rejects" msgstr "拒否" -#: Mailman/Cgi/admindb.py:450 +#: Mailman/Cgi/admindb.py:455 msgid "" "Ban %(esender)s from ever subscribing to this\n" " mailing list" @@ -1155,95 +1160,95 @@ "%(esender)sをこのメーリングリストから\n" "永久に入会を排除します" -#: Mailman/Cgi/admindb.py:455 +#: Mailman/Cgi/admindb.py:460 msgid "" "Click on the message number to view the individual\n" " message, or you can " msgstr "メール番号をクリックして個々のメールを見るか, " -#: Mailman/Cgi/admindb.py:457 +#: Mailman/Cgi/admindb.py:462 msgid "view all messages from %(esender)s" msgstr "%(esender)s からのすべてのメールを見る" -#: Mailman/Cgi/admindb.py:479 Mailman/Cgi/admindb.py:611 +#: Mailman/Cgi/admindb.py:484 Mailman/Cgi/admindb.py:616 msgid "Subject:" msgstr "件名:" -#: Mailman/Cgi/admindb.py:482 +#: Mailman/Cgi/admindb.py:487 msgid " bytes" msgstr " バイト" -#: Mailman/Cgi/admindb.py:482 +#: Mailman/Cgi/admindb.py:487 msgid "Size:" msgstr "サイズ:" -#: Mailman/Cgi/admindb.py:486 Mailman/Handlers/Decorate.py:56 -#: Mailman/Handlers/Scrubber.py:268 Mailman/Handlers/Scrubber.py:269 +#: Mailman/Cgi/admindb.py:491 Mailman/Handlers/Scrubber.py:198 +#: Mailman/Handlers/Scrubber.py:294 Mailman/Handlers/Scrubber.py:295 msgid "not available" msgstr "無し" -#: Mailman/Cgi/admindb.py:487 Mailman/Cgi/admindb.py:614 +#: Mailman/Cgi/admindb.py:492 Mailman/Cgi/admindb.py:619 msgid "Reason:" msgstr "理由:" -#: Mailman/Cgi/admindb.py:491 Mailman/Cgi/admindb.py:618 +#: Mailman/Cgi/admindb.py:496 Mailman/Cgi/admindb.py:623 msgid "Received:" msgstr "受信:" -#: Mailman/Cgi/admindb.py:549 +#: Mailman/Cgi/admindb.py:554 msgid "Posting Held for Approval" msgstr "投稿は承認のため保留" -#: Mailman/Cgi/admindb.py:551 +#: Mailman/Cgi/admindb.py:556 msgid " (%(count)d of %(total)d)" msgstr " (%(total)d の %(count)d)" -#: Mailman/Cgi/admindb.py:562 +#: Mailman/Cgi/admindb.py:567 msgid "Message with id #%(id)d was lost." msgstr "ID #%(id)d のメールは紛失しています." -#: Mailman/Cgi/admindb.py:571 +#: Mailman/Cgi/admindb.py:576 msgid "Message with id #%(id)d is corrupted." msgstr "ID #%(id)d のメールは壊れています." -#: Mailman/Cgi/admindb.py:635 +#: Mailman/Cgi/admindb.py:640 msgid "Preserve message for site administrator" msgstr "サイト管理者のためにメールを保管する" -#: Mailman/Cgi/admindb.py:639 +#: Mailman/Cgi/admindb.py:644 msgid "Additionally, forward this message to: " msgstr "さらに, このメールを転送:" -#: Mailman/Cgi/admindb.py:643 +#: Mailman/Cgi/admindb.py:648 msgid "[No explanation given]" msgstr "[理由は示されていません]" -#: Mailman/Cgi/admindb.py:645 +#: Mailman/Cgi/admindb.py:650 msgid "If you reject this post,
please explain (optional):" msgstr "この投稿を拒否する場合,
その理由 (オプショナル):" -#: Mailman/Cgi/admindb.py:651 +#: Mailman/Cgi/admindb.py:656 msgid "Message Headers:" msgstr "メールヘッダ:" -#: Mailman/Cgi/admindb.py:656 +#: Mailman/Cgi/admindb.py:661 msgid "Message Excerpt:" msgstr "メールの抜書き:" -#: Mailman/Cgi/admindb.py:689 Mailman/Deliverer.py:134 +#: Mailman/Cgi/admindb.py:701 Mailman/Deliverer.py:134 msgid "No reason given" msgstr "理由は示されていません" -#: Mailman/Cgi/admindb.py:750 Mailman/ListAdmin.py:288 +#: Mailman/Cgi/admindb.py:762 Mailman/ListAdmin.py:288 #: Mailman/ListAdmin.py:406 msgid "[No reason given]" msgstr "[理由は示されていません]" -#: Mailman/Cgi/admindb.py:779 +#: Mailman/Cgi/admindb.py:791 msgid "Database Updated..." msgstr "データベースの更新を完了しました" -#: Mailman/Cgi/admindb.py:782 +#: Mailman/Cgi/admindb.py:794 msgid " is already a member" msgstr " は既に会員です" @@ -1416,7 +1421,7 @@ msgid "You have canceled your subscription request." msgstr "入会申請を取り消しました." -#: Mailman/Cgi/confirm.py:354 +#: Mailman/Cgi/confirm.py:354 Mailman/Cgi/confirm.py:425 msgid "Awaiting moderator approval" msgstr "司会者の承認を待っています" @@ -1435,8 +1440,8 @@ "入会にはメーリングリストの司会者の最終承認が必要ですので, \n" "申請を司会者に転送しました. 後程, 決定に関する通知が送られます." -#: Mailman/Cgi/confirm.py:364 Mailman/Cgi/confirm.py:424 -#: Mailman/Cgi/confirm.py:513 Mailman/Cgi/confirm.py:736 +#: Mailman/Cgi/confirm.py:364 Mailman/Cgi/confirm.py:435 +#: Mailman/Cgi/confirm.py:524 Mailman/Cgi/confirm.py:747 msgid "" "Invalid confirmation string. It is\n" " possible that you are attempting to confirm a request for an\n" @@ -1483,11 +1488,27 @@ msgid "You have canceled your unsubscription request." msgstr "退会申請を取り消しました." -#: Mailman/Cgi/confirm.py:430 +#: Mailman/Cgi/confirm.py:428 +msgid "" +" You have successfully confirmed your unsubscription request to " +"the\n" +" mailing list %(listname)s, however final approval is required " +"from\n" +" the list moderator before you will be unsubscribed. Your " +"request\n" +" has been forwarded to the list moderator, and you will be " +"notified\n" +" of the moderator's decision." +msgstr "" +"%(listname)s メーリングリストへの退会申請確認手続きが完了しました.\n" +"退会にはメーリングリストの司会者の最終承認が必要ですので, \n" +"申請を司会者に転送しました. 後程, 決定に関する通知が送られます." + +#: Mailman/Cgi/confirm.py:441 msgid "Unsubscription request confirmed" msgstr "退会申請を確認しました." -#: Mailman/Cgi/confirm.py:434 +#: Mailman/Cgi/confirm.py:445 msgid "" " You have successfully unsubscribed from the %(listname)s " "mailing\n" @@ -1498,15 +1519,15 @@ "%(listname)s メーリングリストからの退会手続きを完了しました. \n" "メーリングリスト案内ページへどうぞ." -#: Mailman/Cgi/confirm.py:445 +#: Mailman/Cgi/confirm.py:456 msgid "Confirm unsubscription request" msgstr "退会申請を確認" -#: Mailman/Cgi/confirm.py:460 Mailman/Cgi/confirm.py:550 +#: Mailman/Cgi/confirm.py:471 Mailman/Cgi/confirm.py:561 msgid "Not available" msgstr "無記入" -#: Mailman/Cgi/confirm.py:463 +#: Mailman/Cgi/confirm.py:474 msgid "" "Your confirmation is required in order to complete the\n" " unsubscription request from the mailing list %(listname)s. " @@ -1532,24 +1553,24 @@ "確認の手続きを完了するには, 下の退会ボタンを押します.\n" "

キャンセル・破棄ボタンで退会申請を取り消すこともできます." -#: Mailman/Cgi/confirm.py:479 Mailman/Cgi/options.py:696 +#: Mailman/Cgi/confirm.py:490 Mailman/Cgi/options.py:696 #: Mailman/Cgi/options.py:837 Mailman/Cgi/options.py:847 msgid "Unsubscribe" msgstr "退会" -#: Mailman/Cgi/confirm.py:480 Mailman/Cgi/confirm.py:579 +#: Mailman/Cgi/confirm.py:491 Mailman/Cgi/confirm.py:590 msgid "Cancel and discard" msgstr "キャンセル・破棄" -#: Mailman/Cgi/confirm.py:490 +#: Mailman/Cgi/confirm.py:501 msgid "You have canceled your change of address request." msgstr "アドレス変更の申請を取り消しました." -#: Mailman/Cgi/confirm.py:519 +#: Mailman/Cgi/confirm.py:530 msgid "Change of address request confirmed" msgstr "アドレス変更申請を確認しました" -#: Mailman/Cgi/confirm.py:523 +#: Mailman/Cgi/confirm.py:534 msgid "" " You have successfully changed your address on the %(listname)s\n" " mailing list from %(oldaddr)s to %(newaddr)s. " @@ -1561,15 +1582,15 @@ "%(oldaddr)s から %(newaddr)s に変更しました.\n" "会員ログインページへどうぞ." -#: Mailman/Cgi/confirm.py:535 +#: Mailman/Cgi/confirm.py:546 msgid "Confirm change of address request" msgstr "アドレス変更申請を確認しました" -#: Mailman/Cgi/confirm.py:554 +#: Mailman/Cgi/confirm.py:565 msgid "globally" msgstr "全部" -#: Mailman/Cgi/confirm.py:557 +#: Mailman/Cgi/confirm.py:568 msgid "" "Your confirmation is required in order to complete the\n" " change of address request for the mailing list %(listname)s. " @@ -1604,15 +1625,15 @@ "

キャンセル・破棄ボタンを押してアドレス変更申請を\n" "取り消すこともできます." -#: Mailman/Cgi/confirm.py:578 +#: Mailman/Cgi/confirm.py:589 msgid "Change address" msgstr "アドレス変更" -#: Mailman/Cgi/confirm.py:587 Mailman/Cgi/confirm.py:701 +#: Mailman/Cgi/confirm.py:598 Mailman/Cgi/confirm.py:712 msgid "Continue awaiting approval" msgstr "承認を待つ" -#: Mailman/Cgi/confirm.py:595 +#: Mailman/Cgi/confirm.py:606 msgid "" "Okay, the list moderator will still have the\n" " opportunity to approve or reject this message." @@ -1620,11 +1641,11 @@ "了解. リスト司会者には, このメールを承認するか拒否するか\n" "を決定するチャンスがまだあります." -#: Mailman/Cgi/confirm.py:621 +#: Mailman/Cgi/confirm.py:632 msgid "Sender discarded message via web." msgstr "送信者が Web でメールを破棄しました." -#: Mailman/Cgi/confirm.py:623 +#: Mailman/Cgi/confirm.py:634 msgid "" "The held message with the Subject:\n" " header %(subject)s could not be found. The most " @@ -1638,11 +1659,11 @@ "リスト司会者が既に承認または拒否しため, \n" "取り消しが間に合わなかった可能性があります." -#: Mailman/Cgi/confirm.py:631 +#: Mailman/Cgi/confirm.py:642 msgid "Posted message canceled" msgstr "投稿が取り消されました." -#: Mailman/Cgi/confirm.py:634 +#: Mailman/Cgi/confirm.py:645 msgid "" " You have successfully canceled the posting of your message with\n" " the Subject: header %(subject)s to the mailing list\n" @@ -1651,17 +1672,17 @@ "件名: が %(subject)sである, %(listname)s メーリング\n" "リストへの投稿メールは取り消しを完了しました." -#: Mailman/Cgi/confirm.py:645 +#: Mailman/Cgi/confirm.py:656 msgid "Cancel held message posting" msgstr "保留中の投稿を取り消す" -#: Mailman/Cgi/confirm.py:670 +#: Mailman/Cgi/confirm.py:681 msgid "" "The held message you were referred to has\n" " already been handled by the list administrator." msgstr "保留されていたメールは, すでにリスト管理者が処理しました." -#: Mailman/Cgi/confirm.py:684 +#: Mailman/Cgi/confirm.py:695 msgid "" "Your confirmation is required in order to cancel the\n" " posting of your message to the mailing list %(listname)s:\n" @@ -1686,11 +1707,11 @@ "

承認を待つボタンを押すと, 引き続き, \n" "メールを承認するか拒否するかの判断を, 司会者にゆだねることになります." -#: Mailman/Cgi/confirm.py:700 +#: Mailman/Cgi/confirm.py:711 msgid "Cancel posting" msgstr "投稿取り消し" -#: Mailman/Cgi/confirm.py:712 +#: Mailman/Cgi/confirm.py:723 msgid "" "You have canceled the re-enabling of your membership. If\n" " we continue to receive bounces from your address, it could be deleted " @@ -1701,11 +1722,11 @@ "からのエラーメールが続く場合, このメーリングリストの会員権が\n" "抹消されるかもしれません." -#: Mailman/Cgi/confirm.py:742 +#: Mailman/Cgi/confirm.py:753 msgid "Membership re-enabled." msgstr "会員権を復活しました." -#: Mailman/Cgi/confirm.py:746 +#: Mailman/Cgi/confirm.py:757 msgid "" " You have successfully re-enabled your membership in the\n" " %(listname)s mailing list. You can now 会員オプションページへどうぞ." -#: Mailman/Cgi/confirm.py:758 +#: Mailman/Cgi/confirm.py:769 msgid "Re-enable mailing list membership" msgstr "メーリングリスト会員権復活" -#: Mailman/Cgi/confirm.py:775 +#: Mailman/Cgi/confirm.py:786 msgid "" "We're sorry, but you have already been unsubscribed\n" " from this mailing list. To re-subscribe, please visit the\n" @@ -1729,11 +1750,11 @@ "再度入会するには, リスト総合案内ページ\n" "へどうぞ." -#: Mailman/Cgi/confirm.py:789 +#: Mailman/Cgi/confirm.py:800 msgid "not available" msgstr "ありません" -#: Mailman/Cgi/confirm.py:793 +#: Mailman/Cgi/confirm.py:804 msgid "" "Your membership in the %(realname)s mailing list is\n" " currently disabled due to excessive bounces. Your confirmation is\n" @@ -1768,11 +1789,11 @@ "再開してください.\n" "後で会員権を復活させる場合は 取り消しボタンを押してください." -#: Mailman/Cgi/confirm.py:813 +#: Mailman/Cgi/confirm.py:824 msgid "Re-enable membership" msgstr "会員権復活" -#: Mailman/Cgi/confirm.py:814 +#: Mailman/Cgi/confirm.py:825 msgid "Cancel" msgstr "取り消し" @@ -2230,8 +2251,8 @@ msgid "Passwords did not match!" msgstr "パスワードが一致しません" -#: Mailman/Cgi/options.py:414 Mailman/Commands/cmd_password.py:79 -#: Mailman/Commands/cmd_password.py:105 +#: Mailman/Cgi/options.py:414 Mailman/Commands/cmd_password.py:83 +#: Mailman/Commands/cmd_password.py:109 msgid "Password successfully changed." msgstr "パスワードを変更しました." @@ -2899,17 +2920,17 @@ " 登録するアドレスを指定してください. この場合, 返信は登録\n" " されたアドレスに送られますのでご注意ください.\n" -#: Mailman/Commands/cmd_password.py:51 Mailman/Commands/cmd_password.py:64 +#: Mailman/Commands/cmd_password.py:51 Mailman/Commands/cmd_password.py:66 msgid "Your password is: %(password)s" msgstr "あなたのパスワードは: %(password)s" -#: Mailman/Commands/cmd_password.py:55 Mailman/Commands/cmd_password.py:68 -#: Mailman/Commands/cmd_password.py:91 Mailman/Commands/cmd_password.py:117 +#: Mailman/Commands/cmd_password.py:57 Mailman/Commands/cmd_password.py:72 +#: Mailman/Commands/cmd_password.py:95 Mailman/Commands/cmd_password.py:121 #: Mailman/Commands/cmd_set.py:149 Mailman/Commands/cmd_set.py:219 msgid "You are not a member of the %(listname)s mailing list" msgstr "あなたは%(listname)s メーリングリストの会員ではありません" -#: Mailman/Commands/cmd_password.py:81 Mailman/Commands/cmd_password.py:107 +#: Mailman/Commands/cmd_password.py:85 Mailman/Commands/cmd_password.py:111 msgid "" "You did not give the correct old password, so your password has not been\n" "changed. Use the no argument version of the password command to retrieve " @@ -2920,7 +2941,7 @@ "引数を付けずに password コマンドを実行し, 現在のパスワードを取り\n" "寄せてから, もう一度試してください." -#: Mailman/Commands/cmd_password.py:85 Mailman/Commands/cmd_password.py:111 +#: Mailman/Commands/cmd_password.py:89 Mailman/Commands/cmd_password.py:115 msgid "" "\n" "Usage:" @@ -3397,120 +3418,120 @@ msgid "Digest members:" msgstr "まとめ読み会員:" -#: Mailman/Defaults.py:1249 +#: Mailman/Defaults.py:1261 msgid "Catalan" msgstr "カタロニア語" -#: Mailman/Defaults.py:1250 +#: Mailman/Defaults.py:1262 msgid "Czech" msgstr "チェコ語" -#: Mailman/Defaults.py:1251 +#: Mailman/Defaults.py:1263 msgid "Danish" msgstr "デンマーク語" -#: Mailman/Defaults.py:1252 +#: Mailman/Defaults.py:1264 msgid "German" msgstr "ドイツ語" # mm_cfg.py -#: Mailman/Defaults.py:1253 +#: Mailman/Defaults.py:1265 msgid "English (USA)" msgstr "英語 (米国)" -#: Mailman/Defaults.py:1254 +#: Mailman/Defaults.py:1266 msgid "Spanish (Spain)" msgstr "スペイン語 (スペイン)" -#: Mailman/Defaults.py:1255 +#: Mailman/Defaults.py:1267 msgid "Estonian" msgstr "エストニア語" -#: Mailman/Defaults.py:1256 +#: Mailman/Defaults.py:1268 msgid "Euskara" msgstr "バスク語" -#: Mailman/Defaults.py:1257 +#: Mailman/Defaults.py:1269 msgid "Finnish" msgstr "フィンランド語" -#: Mailman/Defaults.py:1258 +#: Mailman/Defaults.py:1270 msgid "French" msgstr "フランス語" -#: Mailman/Defaults.py:1259 +#: Mailman/Defaults.py:1271 msgid "Croatian" msgstr "クロアチア語" -#: Mailman/Defaults.py:1260 +#: Mailman/Defaults.py:1272 msgid "Hungarian" msgstr "ハンガリー語" -#: Mailman/Defaults.py:1261 +#: Mailman/Defaults.py:1273 msgid "Italian" msgstr "イタリア語" -#: Mailman/Defaults.py:1262 +#: Mailman/Defaults.py:1274 msgid "Japanese" msgstr "日本語" -#: Mailman/Defaults.py:1263 +#: Mailman/Defaults.py:1275 msgid "Korean" msgstr "韓国語" -#: Mailman/Defaults.py:1264 +#: Mailman/Defaults.py:1276 msgid "Lithuanian" msgstr "リトアニア語" -#: Mailman/Defaults.py:1265 +#: Mailman/Defaults.py:1277 msgid "Dutch" msgstr "オランダ語" -#: Mailman/Defaults.py:1266 +#: Mailman/Defaults.py:1278 msgid "Norwegian" msgstr "ノルウェー語" -#: Mailman/Defaults.py:1267 +#: Mailman/Defaults.py:1279 msgid "Polish" msgstr "ポーランド語" -#: Mailman/Defaults.py:1268 +#: Mailman/Defaults.py:1280 msgid "Portuguese" msgstr "ポルトガル語" -#: Mailman/Defaults.py:1269 +#: Mailman/Defaults.py:1281 msgid "Portuguese (Brazil)" msgstr "ポルトガル語(ブラジル)" -#: Mailman/Defaults.py:1270 +#: Mailman/Defaults.py:1282 msgid "Romanian" msgstr "ルーマニア語" -#: Mailman/Defaults.py:1271 +#: Mailman/Defaults.py:1283 msgid "Russian" msgstr "ロシア語" -#: Mailman/Defaults.py:1272 +#: Mailman/Defaults.py:1284 msgid "Serbian" msgstr "セルビア語" -#: Mailman/Defaults.py:1273 +#: Mailman/Defaults.py:1285 msgid "Slovenian" msgstr "スロベニア語" -#: Mailman/Defaults.py:1274 +#: Mailman/Defaults.py:1286 msgid "Swedish" msgstr "スウェーデン語" -#: Mailman/Defaults.py:1275 +#: Mailman/Defaults.py:1287 msgid "Ukrainian" msgstr "ウクライナ語" -#: Mailman/Defaults.py:1276 +#: Mailman/Defaults.py:1288 msgid "Chinese (China)" msgstr "中国語(中国)" -#: Mailman/Defaults.py:1277 +#: Mailman/Defaults.py:1289 msgid "Chinese (Taiwan)" msgstr "中国語(台湾)" @@ -3567,9 +3588,8 @@ "念のためお知らせします." #: Mailman/Deliverer.py:212 -#, fuzzy msgid "%(listname)s mailing list probe message" -msgstr "%(listfullname)s メーリングリスト備忘通知" +msgstr "%(listfullname)s ML アドレス探知" #: Mailman/Errors.py:114 msgid "For some unknown reason" @@ -3859,6 +3879,15 @@ " score, above which they are automatically disabled, but not\n" " removed from the mailing list." msgstr "" +"会員にはそれぞれ浮動小数のエラー得点が付けられます. Mailman がリスト\n" +"会員からエラーメールを受け取ると, その会員のエラー点が加算されます\n" +"強いエラー(致命的エラー)は1点, 弱いエラー(一時的エラー)は0.5点を\n" +"加算します. エラー得点は1日に1回加算します. 従ってある会員が1日に\n" +"10回エラーを返しても, 得点は1点しか増えません.\n" +"\n" +"この変数は会員のエラー得点の上限値を規定します. この値を越えると\n" +"会員への配送は自動的に停止しますがメーリングリストから退会させる\n" +"わけではありません." #: Mailman/Gui/Bounce.py:102 msgid "" @@ -3892,7 +3921,7 @@ "会員権停止の警告メールを何日間隔で送りますか?\n" " 記入する値は整数." -#: Mailman/Gui/Bounce.py:117 Mailman/Gui/General.py:259 +#: Mailman/Gui/Bounce.py:117 Mailman/Gui/General.py:262 msgid "Notifications" msgstr "通知" @@ -4067,7 +4096,7 @@ "\n" "

最後に, \n" "convert_html_to_plaintextが設定されていて,\n" -"サイトの設定でプレーンテキストへの変換が定義されていれば, \n" +"サイトの設定で平文への変換が定義されていれば, \n" "残りのtext/htmltext/plainに変換されます." #: Mailman/Gui/ContentFilter.py:71 @@ -4145,7 +4174,7 @@ "been\n" " stripped." msgstr "" -"text/htmlの部分をプレーンテキストに変換しますか?\n" +"text/htmlの部分を平文に変換しますか?\n" "この変換は添付ファイルが取り除かれた後に実行されます." #: Mailman/Gui/ContentFilter.py:110 @@ -4567,14 +4596,22 @@ "shorten\n" " long mailing list names to something more concise, as long as " "it\n" -" still identifies the mailing list." +" still identifies the mailing list. You can also add a " +"sequencial\n" +" number by %%d directive when the prefix is closed in [], {} or\n" +" (). Example: [listname %%d] -> [listname 123], (listname %%" +"05d)\n" +" -> (listname 00123)" msgstr "" "指定した語句を件名の先頭に付けます.\n" "メールソフトの一覧画面で, リストからのメールが区別しやすくなります.\n" "指定する語句は簡潔にしてください. \n" "リスト名が長いときは, わかる程度に短くするといいでしょう. \n" +"さらに, プレフィクスが [],{},() で囲まれているとき, \n" +"%%d 指示子で通し番号を入れることができます.\n" +"例: [listname %%d] -> [listname 123], (listname %%05d) -> (listname 00123)" -#: Mailman/Gui/General.py:151 +#: Mailman/Gui/General.py:154 msgid "" "Hide the sender of a message, replacing it with the list\n" " address (Removes From, Sender and Reply-To fields)" @@ -4582,11 +4619,11 @@ "メールの送信者を隠して, リストのアドレスに置きかえる\n" "(From, Sender と Reply-To を削除します)" -#: Mailman/Gui/General.py:154 +#: Mailman/Gui/General.py:157 msgid "Reply-To: header munging" msgstr "Reply-To:ヘッダの書き換え" -#: Mailman/Gui/General.py:157 +#: Mailman/Gui/General.py:160 msgid "" "Should any existing Reply-To: header found in the\n" " original message be stripped? If so, this will be done\n" @@ -4598,19 +4635,19 @@ "が Mailman によって付けられたか, はじめから付いていたかに\n" "かかわらず取り除かれます." -#: Mailman/Gui/General.py:163 +#: Mailman/Gui/General.py:166 msgid "Explicit address" msgstr "別のアドレス" -#: Mailman/Gui/General.py:163 +#: Mailman/Gui/General.py:166 msgid "Poster" msgstr "投稿者" -#: Mailman/Gui/General.py:163 +#: Mailman/Gui/General.py:166 msgid "This list" msgstr "このリスト" -#: Mailman/Gui/General.py:164 +#: Mailman/Gui/General.py:167 msgid "" "Where are replies to list messages directed?\n" " Poster is strongly recommended for most " @@ -4621,8 +4658,7 @@ "ほとんどのメーリングリストでは 投稿者\n" "を選ぶことを 強く 推奨します. " -#: Mailman/Gui/General.py:169 -#, fuzzy +#: Mailman/Gui/General.py:172 msgid "" "This option controls what Mailman does to the\n" " Reply-To: header in messages flowing through this\n" @@ -4698,11 +4734,11 @@ "を選び, 下の Reply-To: アドレスを並行リストの投稿アドレスに\n" "設定してください. " -#: Mailman/Gui/General.py:201 +#: Mailman/Gui/General.py:204 msgid "Explicit Reply-To: header." msgstr "別のReply-To:アドレス" -#: Mailman/Gui/General.py:203 +#: Mailman/Gui/General.py:206 msgid "" "This is the address set in the Reply-To: header\n" " when the もしオリジナルのメールにReply-To:ヘッダが付いていると, それは変更" "されません." -#: Mailman/Gui/General.py:232 +#: Mailman/Gui/General.py:235 msgid "Umbrella list settings" msgstr "親子リストの設定" -#: Mailman/Gui/General.py:235 +#: Mailman/Gui/General.py:238 msgid "" "Send password reminders to, eg, \"-owner\" address instead of\n" " directly to user." msgstr "パスワード備忘通知を直接会員に送らず, \"-owner\" 宛に送ります." -#: Mailman/Gui/General.py:238 +#: Mailman/Gui/General.py:241 msgid "" "Set this to yes when this list is intended to cascade only\n" " to other mailing lists. When set, meta notices like\n" @@ -4798,7 +4834,7 @@ "会員のアドレスに以下で指定する \"umbrella_member_suffix\" を\n" "付けたアドレスに送られます. " -#: Mailman/Gui/General.py:246 +#: Mailman/Gui/General.py:249 msgid "" "Suffix for use when this list is an umbrella for other\n" " lists, according to setting of previous \"umbrella_list\"\n" @@ -4807,7 +4843,7 @@ "上で \"umbrella_list\" を設定してこのメーリングリストを親リスト\n" "にした場合のメール送信に使うサフィックス." -#: Mailman/Gui/General.py:250 +#: Mailman/Gui/General.py:253 msgid "" "When \"umbrella_list\" is set to indicate that this list has\n" " other mailing lists as members, then administrative notices " @@ -4830,11 +4866,11 @@ "には \"-owner\" を使います. 上の \"umbrella_list\" で\n" "「いいえ」を選んだ場合, この設定は使われません." -#: Mailman/Gui/General.py:262 +#: Mailman/Gui/General.py:265 msgid "Send monthly password reminders?" msgstr "毎月パスワード備忘通知を送りますか?" -#: Mailman/Gui/General.py:264 +#: Mailman/Gui/General.py:267 msgid "" "Turn this on if you want password reminders to be sent once\n" " per month to your members. Note that members may disable " @@ -4844,13 +4880,13 @@ "毎月1回パスワードの備忘通知を会員に送る場合, ON にします.\n" "会員は各自パスワード備忘通知の送信を停止することができます." -#: Mailman/Gui/General.py:269 +#: Mailman/Gui/General.py:272 msgid "" "List-specific text prepended to new-subscriber welcome\n" " message" msgstr "新入会員に送るメールの冒頭に挿入する文章" -#: Mailman/Gui/General.py:272 +#: Mailman/Gui/General.py:275 msgid "" "This value, if any, will be added to the front of the\n" " new-subscriber welcome message. The rest of the welcome " @@ -4885,11 +4921,11 @@ "

  • 空白行は段落の区切りになります.\n" "" -#: Mailman/Gui/General.py:289 +#: Mailman/Gui/General.py:292 msgid "Send welcome message to newly subscribed members?" msgstr "新入会員に歓迎メールを出しますか?" -#: Mailman/Gui/General.py:290 +#: Mailman/Gui/General.py:293 msgid "" "Turn this off only if you plan on subscribing people manually\n" " and don't want them to know that you did so. This option is " @@ -4902,7 +4938,7 @@ "知らせたくなかったら OFF にしてください. 他のメーリングリス\n" "ト管理プログラムから Mailman に移行する時などに有効でしょう. " -#: Mailman/Gui/General.py:296 +#: Mailman/Gui/General.py:299 msgid "" "Text sent to people leaving the list. If empty, no special\n" " text will be added to the unsubscribe message." @@ -4910,11 +4946,11 @@ "リスト退会者に送信する文章. 空白にすると\n" " 退会者宛メールには何も追加されません. " -#: Mailman/Gui/General.py:300 +#: Mailman/Gui/General.py:303 msgid "Send goodbye message to members when they are unsubscribed?" msgstr "退会する会員にお別れのメールを出しますか?" -#: Mailman/Gui/General.py:303 +#: Mailman/Gui/General.py:306 msgid "" "Should the list moderators get immediate notice of new\n" " requests, as well as daily notices about collected ones?" @@ -4922,7 +4958,7 @@ "新しい申請が来たら, 1日1回まとめて知らせるだけでなく, すぐに管理者に知らせま" "すか?" -#: Mailman/Gui/General.py:306 +#: Mailman/Gui/General.py:309 msgid "" "List moderators (and list administrators) are sent daily\n" " reminders of requests pending approval, like subscriptions to " @@ -4937,17 +4973,17 @@ " 保留されている投稿などです. このオプションを設定すると\n" " 新しい申請が来るたびに直ちに通知されます." -#: Mailman/Gui/General.py:313 +#: Mailman/Gui/General.py:316 msgid "" "Should administrator get notices of subscribes and\n" " unsubscribes?" msgstr "入会/退会の結果を管理者に通知しますか? " -#: Mailman/Gui/General.py:318 +#: Mailman/Gui/General.py:321 msgid "Send mail to poster when their posting is held for approval?" msgstr "投稿が承認のため保留されたら投稿者にメールしますか?" -#: Mailman/Gui/General.py:320 +#: Mailman/Gui/General.py:323 msgid "" "Approval notices are sent when mail triggers certain of the\n" " limits except routine list moderation and spam " @@ -4961,15 +4997,15 @@ "何らかの設定によって発生した承認要求の通知を送信します.\n" "この設定は, 他の通知設定に優先します. " -#: Mailman/Gui/General.py:325 +#: Mailman/Gui/General.py:328 msgid "Additional settings" msgstr "その他の設定" -#: Mailman/Gui/General.py:328 +#: Mailman/Gui/General.py:331 msgid "Emergency moderation of all list traffic." msgstr "すべての投稿を緊急保留にします." -#: Mailman/Gui/General.py:329 +#: Mailman/Gui/General.py:332 msgid "" "When this option is enabled, all list traffic is emergency\n" " moderated, i.e. held for moderation. Turn this option on when\n" @@ -4981,7 +5017,7 @@ "承認のために保留します. たとえばリストでの議論が混乱して手がつけられ\n" "なくなった場合に, 冷却期間を設けるようなときに使います." -#: Mailman/Gui/General.py:341 +#: Mailman/Gui/General.py:344 msgid "" "Default options for new members joining this list." @@ -4989,13 +5025,13 @@ "新入会員のデフォルト設定値.\n" "" -#: Mailman/Gui/General.py:344 +#: Mailman/Gui/General.py:347 msgid "" "When a new member is subscribed to this list, their initial\n" " set of options is taken from the this variable's setting." msgstr "この変数設定が新会員の初期設定に使われます." -#: Mailman/Gui/General.py:348 +#: Mailman/Gui/General.py:351 msgid "" "(Administrivia filter) Check postings and intercept ones\n" " that seem to be administrative requests?" @@ -5003,7 +5039,7 @@ "(管理コマンドフィルタ) \n" "管理コマンドが含まれているメールの配送を保留しますか?" -#: Mailman/Gui/General.py:351 +#: Mailman/Gui/General.py:354 msgid "" "Administrivia tests will check postings to see whether it's\n" " really meant as an administrative request (like subscribe,\n" @@ -5018,17 +5054,17 @@ " 管理者に新しい申請が来ていることを\n" " 知らせます. " -#: Mailman/Gui/General.py:358 +#: Mailman/Gui/General.py:361 msgid "" "Maximum length in kilobytes (KB) of a message body. Use 0\n" " for no limit." msgstr "投稿メール本文の最大サイズ(KB). 0 を設定すると無制限. " -#: Mailman/Gui/General.py:362 +#: Mailman/Gui/General.py:365 msgid "Host name this list prefers for email." msgstr "メールの送信に使うホスト名(ドメイン名)" -#: Mailman/Gui/General.py:364 +#: Mailman/Gui/General.py:367 msgid "" "The \"host_name\" is the preferred name for email to\n" " mailman-related addresses on this host, and generally should " @@ -5044,7 +5080,7 @@ " 複数のアドレスが利用できる場合, \n" " 利用するアドレスをここで設定します." -#: Mailman/Gui/General.py:376 +#: Mailman/Gui/General.py:379 msgid "" "Should messages from this mailing list include the\n" " RFC 2369RFC 2369 ヘッダ\n" "(List-*) を付けますか? はいにすることを推奨します." -#: Mailman/Gui/General.py:381 +#: Mailman/Gui/General.py:384 msgid "" "RFC 2369 defines a set of List-* headers that are\n" " normally added to every message sent to the list " @@ -5090,11 +5126,11 @@ "できますが, お勧めしません. (今後のリリースでは, このヘッダに関する設定\n" "ができないようにするかもしれません.)" -#: Mailman/Gui/General.py:399 +#: Mailman/Gui/General.py:402 msgid "Should postings include the List-Post: header?" msgstr "投稿記事に List-Post: ヘッダを必要としますか?" -#: Mailman/Gui/General.py:400 +#: Mailman/Gui/General.py:403 msgid "" "The List-Post: header is one of the headers\n" " recommended by\n" @@ -5119,7 +5155,15 @@ "いいえを選んで, このヘッダをつけないようにします. \n" "(この設定は他の List-*:ヘッダに影響しません.)" -#: Mailman/Gui/General.py:418 +#: Mailman/Gui/General.py:417 +msgid "" +"Discard held messages older than this number of days. \n" +" Use 0 for no automatic discarding." +msgstr "" +"この日数より古い保留メールは破棄します.\n" +"自動破棄をしない場合は 0 にしてください." + +#: Mailman/Gui/General.py:427 msgid "" "real_name attribute not\n" " changed! It must differ from the list's name by case\n" @@ -5128,7 +5172,7 @@ "real_name属性は変更されません!\n" "リスト名の大文字小文字の変更だけが許されます." -#: Mailman/Gui/General.py:448 +#: Mailman/Gui/General.py:457 msgid "" "You cannot add a Reply-To: to an explicit\n" " address if that address is blank. Resetting these values." @@ -5434,6 +5478,22 @@ " message. " msgstr "普通配送されるメールの末尾にこの文が付加されます. " +#: Mailman/Gui/NonDigest.py:140 +msgid "Scrub attachments of regular delivery message?" +msgstr "普通配送メールの添付ファイルを保管しますか?" + +#: Mailman/Gui/NonDigest.py:141 +msgid "" +"When you scrub attachments, they are stored in archive\n" +" area and links are made in the message so that the member can\n" +" access via web browser. If you want the attachments totally\n" +" disappear, you can use content filter options." +msgstr "" +"添付ファイルを保管すると、ウェブブラウザでアクセスできる保存書庫の\n" +"一画に保存され、メール本文にはリンクが作成されます. 添付ファイルを\n" +"完全に消去してしまいたい場合には「添付ファイル除去」のオプションを\n" +"使ってください." + #: Mailman/Gui/Passwords.py:27 msgid "Passwords" msgstr "パスワード" @@ -6088,7 +6148,7 @@ #: Mailman/Gui/Privacy.py:376 msgid "Filter rules to match against the headers of a message." -msgstr "へッダに適用するフィルタ規則。" +msgstr "へッダに適用するフィルタ規則." #: Mailman/Gui/Privacy.py:378 msgid "" @@ -6966,31 +7026,41 @@ msgid "The Mailman Replybot" msgstr "Mailman 自動応答システム" -#: Mailman/Handlers/Scrubber.py:188 +#: Mailman/Handlers/Scrubber.py:202 +msgid "" +"An embedded and charset-unspecified text was scrubbed...\n" +"Name: %(filename)s\n" +"Url: %(url)s\n" +msgstr "" +"文字コード指定の無い添付文書を保管しました...\n" +"名前: %(filename)s\n" +"URL: %(url)s\n" + +#: Mailman/Handlers/Scrubber.py:213 msgid "HTML attachment scrubbed and removed" msgstr "HTMLの添付ファイルは, 取り除かれています" -#: Mailman/Handlers/Scrubber.py:205 Mailman/Handlers/Scrubber.py:231 +#: Mailman/Handlers/Scrubber.py:231 Mailman/Handlers/Scrubber.py:257 msgid "" "An HTML attachment was scrubbed...\n" "URL: %(url)s\n" msgstr "" -"HTMLの添付ファイルが除去されました.\n" +"HTMLの添付ファイルを保管しました...\n" "URL: %(url)s\n" -#: Mailman/Handlers/Scrubber.py:243 +#: Mailman/Handlers/Scrubber.py:269 msgid "no subject" msgstr "無題" -#: Mailman/Handlers/Scrubber.py:244 +#: Mailman/Handlers/Scrubber.py:270 msgid "no date" msgstr "日付無し" -#: Mailman/Handlers/Scrubber.py:245 +#: Mailman/Handlers/Scrubber.py:271 msgid "unknown sender" msgstr "送信者不明" -#: Mailman/Handlers/Scrubber.py:248 +#: Mailman/Handlers/Scrubber.py:274 msgid "" "An embedded message was scrubbed...\n" "From: %(who)s\n" @@ -6999,14 +7069,14 @@ "Size: %(size)s\n" "Url: %(url)s\n" msgstr "" -"添付メールを除去しました...\n" +"添付メールを保管しました...\n" "送信者: %(who)s\n" "件名: %(subject)s\n" "日付: %(date)s\n" "サイズ: %(size)s バイト\n" "URL: %(url)s\n" -#: Mailman/Handlers/Scrubber.py:272 +#: Mailman/Handlers/Scrubber.py:299 msgid "" "A non-text attachment was scrubbed...\n" "Name: %(filename)s\n" @@ -7015,18 +7085,18 @@ "Desc: %(desc)s\n" "Url : %(url)s\n" msgstr "" -"テキスト形式以外の添付ファイルを除去しました...\n" +"テキスト形式以外の添付ファイルを保管しました...\n" "ファイル名: %(filename)s\n" "型: %(ctype)s\n" "サイズ: %(size)d バイト\n" "説明: %(desc)s\n" "URL: %(url)s\n" -#: Mailman/Handlers/Scrubber.py:301 -msgid "Skipped content of type %(partctype)s" +#: Mailman/Handlers/Scrubber.py:330 +msgid "Skipped content of type %(partctype)s\n" msgstr "添付ファイルのタイプ %(partctype)s を無視します\n" -#: Mailman/Handlers/Scrubber.py:327 +#: Mailman/Handlers/Scrubber.py:365 msgid "-------------- next part --------------\n" msgstr "-------------- next part --------------\n" @@ -7060,7 +7130,7 @@ #: Mailman/Handlers/ToDigest.py:308 msgid "[Message discarded by content filter]" -msgstr "" +msgstr "[添付ファイル除去によりメールが破棄されました]" #: Mailman/Handlers/ToDigest.py:323 msgid "digest footer" @@ -7203,35 +7273,35 @@ msgid "%(dbfile)s owned by %(owner)s (must be owned by %(user)s" msgstr "%(dbfile)s の所有者は %(owner)s です. (%(user)s でなければいけません)" -#: Mailman/MailList.py:756 +#: Mailman/MailList.py:760 msgid "You have been invited to join the %(listname)s mailing list" msgstr "%(listname)s メーリングリストに招待します." -#: Mailman/MailList.py:860 Mailman/MailList.py:1249 +#: Mailman/MailList.py:864 Mailman/MailList.py:1258 msgid " from %(remote)s" msgstr " %(remote)s から" -#: Mailman/MailList.py:894 +#: Mailman/MailList.py:898 msgid "subscriptions to %(realname)s require moderator approval" msgstr "%(realname)s への入会には管理者の承認が必要です" -#: Mailman/MailList.py:958 bin/add_members:242 +#: Mailman/MailList.py:962 bin/add_members:242 msgid "%(realname)s subscription notification" msgstr "%(realname)s 入会通知" -#: Mailman/MailList.py:977 +#: Mailman/MailList.py:982 Mailman/MailList.py:1176 msgid "unsubscriptions require moderator approval" msgstr "退会には管理者の承認が必要です" -#: Mailman/MailList.py:997 +#: Mailman/MailList.py:1002 msgid "%(realname)s unsubscribe notification" msgstr "%(realname)s 退会通知" -#: Mailman/MailList.py:1158 +#: Mailman/MailList.py:1163 msgid "subscriptions to %(name)s require administrator approval" msgstr "%(name)s への入会には管理者の承認が必要です" -#: Mailman/MailList.py:1418 +#: Mailman/MailList.py:1427 msgid "Last autoresponse notification for today" msgstr "今日最後に送られた自動応答の通知" @@ -7533,7 +7603,7 @@ msgstr "%(listname)s というリストはありません" #: bin/add_members:230 bin/change_pw:158 bin/check_db:114 bin/discard:83 -#: bin/sync_members:244 bin/update:552 cron/bumpdigests:78 +#: bin/sync_members:244 bin/update:555 cron/bumpdigests:78 msgid "Nothing to do." msgstr "なにもすることはありません." @@ -8527,15 +8597,15 @@ #: bin/dumpdb:135 msgid "[----- start pickle file -----]" -msgstr "" +msgstr "[----- pickle ファイル開始 -----]" #: bin/dumpdb:140 msgid "[----- end pickle file -----]" -msgstr "" +msgstr "[----- pickle ファイル終了 -----]" #: bin/dumpdb:142 msgid "<----- start object %(cnt)s ----->" -msgstr "" +msgstr "<----- %(cnt)s 番目のオブジェクト ----->" #: bin/find_member:19 msgid "" @@ -9719,43 +9789,26 @@ "\n" "This script is provided for convenience purposes only. It isn't supported.\n" msgstr "" - -#: bin/rb-archfix.~1~:21 -msgid "" -"Reduce disk space usage for Pipermail archives.\n" -"\n" -"Only use this script if you have correctly installed the patch file\n" -"fixarchiver-2.1.3-0.1.patch that this file came with. Using this if you " -"have\n" -"not installed the rest of the patch (including restarting mailmanctl) will " -"ruin\n" -"your whole day.\n" +"Pipermail 保存書庫のディスク使用量を減らす\n" "\n" -"Usage: %(PROGRAM)s [options] file ...\n" +"使用法: %(PROGRAM)s [オプション] ファイル ...\n" "\n" -"Where options are:\n" +"オプション:\n" " -h / --help\n" -" Print this help message and exit.\n" -"\n" -"Only use this to 'fix' archive -article database files that have been " -"written\n" -"with Mailman 2.1.3 or earlier and have html_body attributes in them . These\n" -"attributes can cause huge amounts of memory bloat and impact performance " -"for\n" -"high activity lists, particularly those having large text postings made to\n" -"them. Use like this from your $PREFIX directory:\n" +" このメッセージを出力して終了する\n" "\n" +"Mailman 2.1.3 以前の -article データベースファイルで, html_body\n" +"属性を持つ保存書庫を修正する. この属性はメモリーを大量に消費し\n" +"それゆえ活発なリストでは性能に影響する可能性がある.\n" "\n" +"例:\n" "%% ls -1 archives/private/*/database/*-article | xargs %(PROGRAM)s\n" "\n" -"(note the backquotes are required)\n" +"このスクリプトを実行した後に `bin/check_perms -f' を実行すること\n" "\n" -"You will need to run `bin/check_perms -f' after running this script.\n" +"また, 結果がよければ -article.bak ファイルを削除するとよい\n" "\n" -"You will probably want to delete the -article.bak files created by this " -"script\n" -"when you are satisifed the upad\n" -msgstr "" +"このスクリプトは便宜のために提供されており, サポートはない\n" #: bin/remove_members:19 msgid "" @@ -10290,7 +10343,7 @@ msgid "Fixing language templates: %(listname)s" msgstr "言語テンプレートを修正: %(listname)s" -#: bin/update:196 bin/update:686 +#: bin/update:196 bin/update:689 msgid "WARNING: could not acquire lock for list: %(listname)s" msgstr "警告: リストのロックを獲得できません: %(listname)s" @@ -10411,9 +10464,8 @@ msgstr "- %(o_tmpl)s と %(n_tmpl)s があります. そのままにします" #: bin/update:363 -#, fuzzy msgid "- %(o_tmpl)s doesn't exist, leaving untouched" -msgstr "- %(o_tmpl)s と %(n_tmpl)s があります. そのままにします" +msgstr "- %(o_tmpl)s はありません. そのままにします" #: bin/update:393 msgid "removing directory %(src)s and everything underneath" @@ -10435,37 +10487,35 @@ msgid "updating old qfiles" msgstr "古い qfile を更新" -#: bin/update:509 +#: bin/update:512 msgid "message is unparsable: %(filebase)s" -msgstr "" +msgstr "メールを解析できません: %(filebase)s" -#: bin/update:538 -#, fuzzy +#: bin/update:541 msgid "Updating Mailman 2.0 pending_subscriptions.db database" -msgstr "古い pending_subscriptions.db データベースを更新" +msgstr "Mailman 2.0 の pending_subscriptions.db データベースを更新" -#: bin/update:549 -#, fuzzy +#: bin/update:552 msgid "Updating Mailman 2.1.4 pending.pck database" -msgstr "古い pending_subscriptions.db データベースを更新" +msgstr "Mailman 2.1.4 の pending_subscriptions.db データベースを更新" -#: bin/update:573 +#: bin/update:576 msgid "Ignoring bad pended data: %(key)s: %(val)s" -msgstr "" +msgstr "保留データに誤り. 無視します: %(key)s: %(val)s" -#: bin/update:589 +#: bin/update:592 msgid "WARNING: Ignoring duplicate pending ID: %(id)s." -msgstr "" +msgstr "警告: 保留IDに重複あり. 無視します: %(id)s." -#: bin/update:642 +#: bin/update:645 msgid "getting rid of old source files" msgstr "古いソースファイルを削除中" -#: bin/update:652 +#: bin/update:655 msgid "no lists == nothing to do, exiting" msgstr "リストがありません == 何も実行せずに終了します" -#: bin/update:659 +#: bin/update:662 msgid "" "fixing all the perms on your old html archives to work with b6\n" "If your archives are big, this could take a minute or two..." @@ -10473,27 +10523,27 @@ "古い HTML 保存書庫を b6 で動くようにパーミッションを変更中\n" "保存書庫が大きいと, これは 1,2 分かかります..." -#: bin/update:664 +#: bin/update:667 msgid "done" msgstr "終了" -#: bin/update:666 +#: bin/update:669 msgid "Updating mailing list: %(listname)s" msgstr "%(listname)s メーリングリストを更新中" -#: bin/update:669 +#: bin/update:672 msgid "Updating Usenet watermarks" msgstr "ネットニュースの水位票を更新" -#: bin/update:674 +#: bin/update:677 msgid "- nothing to update here" msgstr "- 更新は必要ありません" -#: bin/update:697 +#: bin/update:700 msgid "- usenet watermarks updated and gate_watermarks removed" msgstr "- ネットニュースの水位票更新を完了. gate_watermarkを削除" -#: bin/update:711 +#: bin/update:714 msgid "" "\n" "\n" @@ -10534,11 +10584,11 @@ "注意 注意 注意 注意 注意\n" "\n" -#: bin/update:768 +#: bin/update:771 msgid "No updates are necessary." msgstr "更新の必要はありません." -#: bin/update:771 +#: bin/update:774 msgid "" "Downgrade detected, from version %(hexlversion)s to version %(hextversion)s\n" "This is probably not safe.\n" @@ -10548,11 +10598,11 @@ "安全に実行できない可能性があります.\n" "終了します." -#: bin/update:776 +#: bin/update:779 msgid "Upgrading from version %(hexlversion)s to %(hextversion)s" msgstr "%(hexlversion)s から %(hextversion)s へアップグレード" -#: bin/update:785 +#: bin/update:788 msgid "" "\n" "ERROR:\n" @@ -10909,15 +10959,23 @@ " -h / --help\n" " このメッセージを表示して終了する.\n" -#: cron/checkdbs:110 -msgid "%(count)d %(realname)s moderator request(s) waiting" -msgstr "%(count)d 件の %(realname)s 申請があります" +#: cron/checkdbs:107 +msgid "" +"Notice: %(discarded)d old request(s) automatically expired.\n" +"\n" +msgstr "" +"通知: %(discarded)d 件の申請案件が期限切れとなりました.\n" +"\n" + +#: cron/checkdbs:120 +msgid "%(realname)s moderator requests notice" +msgstr "%(realname)s 申請案件通知" -#: cron/checkdbs:130 +#: cron/checkdbs:141 msgid "Pending subscriptions:" msgstr "保留中の会員登録:" -#: cron/checkdbs:141 +#: cron/checkdbs:152 msgid "" "\n" "Pending posts:" @@ -10925,7 +10983,7 @@ "\n" "保留投稿:" -#: cron/checkdbs:148 +#: cron/checkdbs:159 msgid "" "From: %(sender)s on %(date)s\n" "Subject: %(subject)s\n" Index: misc/Makefile.in =================================================================== RCS file: /cvsroot/mailman/mailman/misc/Makefile.in,v retrieving revision 2.33.2.6 diff -u -r2.33.2.6 Makefile.in --- misc/Makefile.in 30 Dec 2003 04:47:44 -0000 2.33.2.6 +++ misc/Makefile.in 25 Apr 2004 04:43:20 -0000 @@ -77,7 +77,10 @@ install: install-other install-packages install-other: - $(INSTALL) -m $(FILEMODE) $(ICONS) $(DESTDIR)$(ICONDIR) + for i in $(ICONS); \ + do \ + $(INSTALL) -m $(FILEMODE) $$i $(DESTDIR)$(ICONDIR); \ + done for d in $(PATHSDIRS); \ do \ dir=$(DESTDIR)$(prefix)/$$d; \