[IMP] Improve code
bzr revid: vta@openerp.com-20121227132530-2qrid9metzuuhqpo
This commit is contained in:
@@ -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();
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user