[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:
@@ -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))
|
||||
|
||||
@@ -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>'
|
||||
|
||||
Reference in New Issue
Block a user