diff --git a/doc/reference/translations.rst b/doc/reference/translations.rst index 81ec506df63..2acdaf48f67 100644 --- a/doc/reference/translations.rst +++ b/doc/reference/translations.rst @@ -37,7 +37,7 @@ translation tool like POEdit_ or by simply copying the template to a new file called :file:`{language}.po`. Translation files should be put in :file:`{yourmodule}/i18n/`, next to :file:`{yourmodule}.pot`, and will be automatically loaded by Odoo when the corresponding language is installed (via -:menuselection:`Settings --> Translations --> Load a Translation`) +:menuselection:`Settings --> Translations --> Languages`) .. note:: translations for all loaded languages are also installed or updated when installing or updating a module diff --git a/odoo/addons/base/models/res_lang.py b/odoo/addons/base/models/res_lang.py index 6fcd82354b6..050eba993ff 100644 --- a/odoo/addons/base/models/res_lang.py +++ b/odoo/addons/base/models/res_lang.py @@ -212,6 +212,20 @@ class Lang(models.Model): langs = self.with_context(active_test=True).search([]) return sorted([(lang.code, lang.name) for lang in langs], key=itemgetter(1)) + def toggle_active(self): + super().toggle_active() + # Automatically load translation + if len(self) == 1 and self.active: + return { + 'name': "Load a Translation", + 'type': 'ir.actions.act_window', + 'res_model': 'base.language.install', + 'context': {'default_lang': self.code}, + 'view_mode': 'form', + 'target': 'new', + 'views': [[False, 'form']], + } + @api.model_create_multi def create(self, vals_list): self.clear_caches() diff --git a/odoo/addons/base/models/res_partner.py b/odoo/addons/base/models/res_partner.py index 185e5a28dfa..711c46d4460 100644 --- a/odoo/addons/base/models/res_partner.py +++ b/odoo/addons/base/models/res_partner.py @@ -154,6 +154,7 @@ class Partner(models.Model): ref = fields.Char(string='Reference', index=True) lang = fields.Selection(_lang_get, string='Language', default=lambda self: self.env.lang, help="All the emails and documents sent to this contact will be translated in this language.") + active_lang_count = fields.Integer(compute='_compute_active_lang_count') tz = fields.Selection(_tz_get, string='Timezone', default=lambda self: self._context.get('tz'), help="When printing documents and exporting/importing data, time values are computed according to this timezone.\n" "If the timezone is not set, UTC (Coordinated Universal Time) is used.\n" @@ -253,6 +254,11 @@ class Partner(models.Model): for partner in self: partner.display_name = names.get(partner.id) + def _compute_active_lang_count(self): + lang_count = len(self.env['res.lang'].get_installed()) + for partner in self: + partner.active_lang_count = lang_count + @api.depends('tz') def _compute_tz_offset(self): for partner in self: diff --git a/odoo/addons/base/views/res_lang_views.xml b/odoo/addons/base/views/res_lang_views.xml index ee842a22188..7bd7c9954fe 100644 --- a/odoo/addons/base/views/res_lang_views.xml +++ b/odoo/addons/base/views/res_lang_views.xml @@ -5,16 +5,15 @@ res.lang.tree res.lang - + - - - - + + + +