[FIX] web: prevent double translation in kanban view

The kanban view uses a template which comes from the server, already
translated.  Before this commit, it tried to retranslate again the
template in qweb.js, which may be a problem (in addition to the useless
work): if some english string A is translated in B (french), but B is
also a valid english string which is translated into C in french, then
we will have a wrong result.

In this commit, we simply add a flag to disable the translation process, which
should also slightly improve the kanban view rendering performance.
This commit is contained in:
Géry Debongnie
2017-12-18 16:38:30 +01:00
parent 2eb0180021
commit 5e70e949d5
2 changed files with 14 additions and 3 deletions
+13 -2
View File
@@ -5,7 +5,18 @@ var translation = require('web.translation');
var _t = translation._t;
function QWeb(debug, default_dict) {
/**
* @param {boolean} debug
* @param {Object} default_dict
* @param {boolean} [enableTranslation=true] if true (this is the default),
* the rendering will translate all strings that are not marked with
* t-translation=off. This is useful for the kanban view, which uses a
* template which is already translated by the server
*/
function QWeb(debug, default_dict, enableTranslation) {
if (enableTranslation === undefined) {
enableTranslation = true;
}
var qweb = new QWeb2.Engine();
qweb.default_dict = _.extend({}, default_dict || {}, {
'_' : _,
@@ -16,7 +27,7 @@ function QWeb(debug, default_dict) {
'csrf_token': odoo.csrf_token,
});
qweb.debug = debug;
qweb.preprocess_node = preprocess_node;
qweb.preprocess_node = enableTranslation ? preprocess_node : function () {};
return qweb;
}
@@ -94,7 +94,7 @@ var KanbanRenderer = BasicRenderer.extend({
this._super.apply(this, arguments);
this.widgets = [];
this.qweb = new QWeb(session.debug, {_s: session.origin});
this.qweb = new QWeb(session.debug, {_s: session.origin}, false);
var templates = findInNode(this.arch, function (n) { return n.tag === 'templates';});
transformQwebTemplate(templates, state.fields);
this.qweb.add_template(utils.json_node_to_xml(templates));