无法覆盖Odoo 11中菜单视图上的“名称”属性?

时间:2019-01-27 10:21:30

标签: xml odoo odoo-11

我是Odoo的新手。我想将最上面的菜单名称(不执行任何操作)从Employee更改为My new string

<record id="hr.menu_hr_root" model="ir.ui.menu">
    <field name="name">My new string</field>
    <field name="sequence">92</field>
</record>

我确定id是正确的,因为sequence属性已按预期更改。问题是name始终保持不变。我要修改的菜单来自默认的hr模块。我目前唯一的解决方案是删除记录,并使用新值重新创建它。我尝试更新自己的其他菜单视图,并且它们按预期工作,但是默认hr模块的情况却被翻译成我的语言(越南语)。有人可以告诉我一些想法吗?

3 个答案:

答案 0 :(得分:6)

我知道了问题并自己解决了。问题在于,翻译时总是会覆盖任何可翻译的字符串。我问题中的代码使用默认语言(英语)工作。翻译后(在安装或设置首选项时),新的“名称”字段不再起作用(其他字段仍然起作用)。

可能有2种解决方案:

1)正如我所说的,通过id删除记录,然后重新声明记录(将原始模块中的代码复制到新模块中)。解决方案的问题是不必要的重复代码。

2)导出模块的.po文件(翻译文件),并修改它如预期。然后将文件转换为相同的路径和名称与原始模块模块的子文件夹国际化。最后,使用--i18n-overwrite标志运行odoo服务器以覆盖原始模块中的相同文件。

答案 1 :(得分:3)

尝试使用菜单项快捷方式更新名称:

<menuitem id="hr.menu_hr_root"
          name="My new string"
          sequence="92" />

也尝试使用string属性

<menuitem id="hr.menu_hr_root"
          string="My new string"
          sequence="92" />

菜单项指向动作,并从那里获取名称,因此您可能必须覆盖动作名称(因为某些用户已经在您的问题中进行了评论)。只是带有动作+菜单项的原始示例:

<record model="ir.actions.act_window" id="account_analytic_distribution_action">
    <field name="name">Analytic distributions</field>
    <field name="type">ir.actions.act_window</field>
    <field name="res_model">account.analytic.distribution</field>
    <field name="view_type">form</field>
    <field name="view_mode">tree,form</field>
    <field name="search_view_id" ref="account_analytic_distribution_search"/>
</record>

<menuitem parent="account.menu_analytic_accounting"
          id="menu_account_analytic_distribution"
          action="account_analytic_distribution_action"
          groups="analytic.group_analytic_accounting" />

并修改动作名称:

<record model="ir.actions.act_window" id="account.account_analytic_distribution_action">
    <field name="name">New name</field>
</record>

如果翻译仅是问题所在,请检查this answer是否有用。更新用于旧版本的基本模块。

作为解决方法,您可以转到已翻译的项目并直接更新值。

答案 2 :(得分:2)

这将起作用

<menuitem id="hr.menu_hr_root" name="your new string" sequence="92" />

并且不要忘记添加 hr 依赖项