Source code for cms_qe_i18n.cms_plugins
import re
from operator import itemgetter
from cms.plugin_base import CMSPluginBase
from cms.plugin_pool import plugin_pool
from django.conf import settings
from django.utils.translation import get_language, gettext_lazy as _
[docs]@plugin_pool.register_plugin
class LanguageSwitcherPlugin(CMSPluginBase):
"""
CMS plugin allowing to add dynamically configured listing of any model.
"""
name = _('Language switcher')
render_template = 'cms_qe/i18n/language_switcher.html'
text_enabled = True
cache = True
def render(self, context: dict, instance, placeholder) -> dict:
context = super().render(context, instance, placeholder)
context.update({
'path': self.path_without_language(context),
'language': get_language(),
'languages': self.sorted_languages,
})
return context
def path_without_language(self, context):
return re.sub(r'^/[a-z]{2}/', '/', context['request'].path)
@property
def sorted_languages(self):
return sorted(settings.LANGUAGES, key=itemgetter(0))