diff options
| author | Martin Trigaux <mat@odoo.com> | 2019-05-23 13:42:07 +0000 |
|---|---|---|
| committer | Martin Trigaux <mat@odoo.com> | 2019-07-02 09:53:08 +0000 |
| commit | 73a7534bfc0e098a37c9839a7116a67cd9a1381e (patch) | |
| tree | 89e33ca43075b4b788cfa1e1004a3b2605fc8381 | |
| parent | 3910b2b29359eaba63063123dcc147e6289208f5 (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.py | 8 | ||||
| -rw-r--r-- | odoo/addons/base/tests/test_translate.py | 2 | ||||
| -rw-r--r-- | odoo/addons/base/views/ir_translation_views.xml | 21 |
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> |
