odoo17 升级小细节1

1、Model not found: ir.translation

以前的历史版本做了一个小工具对翻译数据库在前端查找修改翻译,但在升级时,才发现odoo17去除了ir.translation表,查看分析了下原码,原来在这部分变化很大,在菜单中删除了以前的在设置中加载翻译的功能。17中显示如下:

代码:

class BaseLanguageImport(models.TransientModel):
    _name = "base.language.import"
    _description = "Language Import"

    name = fields.Char('Language Name', required=True)
    code = fields.Char('ISO Code', size=6, required=True,
                       help="ISO Language and Country code, e.g. en_US")
    data = fields.Binary('File', required=True, attachment=False)
    filename = fields.Char('File Name', required=True)
    overwrite = fields.Boolean('Overwrite Existing Terms',
                               default=True,
                               help="If you enable this option, existing translations (including custom ones) "
                                    "will be overwritten and replaced by those in this file")

    def import_lang(self):
        Lang = self.env["res.lang"]
        for overwrite, base_lang_imports in tools.groupby(self, operator.itemgetter('overwrite')):
            translation_importer = TranslationImporter(self.env.cr)
            for base_lang_import in base_lang_imports:
                if not Lang._activate_lang(base_lang_import.code):
                    Lang._create_lang(base_lang_import.code, lang_name=base_lang_import.name)
                try:
                    with TemporaryFile('wb+') as buf:
                        buf.write(base64.decodebytes(base_lang_import.data))
                        fileformat = splitext(base_lang_import.filename)[-1][1:].lower()
                        translation_importer.load(buf, fileformat, base_lang_import.code)
                except Exception as e:
                    _logger.warning('Could not import the file due to a format mismatch or it being malformed.')
                    raise UserError(
                        _('File %r not imported due to format mismatch or a malformed file.'
                          ' (Valid formats are .csv, .po)\n\nTechnical Details:\n%s',
                          base_lang_import.filename, tools.ustr(e))
                    )
            translation_importer.save(overwrite=overwrite)
        return True

主要翻译模块代码:

   def _load(self, reader, lang, xmlids=None):
        if xmlids and not isinstance(xmlids, set):
            xmlids = set(xmlids)
        for row in reader:
            if not row.get('value') or not row.get('src'):  # ignore empty translations
                continue
            if row.get('type') == 'code':  # ignore code translations
                continue
            model_name = row.get('imd_model')
            module_name = row['module']
            if model_name not in self.env:
                continue
            field_name = row['name'].split(',')[1]
            field = self.env[model_name]._fields.get(field_name)
            if not field or not field.translate or not field.store:
                continue
            xmlid = module_name + '.' + row['imd_name']
            if xmlids and xmlid not in xmlids:
                continue
            if row.get('type') == 'model' and field.translate is True:
                self.model_translations[model_name][field_name][xmlid][lang] = row['value']
            elif row.get('type') == 'model_terms' and callable(field.translate):
                self.model_terms_translations[model_name][field_name][xmlid][row['src']][lang] = row['value']

翻译字段主要放在了Ir_mode_相关数据库表的josnb字段中

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
升级Odoo10到Odoo11是指将之前使用的Odoo10版本升级到新发布的Odoo11版本。 Odoo是一款开源的企业管理软件,提供了一系列的应用程序,涵盖了销售、采购、库存管理、人力资源、会计等多个业务领域。每个新版本的发布都会带来新的功能和改进,用户可以通过升级来享受这些新的功能和改进。 升级Odoo10到Odoo11需要以下几个步骤: 1.备份数据:在升级之前,首先需要备份当前使用的Odoo10的数据库。这样可以在升级过程中出现问题时恢复数据库,避免数据丢失。 2.下载并安装Odoo11:从官方网站或Odoo的代码仓库中下载Odoo11的安装包。安装包提供了不同的安装方式,可以选择合适的方式进行安装。 3.迁移自定义代码和模块:如果在Odoo10中使用了自定义的代码或模块,需要对其进行迁移。首先要确保这些代码和模块是兼容Odoo11的,然后将其复制到新安装的Odoo11中。 4.执行数据库升级:使用Odoo提供的数据库升级工具,执行数据库升级升级工具会根据数据库中已有的数据结构,将其转换成适应Odoo11的格式。这个过程可能需要一些时间,具体的耗时取决于数据库的大小和复杂程度。 5.测试和调试:在进行生产环境升级之前,可以先在测试环境中进行测试和调试。这可以帮助发现和解决潜在的问题,确保在升级到生产环境之前一切顺利。 6.升级生产环境:当测试和调试完成后,可以将升级应用到生产环境中。在升级之前,再次确认数据库备份已完成,以防万一。 总结来说,升级Odoo10到Odoo11需要进行数据备份、下载安装Odoo11、迁移自定义代码和模块、执行数据库升级、测试和调试以及升级到生产环境这几个步骤。这样就可以顺利地将Odoo10升级Odoo11,并享受新的功能和改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信息化未来

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值