diff --git a/src/config/i18n.js b/src/config/i18n.js index a67b2cb..94a0f78 100644 --- a/src/config/i18n.js +++ b/src/config/i18n.js @@ -687,4 +687,12 @@ export const I18N = { zh: `禁用翻译名单`, en: `Translate Blacklist`, }, + disable_langs: { + zh: `不翻译的语言`, + en: `Disable Languages`, + }, + disable_langs_helper: { + zh: `此功能依赖准确的语言检测,建议启用远程语言检测。`, + en: `This feature relies on accurate language detection. It is recommended to enable remote language detection.`, + } }; diff --git a/src/config/index.js b/src/config/index.js index 65c5eb4..dc2cab0 100644 --- a/src/config/index.js +++ b/src/config/index.js @@ -441,6 +441,7 @@ export const DEFAULT_SETTING = { tranboxSetting: DEFAULT_TRANBOX_SETTING, // 划词翻译设置 touchTranslate: 2, // 触屏翻译 blacklist: DEFAULT_BLACKLIST.join(",\n"), // 禁用翻译名单 + disableLangs: [], // 不翻译的语言 }; export const DEFAULT_RULES = [GLOBLA_RULE]; diff --git a/src/hooks/Translate.js b/src/hooks/Translate.js index 14052d5..80ad96f 100644 --- a/src/hooks/Translate.js +++ b/src/hooks/Translate.js @@ -24,7 +24,11 @@ export function useTranslate(q, rule, setting) { setLoading(true); const deLang = await tryDetectLang(q, setting.detectRemote); - if (deLang && toLang.includes(deLang)) { + const disableLangs = setting.disableLangs || []; + if ( + deLang && + (toLang.includes(deLang) || disableLangs.includes(deLang)) + ) { setSamelang(true); } else { const [trText, isSame] = await apiTranslate({ diff --git a/src/views/Options/Setting.js b/src/views/Options/Setting.js index 9a10971..f9a2e12 100644 --- a/src/views/Options/Setting.js +++ b/src/views/Options/Setting.js @@ -23,6 +23,7 @@ import { OPT_SHORTCUT_STYLE, OPT_SHORTCUT_POPUP, OPT_SHORTCUT_SETTING, + OPT_LANGS_TO, DEFAULT_BLACKLIST, } from "../../config"; import { useShortcut } from "../../hooks/Shortcut"; @@ -43,6 +44,7 @@ export default function Settings() { const { fab, updateFab } = useFab(); const handleChange = (e) => { + console.log("e", e); e.preventDefault(); let { name, value } = e.target; switch (name) { @@ -92,6 +94,7 @@ export default function Settings() { detectRemote = false, touchTranslate = 2, blacklist = DEFAULT_BLACKLIST.join(",\n"), + disableLangs = [], } = setting; const { isHide = false } = fab || {}; @@ -220,6 +223,24 @@ export default function Settings() { {i18n("detect_lang_remote_help")} + + {i18n("disable_langs")} + + {i18n("disable_langs_helper")} + + {isExt ? ( {i18n("if_clear_cache")}