middleware.py 1.1 KB

123456789101112131415161718192021222324252627282930
  1. from django.conf import settings
  2. from django.core import urlresolvers
  3. from django.utils import translation
  4. class ForceAdminLanguage(object):
  5. """
  6. Middleware which forces language in Django admin to ``ADMIN_LANGUAGE_CODE`` setting value.
  7. Useful when not wanting that Django content language interferes with admin language,
  8. especially when admin interface is not translated fully in all languages content is,
  9. or when error messages in admin interface are hard to debug because of a rare language
  10. they are displayed in.
  11. Should be added to ``MIDDLEWARE_CLASSES`` after ``LocaleMiddleware`` middleware::
  12. MIDDLEWARE_CLASSES = (
  13. ...
  14. django.middleware.locale.LocaleMiddleware,
  15. missing.middleware.ForceAdminLanguage,
  16. ...
  17. )
  18. """
  19. def process_request(self, request):
  20. admin_url = urlresolvers.reverse('admin:index')
  21. admin_preview_url = admin_url + 'r/'
  22. if request.path.startswith(admin_url) and not request.path.startswith(admin_preview_url):
  23. translation.activate(settings.ADMIN_LANGUAGE_CODE)
  24. return None