[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:
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user