Skip to content

Commit 51d1e37

Browse files
committed
chore: use official menu api
1 parent 55a35d6 commit 51d1e37

File tree

11 files changed

+118
-112
lines changed

11 files changed

+118
-112
lines changed

addon/locale/en-US/addon.ftl

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -132,12 +132,6 @@ readerpopup-addToNote-label=Add Translation to Note
132132
133133
pref-title=Translate
134134
135-
itemmenu-translateTitle-label=Translate Title
136-
itemmenu-translateAbstract-label=Translate Abstract
137-
itemmenu-more-label=More Translation Options...
138-
itemmenu-retranslateTitle-label=Retranslate Title
139-
itemmenu-retranslateAbstract-label=Retranslate Abstract
140-
141135
field-titleTranslation=Title Translation
142136
field-abstractTranslation=Abstract Translation
143137

addon/locale/en-US/mainWindow.ftl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,8 @@ itemPaneSection-openStandalone =
99
1010
field-titleTranslation = Title Translation
1111
field-abstractTranslation = Abstract Translation
12+
13+
itemmenu-translateTitle =
14+
.label = Translate Title
15+
itemmenu-translateAbstract =
16+
.label = Translate Abstract

addon/locale/it-IT/addon.ftl

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -132,12 +132,6 @@ readerpopup-addToNote-label=Aggiungi traduzione alla nota
132132
133133
pref-title=Translate
134134
135-
itemmenu-translateTitle-label=Traduci Titolo
136-
itemmenu-translateAbstract-label=Traduci Abstract
137-
itemmenu-more-label=Altre opzioni di traduzione...
138-
itemmenu-retranslateTitle-label=Ritraduci Titolo
139-
itemmenu-retranslateAbstract-label=Ritraduci Abstract
140-
141135
field-titleTranslation=Traduzione del titolo
142136
field-abstractTranslation=Traduzione dell'Abstract
143137

addon/locale/it-IT/mainWindow.ftl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,8 @@ itemPaneSection-openStandalone =
99
1010
field-titleTranslation = Title Translation
1111
field-abstractTranslation = Abstract Translation
12+
13+
itemmenu-translateTitle =
14+
.label = Traduci Titolo
15+
itemmenu-translateAbstract =
16+
.label = Traduci Abstract

addon/locale/zh-CN/addon.ftl

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -132,12 +132,6 @@ readerpopup-addToNote-label=添加翻译至笔记
132132
133133
pref-title=翻译
134134
135-
itemmenu-translateTitle-label=翻译标题
136-
itemmenu-translateAbstract-label=翻译摘要
137-
itemmenu-more-label=更多翻译选项...
138-
itemmenu-retranslateTitle-label=重新翻译标题
139-
itemmenu-retranslateAbstract-label=重新翻译摘要
140-
141135
field-titleTranslation=标题翻译
142136
field-abstractTranslation=摘要翻译
143137

addon/locale/zh-CN/mainWindow.ftl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,8 @@ itemPaneSection-openStandalone =
99
1010
field-titleTranslation = 标题翻译
1111
field-abstractTranslation = 摘要翻译
12+
13+
itemmenu-translateTitle =
14+
.label = 翻译标题
15+
itemmenu-translateAbstract =
16+
.label = 翻译摘要

addon/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"zotero": {
1414
"id": "__addonID__",
1515
"update_url": "__updateURL__",
16-
"strict_min_version": "6.9.9",
16+
"strict_min_version": "7.9.9",
1717
"strict_max_version": "8.0.*"
1818
}
1919
}

package-lock.json

Lines changed: 47 additions & 47 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,6 @@
4848
"typescript": "^5.8.3",
4949
"typescript-eslint": "^8.37.0",
5050
"zotero-plugin-scaffold": "^0.8.0",
51-
"zotero-types": "^4.1.0-beta.2"
51+
"zotero-types": "^4.1.0-beta.3"
5252
}
5353
}

src/modules/menu.ts

Lines changed: 52 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { config } from "../../package.json";
2-
import { getString } from "../utils/locale";
32
import { getPref } from "../utils/prefs";
43
import {
54
addTranslateAbstractTask,
@@ -9,45 +8,58 @@ import {
98

109
export function registerMenu() {
1110
const menuIcon = `chrome://${config.addonRef}/content/icons/favicon.png`;
12-
if (
13-
getPref("showItemMenuTitleTranslation") ||
14-
getPref("showItemMenuAbstractTranslation")
15-
) {
16-
ztoolkit.Menu.register("item", {
17-
tag: "menuseparator",
18-
});
19-
}
20-
if (getPref("showItemMenuTitleTranslation")) {
21-
ztoolkit.Menu.register("item", {
22-
tag: "menuitem",
23-
label: getString("itemmenu-translateTitle-label"),
24-
commandListener: (ev) => {
25-
addon.hooks.onTranslateInBatch(
26-
Zotero.getActiveZoteroPane()
27-
.getSelectedItems(true)
28-
.map((id) => addTranslateTitleTask(id, true))
29-
.filter((task) => task) as TranslateTask[],
30-
{ noDisplay: true, noCache: true },
31-
);
32-
},
33-
icon: menuIcon,
34-
});
35-
}
3611

37-
if (getPref("showItemMenuAbstractTranslation")) {
38-
ztoolkit.Menu.register("item", {
39-
tag: "menuitem",
40-
label: getString("itemmenu-translateAbstract-label"),
41-
commandListener: (ev) => {
42-
addon.hooks.onTranslateInBatch(
43-
Zotero.getActiveZoteroPane()
44-
.getSelectedItems(true)
45-
.map((id) => addTranslateAbstractTask(id, true))
46-
.filter((task) => task) as TranslateTask[],
47-
{ noDisplay: true, noCache: true },
48-
);
12+
Zotero.MenuManager.registerMenu({
13+
menuID: `${config.addonRef}-translate-title`,
14+
pluginID: config.addonID,
15+
target: "main/library/item",
16+
menus: [
17+
{
18+
menuType: "menuitem",
19+
l10nID: `${config.addonRef}-itemmenu-translateTitle`,
20+
icon: menuIcon,
21+
onCommand: (event, context) => {
22+
addon.hooks.onTranslateInBatch(
23+
(
24+
context.menuElem.ownerGlobal
25+
?.ZoteroPane as _ZoteroTypes.ZoteroPane
26+
)
27+
?.getSelectedItems(true)
28+
.map((id) => addTranslateTitleTask(id, true))
29+
.filter((task) => task) as TranslateTask[],
30+
{ noDisplay: true, noCache: true },
31+
);
32+
},
33+
onShowing: (event, context) => {
34+
const enabled =
35+
getPref("showItemMenuTitleTranslation") &&
36+
context.items?.every((item) => item.isRegularItem());
37+
context.menuElem.hidden = !enabled;
38+
},
39+
},
40+
{
41+
menuType: "menuitem",
42+
l10nID: `${config.addonRef}-itemmenu-translateAbstract`,
43+
icon: menuIcon,
44+
onCommand: (event, context) => {
45+
addon.hooks.onTranslateInBatch(
46+
(
47+
context.menuElem.ownerGlobal
48+
?.ZoteroPane as _ZoteroTypes.ZoteroPane
49+
)
50+
?.getSelectedItems(true)
51+
.map((id) => addTranslateAbstractTask(id, true))
52+
.filter((task) => task) as TranslateTask[],
53+
{ noDisplay: true, noCache: true },
54+
);
55+
},
56+
onShowing: (event, context) => {
57+
const enabled =
58+
getPref("showItemMenuTitleTranslation") &&
59+
context.items?.every((item) => item.isRegularItem());
60+
context.menuElem.hidden = !enabled;
61+
},
4962
},
50-
icon: menuIcon,
51-
});
52-
}
63+
],
64+
});
5365
}

0 commit comments

Comments
 (0)