diff --git a/odoo/addons/base/models/ir_translation.py b/odoo/addons/base/models/ir_translation.py index a133758c2c1..938543ce456 100644 --- a/odoo/addons/base/models/ir_translation.py +++ b/odoo/addons/base/models/ir_translation.py @@ -437,7 +437,10 @@ class IrTranslation(models.Model): elif (src, translation.lang) in done: discarded += translation else: - translation.write({'src': src, 'state': translation.state}) + vals = {'src': src, 'state': translation.state} + if translation.lang == 'en_US': + vals['value'] = src + translation.write(vals) done.add((src, translation.lang)) # process outdated and discarded translations diff --git a/odoo/addons/base/tests/test_translate.py b/odoo/addons/base/tests/test_translate.py index 0d421842e0d..981d826cfd4 100644 --- a/odoo/addons/base/tests/test_translate.py +++ b/odoo/addons/base/tests/test_translate.py @@ -652,19 +652,23 @@ class TestXMLTranslation(TransactionCase): view = self.create_view(archf, terms_en, fr_FR=terms_fr, nl_NL=terms_nl) env_en = self.env(context={}) + env_us = self.env(context={'lang': 'en_US'}) env_fr = self.env(context={'lang': 'fr_FR'}) env_nl = self.env(context={'lang': 'nl_NL'}) self.assertEqual(view.with_env(env_en).arch_db, archf % terms_en) + self.assertEqual(view.with_env(env_us).arch_db, archf % terms_en) self.assertEqual(view.with_env(env_fr).arch_db, archf % terms_fr) self.assertEqual(view.with_env(env_nl).arch_db, archf % terms_nl) # modify source term in view (fixed type in 'cheeze') terms_en = ('Bread and cheese',) view.write({'arch_db': archf % terms_en}) + view.invalidate_cache(fnames=['arch_db'], ids=view.ids) # check whether translations have been synchronized self.assertEqual(view.with_env(env_en).arch_db, archf % terms_en) + self.assertEqual(view.with_env(env_us).arch_db, archf % terms_en) self.assertEqual(view.with_env(env_fr).arch_db, archf % terms_fr) self.assertEqual(view.with_env(env_nl).arch_db, archf % terms_nl)