diff --git a/src/config/i18n.js b/src/config/i18n.js index 6a5a397..2da2ee1 100644 --- a/src/config/i18n.js +++ b/src/config/i18n.js @@ -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: `翻译服务`, diff --git a/src/config/index.js b/src/config/index.js index 4375f90..72c4401 100644 --- a/src/config/index.js +++ b/src/config/index.js @@ -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: "", // 数据同步密钥 diff --git a/src/libs/translator.js b/src/libs/translator.js index ee71185..357f09d 100644 --- a/src/libs/translator.js +++ b/src/libs/translator.js @@ -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; } diff --git a/src/views/Options/Setting.js b/src/views/Options/Setting.js index ff4180e..2851092 100644 --- a/src/views/Options/Setting.js +++ b/src/views/Options/Setting.js @@ -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} /> + + + + {i18n("clear_cache")}