[FIX] base: translate_xml update src on orig lang update

This is a changement succeeding 13.0 7eb603b26c, in that commit the issue
was solved but only in the case of en_US base language of translation
which can not be the case on a website.

opw-2153422
closes #42269

closes odoo/odoo#42467

X-original-commit: 191075454563c7e15b22d20b21afeb8bcc5601c4
Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
This commit is contained in:
Nicolas Lempereur
2019-12-30 11:58:03 +00:00
parent e901dfe466
commit d118cefd97
2 changed files with 19 additions and 7 deletions
+1 -1
View File
@@ -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))
+18 -6
View File
@@ -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 = '<form string="X"><div>%s</div><div>%s</div></form>'