diff --git a/openerp/http.py b/openerp/http.py index 4900e140ce0..c0ca2489afc 100644 --- a/openerp/http.py +++ b/openerp/http.py @@ -1357,9 +1357,16 @@ class Root(object): httprequest.session.db = db_monodb(httprequest) def setup_lang(self, httprequest): - if not "lang" in httprequest.session.context: - lang = httprequest.accept_languages.best or "en_US" - lang = babel.core.LOCALE_ALIASES.get(lang, lang).replace('-', '_') + if "lang" not in httprequest.session.context: + alang = httprequest.accept_languages.best or "en-US" + try: + code, territory, _, _ = babel.core.parse_locale(alang, sep='-') + if territory: + lang = '%s_%s' % (code, territory) + else: + lang = babel.code.LOCALE_ALIASES[code] + except (ValueError, KeyError): + lang = 'en_US' httprequest.session.context["lang"] = lang def get_request(self, httprequest):