如何正确更新电子申请菜单标签?

时间:2017-07-28 17:13:38

标签: javascript node.js electron menuitem renderer

我正在尝试在电子应用程序上添加翻译支持,但在更新“应用程序”菜单时遇到了问题。我提到开发已经完成了。在macOS上测试过,但我也愿意让它在Windows上运行。

据我所知,菜单功能只能在主进程中管理,因此我正在使用ipcMain& ipcRenderer之间的主要和&渲染器过程。

问题是我正在更新一个标签,它似乎已更新(显示在日志中),但它不会在渲染菜单中更新它。

    //Menu.getApplicationMenu() is in english
    
    mainMenu.language = "nl_nl";
    //updating 1 label
    mainMenu.object.items[0].submenu.items[0].label =i18n.__({phrase: 'Hello', locale: mainMenu.language}),
    
    Menu.setApplicationMenu(mainMenu.object);
    let currentMenu = Menu.getApplicationMenu();
    //currentMenu reflects the change but the rendered menu still shows the old value (english)

1 个答案:

答案 0 :(得分:1)

我认为你遗失了Menu.setApplicationMenu(template)

要使用Menu.buildFromTemplate(mainMenu.object),首先需要在模板上运行Menu.setApplicationMenu(template),将其转换为{{1}}可以接收的内容。

这将是这样的:

Example

Ref.