summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Trigaux <mat@odoo.com>2019-05-23 13:42:07 +0000
committerMartin Trigaux <mat@odoo.com>2019-07-02 09:53:08 +0000
commit73a7534bfc0e098a37c9839a7116a67cd9a1381e (patch)
tree89e33ca43075b4b788cfa1e1004a3b2605fc8381
parent3910b2b29359eaba63063123dcc147e6289208f5 (diff)
[IMP] base: display field translation in a popup
The goal of this change is to allow the user to stay in the form view and edit the translations in one go. Generate also English translations to make the source=English a bit less true. It was already the case for callable translations method Adapt the test that was ambigious (verified no French translation was duplicated but an English translation is created)
-rw-r--r--odoo/addons/base/models/ir_translation.py8
-rw-r--r--odoo/addons/base/tests/test_translate.py2
-rw-r--r--odoo/addons/base/views/ir_translation_views.xml21
3 files changed, 29 insertions, 2 deletions
diff --git a/odoo/addons/base/models/ir_translation.py b/odoo/addons/base/models/ir_translation.py
index 717d0aef67d..f11712858df 100644
--- a/odoo/addons/base/models/ir_translation.py
+++ b/odoo/addons/base/models/ir_translation.py
@@ -620,7 +620,7 @@ class IrTranslation(models.Model):
query = """ INSERT INTO ir_translation (lang, type, name, res_id, src, module, state)
SELECT l.code, 'model', %(name)s, %(res_id)s, %(src)s, %(module)s, 'to_translate'
FROM res_lang l
- WHERE l.active AND l.translatable AND l.code != 'en_US' AND NOT EXISTS (
+ WHERE l.active AND l.translatable AND NOT EXISTS (
SELECT 1 FROM ir_translation
WHERE lang=l.code AND type='model' AND name=%(name)s AND res_id=%(res_id)s
);
@@ -746,6 +746,12 @@ class IrTranslation(models.Model):
except AccessError:
pass
+ action['target'] = 'new'
+ if callable(fld.translate):
+ action['view_id'] = self.env.ref('base.view_translation_lang_src_value_tree').id,
+ else:
+ action['view_id'] = self.env.ref('base.view_translation_lang_value_tree').id,
+
return action
@api.model
diff --git a/odoo/addons/base/tests/test_translate.py b/odoo/addons/base/tests/test_translate.py
index f6a556be937..b70066f8e72 100644
--- a/odoo/addons/base/tests/test_translate.py
+++ b/odoo/addons/base/tests/test_translate.py
@@ -327,7 +327,7 @@ class TestTranslation(TransactionCase):
})
self.env['ir.translation'].translate_fields('res.partner.category', padawans.id, 'name')
translations = self.env['ir.translation'].search([
- ('res_id', '=', padawans.id), ('name', '=', 'res.partner.category,name')
+ ('res_id', '=', padawans.id), ('name', '=', 'res.partner.category,name'), ('lang', '=', 'fr_FR'),
])
self.assertEqual(len(translations), 1, "Translations were not duplicated after `translate_fields` call")
self.assertEqual(translations.value, "Apprenti", "The first translation must stay")
diff --git a/odoo/addons/base/views/ir_translation_views.xml b/odoo/addons/base/views/ir_translation_views.xml
index db5437ae37f..f1c373fcc96 100644
--- a/odoo/addons/base/views/ir_translation_views.xml
+++ b/odoo/addons/base/views/ir_translation_views.xml
@@ -78,6 +78,27 @@
</field>
</record>
+ <record id="view_translation_lang_value_tree" model="ir.ui.view">
+ <field name="model">ir.translation</field>
+ <field name="arch" type="xml">
+ <tree string="Translations" editable="top" create="false">
+ <field name="lang" readonly="1"/>
+ <field name="value"/>
+ </tree>
+ </field>
+ </record>
+
+ <record id="view_translation_lang_src_value_tree" model="ir.ui.view">
+ <field name="model">ir.translation</field>
+ <field name="arch" type="xml">
+ <tree string="Translations" editable="top" create="false">
+ <field name="lang" readonly="1"/>
+ <field name="src" readonly="1"/>
+ <field name="value"/>
+ </tree>
+ </field>
+ </record>
+
<record id="action_translation" model="ir.actions.act_window">
<field name="name">Translated Terms</field>
<field name="res_model">ir.translation</field>