summaryrefslogtreecommitdiff
path: root/src/mailman/languages/manager.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman/languages/manager.py')
-rw-r--r--src/mailman/languages/manager.py25
1 files changed, 21 insertions, 4 deletions
diff --git a/src/mailman/languages/manager.py b/src/mailman/languages/manager.py
index ca7001102..87b56dbda 100644
--- a/src/mailman/languages/manager.py
+++ b/src/mailman/languages/manager.py
@@ -17,25 +17,27 @@
"""Language manager."""
-from __future__ import absolute_import, unicode_literals
+from __future__ import absolute_import, print_function, unicode_literals
__metaclass__ = type
__all__ = [
'LanguageManager',
]
-from zope.interface import implements
+from zope.component import getUtility
+from zope.interface import implementer
+
+from mailman.interfaces.configuration import ConfigurationUpdatedEvent
from mailman.interfaces.languages import ILanguageManager
from mailman.languages.language import Language
+@implementer(ILanguageManager)
class LanguageManager:
"""Language manager."""
- implements(ILanguageManager)
-
def __init__(self):
# Mapping from 2-letter code to Language instance.
self._languages = {}
@@ -73,3 +75,18 @@ class LanguageManager:
def clear(self):
"""See `ILanguageManager`."""
self._languages.clear()
+
+
+
+def handle_ConfigurationUpdatedEvent(event):
+ if not isinstance(event, ConfigurationUpdatedEvent):
+ return
+ manager = getUtility(ILanguageManager)
+ for language in event.config.language_configs:
+ if language.enabled:
+ code = language.name.split('.')[1]
+ manager.add(code, language.charset, language.description)
+ # the default language must always be available.
+ assert event.config.mailman.default_language in manager, (
+ 'system default language code not defined: {0}'.format(
+ event.config.mailman.default_language))