電子アプリケーションで翻訳サポートを追加しようとしていますが、アプリケーションメニューを更新するときに問題が発生しました。私は、開発がmacOS上でテストされた&であると言いますが、私はそれもWindows上で動作させることを望んでいます。電子アプリケーションのメニューラベルを正しく更新する方法は?
メニューの機能はメインプロセスでのみ管理できるものなので、&レンダリングプロセス間ではipcMain & ipcRendererを使用して通信しています。
問題は、1つのラベルを更新していて、更新されたように見える(ログに表示される)が、レンダリングされたメニューで更新されないということです。
//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)
私はすでに、私はちょうどために、それを設定しています理由です、buildFromTemplateを使用してコード内までどこかに作成したメニューのインスタンスを持っています更新する。 – cristifilip
'.setApplicationMenu'関数は、テンプレートが' .buildFromTemplate'関数で最初に実行されるようにするため、メニューが既に設定されていても実行するのが理にかなっています。 – Mike
明らかに、getApplicationMenu()によって返されたメニューは、setApplicationMenuを使って変更および更新することはできませんが、テンプレートを変更してビルドし直しても機能します。だからあなたは正しい。ありがとう! – cristifilip