feat: Support batch fetch, and update AI prompt

This commit is contained in:
Gabe
2025-09-03 00:37:35 +08:00
parent 2bfb27f346
commit d4e58fc925
14 changed files with 576 additions and 244 deletions

View File

@@ -98,7 +98,12 @@ const StyledSpan = styled("span")`
export default function Content({ q, keeps, translator, $el }) {
const [rule, setRule] = useState(translator.rule);
const { text, sameLang, loading } = useTranslate(q, rule, translator.setting);
const { text, sameLang, loading } = useTranslate(
q,
rule,
translator.setting,
translator.docInfo
);
const {
transOpen,
textStyle,

View File

@@ -34,6 +34,10 @@ import {
DEFAULT_FETCH_LIMIT,
DEFAULT_FETCH_INTERVAL,
DEFAULT_HTTP_TIMEOUT,
OPT_TRANS_BATCH,
DEFAULT_BATCH_INTERVAL,
DEFAULT_BATCH_SIZE,
DEFAULT_BATCH_LENGTH,
} from "../../config";
import { useState } from "react";
import { useI18n } from "../../hooks/I18n";
@@ -140,6 +144,10 @@ function ApiFields({ translator, api, updateApi, resetApi }) {
maxTokens = 256,
apiName = "",
isDisabled = false,
isBatchFetch = false,
batchInterval = DEFAULT_BATCH_INTERVAL,
batchSize = DEFAULT_BATCH_SIZE,
batchLength = DEFAULT_BATCH_LENGTH,
} = api;
const handleChange = (e) => {
@@ -160,6 +168,15 @@ function ApiFields({ translator, api, updateApi, resetApi }) {
case "maxTokens":
value = limitNumber(value, 0, 2 ** 15);
break;
case "batchInterval":
value = limitNumber(value, 100, 5000);
break;
case "batchSize":
value = limitNumber(value, 1, 100);
break;
case "batchLength":
value = limitNumber(value, 500, 50000);
break;
default:
}
updateApi({
@@ -394,6 +411,50 @@ function ApiFields({ translator, api, updateApi, resetApi }) {
</>
)}
{OPT_TRANS_BATCH.has(translator) && (
<>
<TextField
select
size="small"
name="isBatchFetch"
value={isBatchFetch}
label={i18n("is_batch_fetch")}
onChange={handleChange}
>
<MenuItem value={false}>{i18n("disable")}</MenuItem>
<MenuItem value={true}>{i18n("enable")}</MenuItem>
</TextField>
{isBatchFetch && (
<>
<TextField
size="small"
label={i18n("batch_interval")}
type="number"
name="batchInterval"
value={batchInterval}
onChange={handleChange}
/>
<TextField
size="small"
label={i18n("batch_size")}
type="number"
name="batchSize"
value={batchSize}
onChange={handleChange}
/>
<TextField
size="small"
label={i18n("batch_length")}
type="number"
name="batchLength"
value={batchLength}
onChange={handleChange}
/>
</>
)}
</>
)}
<TextField
size="small"
label={i18n("fetch_limit")}

View File

@@ -71,6 +71,7 @@ export default function FavWords() {
const tranList = [];
for (const text of downloadList) {
try {
// todo
const dictRes = await apiTranslate({
text,
translator: OPT_TRANS_BAIDU,

View File

@@ -26,6 +26,7 @@ export default function DictCont({ text }) {
return;
}
// todo
const dictRes = await apiTranslate({
text,
translator: OPT_TRANS_BAIDU,