diff options
| author | Christophe Simonis <chs@openerp.com> | 2012-11-12 19:10:33 +0100 |
|---|---|---|
| committer | Christophe Simonis <chs@openerp.com> | 2012-11-12 19:10:33 +0100 |
| commit | fa16b8910efd576746fbcdece9eaa0bfbe9499b0 (patch) | |
| tree | 60ba51666e1a795b119d05b6da78e2247f48bff0 /addons/web/http.py | |
| parent | 40734fc4c469be2f58a664a93377ecf6c22386e6 (diff) | |
[ADD] req.lang property to get preferred lang for the current request
bzr revid: chs@openerp.com-20121112181033-b17zj2io47me04kk
Diffstat (limited to 'addons/web/http.py')
| -rw-r--r-- | addons/web/http.py | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/addons/web/http.py b/addons/web/http.py index 1a636971fb5..65111cd6775 100644 --- a/addons/web/http.py +++ b/addons/web/http.py @@ -21,6 +21,7 @@ import urlparse import uuid import xmlrpclib +from babel.core import LOCALE_ALIASES import simplejson import werkzeug.contrib.sessions import werkzeug.datastructures @@ -93,7 +94,28 @@ class WebRequest(object): if not self.session: self.httpsession[self.session_id] = self.session = session.OpenERPSession() self.context = self.params.pop('context', None) - self.debug = self.params.pop('debug', False) != False + self.debug = self.params.pop('debug', False) is not False + self._params_lang = self.params.pop('lang') + + @property + def lang(self): + if not hasattr(self, '_lang'): + lang = self._params_lang + if lang is None: + lang = self.httprequest.cookies.get('lang') + if lang is None: + context = self.session.eval_context(self.context) + lang = context.get('lang') + if lang is None: + lang = self.httprequest.accept_languages.best + if lang is None: + lang = 'en_US' + + lang = LOCALE_ALIASES.get(lang, lang) + lang = lang.replace('-', '_') # RFC2616 uses '-' separators for sublanguages + self._lang = lang + return self._lang + class JsonRequest(WebRequest): """ JSON-RPC2 over HTTP. |
