+
+ {dictResult.simple_means?.word_name}
+
+
+ {Object.entries(dictResult.simple_means?.exchange || {}).map(
+ ([key, val]) => (
+ {`${exchangeMap[key] || key}: ${val.join(
+ ","
+ )}; `}
+ )
+ )}
+
+
+ {Object.values(dictResult.simple_means?.tags || {})
+ .flat()
+ .filter((item) => item)
+ .join(", ")}
+
+ {dictResult.simple_means?.symbols?.map(({ ph_en, ph_am, parts }, idx) => (
+
+
{`英: /${ph_en}/ 美: /${ph_am}/`}
+
+ {parts.map(({ part, means }, idx) => (
+ - {`[${part}] ${means.join("; ")}`}
+ ))}
+
+
+ ))}
+
+ );
+}
+
+export default function TranCont({
+ text,
+ translator,
+ fromLang,
+ toLang,
+ transApis,
+}) {
+ const i18n = useI18n();
+ const [trText, setTrText] = useState("");
+ const [loading, setLoading] = useState(false);
+ const [error, setError] = useState("");
+ const [dictResult, setDictResult] = useState(null);
+
+ useEffect(() => {
+ (async () => {
+ try {
+ setLoading(true);
+ setTrText("");
+ setError("");
+ setDictResult(null);
+
+ const apis = { ...transApis, ...DEFAULT_TRANS_APIS };
+ const apiSetting = apis[translator];
+ const tranRes = await apiTranslate({
+ text,
+ translator,
+ fromLang,
+ toLang,
+ apiSetting,
+ });
+ setTrText(tranRes[0]);
+
+ // 词典
+ if (isValidWord(text) && toLang.startsWith("zh")) {
+ if (fromLang === "en" && translator === OPT_TRANS_BAIDU) {
+ setDictResult(tranRes[2]);
+ } else {
+ const dictRes = await apiTranslate({
+ text,
+ translator: OPT_TRANS_BAIDU,
+ fromLang: "en",
+ toLang: "zh-CN",
+ apiSetting: apis[OPT_TRANS_BAIDU],
+ });
+ setDictResult(dictRes[2].dict_result);
+ }
+ }
+ } catch (err) {
+ setError(err.message);
+ } finally {
+ setLoading(false);
+ }
+ })();
+ }, [text, translator, fromLang, toLang, transApis]);
+
+ return (
+ <>
+
- {dictResult.simple_means?.word_name}
-
- {Object.entries(dictResult.simple_means?.exchange || {}).map(
- ([key, val]) => (
- {`${exchangeMap[key] || key}: ${val.join(
- ","
- )}; `}
- )
- )}
-
-
- {Object.values(dictResult.simple_means?.tags || {})
- .map((vals) => vals.join(", "))
- .join(", ")}
-
- {dictResult.simple_means?.symbols?.map(({ ph_en, ph_am, parts }, idx) => (
-
-
{`英: [${ph_en}] 美: [${ph_am}]`}
- {parts.map(({ part, means }, idx) => (
-
{`[${part}]: ${means.join("; ")}`}
- ))}
-
- ))}
-
- );
-}
-
-function TranCont({ text, translator, fromLang, toLang, transApis }) {
- const i18n = useI18n();
- const [trText, setTrText] = useState("");
- const [loading, setLoading] = useState(false);
- const [error, setError] = useState("");
- const [dictResult, setDictResult] = useState(null);
-
- useEffect(() => {
- (async () => {
- try {
- setLoading(true);
- setTrText("");
- setError("");
- setDictResult(null);
-
- const apis = { ...transApis, ...DEFAULT_TRANS_APIS };
- const apiSetting = apis[translator];
- const tranRes = await apiTranslate({
- text,
- translator,
- fromLang,
- toLang,
- apiSetting,
- });
- setTrText(tranRes[0]);
-
- // 词典
- if (isValidWord(text) && toLang.startsWith("zh")) {
- if (fromLang === "en" && translator === OPT_TRANS_BAIDU) {
- setDictResult(tranRes[2]);
- } else {
- const dictRes = await apiTranslate({
- text,
- translator: OPT_TRANS_BAIDU,
- fromLang: "en",
- toLang: "zh-CN",
- apiSetting: apis[OPT_TRANS_BAIDU],
- });
- setDictResult(dictRes[2].dict_result);
- }
- }
- } catch (err) {
- setError(err.message);
- } finally {
- setLoading(false);
- }
- })();
- }, [text, translator, fromLang, toLang, transApis]);
-
- return (
- <>
-