mirror of https://github.com/OCA/web.git
[FIX] web_translate_dialog: Translations were not generated, and then cannot be stored properly
parent
442ebe182e
commit
8360d8c8a3
|
@ -24,15 +24,15 @@ var TranslateDialog = Dialog.extend({
|
|||
template: "TranslateDialog",
|
||||
init: function(parent, options) {
|
||||
var title_string = _t("Translate fields: /");
|
||||
var field_names;
|
||||
var field_names = {};
|
||||
var single_field = false;
|
||||
if (options.field){
|
||||
this.record_id = options.field.id;
|
||||
var record = parent.model.get(options.field.id)
|
||||
this.model = record.model;
|
||||
field_names = [options.field.fieldName];
|
||||
field_names[options.field.fieldName] = record.fields[options.field.fieldName];
|
||||
single_field = true;
|
||||
title_string = title_string.replace('/', field_names);
|
||||
title_string = title_string.replace('/', record.fields[options.field.fieldName].string);
|
||||
}
|
||||
else {
|
||||
this.record_id = parent.handle;
|
||||
|
@ -65,11 +65,11 @@ var TranslateDialog = Dialog.extend({
|
|||
});
|
||||
},
|
||||
get_translatable_fields: function(parent) {
|
||||
var field_list = [];
|
||||
var field_list = {};
|
||||
_.each(parent.renderer.state.fields, function(field, name){
|
||||
var related_readonly = typeof field.related !== 'undefined' && field.readonly;
|
||||
if (field.translate == true && !related_readonly && parent.renderer.state.getFieldNames().includes(name)){
|
||||
field_list.push(name);
|
||||
field_list[name] = field;
|
||||
}
|
||||
});
|
||||
return field_list;
|
||||
|
@ -116,10 +116,10 @@ var TranslateDialog = Dialog.extend({
|
|||
},
|
||||
set_maxlength: function(){
|
||||
// set maxlength if initial field has size attr
|
||||
_.each(this.translatable_fields, function(field_name){
|
||||
var size = $('[name='+field_name+']')[0].maxLength;
|
||||
_.each(this.translatable_fields, function(field, name){
|
||||
var size = $('[name='+name+']')[0].maxLength;
|
||||
if (size > 0){
|
||||
this.$('input.oe_translation_field[name$="'+field_name+'"], textarea.oe_translation_field[name$="'+field_name+'"]').attr('maxlength', size);
|
||||
this.$('input.oe_translation_field[name$="'+field_name+'"], textarea.oe_translation_field[name$="'+name+'"]').attr('maxlength', size);
|
||||
}
|
||||
}, this);
|
||||
},
|
||||
|
@ -169,7 +169,10 @@ var TranslateDialog = Dialog.extend({
|
|||
deferred = [];
|
||||
|
||||
this.$('.oe_translation_field').val('').removeClass('touched');
|
||||
|
||||
var translatable_fields = []
|
||||
_.forEach(this.translatable_fields, function(field, name) {
|
||||
translatable_fields.push(name)
|
||||
});
|
||||
var def = $.Deferred();
|
||||
deferred.push(def);
|
||||
rpc.query({
|
||||
|
@ -179,7 +182,7 @@ var TranslateDialog = Dialog.extend({
|
|||
[this.res_id],
|
||||
],
|
||||
kwargs: {
|
||||
field_names: this.translatable_fields,
|
||||
field_names: translatable_fields,
|
||||
},
|
||||
}).done(
|
||||
function (res) {
|
||||
|
@ -259,6 +262,7 @@ FormController.include({
|
|||
},
|
||||
on_button_translate: function() {
|
||||
var self = this;
|
||||
var record = self.model.get(this.handle)
|
||||
$.when(this.has_been_loaded).then(function() {
|
||||
self.open_translate_dialog(null, self.getSelectedIds()[0]);
|
||||
});
|
||||
|
@ -273,8 +277,20 @@ BasicController.include({
|
|||
|
||||
_onTranslate: function(event) {
|
||||
// the image next to the fields opens the translate dialog
|
||||
event.stopPropagation();
|
||||
var self = this;
|
||||
var record = this.model.get(event.data.id, {raw: true});
|
||||
this._rpc({
|
||||
route: '/web/dataset/call_button',
|
||||
params: {
|
||||
model: 'ir.translation',
|
||||
method: 'translate_fields',
|
||||
args: [record.model, record.res_id, event.data.fieldName, record.getContext()],
|
||||
}
|
||||
}).then(function () {
|
||||
var res_id = event.target.res_id ? event.target.res_id : event.target.state.res_id;
|
||||
this.open_translate_dialog(event.data, res_id);
|
||||
self.open_translate_dialog(event.data, res_id);
|
||||
})
|
||||
},
|
||||
});
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
</th>
|
||||
</tr>
|
||||
<t t-foreach="widget.translatable_fields" t-as="field_name">
|
||||
<t t-set="field" t-value="widget.view.searchView.fields[field_name]" />
|
||||
<t t-set="field" t-value="widget.translatable_fields[field_name]"/>
|
||||
<tr t-att-data-field="field_name">
|
||||
<td t-if="!widget.single_field" class="oe_form_frame_cell field_name" width="1%" nowrap="nowrap">
|
||||
<label class="oe_label"><t t-esc="field.string"/>:</label>
|
||||
|
|
Loading…
Reference in New Issue