From 73a7534bfc0e098a37c9839a7116a67cd9a1381e Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Thu, 23 May 2019 13:42:07 +0000 Subject: [PATCH] [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) --- odoo/addons/base/models/ir_translation.py | 8 ++++++- odoo/addons/base/tests/test_translate.py | 2 +- .../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 @@ + + ir.translation + + + + + + + + + + ir.translation + + + + + + + + + Translated Terms ir.translation