min length & max length can be set

This commit is contained in:
Gabe Yuan
2023-08-22 21:45:23 +08:00
parent d706c405d9
commit 523b81090d
4 changed files with 49 additions and 9 deletions

View File

@@ -45,12 +45,20 @@ export const I18N = {
en: `Interface Language`,
},
fetch_limit: {
zh: `最大请求数量`,
en: `Maximum Number Of Request`,
zh: `最大请求数量 (1-100)`,
en: `Maximum Number Of Request (1-100)`,
},
fetch_interval: {
zh: `请求间隔时间(ms)`,
en: `Request Interval(ms)`,
zh: `请求间隔时间 (0-5000ms)`,
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: {
zh: `翻译服务`,

View File

@@ -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 = {
darkMode: false, // 深色模式
uiLang: "en", // 界面语言
fetchLimit: DEFAULT_FETCH_LIMIT, // 最大任务数量
fetchInterval: DEFAULT_FETCH_INTERVAL, // 任务间隔时间
minLength: TRANS_MIN_LENGTH,
maxLength: TRANS_MAX_LENGTH,
clearCache: false, // 是否在浏览器下次启动时清除缓存
injectRules: true, // 是否注入订阅规则
subrulesList: DEFAULT_SUBRULES_LIST, // 订阅列表
@@ -182,9 +187,6 @@ export const DEFAULT_SETTING = {
export const DEFAULT_RULES = [GLOBLA_RULE];
export const TRANS_MIN_LENGTH = 5; // 最短翻译长度
export const TRANS_MAX_LENGTH = 5000; // 最长翻译长度
export const DEFAULT_SYNC = {
syncUrl: "", // 数据同步接口
syncKey: "", // 数据同步密钥

View File

@@ -17,6 +17,8 @@ import { fetchUpdate, fetchClear } from "./fetch";
*/
export class Translator {
_rule = {};
_minLength = 0;
_maxLength = 0;
_interseObserver = new IntersectionObserver(
(intersections) => {
@@ -46,8 +48,10 @@ export class Translator {
});
});
constructor(rule, { fetchInterval, fetchLimit }) {
constructor(rule, { fetchInterval, fetchLimit, minLength, maxLength }) {
fetchUpdate(fetchInterval, fetchLimit);
this._minLength = minLength ?? TRANS_MIN_LENGTH;
this._maxLength = maxLength ?? TRANS_MAX_LENGTH;
this.rule = rule;
if (rule.transOpen === "true") {
this._register();
@@ -138,7 +142,7 @@ export class Translator {
// 太长或太短
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;
}

View File

@@ -28,6 +28,12 @@ export default function Settings() {
case "fetchInterval":
value = limitNumber(value, 0, 5000);
break;
case "minLength":
value = limitNumber(value, 1, 100);
break;
case "maxLength":
value = limitNumber(value, 100, 10000);
break;
default:
}
updateSetting({
@@ -46,6 +52,8 @@ export default function Settings() {
googleUrl,
fetchLimit,
fetchInterval,
minLength,
maxLength,
openaiUrl,
openaiKey,
openaiModel,
@@ -90,6 +98,24 @@ export default function Settings() {
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">
<InputLabel>{i18n("clear_cache")}</InputLabel>
<Select