diff --git a/addons/website/models/ir_module_module.py b/addons/website/models/ir_module_module.py index 019519ce71a..b94aa3fff1e 100644 --- a/addons/website/models/ir_module_module.py +++ b/addons/website/models/ir_module_module.py @@ -501,13 +501,15 @@ 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 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) + if not langs_update: + continue + # get dictionaries limited to the requested languages + generic_arch_db_en = generic_arch_db.get('en_US') + specific_arch_db_en = specific_arch_db.get('en_US') + generic_arch_db_update = {k: generic_arch_db[k] for k in langs_update} + specific_arch_db_update = {k: specific_arch_db.get(k, specific_arch_db_en) for k in langs_update} + generic_translation_dictionary = field.get_translation_dictionary(generic_arch_db_en, generic_arch_db_update) + specific_translation_dictionary = field.get_translation_dictionary(specific_arch_db_en, specific_arch_db_update) # update specific_translation_dictionary for term_en, specific_term_langs in specific_translation_dictionary.items(): if term_en not in generic_translation_dictionary: @@ -518,7 +520,6 @@ class IrModuleModule(models.Model): for lang in langs_update: specific_arch_db[lang] = field.translate( lambda term: specific_translation_dictionary.get(term, {lang: None})[lang], specific_arch_db_en) - specific_arch_db['en_US'] = specific_arch_db_en cache.update_raw(View.browse(specific_id), field, [specific_arch_db], dirty=True) default_menu = self.env.ref('website.main_menu', raise_if_not_found=False) diff --git a/addons/website/tests/test_views.py b/addons/website/tests/test_views.py index 30689189db5..802f1e479b4 100644 --- a/addons/website/tests/test_views.py +++ b/addons/website/tests/test_views.py @@ -1025,6 +1025,18 @@ class TestCowViewSaving(TestViewSavingCommon): self.assertEqual(specific_view.with_context(lang='es_ES').arch, '