fix: i18n menu command for userscript
This commit is contained in:
@@ -140,6 +140,7 @@ function showTransbox({
|
|||||||
tranboxSetting = DEFAULT_TRANBOX_SETTING,
|
tranboxSetting = DEFAULT_TRANBOX_SETTING,
|
||||||
transApis,
|
transApis,
|
||||||
darkMode,
|
darkMode,
|
||||||
|
uiLang,
|
||||||
}) {
|
}) {
|
||||||
if (!tranboxSetting?.transOpen) {
|
if (!tranboxSetting?.transOpen) {
|
||||||
return;
|
return;
|
||||||
@@ -170,6 +171,7 @@ function showTransbox({
|
|||||||
contextMenuType={contextMenuType}
|
contextMenuType={contextMenuType}
|
||||||
tranboxSetting={tranboxSetting}
|
tranboxSetting={tranboxSetting}
|
||||||
transApis={transApis}
|
transApis={transApis}
|
||||||
|
uiLang={uiLang}
|
||||||
/>
|
/>
|
||||||
</CacheProvider>
|
</CacheProvider>
|
||||||
</React.StrictMode>
|
</React.StrictMode>
|
||||||
|
|||||||
@@ -845,4 +845,20 @@ export const I18N = {
|
|||||||
zh: `自定义选项`,
|
zh: `自定义选项`,
|
||||||
en: `Custom Option`,
|
en: `Custom Option`,
|
||||||
},
|
},
|
||||||
|
translate_selected_text: {
|
||||||
|
zh: `翻译选中文字`,
|
||||||
|
en: `Translate Selected Text`,
|
||||||
|
},
|
||||||
|
toggle_style: {
|
||||||
|
zh: `切换样式`,
|
||||||
|
en: `Toggle Style`,
|
||||||
|
},
|
||||||
|
open_menu: {
|
||||||
|
zh: `打开弹窗菜单`,
|
||||||
|
en: `Open Popup Menu`,
|
||||||
|
},
|
||||||
|
open_setting: {
|
||||||
|
zh: `打开设置`,
|
||||||
|
en: `Open Setting`,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -2,6 +2,14 @@ import { useSetting } from "./Setting";
|
|||||||
import { I18N, URL_RAW_PREFIX } from "../config";
|
import { I18N, URL_RAW_PREFIX } from "../config";
|
||||||
import { useFetch } from "./Fetch";
|
import { useFetch } from "./Fetch";
|
||||||
|
|
||||||
|
export const getI18n = (uiLang, key, defaultText = "") => {
|
||||||
|
return I18N?.[key]?.[uiLang] ?? defaultText;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const useLangMap = (uiLang) => {
|
||||||
|
return (key, defaultText = "") => getI18n(uiLang, key, defaultText);
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 多语言 hook
|
* 多语言 hook
|
||||||
* @returns
|
* @returns
|
||||||
@@ -10,7 +18,7 @@ export const useI18n = () => {
|
|||||||
const {
|
const {
|
||||||
setting: { uiLang },
|
setting: { uiLang },
|
||||||
} = useSetting();
|
} = useSetting();
|
||||||
return (key, defaultText = "") => I18N?.[key]?.[uiLang] ?? defaultText;
|
return useLangMap(uiLang);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const useI18nMd = (key) => {
|
export const useI18nMd = (key) => {
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import {
|
|||||||
import { shortcutRegister } from "../../libs/shortcut";
|
import { shortcutRegister } from "../../libs/shortcut";
|
||||||
import { sendIframeMsg } from "../../libs/iframe";
|
import { sendIframeMsg } from "../../libs/iframe";
|
||||||
import { kissLog } from "../../libs/log";
|
import { kissLog } from "../../libs/log";
|
||||||
|
import { getI18n } from "../../hooks/I18n";
|
||||||
|
|
||||||
export default function Action({ translator, fab }) {
|
export default function Action({ translator, fab }) {
|
||||||
const fabWidth = 40;
|
const fabWidth = 40;
|
||||||
@@ -96,11 +97,11 @@ export default function Action({ translator, fab }) {
|
|||||||
// 注册菜单
|
// 注册菜单
|
||||||
try {
|
try {
|
||||||
const menuCommandIds = [];
|
const menuCommandIds = [];
|
||||||
const { contextMenuType } = translator.setting;
|
const { contextMenuType, uiLang } = translator.setting;
|
||||||
contextMenuType !== 0 &&
|
contextMenuType !== 0 &&
|
||||||
menuCommandIds.push(
|
menuCommandIds.push(
|
||||||
GM.registerMenuCommand(
|
GM.registerMenuCommand(
|
||||||
"Toggle Translate",
|
getI18n(uiLang, "translate_switch"),
|
||||||
(event) => {
|
(event) => {
|
||||||
translator.toggle();
|
translator.toggle();
|
||||||
sendIframeMsg(MSG_TRANS_TOGGLE);
|
sendIframeMsg(MSG_TRANS_TOGGLE);
|
||||||
@@ -109,7 +110,7 @@ export default function Action({ translator, fab }) {
|
|||||||
"Q"
|
"Q"
|
||||||
),
|
),
|
||||||
GM.registerMenuCommand(
|
GM.registerMenuCommand(
|
||||||
"Toggle Style",
|
getI18n(uiLang, "toggle_style"),
|
||||||
(event) => {
|
(event) => {
|
||||||
translator.toggleStyle();
|
translator.toggleStyle();
|
||||||
sendIframeMsg(MSG_TRANS_TOGGLE_STYLE);
|
sendIframeMsg(MSG_TRANS_TOGGLE_STYLE);
|
||||||
@@ -118,14 +119,14 @@ export default function Action({ translator, fab }) {
|
|||||||
"C"
|
"C"
|
||||||
),
|
),
|
||||||
GM.registerMenuCommand(
|
GM.registerMenuCommand(
|
||||||
"Open Menu",
|
getI18n(uiLang, "open_menu"),
|
||||||
(event) => {
|
(event) => {
|
||||||
setShowPopup((pre) => !pre);
|
setShowPopup((pre) => !pre);
|
||||||
},
|
},
|
||||||
"K"
|
"K"
|
||||||
),
|
),
|
||||||
GM.registerMenuCommand(
|
GM.registerMenuCommand(
|
||||||
"Open Setting",
|
getI18n(uiLang, "open_setting"),
|
||||||
(event) => {
|
(event) => {
|
||||||
window.open(process.env.REACT_APP_OPTIONSPAGE, "_blank");
|
window.open(process.env.REACT_APP_OPTIONSPAGE, "_blank");
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -13,11 +13,13 @@ import {
|
|||||||
} from "../../config";
|
} from "../../config";
|
||||||
import { isMobile } from "../../libs/mobile";
|
import { isMobile } from "../../libs/mobile";
|
||||||
import { kissLog } from "../../libs/log";
|
import { kissLog } from "../../libs/log";
|
||||||
|
import { useLangMap } from "../../hooks/I18n";
|
||||||
|
|
||||||
export default function Slection({
|
export default function Slection({
|
||||||
contextMenuType,
|
contextMenuType,
|
||||||
tranboxSetting,
|
tranboxSetting,
|
||||||
transApis,
|
transApis,
|
||||||
|
uiLang,
|
||||||
}) {
|
}) {
|
||||||
const {
|
const {
|
||||||
hideTranBtn = false,
|
hideTranBtn = false,
|
||||||
@@ -37,6 +39,7 @@ export default function Slection({
|
|||||||
? 200
|
? 200
|
||||||
: limitNumber(window.innerHeight, 200, 400);
|
: limitNumber(window.innerHeight, 200, 400);
|
||||||
|
|
||||||
|
const langMap = useLangMap(uiLang);
|
||||||
const [showBox, setShowBox] = useState(false);
|
const [showBox, setShowBox] = useState(false);
|
||||||
const [showBtn, setShowBtn] = useState(false);
|
const [showBtn, setShowBtn] = useState(false);
|
||||||
const [selectedText, setSelText] = useState("");
|
const [selectedText, setSelText] = useState("");
|
||||||
@@ -146,7 +149,7 @@ export default function Slection({
|
|||||||
contextMenuType !== 0 &&
|
contextMenuType !== 0 &&
|
||||||
menuCommandIds.push(
|
menuCommandIds.push(
|
||||||
GM.registerMenuCommand(
|
GM.registerMenuCommand(
|
||||||
"Translate Selected Text",
|
langMap("translate_selected_text"),
|
||||||
(event) => {
|
(event) => {
|
||||||
handleTranbox();
|
handleTranbox();
|
||||||
},
|
},
|
||||||
@@ -162,7 +165,7 @@ export default function Slection({
|
|||||||
} catch (err) {
|
} catch (err) {
|
||||||
kissLog(err, "registerMenuCommand");
|
kissLog(err, "registerMenuCommand");
|
||||||
}
|
}
|
||||||
}, [handleTranbox, contextMenuType]);
|
}, [handleTranbox, contextMenuType, langMap]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (hideClickAway) {
|
if (hideClickAway) {
|
||||||
|
|||||||
Reference in New Issue
Block a user