summaryrefslogtreecommitdiff
path: root/Mailman/SafeDict.py
diff options
context:
space:
mode:
Diffstat (limited to 'Mailman/SafeDict.py')
-rw-r--r--Mailman/SafeDict.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/Mailman/SafeDict.py b/Mailman/SafeDict.py
index ff702bca3..876ab88e4 100644
--- a/Mailman/SafeDict.py
+++ b/Mailman/SafeDict.py
@@ -15,6 +15,8 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
# USA.
+from Mailman.configuration import config
+
"""A `safe' dictionary for string interpolation."""
COMMASPACE = ', '
@@ -28,6 +30,15 @@ class SafeDict(dict):
This is used in maketext so that editing templates is a bit more robust.
"""
+ def __init__(self, d='', charset=None, lang=None):
+ super(SafeDict, self).__init__(d)
+ if charset:
+ self.cset = charset
+ elif lang:
+ self.cset = config.LC_DESCRIPTIONS[lang][1]
+ else:
+ self.cset = 'us-ascii'
+
def __getitem__(self, key):
try:
return super(SafeDict, self).__getitem__(key)
@@ -38,6 +49,9 @@ class SafeDict(dict):
return '<Missing key: %s>' % `key`
def interpolate(self, template):
+ for k, v in self.items():
+ if isinstance(v, str):
+ self.__setitem__(k, unicode(v, self.cset))
return template % self