aboutsummaryrefslogtreecommitdiffstats
path: root/Mailman/Gui/Language.py
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--Mailman/Gui/Language.py122
1 files changed, 122 insertions, 0 deletions
diff --git a/Mailman/Gui/Language.py b/Mailman/Gui/Language.py
new file mode 100644
index 00000000..bfa5185f
--- /dev/null
+++ b/Mailman/Gui/Language.py
@@ -0,0 +1,122 @@
+# Copyright (C) 2001,2002 by the Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+"""MailList mixin class managing the language options.
+"""
+
+import codecs
+
+from Mailman import mm_cfg
+from Mailman import Utils
+from Mailman import i18n
+from Mailman.Logging.Syslog import syslog
+from Mailman.Gui.GUIBase import GUIBase
+
+_ = i18n._
+
+
+
+class Language(GUIBase):
+ def GetConfigCategory(self):
+ return 'language', _('Language options')
+
+ def GetConfigInfo(self, mlist, category, subcat=None):
+ if category <> 'language':
+ return None
+
+ # Set things up for the language choices
+ langs = mlist.GetAvailableLanguages()
+ langnames = [_(Utils.GetLanguageDescr(L)) for L in langs]
+ try:
+ langi = langs.index(mlist.preferred_language)
+ except ValueError:
+ # Someone must have deleted the list's preferred language. Could
+ # be other trouble lurking!
+ langi = 0
+
+ # Only allow the admin to choose a language if the system has a
+ # charset for it. I think this is the best way to test for that.
+ def checkcodec(charset):
+ try:
+ codecs.lookup(charset)
+ return 1
+ except LookupError:
+ return 0
+
+ all = [key for key in mm_cfg.LC_DESCRIPTIONS.keys()
+ if checkcodec(Utils.GetCharSet(key))]
+ all.sort()
+ checked = [L in langs for L in all]
+ allnames = [_(Utils.GetLanguageDescr(L)) for L in all]
+
+ return [
+ _('Natural language (internationalization) options.'),
+
+ ('preferred_language', mm_cfg.Select,
+ (langs, langnames, langi),
+ 0,
+ _('Default language for this list.'),
+ _('''This is the default natural language for this mailing list.
+ If <a href="?VARHELP=language/available_languages">more than one
+ language</a> is supported then users will be able to select their
+ own preferences for when they interact with the list. All other
+ interactions will be conducted in the default language. This
+ applies to both web-based and email-based messages, but not to
+ email posted by list members.''')),
+
+ ('available_languages', mm_cfg.Checkbox,
+ (allnames, checked, 0, all), 0,
+ _('Languages supported by this list.'),
+
+ _('''These are all the natural languages supported by this list.
+ Note that the
+ <a href="?VARHELP=language/preferred_language">default
+ language</a> must be included.''')),
+
+ ('encode_ascii_prefixes', mm_cfg.Radio,
+ (_('Never'), _('Always'), _('As needed')), 0,
+ _("""Encode the
+ <a href="?VARHELP=general/subject_prefix">subject
+ prefix</a> even when it consists of only ASCII characters?"""),
+
+ _("""If your mailing list's default language uses a non-ASCII
+ character set and the prefix contains non-ASCII characters, the
+ prefix will always be encoded according to the relevant
+ standards. However, if your prefix contains only ASCII
+ characters, you may want to set this option to <em>Never</em> to
+ disable prefix encoding. This can make the subject headers
+ slightly more readable for users with mail readers that don't
+ properly handle non-ASCII encodings.
+
+ <p>Note however, that if your mailing list receives both encoded
+ and unencoded subject headers, you might want to choose <em>As
+ needed</em>. Using this setting, Mailman will not encode ASCII
+ prefixes when the rest of the header contains only ASCII
+ characters, but if the original header contains non-ASCII
+ characters, it will encode the prefix. This avoids an ambiguity
+ in the standards which could cause some mail readers to display
+ extra, or missing spaces between the prefix and the original
+ header.""")),
+
+ ]
+
+ def _setValue(self, mlist, property, val, doc):
+ # If we're changing the list's preferred language, change the I18N
+ # context as well
+ if property == 'preferred_language':
+ i18n.set_language(val)
+ doc.set_language(val)
+ GUIBase._setValue(self, mlist, property, val, doc)