min length & max length can be set
This commit is contained in:
@@ -45,12 +45,20 @@ export const I18N = {
|
|||||||
en: `Interface Language`,
|
en: `Interface Language`,
|
||||||
},
|
},
|
||||||
fetch_limit: {
|
fetch_limit: {
|
||||||
zh: `最大请求数量`,
|
zh: `最大请求数量 (1-100)`,
|
||||||
en: `Maximum Number Of Request`,
|
en: `Maximum Number Of Request (1-100)`,
|
||||||
},
|
},
|
||||||
fetch_interval: {
|
fetch_interval: {
|
||||||
zh: `请求间隔时间(ms)`,
|
zh: `请求间隔时间 (0-5000ms)`,
|
||||||
en: `Request Interval(ms)`,
|
en: `Request Interval (0-5000ms)`,
|
||||||
|
},
|
||||||
|
min_translate_length: {
|
||||||
|
zh: `最小翻译长度 (1-100)`,
|
||||||
|
en: `Min Translate Length (1-100)`,
|
||||||
|
},
|
||||||
|
max_translate_length: {
|
||||||
|
zh: `最大翻译长度 (100-10000)`,
|
||||||
|
en: `Max Translate Length (100-10000)`,
|
||||||
},
|
},
|
||||||
translate_service: {
|
translate_service: {
|
||||||
zh: `翻译服务`,
|
zh: `翻译服务`,
|
||||||
|
|||||||
@@ -165,11 +165,16 @@ export const DEFAULT_SUBRULES_LIST = [
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
export const TRANS_MIN_LENGTH = 5; // 最短翻译长度
|
||||||
|
export const TRANS_MAX_LENGTH = 5000; // 最长翻译长度
|
||||||
|
|
||||||
export const DEFAULT_SETTING = {
|
export const DEFAULT_SETTING = {
|
||||||
darkMode: false, // 深色模式
|
darkMode: false, // 深色模式
|
||||||
uiLang: "en", // 界面语言
|
uiLang: "en", // 界面语言
|
||||||
fetchLimit: DEFAULT_FETCH_LIMIT, // 最大任务数量
|
fetchLimit: DEFAULT_FETCH_LIMIT, // 最大任务数量
|
||||||
fetchInterval: DEFAULT_FETCH_INTERVAL, // 任务间隔时间
|
fetchInterval: DEFAULT_FETCH_INTERVAL, // 任务间隔时间
|
||||||
|
minLength: TRANS_MIN_LENGTH,
|
||||||
|
maxLength: TRANS_MAX_LENGTH,
|
||||||
clearCache: false, // 是否在浏览器下次启动时清除缓存
|
clearCache: false, // 是否在浏览器下次启动时清除缓存
|
||||||
injectRules: true, // 是否注入订阅规则
|
injectRules: true, // 是否注入订阅规则
|
||||||
subrulesList: DEFAULT_SUBRULES_LIST, // 订阅列表
|
subrulesList: DEFAULT_SUBRULES_LIST, // 订阅列表
|
||||||
@@ -182,9 +187,6 @@ export const DEFAULT_SETTING = {
|
|||||||
|
|
||||||
export const DEFAULT_RULES = [GLOBLA_RULE];
|
export const DEFAULT_RULES = [GLOBLA_RULE];
|
||||||
|
|
||||||
export const TRANS_MIN_LENGTH = 5; // 最短翻译长度
|
|
||||||
export const TRANS_MAX_LENGTH = 5000; // 最长翻译长度
|
|
||||||
|
|
||||||
export const DEFAULT_SYNC = {
|
export const DEFAULT_SYNC = {
|
||||||
syncUrl: "", // 数据同步接口
|
syncUrl: "", // 数据同步接口
|
||||||
syncKey: "", // 数据同步密钥
|
syncKey: "", // 数据同步密钥
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ import { fetchUpdate, fetchClear } from "./fetch";
|
|||||||
*/
|
*/
|
||||||
export class Translator {
|
export class Translator {
|
||||||
_rule = {};
|
_rule = {};
|
||||||
|
_minLength = 0;
|
||||||
|
_maxLength = 0;
|
||||||
|
|
||||||
_interseObserver = new IntersectionObserver(
|
_interseObserver = new IntersectionObserver(
|
||||||
(intersections) => {
|
(intersections) => {
|
||||||
@@ -46,8 +48,10 @@ export class Translator {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
constructor(rule, { fetchInterval, fetchLimit }) {
|
constructor(rule, { fetchInterval, fetchLimit, minLength, maxLength }) {
|
||||||
fetchUpdate(fetchInterval, fetchLimit);
|
fetchUpdate(fetchInterval, fetchLimit);
|
||||||
|
this._minLength = minLength ?? TRANS_MIN_LENGTH;
|
||||||
|
this._maxLength = maxLength ?? TRANS_MAX_LENGTH;
|
||||||
this.rule = rule;
|
this.rule = rule;
|
||||||
if (rule.transOpen === "true") {
|
if (rule.transOpen === "true") {
|
||||||
this._register();
|
this._register();
|
||||||
@@ -138,7 +142,7 @@ export class Translator {
|
|||||||
|
|
||||||
// 太长或太短
|
// 太长或太短
|
||||||
const q = el.innerText.trim();
|
const q = el.innerText.trim();
|
||||||
if (!q || q.length < TRANS_MIN_LENGTH || q.length > TRANS_MAX_LENGTH) {
|
if (!q || q.length < this._minLength || q.length > this._maxLength) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -28,6 +28,12 @@ export default function Settings() {
|
|||||||
case "fetchInterval":
|
case "fetchInterval":
|
||||||
value = limitNumber(value, 0, 5000);
|
value = limitNumber(value, 0, 5000);
|
||||||
break;
|
break;
|
||||||
|
case "minLength":
|
||||||
|
value = limitNumber(value, 1, 100);
|
||||||
|
break;
|
||||||
|
case "maxLength":
|
||||||
|
value = limitNumber(value, 100, 10000);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
updateSetting({
|
updateSetting({
|
||||||
@@ -46,6 +52,8 @@ export default function Settings() {
|
|||||||
googleUrl,
|
googleUrl,
|
||||||
fetchLimit,
|
fetchLimit,
|
||||||
fetchInterval,
|
fetchInterval,
|
||||||
|
minLength,
|
||||||
|
maxLength,
|
||||||
openaiUrl,
|
openaiUrl,
|
||||||
openaiKey,
|
openaiKey,
|
||||||
openaiModel,
|
openaiModel,
|
||||||
@@ -90,6 +98,24 @@ export default function Settings() {
|
|||||||
onChange={handleChange}
|
onChange={handleChange}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<TextField
|
||||||
|
size="small"
|
||||||
|
label={i18n("min_translate_length")}
|
||||||
|
type="number"
|
||||||
|
name="minLength"
|
||||||
|
defaultValue={minLength}
|
||||||
|
onChange={handleChange}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<TextField
|
||||||
|
size="small"
|
||||||
|
label={i18n("max_translate_length")}
|
||||||
|
type="number"
|
||||||
|
name="maxLength"
|
||||||
|
defaultValue={maxLength}
|
||||||
|
onChange={handleChange}
|
||||||
|
/>
|
||||||
|
|
||||||
<FormControl size="small">
|
<FormControl size="small">
|
||||||
<InputLabel>{i18n("clear_cache")}</InputLabel>
|
<InputLabel>{i18n("clear_cache")}</InputLabel>
|
||||||
<Select
|
<Select
|
||||||
|
|||||||
Reference in New Issue
Block a user