无法覆盖 Odoo 11 中菜单视图的 "name" 属性?
Can not override "name" attribute on menu view in 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
模块的情况已翻译成我的语言(越南语)。谁能告诉我一些关于这方面的想法?
尝试使用菜单项快捷方式更新名称:
<menuitem id="hr.menu_hr_root"
name="My new string"
sequence="92" />
也尝试使用字符串属性
<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>
如果问题只是发生在翻译上,请检查 是否有用。更新用于旧版本的基本模块。
作为解决方法,您可以转到已翻译的项目并直接更新值。
这会起作用
<menuitem id="hr.menu_hr_root" name="your new string" sequence="92" />
并且不要忘记在依赖项中添加 hr
我知道问题并自行解决。问题是任何可翻译的字符串总是在翻译时被覆盖。我问题中的代码使用默认语言(英语)。翻译后(安装或设置首选项),新的 "name" 字段不再有效(其他字段仍然有效)。
有 2 种可能的解决方案:
1) 如我问题所说,通过id删除记录,然后重新声明记录(将原模块中的代码复制到新模块中)。解决方案的问题是不必要的重复代码。
2) 导出模块的.po 文件(翻译文件)并按预期修改。然后将该文件插入到模块的子文件夹 i18n 中,路径和名称与原始模块相同。最后,运行 带有 --i18n-overwrite 标志的 odoo 服务器覆盖原始模块中的相同文件。
我是 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
模块的情况已翻译成我的语言(越南语)。谁能告诉我一些关于这方面的想法?
尝试使用菜单项快捷方式更新名称:
<menuitem id="hr.menu_hr_root"
name="My new string"
sequence="92" />
也尝试使用字符串属性
<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>
如果问题只是发生在翻译上,请检查
作为解决方法,您可以转到已翻译的项目并直接更新值。
这会起作用
<menuitem id="hr.menu_hr_root" name="your new string" sequence="92" />
并且不要忘记在依赖项中添加 hr
我知道问题并自行解决。问题是任何可翻译的字符串总是在翻译时被覆盖。我问题中的代码使用默认语言(英语)。翻译后(安装或设置首选项),新的 "name" 字段不再有效(其他字段仍然有效)。
有 2 种可能的解决方案:
1) 如我问题所说,通过id删除记录,然后重新声明记录(将原模块中的代码复制到新模块中)。解决方案的问题是不必要的重复代码。
2) 导出模块的.po 文件(翻译文件)并按预期修改。然后将该文件插入到模块的子文件夹 i18n 中,路径和名称与原始模块相同。最后,运行 带有 --i18n-overwrite 标志的 odoo 服务器覆盖原始模块中的相同文件。