diff --git a/addons/website/models/ir_module_module.py b/addons/website/models/ir_module_module.py index c5051a2a545..019519ce71a 100644 --- a/addons/website/models/ir_module_module.py +++ b/addons/website/models/ir_module_module.py @@ -501,10 +501,11 @@ class IrModuleModule(models.Model): if not generic_arch_db: continue langs_update = (langs & generic_arch_db.keys()) - {'en_US'} + specific_langs = (langs & specific_arch_db.keys()) - {'en_US'} generic_arch_db_en = generic_arch_db.pop('en_US') specific_arch_db_en = specific_arch_db.pop('en_US') generic_arch_db = {k: generic_arch_db[k] for k in langs_update} - specific_arch_db = {k: specific_arch_db.get(k, specific_arch_db_en) for k in langs_update} + specific_arch_db = {k: specific_arch_db.get(k, specific_arch_db_en) for k in specific_langs} generic_translation_dictionary = field.get_translation_dictionary(generic_arch_db_en, generic_arch_db) specific_translation_dictionary = field.get_translation_dictionary(specific_arch_db_en, specific_arch_db) # update specific_translation_dictionary diff --git a/addons/website/tests/test_views.py b/addons/website/tests/test_views.py index a039f42b219..30689189db5 100644 --- a/addons/website/tests/test_views.py +++ b/addons/website/tests/test_views.py @@ -1010,12 +1010,21 @@ class TestCowViewSaving(TestViewSavingCommon): self.assertEqual(specific_view.with_context(lang='fr_BE').arch, '
bonjour
', "updating translation of base view doesn't update specific view") - self.env['ir.module.module']._load_module_terms(['website'], ['en_US', 'fr_BE'], overwrite=True) + self.env['res.lang']._activate_lang('es_ES') + # Translate specific 'arch_db' while the generic value has no content for the + # translation language. + specific_view.update_field_translations('arch_db', {'es_ES': {'hello': 'hola'}}) + self.assertEqual(specific_view.with_context(lang='es_ES').arch, '
hola
') + + self.env['ir.module.module']._load_module_terms(['website'], ['en_US', 'fr_BE', 'es_ES'], overwrite=True) specific_view.invalidate_model(['arch_db', 'arch']) self.assertEqual(specific_view.with_context(lang='fr_BE').arch, '
salut
', "loading module translation copy translation from base to specific view") + self.assertEqual(specific_view.with_context(lang='es_ES').arch, '
hola
', + "loading module translation should not remove specific translations that are not available on base view") + def test_soc_complete_flow(self): """ Check the creation of views from specific-website environments.