J'essaye d'ajouter le support de traduction sur une application d'électron, mais j'ai rencontré des problèmes en mettant à jour le menu d'application. Je mentionne que le développement est fait & testé sur macOS, mais je suis prêt à le faire fonctionner sur Windows aussi.Comment mettre à jour correctement les étiquettes des menus d'application électronique?
Je comprends que la fonction de menu est quelque chose qui peut être géré uniquement dans le processus principal, donc j'utilise ipcMain & ipcRenderer pour communiquer entre le processus de rendu principal &.
Le problème est que je suis en train de mettre à jour une étiquette, elle semble être mise à jour (affichée dans les journaux) mais elle ne la met pas à jour dans le menu rendu.
//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)
J'ai déjà une instance de menu créé quelque part dans le code à l'aide buildFromTemplate, c'est pourquoi je suis mise juste, afin mettre à jour. – cristifilip
Bien que la fonction '.setApplicationMenu' nécessite que le modèle soit d'abord exécuté par la fonction' .buildFromTemplate', il serait donc logique de l'exécuter même si le menu est déjà défini. – Mike
Apparemment, le Menu retourné par getApplicationMenu() ne peut pas être modifié et mis à jour à l'aide de setApplicationMenu, mais le fait de changer le modèle et de le reconstruire fonctionne. Donc tu avais raison. Merci! – cristifilip