diff --git a/odoo/addons/base/models/ir_translation.py b/odoo/addons/base/models/ir_translation.py index 938543ce456..9e9baa3a0e8 100644 --- a/odoo/addons/base/models/ir_translation.py +++ b/odoo/addons/base/models/ir_translation.py @@ -438,7 +438,7 @@ class IrTranslation(models.Model): discarded += translation else: vals = {'src': src, 'state': translation.state} - if translation.lang == 'en_US': + if translation.lang == records.env.lang: vals['value'] = src translation.write(vals) done.add((src, translation.lang)) diff --git a/odoo/addons/base/tests/test_translate.py b/odoo/addons/base/tests/test_translate.py index 981d826cfd4..6ed3981512a 100644 --- a/odoo/addons/base/tests/test_translate.py +++ b/odoo/addons/base/tests/test_translate.py @@ -649,29 +649,41 @@ class TestXMLTranslation(TransactionCase): terms_en = ('Bread and cheeze',) terms_fr = ('Pain et fromage',) terms_nl = ('Brood and kaas',) - view = self.create_view(archf, terms_en, fr_FR=terms_fr, nl_NL=terms_nl) + view = self.create_view(archf, terms_en, en_US=terms_en, fr_FR=terms_fr, nl_NL=terms_nl) - env_en = self.env(context={}) - env_us = self.env(context={'lang': 'en_US'}) + env_nolang = self.env(context={}) + env_en = 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_nolang).arch_db, archf % terms_en) 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.with_env(env_en).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_nolang).arch_db, archf % terms_en) 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) + view = self.create_view(archf, terms_fr, en_US=terms_en, fr_FR=terms_fr, nl_NL=terms_nl) + # modify source term in view in another language with close term + new_terms_fr = ('Pains et fromage',) + view.with_env(env_fr).write({'arch_db': archf % new_terms_fr}) + view.invalidate_cache(fnames=['arch_db'], ids=view.ids) + + # check whether translations have been synchronized + self.assertEqual(view.with_env(env_nolang).arch_db, archf % new_terms_fr) + self.assertEqual(view.with_env(env_en).arch_db, archf % terms_en) + self.assertEqual(view.with_env(env_fr).arch_db, archf % new_terms_fr) + self.assertEqual(view.with_env(env_nl).arch_db, archf % terms_nl) + def test_sync_update(self): """ Check translations after minor change in source terms. """ archf = '
%s
%s
'