Localize accelerators in custom menu
This commit is contained in:
parent
064f3dd0e0
commit
5d1702c2fe
1 changed files with 16 additions and 3 deletions
|
@ -63,7 +63,8 @@ ROLE_TO_ACCELERATOR.set('minimize', 'CmdOrCtrl+M');
|
|||
|
||||
function convertMenu(
|
||||
menuList: ReadonlyArray<MenuItemConstructorOptions>,
|
||||
executeMenuRole: (role: MenuItemConstructorOptions['role']) => void
|
||||
executeMenuRole: (role: MenuItemConstructorOptions['role']) => void,
|
||||
localeMessages: LocaleMessagesType
|
||||
): Array<MenuItem> {
|
||||
return menuList.map(item => {
|
||||
const {
|
||||
|
@ -77,7 +78,7 @@ function convertMenu(
|
|||
let submenu: Array<MenuItem> | undefined;
|
||||
|
||||
if (Array.isArray(originalSubmenu)) {
|
||||
submenu = convertMenu(originalSubmenu, executeMenuRole);
|
||||
submenu = convertMenu(originalSubmenu, executeMenuRole, localeMessages);
|
||||
} else if (originalSubmenu) {
|
||||
throw new Error('Non-array submenu is not supported');
|
||||
}
|
||||
|
@ -101,6 +102,18 @@ function convertMenu(
|
|||
accelerator = ROLE_TO_ACCELERATOR.get(role);
|
||||
}
|
||||
|
||||
// Custom titlebar is visible only on Windows and this string is used only
|
||||
// in UI. Actual accelerator interception is handled by Electron through
|
||||
// `app/main.ts`.
|
||||
accelerator = accelerator?.replace(
|
||||
/CommandOrControl|CmdOrCtrl/g,
|
||||
localeMessages['Keyboard--Key--ctrl'].message
|
||||
);
|
||||
accelerator = accelerator?.replace(
|
||||
/Shift/g,
|
||||
localeMessages['Keyboard--Key--shift'].message
|
||||
);
|
||||
|
||||
return {
|
||||
type,
|
||||
label,
|
||||
|
@ -233,7 +246,7 @@ export const TitleBarContainer = (props: PropsType): JSX.Element => {
|
|||
localeMessages
|
||||
);
|
||||
|
||||
maybeMenu = convertMenu(menuTemplate, executeMenuRole);
|
||||
maybeMenu = convertMenu(menuTemplate, executeMenuRole, localeMessages);
|
||||
}
|
||||
|
||||
return (
|
||||
|
|
Loading…
Add table
Reference in a new issue