[IMP] Improve code

bzr revid: vta@openerp.com-20121227132530-2qrid9metzuuhqpo
This commit is contained in:
vta vta@openerp.com
2012-12-27 14:25:30 +01:00
parent 685ca6f022
commit 27938877d5
@@ -3,16 +3,24 @@ openerp.portal_anonymous = function(instance) {
instance.web.Session.include({
load_translations: function() {
var self = this;
if (self.username === 'anonymous') {
self.user_context.lang = (navigator.language || navigator.userLanguage).replace('-', '_');
if (self.user_context.lang.length === 2) {
return (new instance.web.Model('res.lang')).query(['code'])
.filter([['iso_code', '=', self.user_context.lang]]).all()
.then(function(result) {
self.user_context.lang = result[0].code;
return self._super();
});
}
// browser_lang can contain 'xx' or 'xx_XX'
// we use the 'xx' to find matching languages installed in the DB
var browser_lang = (navigator.language || navigator.userLanguage).replace('-', '_');
// By default for anonymous session.user_context.lang === 'en_US',
// so do nothing if browser_lang is contained in 'en_US' (like 'en' or 'en_US')
if (this.username === 'anonymous' && this.user_context.lang.indexOf(browser_lang) === -1) {
return (new instance.web.Model('res.lang')).query(['code', 'iso_code'])
.filter([['code', 'like', browser_lang.substring(0, 2).toLowerCase()]]).all()
.then(function(langs) {
// If langs is empty (OpenERP doesn't support the language),
// then don't change session.user_context.lang else take the
// first returned language
if (langs.length > 0) {
self.user_context.lang = langs.sort(function(a, b) {
return a.length - b.length;
})[0].code;
}
});
}
return self._super();
},