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")}