diff --git a/src/pretix/base/middleware.py b/src/pretix/base/middleware.py index 4c394d330a..aa0753a8aa 100644 --- a/src/pretix/base/middleware.py +++ b/src/pretix/base/middleware.py @@ -59,21 +59,25 @@ class LocaleMiddleware(MiddlewareMixin): # set and can be taken into account for the decision. if not request.path.startswith(get_script_prefix() + 'control'): if hasattr(request, 'event'): - if language not in request.event.settings.locales: + settings_holder = request.event + elif hasattr(request, 'organizer'): + settings_holder = request.organizer + else: + settings_holder = None + + if settings_holder: + if language not in settings_holder.settings.locales: firstpart = language.split('-')[0] - if firstpart in request.event.settings.locales: + if firstpart in settings_holder.settings.locales: language = firstpart else: - language = request.event.settings.locale - for lang in request.event.settings.locales: + language = settings_holder.settings.locale + for lang in settings_holder.settings.locales: if lang.startswith(firstpart + '-'): language = lang break - if '-' not in language and request.event.settings.region: - language += '-' + request.event.settings.region - elif hasattr(request, 'organizer'): - if '-' not in language and request.organizer.settings.region: - language += '-' + request.organizer.settings.region + if '-' not in language and settings_holder.settings.region: + language += '-' + settings_holder.settings.region else: gs = global_settings_object(request) if '-' not in language and gs.settings.region: