Mailman 2.1: Zeichensatz von Übersetzungen und Texten von iso8859-1 nach utf-8 konvertieren
Zwar ist die Mailman-Version 2.1 schon etwas in die Jahre gekommen und erhält keinen wirklichen Support mehr, doch ist es weiterhin eine zuverlässige Mailinglistensoftware mit ein paar kleineren Macken. Eine davon ist der nicht zu utf-8 konvertierte Zeichensatz der Textbausteine.
Als Relikt vergangener Zeiten sind die deutschen Texte bei Mailman 2.1 zumindest in der bei Debian Buster mitgelieferten Version 2.1.29 in iso8859-1 gehalten, was bei öffentlichen Webseiten in charset="utf-8"
zu unschönen Ersatzzeichen „�“ für die Umlaute führt.
Lösung ist eine Konvertierung der mitgelieferten Texte in utf-8 und die Ausgabe von allem in utf-8, wie sie hier und hier beschrieben ist.
Die Schablonen im Verzeichnis /usr/share/mailman/de
werden mittels dieser Befehlskette umgewandelt:
cd /usr/share/mailman/de
for f in *; do
mv $f $f.old; iconv -f iso8859-1 -t utf-8 $f.old > $f
done
rm *.old
Die Übersetzungen in /var/lib/mailman/messages/de/LC_MESSAGES
dann hiermit:
cd /var/lib/mailman/messages/de/LC_MESSAGES
mv mailman.po mailman.po.original
iconv -f iso8859-1 -t utf-8 mailman.po.original > mailman.po
msgfmt mailman.po -o mailman.mo
Nach dem Aufruf von msgfmt
gibt es einen fatal error
, der aber ohne Auswirkungen bleibt.
mailman.po:7111: »msgid«- und »msgstr«-Eintrag enden nicht jeweils mit »\n«
msgfmt: es ist 1 fataler Fehler aufgetreten
Der Entwickler Mark Shapiro wies in seinem Beitrag auch darauf hin.
In die Einstellungsdatei /etc/mailman/mm_cfg.py
sollte dann der allgemeine Zeichensatz noch zu utf-8 geändert werden.
DEFAULT_CHARSET = 'utf-8'
Für die Beschreibungen ist wohl auch dieser Zusatz in /etc/mailman/mm_cfg.py
noch erforderlich:
def _(s):
return s
def add_language(code, description, charset, direction='ltr'):
LC_DESCRIPTIONS[code] = (description, charset, direction)
add_language('de', _('German'), 'utf-8', 'ltr')
del _
Danach stören keine Ersatzzeichen a la „�“ mehr und alle Umlaute sollten korrekt dargestellt werden.