78 lines
3.1 KiB
Python
78 lines
3.1 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||
|
|
||
|
from odoo import api, fields, models, _
|
||
|
|
||
|
|
||
|
class BaseLanguageInstall(models.TransientModel):
|
||
|
_name = "base.language.install"
|
||
|
_description = "Install Language"
|
||
|
|
||
|
@api.model
|
||
|
def _default_lang_ids(self):
|
||
|
""" Display the selected language when using the 'Update Terms' action
|
||
|
from the language list view
|
||
|
"""
|
||
|
if self._context.get('active_model') == 'res.lang':
|
||
|
return self._context.get('active_ids') or [self._context.get('active_id')]
|
||
|
return False
|
||
|
|
||
|
# add a context on the field itself, to be sure even inactive langs are displayed
|
||
|
lang_ids = fields.Many2many('res.lang', 'res_lang_install_rel',
|
||
|
'language_wizard_id', 'lang_id', 'Languages',
|
||
|
default=_default_lang_ids, context={'active_test': False}, required=True)
|
||
|
overwrite = fields.Boolean('Overwrite Existing Terms',
|
||
|
default=True,
|
||
|
help="If you check this box, your customized translations will be overwritten and replaced by the official ones.")
|
||
|
first_lang_id = fields.Many2one('res.lang',
|
||
|
compute='_compute_first_lang_id',
|
||
|
help="Used when the user only selects one language and is given the option to switch to it")
|
||
|
|
||
|
def _compute_first_lang_id(self):
|
||
|
self.first_lang_id = False
|
||
|
for lang_installer in self.filtered('lang_ids'):
|
||
|
lang_installer.first_lang_id = lang_installer.lang_ids[0]
|
||
|
|
||
|
def lang_install(self):
|
||
|
self.ensure_one()
|
||
|
mods = self.env['ir.module.module'].search([('state', '=', 'installed')])
|
||
|
self.lang_ids.active = True
|
||
|
mods._update_translations(self.lang_ids.mapped('code'), self.overwrite)
|
||
|
|
||
|
if len(self.lang_ids) == 1:
|
||
|
return {
|
||
|
'type': 'ir.actions.act_window',
|
||
|
'res_model': 'base.language.install',
|
||
|
'res_id': self.id,
|
||
|
'view_mode': 'form',
|
||
|
'target': 'new',
|
||
|
'views': [[self.env.ref('base.language_install_view_form_lang_switch').id, 'form']],
|
||
|
}
|
||
|
|
||
|
return {
|
||
|
'type': 'ir.actions.client',
|
||
|
'tag': 'display_notification',
|
||
|
'context': dict(self._context, active_ids=self.ids),
|
||
|
'target': 'new',
|
||
|
'params': {
|
||
|
'message': _("The languages that you selected have been successfully installed.\
|
||
|
Users can choose their favorite language in their preferences."),
|
||
|
'type': 'success',
|
||
|
'sticky': False,
|
||
|
'next': {'type': 'ir.actions.act_window_close'},
|
||
|
}
|
||
|
}
|
||
|
|
||
|
def reload(self):
|
||
|
return {
|
||
|
'type': 'ir.actions.client',
|
||
|
'tag': 'reload',
|
||
|
}
|
||
|
|
||
|
def switch_lang(self):
|
||
|
self.env.user.lang = self.first_lang_id.code
|
||
|
return {
|
||
|
'type': 'ir.actions.client',
|
||
|
'tag': 'reload_context',
|
||
|
}
|