diff options
Diffstat (limited to 'src/mailman/languages/manager.py')
| -rw-r--r-- | src/mailman/languages/manager.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/mailman/languages/manager.py b/src/mailman/languages/manager.py index 7844bd87c..87b56dbda 100644 --- a/src/mailman/languages/manager.py +++ b/src/mailman/languages/manager.py @@ -24,8 +24,11 @@ __all__ = [ 'LanguageManager', ] + +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 @@ -72,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)) |
