diff --git a/src/apis/index.js b/src/apis/index.js
index d60efe2..ab07fcc 100644
--- a/src/apis/index.js
+++ b/src/apis/index.js
@@ -15,6 +15,7 @@ import {
URL_CACHE_TRAN,
KV_SALT_SYNC,
URL_BAIDU_LANGDETECT,
+ URL_BAIDU_SUGGEST,
OPT_LANGS_BAIDU,
URL_TENCENT_TRANSMART,
OPT_LANGS_TENCENT,
@@ -70,6 +71,30 @@ export const apiBaiduLangdetect = async (text) => {
return "";
};
+/**
+ * 百度翻译建议
+ * @param {*} text
+ * @returns
+ */
+export const apiBaiduSuggest = async (text) => {
+ const res = await fetchPolyfill(URL_BAIDU_SUGGEST, {
+ headers: {
+ "Content-type": "application/json",
+ },
+ method: "POST",
+ body: JSON.stringify({
+ kw: text,
+ }),
+ useCache: true,
+ });
+
+ if (res.errno === 0) {
+ return res.data;
+ }
+
+ return [];
+};
+
/**
* 腾讯语言识别
* @param {*} text
diff --git a/src/config/index.js b/src/config/index.js
index 3efa843..9b75f61 100644
--- a/src/config/index.js
+++ b/src/config/index.js
@@ -82,6 +82,7 @@ export const URL_MICROSOFT_TRAN =
"https://api-edge.cognitive.microsofttranslator.com/translate";
export const URL_MICROSOFT_AUTH = "https://edge.microsoft.com/translate/auth";
export const URL_BAIDU_LANGDETECT = "https://fanyi.baidu.com/langdetect";
+export const URL_BAIDU_SUGGEST = "https://fanyi.baidu.com/sug";
export const URL_BAIDU_WEB = "https://fanyi.baidu.com/";
export const URL_BAIDU_TRANSAPI = "https://fanyi.baidu.com/transapi";
export const URL_BAIDU_TRANSAPI_V2 = "https://fanyi.baidu.com/v2transapi";
diff --git a/src/views/Selection/SugCont.js b/src/views/Selection/SugCont.js
new file mode 100644
index 0000000..39d2d02
--- /dev/null
+++ b/src/views/Selection/SugCont.js
@@ -0,0 +1,17 @@
+import Box from "@mui/material/Box";
+import Typography from "@mui/material/Typography";
+
+export default function SugCont({ sugs }) {
+ return (
+
+ {sugs.map(({ k, v }) => (
+
+ {k}
+
+
+ ))}
+
+ );
+}
diff --git a/src/views/Selection/TranCont.js b/src/views/Selection/TranCont.js
index dddd365..d8b9e94 100644
--- a/src/views/Selection/TranCont.js
+++ b/src/views/Selection/TranCont.js
@@ -6,10 +6,11 @@ import Stack from "@mui/material/Stack";
import { useI18n } from "../../hooks/I18n";
import { DEFAULT_TRANS_APIS, OPT_TRANS_BAIDU } from "../../config";
import { useEffect, useState } from "react";
-import { apiTranslate, apiBaiduLangdetect } from "../../apis";
+import { apiTranslate, apiBaiduLangdetect, apiBaiduSuggest } from "../../apis";
import { isValidWord } from "../../libs/utils";
import CopyBtn from "./CopyBtn";
import DictCont from "./DictCont";
+import SugCont from "./SugCont";
export default function TranCont({
text,
@@ -26,6 +27,7 @@ export default function TranCont({
const [loading, setLoading] = useState(false);
const [error, setError] = useState("");
const [dictResult, setDictResult] = useState(null);
+ const [sugs, setSugs] = useState([]);
useEffect(() => {
(async () => {
@@ -34,6 +36,7 @@ export default function TranCont({
setTrText("");
setError("");
setDictResult(null);
+ setSugs([]);
// 互译
if (toLang !== toLang2 && toLang2 !== "none") {
@@ -45,6 +48,7 @@ export default function TranCont({
}
}
+ // 翻译
const apiSetting =
transApis[translator] || DEFAULT_TRANS_APIS[translator];
const tranRes = await apiTranslate({
@@ -72,6 +76,11 @@ export default function TranCont({
setDictResult(JSON.parse(dictRes[2].result));
}
}
+
+ // 建议
+ if (text.length < 20) {
+ setSugs(await apiBaiduSuggest(text));
+ }
} catch (err) {
setError(err.message);
} finally {
@@ -119,6 +128,7 @@ export default function TranCont({
{loading && }
{error && {error}}
{dictResult && }
+ {sugs.length > 0 && }
>
);
}