/
switcher.py
31 lines (24 loc) · 1.1 KB
/
switcher.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# -*- coding: utf-8 -*-
from Acquisition import aq_inner
from Products.CMFCore.utils import getToolByName
from Products.Five import BrowserView
class LanguageSwitcher(BrowserView):
def __call__(self):
"""Redirect to the preferred language top-level folder.
If no folder for preferred language exists, redirect to default
language.
Copy from LinguaPlone
"""
context = aq_inner(self.context)
plt = getToolByName(context, 'portal_languages')
pref = plt.getPreferredLanguage()
default = plt.getDefaultLanguage()
ids = self.context.keys()
target = (pref in ids) and pref or default
url = "%s/%s" % (context.absolute_url(), target)
# We need to set the language cookie on the first response or it will
# be set on the frontpage itself, making it uncachable
langCookie = self.request.cookies.get('I18N_LANGUAGE')
if not langCookie or langCookie != target:
self.request.response.setCookie('I18N_LANGUAGE', target, path='/')
self.request.response.redirect(url, status=301)