feat: disable languages

This commit is contained in:
Gabe Yuan
2023-11-28 11:11:59 +08:00
parent 22c50e7765
commit da368ee612
4 changed files with 35 additions and 1 deletions

View File

@@ -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.`,
}
};

View File

@@ -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];

View File

@@ -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({

View File

@@ -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() {
<FormHelperText>{i18n("detect_lang_remote_help")}</FormHelperText>
</FormControl>
<FormControl>
<InputLabel>{i18n("disable_langs")}</InputLabel>
<Select
multiple
name="disableLangs"
value={disableLangs}
label={i18n("disable_langs")}
onChange={handleChange}
>
{OPT_LANGS_TO.map(([langKey, langName]) => (
<MenuItem key={langKey} value={langKey}>
{langName}
</MenuItem>
))}
</Select>
<FormHelperText>{i18n("disable_langs_helper")}</FormHelperText>
</FormControl>
{isExt ? (
<FormControl size="small">
<InputLabel>{i18n("if_clear_cache")}</InputLabel>