如何正确更新电子应用程序菜单标签?
How to properly update electron application menu labels?
我正在尝试在电子应用程序上添加翻译支持,但在更新应用程序菜单时遇到了问题。我提到开发已在 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)
我认为你缺少 Menu.buildFromTemplate(mainMenu.object)
。
要使用 Menu.setApplicationMenu(template)
,您首先需要 运行 Menu.buildFromTemplate(mainMenu.object)
在模板上将其转换为 Menu.setApplicationMenu(template)
可以使用的东西。
会是这样的:
const menu = Menu.buildFromTemplate(template);
Menu.setApplicationMenu(menu);
我正在尝试在电子应用程序上添加翻译支持,但在更新应用程序菜单时遇到了问题。我提到开发已在 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)
我认为你缺少 Menu.buildFromTemplate(mainMenu.object)
。
要使用 Menu.setApplicationMenu(template)
,您首先需要 运行 Menu.buildFromTemplate(mainMenu.object)
在模板上将其转换为 Menu.setApplicationMenu(template)
可以使用的东西。
会是这样的:
const menu = Menu.buildFromTemplate(template);
Menu.setApplicationMenu(menu);