From 1fdbb64cbd1d9d5592c027d6bbec78476b3cc104 Mon Sep 17 00:00:00 2001 From: bwarsaw Date: Thu, 7 Dec 2000 22:16:21 +0000 Subject: First round integration of Juan Carlos's translatable string markings. --- Mailman/Cgi/admin.py | 216 +++++++++++++++++++++++++++------------------------ 1 file changed, 114 insertions(+), 102 deletions(-) (limited to 'Mailman/Cgi/admin.py') diff --git a/Mailman/Cgi/admin.py b/Mailman/Cgi/admin.py index fd856bc61..63b6e3e90 100644 --- a/Mailman/Cgi/admin.py +++ b/Mailman/Cgi/admin.py @@ -64,7 +64,7 @@ def main(): try: mlist = MailList.MailList(listname) except Errors.MMListError, e: - FormatAdminOverview('No such list %s' % listname) + FormatAdminOverview(_('No such list %s') % listname) syslog('error', 'Someone tried to access the admin interface for a ' 'non-existent list: %s' % listname) return @@ -90,6 +90,15 @@ def main(): Auth.loginpage(mlist, 'admin', frontpage=1) return + CATEGORIES = [('general', _("General Options")), + ('members', _("Membership Management")), + ('privacy', _("Privacy Options")), + ('nondigest', _("Regular-member (non-digest) Options")), + ('digest', _("Digest-member Options")), + ('bounce', _("Bounce Options")), + ('archive', _("Archival Options")), + ('gateway', _("Mail-News and News-Mail gateways"))] + if category not in map(lambda x: x[0], CATEGORIES): category = 'general' @@ -118,19 +127,19 @@ def main(): # Sanity checks if not mlist.digestable and not mlist.nondigestable: - AddErrorMessage(doc, '''You have turned off delivery of + AddErrorMessage(doc, _('''You have turned off delivery of both digest and non-digest messages. This is an incompatible state of affairs. You must turn on either digest delivery or non-digest delivery or your mailing list will basically be - unusable.''') + unusable.''')) if not mlist.digestable and len(mlist.GetDigestMembers()): - AddErrorMessage(doc, '''You have digest members, + AddErrorMessage(doc, _('''You have digest members, but digests are turned off. Those people will not receive - mail.''') + mail.''')) if not mlist.nondigestable and len(mlist.GetMembers()): - AddErrorMessage(doc, '''You have regular list members + AddErrorMessage(doc, _('''You have regular list members but non-digestified mail is turned off. They will receive mail - until you fix this problem.''') + until you fix this problem.''')) FormatConfiguration(doc, mlist, category, category_suffix, cgidata) print doc.Format(bgcolor="#ffffff") @@ -144,7 +153,7 @@ def main(): def FormatAdminOverview(error=None): "Present a general welcome and itemize the (public) lists." doc = Document() - legend = "%s mailing lists - Admin Links" % mm_cfg.DEFAULT_HOST_NAME + legend = _("%s mailing lists - Admin Links") % mm_cfg.DEFAULT_HOST_NAME doc.SetTitle(legend) table = Table(border=0, width="100%") @@ -163,39 +172,39 @@ def FormatAdminOverview(error=None): if error: greeting = FontAttr(error, color="ff5060", size="+1") else: - greeting = "Welcome!" + greeting = _("Welcome!") if not advertised: welcome_items = (greeting, - "
" - " There currently are no publicly-advertised ", + _("
" + " There currently are no publicly-advertised "), Link(mm_cfg.MAILMAN_URL, "mailman"), - " mailing lists on %s." % mm_cfg.DEFAULT_HOST_NAME, + _(" mailing lists on %s.") % mm_cfg.DEFAULT_HOST_NAME, ) else: welcome_items = ( greeting, - "
" - " Below is the collection of publicly-advertised ", + _("
" + " Below is the collection of publicly-advertised "), Link(mm_cfg.MAILMAN_URL, "mailman"), - " mailing lists on %s." % mm_cfg.DEFAULT_HOST_NAME, - (' Click on a list name to visit the configuration pages' - ' for that list.' + _(" mailing lists on %s.") % mm_cfg.DEFAULT_HOST_NAME, + (_(' Click on a list name to visit the configuration pages' + ' for that list.') ) ) welcome_items = (welcome_items + - (" To visit the administrators configuration page for" - " an unadvertised list, open a URL similar to this" + (_(" To visit the administrators configuration page for" + " an unadvertised list, open a URL similar to this") + - (" one, but with a '/' and the %slist name appended.
" - % ((error and "right ") or "")) + (_(" one, but with a '/' and the %slist name appended.
") + % ((error and _("right ")) or "")) + - " General list information can be found at ", + _(" General list information can be found at "), Link(Utils.ScriptURL('listinfo'), - 'the mailing list overview page'), - "." - "
(Send questions and comments to ", + _('the mailing list overview page')), + "." + + _("
(Send questions and comments to "), Link("mailto:%s" % mm_cfg.MAILMAN_OWNER, mm_cfg.MAILMAN_OWNER), ".)
"
@@ -207,11 +216,11 @@ def FormatAdminOverview(error=None):
if advertised:
table.AddRow([' ', ' '])
- table.AddRow([Bold("List"), Bold("Description")])
+ table.AddRow([Bold(_("List")), Bold(_("Description"))])
for l in advertised:
table.AddRow(
[Link(l.GetScriptURL('admin'), Bold(l.real_name)),
- l.description or Italic('[no description available]'),
+ l.description or Italic(_('[no description available]')),
])
doc.AddItem(table)
@@ -227,24 +236,25 @@ def FormatConfiguration(doc, mlist, category, category_suffix, cgi_data):
if k == category:
label = v
- doc.SetTitle('%s Administration (%s)' % (mlist.real_name, label))
- doc.AddItem(Center(Header(2, '%s mailing list administration
%s'
- % (mlist.real_name, label + ' Section'))))
+ realname = mlist.real_name
+ doc.SetTitle(_('%(realname)s Administration (%(label)s)'))
+ doc.AddItem(Center(Header(2, _(
+ '%(realname)s mailing list administration
%(label)s Section'))))
doc.AddItem('
" - % andpassmsg) + form.AddItem(_("Make your changes below, and then submit them" + " using the button at the bottom.") + + andpassmsg + '
')
form.AddItem(FormatOptionsSection(category, mlist, cgi_data))
@@ -311,7 +321,7 @@ def FormatOptionsSection(category, mlist, cgi_data):
colspan=2, bgcolor="#99ccff")
def ColHeader(big_table = big_table):
- big_table.AddRow([Center(Bold('Description')), Center(Bold('Value'))])
+ big_table.AddRow([Center(Bold(_('Description'))), Center(Bold(_('Value')))])
big_table.AddCellInfo(max(big_table.GetCurrentRowIndex(), 0), 0,
width="15%")
big_table.AddCellInfo(max(big_table.GetCurrentRowIndex(), 0), 1,
@@ -351,7 +361,7 @@ def AddOptionsTableItem(table, item, category, mlist, detailsp=1):
varname, kind, params, dependancies, descr, elaboration = got
except ValueError, msg:
syslog('error', 'admin: %s' % msg)
- return Italic(" " % (varname, category, descr))
doc.AddItem("%s " % elaboration)
@@ -403,12 +414,12 @@ def FormatOptionHelp(doc, varref, mlist):
form.AddItem(' ')
form.AddItem(Center(FormatSubmit()))
doc.AddItem(Center(form))
- doc.AddItem("""Warning: changing this option here
+ doc.AddItem(_("""Warning: changing this option here
could cause other screens to be out-of-sync. Be sure to reload any other
pages that are displaying this option for this mailing list. You can
- also """)
+ also """))
doc.AddItem(Link('%s/%s' % (mlist.GetScriptURL('admin'), category),
- 'return to the ' + category + ' options page.'))
+ _('return to the %(category)s options page.')))
doc.AddItem('')
doc.AddItem(mlist.GetMailmanFooter())
@@ -428,7 +439,7 @@ def GetItemCharacteristics(table_entry):
elif len(table_entry) == 6:
varname, kind, params, dependancies, descr, elaboration = table_entry
else:
- raise ValueError, ("Badly formed options entry:\n %s"
+ raise ValueError, (_("Badly formed options entry:\n %s")
% table_entry)
return (varname, kind, params, dependancies, descr, elaboration)
@@ -482,9 +493,9 @@ def GetItemGuiValue(mlist, kind, varname, params):
if not val:
val = ''
container = Container()
- container.AddItem('Enter the text below, or... To View other sections, "
- "click on the appropriate range listed below")
+ footer = (_(" To View other sections, "
+ "click on the appropriate range listed below"))
chunk_indices = range(len(chunks))
chunk_indices.remove(chunk)
buttons = []
for ci in chunk_indices:
start, end = chunks[ci][0], chunks[ci][-1]
url = mlist.GetScriptURL('admin')
- buttons.append(" from %s to %s "
+ buttons.append("" + _("from %s to %s") + ""
% (url, ci, start, end))
buttons = apply(UnorderedList, tuple(buttons))
footer = footer + buttons.Format() + " "
@@ -592,25 +604,25 @@ def FormatMembershipOptions(mlist, cgi_data):
user_table.AddRow(cells)
container.AddItem(Center(user_table))
legend = UnorderedList()
- legend.AddItem('subscr -- Is the member subscribed?')
- legend.AddItem("hide -- Is the member's address "
- "concealed on the list of subscribers?")
- legend.AddItem('nomail -- Is delivery to the member disabled?')
- legend.AddItem('ack -- '
- 'Does the member get acknowledgements of their posts?')
- legend.AddItem('not metoo -- '
- 'Does the member avoid copies of their own posts?')
- legend.AddItem('digest -- '
- 'Does the member get messages in digests? '
- '(otherwise, individual messages)')
+ legend.AddItem(_('subscr -- Is the member subscribed?'))
+ legend.AddItem(_("hide -- Is the member's address "
+ "concealed on the list of subscribers?"))
+ legend.AddItem(_('nomail -- Is delivery to the member disabled?'))
+ legend.AddItem(_('ack -- '
+ 'Does the member get acknowledgements of their posts?'))
+ legend.AddItem(_('not metoo -- '
+ 'Does the member avoid copies of their own posts?'))
+ legend.AddItem(_('digest -- '
+ 'Does the member get messages in digests? '
+ '(otherwise, individual messages)'))
legend.AddItem(
- 'plain -- '
- 'If getting digests, does the member get plain text digests? '
- '(otherwise, MIME)')
+ _('plain -- '
+ 'If getting digests, does the member get plain text digests? '
+ '(otherwise, MIME)'))
container.AddItem(legend.Format())
container.AddItem(footer)
t = Table(width="90%")
- t.AddRow([Center(Header(4, "Mass Subscribe Members"))])
+ t.AddRow([Center(Header(4, _("Mass Subscribe Members")))])
t.AddCellInfo(t.GetCurrentRowIndex(),
t.GetCurrentCellIndex(),
bgcolor="#cccccc", colspan=8)
@@ -620,14 +632,14 @@ def FormatMembershipOptions(mlist, cgi_data):
else:
nochecked = 1
yeschecked = 0
- t.AddRow([("1. Send Welcome message to this batch? "
+ t.AddRow([("1." + _("Send Welcome message to this batch? ")
+ RadioButton("send_welcome_msg_to_this_batch", 0,
nochecked).Format()
- + " no "
+ + _(" no ")
+ RadioButton("send_welcome_msg_to_this_batch", 1,
yeschecked).Format()
- + " yes ")])
- t.AddRow(["2. Enter one address per line: "])
+ + _(" yes "))])
+ t.AddRow(["2." + _("Enter one address per line:") + " "])
container.AddItem(Center(t))
container.AddItem(Center(TextArea(name='subscribees',
rows=10,cols=60,wrap=None)))
@@ -640,17 +652,17 @@ def FormatPasswordStuff():
cellspacing=0, cellpadding=2,
valign="top")
change_pw_table.AddRow(
- [Bold(Center('To Change The Administrator Password'))])
+ [Bold(Center(_('To Change The Administrator Password')))])
change_pw_table.AddCellInfo(0, 0, align="left", colspan=2)
old = Table(bgcolor="#99cccc", border=1,
cellspacing=0, cellpadding=2, valign="top")
- old.AddRow([' real_name attribute not
+ document.AddItem(_(""" real_name attribute not
changed! It must differ from the list's name by case
- only. """)
+ only. """))
continue
setattr(mlist, property, value)
#
@@ -858,22 +870,22 @@ def ChangeOptions(mlist, category, cgi_info, document):
# result[name] is set from sys.exc_info()[:2]
e, v = result[name]
if e is Errors.MMAlreadyAMember:
- subscribe_errors.append((name, 'Already a member'))
+ subscribe_errors.append((name, _('Already a member')))
elif e is Errors.MMBadEmailError:
if name == '':
name = '<blank line>'
subscribe_errors.append(
- (name, "Bad/Invalid email address"))
+ (name, _("Bad/Invalid email address")))
elif e is Errors.MMHostileAddress:
subscribe_errors.append(
- (name, "Hostile Address (illegal characters)"))
+ (name, _("Hostile Address (illegal characters)")))
if subscribe_success:
- document.AddItem(Header(5, "Successfully Subscribed:"))
+ document.AddItem(Header(5, _("Successfully Subscribed:")))
document.AddItem(apply(UnorderedList, tuple((subscribe_success))))
document.AddItem(" ")
# ApprovedAddMembers will already have saved the list for us.
if subscribe_errors:
- document.AddItem(Header(5, "Error Subscribing:"))
+ document.AddItem(Header(5, _("Error Subscribing:")))
items = map(lambda x: "%s -- %s" % (x[0], x[1]), subscribe_errors)
document.AddItem(apply(UnorderedList, tuple((items))))
document.AddItem(" ")
@@ -894,7 +906,7 @@ def ChangeOptions(mlist, category, cgi_info, document):
try:
mlist.DeleteMember(user)
except Errors.MMNoSuchUserError:
- errors.append((user, 'Not subscribed'))
+ errors.append((user, _('Not subscribed')))
continue
value = cgi_info.has_key('%s_digest' % user)
try:
@@ -910,7 +922,7 @@ def ChangeOptions(mlist, category, cgi_info, document):
else:
mlist.SetUserOption(user, opt_code, 0, save_list=0)
if errors:
- document.AddItem(Header(5, "Error Unsubscribing:"))
+ document.AddItem(Header(5, _("Error Unsubscribing:")))
items = map(lambda x: "%s -- %s" % (x[0], x[1]), errors)
document.AddItem(apply(UnorderedList, tuple((items))))
document.AddItem(" ")
--
cgit v1.2.3-70-g09d2
%s Option'
- % (mlist.real_name, varname))
+ realname = mlist.real_name
+ legend = (_("""%(realname)s Mailing list Configuration Help
+
%(varname)s Option"""))
header.AddRow([Center(Header(3, legend))])
header.AddCellInfo(max(header.GetCurrentRowIndex(), 0), 0,
colspan=2, bgcolor="#99ccff")
- doc.SetTitle("Mailman %s List Option Help" % varname)
+ doc.SetTitle(_("Mailman %(varname)s List Option Help"))
doc.AddItem(header)
doc.AddItem("%s (%s): %s
')
+ container.AddItem(_('Enter the text below, or...
'))
container.AddItem(TextArea(varname, val, r, c))
- container.AddItem('
...specify a file to upload
')
+ container.AddItem(_('
...specify a file to upload
'))
container.AddItem(FileUpload(varname+'_upload', r, c))
return container
@@ -504,9 +515,9 @@ def GetItemGuiDescr(mlist, category, varname, descr, detailsp):
else:
text = '
Note:
+ text = text + _('''
Note:
setting this value performs an immediate action but does not modify
- permanent state.