From 4ed0f43164a0c57e5a156b10ac479a639e5b7df0 Mon Sep 17 00:00:00 2001 From: goddonebianu Date: Sun, 16 Nov 2025 15:42:08 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=A0=A1=E4=BA=86ai=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E8=AF=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/(features)/translator/AddToFolder.tsx | 62 ++++++++++--------- src/app/(features)/translator/page.tsx | 2 +- src/app/api/v1/ipa/route.ts | 2 +- src/app/api/v1/locale/route.ts | 2 +- src/app/api/v1/translate/route.ts | 2 +- src/lib/ai.ts | 2 +- 6 files changed, 38 insertions(+), 34 deletions(-) diff --git a/src/app/(features)/translator/AddToFolder.tsx b/src/app/(features)/translator/AddToFolder.tsx index 3718fab..3ce4454 100644 --- a/src/app/(features)/translator/AddToFolder.tsx +++ b/src/app/(features)/translator/AddToFolder.tsx @@ -20,10 +20,13 @@ const AddToFolder: React.FC = ({ item, setShow }) => { const session = useSession(); const [folders, setFolders] = useState([]); const t = useTranslations("translator.add_to_folder"); + const [loading, setLoading] = useState(true); useEffect(() => { const username = session.data!.user!.name as string; - getFoldersByOwner(username).then(setFolders); + getFoldersByOwner(username) + .then(setFolders) + .then(() => setLoading(false)); }, [session.data]); if (session.status !== "authenticated") { @@ -40,36 +43,37 @@ const AddToFolder: React.FC = ({ item, setShow }) => {

{t("chooseFolder")}

- {(folders.length > 0 && - folders.map((folder) => ( - - ))) ||
{t("noFolders")}
} + .then(() => { + toast.success(t("success")); + setShow(false); + }) + .catch(() => { + toast.error(t("error")); + }); + }} + > + + {t("folderInfo", { id: folder.id, name: folder.name })} + + ))) ||
{t("noFolders")}
}
setShow(false)}>{t("close")}
diff --git a/src/app/(features)/translator/page.tsx b/src/app/(features)/translator/page.tsx index 0baad89..e3c1199 100644 --- a/src/app/(features)/translator/page.tsx +++ b/src/app/(features)/translator/page.tsx @@ -263,7 +263,7 @@ export default function TranslatorPage() {

{t("history")}

- {history.map((item, index) => ( + {history.toReversed().map((item, index) => (
diff --git a/src/app/api/v1/ipa/route.ts b/src/app/api/v1/ipa/route.ts index 6ad60b9..07a8373 100644 --- a/src/app/api/v1/ipa/route.ts +++ b/src/app/api/v1/ipa/route.ts @@ -3,7 +3,7 @@ import { NextRequest } from "next/server"; export async function GET(req: NextRequest) { return await simpleGetLLMAnswer( - `请生成%s的严式国际音标(International Phonetic Alphabet),然后直接发给我。`, + `请生成[[[%s]]]的严式国际音标(International Phonetic Alphabet),然后直接发给我,不要附带任何说明。`, req.nextUrl.searchParams, ["text"], ); diff --git a/src/app/api/v1/locale/route.ts b/src/app/api/v1/locale/route.ts index b48fffe..ba2e77a 100644 --- a/src/app/api/v1/locale/route.ts +++ b/src/app/api/v1/locale/route.ts @@ -3,7 +3,7 @@ import { NextRequest } from "next/server"; export async function GET(req: NextRequest) { return await simpleGetLLMAnswer( - `请根据文本“%s”推断地区(locale),形如zh-CN、en-US,然后直接发给我。`, + `请根据文本[[[%s]]]推断地区(locale),形如zh-CN、en-US,然后直接发给我,不要附带任何说明。`, req.nextUrl.searchParams, ["text"], ); diff --git a/src/app/api/v1/translate/route.ts b/src/app/api/v1/translate/route.ts index 3ebe5b8..ad5c9f9 100644 --- a/src/app/api/v1/translate/route.ts +++ b/src/app/api/v1/translate/route.ts @@ -3,7 +3,7 @@ import { NextRequest } from "next/server"; export async function GET(req: NextRequest) { return await simpleGetLLMAnswer( - `请翻译%s到%s然后直接发给我。`, + `请翻译文本[[[%s]]]到语言[[[%s]]]然后直接发给我,不要附带任何说明,不要新增任何符号。`, req.nextUrl.searchParams, ["text", "lang"], ); diff --git a/src/lib/ai.ts b/src/lib/ai.ts index e41fb92..10f8a95 100644 --- a/src/lib/ai.ts +++ b/src/lib/ai.ts @@ -23,7 +23,7 @@ async function callZhipuAPI( }); if (!response.ok) { - throw new Error(`API 调用失败: ${response.status}`); + throw new Error(`API 调用失败: ${response.status} ${response.statusText}`); } return await response.json();