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(
|
function convertMenu(
|
||||||
menuList: ReadonlyArray<MenuItemConstructorOptions>,
|
menuList: ReadonlyArray<MenuItemConstructorOptions>,
|
||||||
executeMenuRole: (role: MenuItemConstructorOptions['role']) => void
|
executeMenuRole: (role: MenuItemConstructorOptions['role']) => void,
|
||||||
|
localeMessages: LocaleMessagesType
|
||||||
): Array<MenuItem> {
|
): Array<MenuItem> {
|
||||||
return menuList.map(item => {
|
return menuList.map(item => {
|
||||||
const {
|
const {
|
||||||
|
@ -77,7 +78,7 @@ function convertMenu(
|
||||||
let submenu: Array<MenuItem> | undefined;
|
let submenu: Array<MenuItem> | undefined;
|
||||||
|
|
||||||
if (Array.isArray(originalSubmenu)) {
|
if (Array.isArray(originalSubmenu)) {
|
||||||
submenu = convertMenu(originalSubmenu, executeMenuRole);
|
submenu = convertMenu(originalSubmenu, executeMenuRole, localeMessages);
|
||||||
} else if (originalSubmenu) {
|
} else if (originalSubmenu) {
|
||||||
throw new Error('Non-array submenu is not supported');
|
throw new Error('Non-array submenu is not supported');
|
||||||
}
|
}
|
||||||
|
@ -101,6 +102,18 @@ function convertMenu(
|
||||||
accelerator = ROLE_TO_ACCELERATOR.get(role);
|
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 {
|
return {
|
||||||
type,
|
type,
|
||||||
label,
|
label,
|
||||||
|
@ -233,7 +246,7 @@ export const TitleBarContainer = (props: PropsType): JSX.Element => {
|
||||||
localeMessages
|
localeMessages
|
||||||
);
|
);
|
||||||
|
|
||||||
maybeMenu = convertMenu(menuTemplate, executeMenuRole);
|
maybeMenu = convertMenu(menuTemplate, executeMenuRole, localeMessages);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue