cubicweb/web/views/urlpublishing.py
changeset 11794 d8830e2bd2e0
parent 11767 432f87a63057
--- a/cubicweb/web/views/urlpublishing.py	Wed Nov 02 15:59:39 2016 +0100
+++ b/cubicweb/web/views/urlpublishing.py	Thu Nov 03 15:00:01 2016 +0100
@@ -115,7 +115,21 @@
         :raise NotFound: if no handler is able to decode the given path
         """
         parts = [part for part in path.split('/')
-                 if part != ''] or (self.default_method,)
+                 if part != ''] or [self.default_method]
+        language_mode = self.vreg.config.get('language-mode')
+        if (language_mode == 'url-prefix'
+                and parts and parts[0] in self.vreg.config.available_languages()):
+            # language from URL
+            req.set_language(parts.pop(0))
+            path = '/'.join(parts)
+            # if parts only contains lang, use 'view' default path
+            if not parts:
+                parts = (self.default_method,)
+        elif language_mode in ('http-negotiation', 'url-prefix'):
+            # negotiated language
+            lang = req.negotiated_language()
+            if lang:
+                req.set_language(lang)
         if req.form.get('rql'):
             if parts[0] in self.vreg['controllers']:
                 return parts[0], None