language.py 995 B

123456789101112131415161718192021222324252627
  1. from django.conf import settings
  2. from django.template import loader
  3. from django.views.i18n import set_language
  4. from xadmin.plugins.utils import get_context_dict
  5. from xadmin.sites import site
  6. from xadmin.views import BaseAdminPlugin, CommAdminView, BaseAdminView
  7. class SetLangNavPlugin(BaseAdminPlugin):
  8. def block_top_navmenu(self, context, nodes):
  9. context = get_context_dict(context)
  10. context['redirect_to'] = self.request.get_full_path()
  11. nodes.append(loader.render_to_string('xadmin/blocks/comm.top.setlang.html', context=context))
  12. class SetLangView(BaseAdminView):
  13. def post(self, request, *args, **kwargs):
  14. if 'nav_menu' in request.session:
  15. del request.session['nav_menu']
  16. return set_language(request)
  17. if settings.LANGUAGES and 'django.middleware.locale.LocaleMiddleware' in settings.MIDDLEWARE:
  18. site.register_plugin(SetLangNavPlugin, CommAdminView)
  19. site.register_view(r'^i18n/setlang/$', SetLangView, 'set_language')