From ffdeb79c0ba7209f04cb49c00c9503bb7caf01f8 Mon Sep 17 00:00:00 2001 From: guoqingshan Date: Sun, 2 Aug 2026 09:02:58 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=87=AA=E5=AE=9A=E4=B9=89=E7=BF=BB?= =?UTF-8?q?=E8=AF=91=E7=AE=80=E4=BD=93=E4=B8=AD=E6=96=87=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=20zh-hans?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + app.js | 4 ++-- server/settings_api.py | 2 +- server/translate_service.py | 22 ++++++++++++++++------ 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index e656de5..c0f76e7 100644 --- a/README.md +++ b/README.md @@ -81,6 +81,7 @@ server/data/spanish_diary.db - 共享知识库 - 每用户翻译配置(本地 / MyMemory / 自定义接口) - 实时翻译、选中翻译、保存和中译西统一调用每用户翻译配置 +- LibreTranslate 等自定义接口默认使用 `zh-hans` 表示简体中文,可通过扩展配置 `zh_code` 覆盖 - 每用户日记统计 - 每用户单词收藏 - 手机、平板、桌面响应式适配 diff --git a/app.js b/app.js index 78cbbc8..203dee9 100644 --- a/app.js +++ b/app.js @@ -116,7 +116,7 @@ function translateEditorToEnZh(text) { } return Promise.all([ apiTranslate({ text: text, source: 'es', target: 'en' }), - apiTranslate({ text: text, source: 'es', target: 'zh' }) + apiTranslate({ text: text, source: 'es', target: 'zh-hans' }) ]).then(function(results) { if (!results[0].translatedText || !results[1].translatedText) { throw new Error('翻译接口未返回结果'); @@ -397,7 +397,7 @@ function translateZhOnline(zh) { var seq = ++helperRequestSeq; var request; if (shouldUseApiTranslation()) { - request = apiTranslate({ text: zh, source: 'zh', target: 'es' }).then(function(data) { + request = apiTranslate({ text: zh, source: 'zh-hans', target: 'es' }).then(function(data) { return { translatedText: data.translatedText }; }); } else if (!BACKEND_MODE) { diff --git a/server/settings_api.py b/server/settings_api.py index 572cf11..9d8cd85 100644 --- a/server/settings_api.py +++ b/server/settings_api.py @@ -85,7 +85,7 @@ def translate_text(user): text = (data.get("text") or "").strip() if not text: return jsonify({"error": "翻译内容不能为空"}), 400 - source = (data.get("source") or "zh").strip() + source = (data.get("source") or "zh-hans").strip() target = (data.get("target") or "es").strip() settings = get_user_settings(user["id"]) result = perform_translate(text, settings, source, target) diff --git a/server/translate_service.py b/server/translate_service.py index ff96112..450dd2e 100644 --- a/server/translate_service.py +++ b/server/translate_service.py @@ -19,7 +19,7 @@ def translate_mymemory(text, source="zh-CN", target="es"): return {"ok": False, "error": str(exc)} -def translate_custom(text, settings, source="zh", target="es"): +def translate_custom(text, settings, source="zh-hans", target="es"): api_url = (settings.get("api_url") or "").strip() if not api_url: return {"ok": False, "error": "未配置自定义翻译接口地址"} @@ -30,6 +30,12 @@ def translate_custom(text, settings, source="zh", target="es"): except Exception: extra = {} + zh_code = extra.get("zh_code", "zh-hans") + if source.lower() in ("zh", "zh-cn", "zh-hans"): + source = zh_code + if target.lower() in ("zh", "zh-cn", "zh-hans"): + target = zh_code + payload = extra.get("payload", {}) payload["q"] = text payload["source"] = source @@ -65,14 +71,18 @@ def translate_custom(text, settings, source="zh", target="es"): return {"ok": False, "error": str(exc)} -def perform_translate(text, settings, source="zh", target="es"): +def perform_translate(text, settings, source="zh-hans", target="es"): provider = (settings.get("translator") or "local").lower() if provider == "mymemory": + if source.lower() in ("zh", "zh-cn", "zh-hans"): + source = "zh-hans" + if target.lower() in ("zh", "zh-cn", "zh-hans"): + target = "zh-hans" lang_map = { - ("zh", "es"): ("zh-CN", "es"), - ("es", "zh"): ("es", "zh-CN"), - ("zh", "en"): ("zh-CN", "en"), - ("en", "zh"): ("en", "zh-CN"), + ("zh-hans", "es"): ("zh-CN", "es"), + ("es", "zh-hans"): ("es", "zh-CN"), + ("zh-hans", "en"): ("zh-CN", "en"), + ("en", "zh-hans"): ("en", "zh-CN"), ("es", "en"): ("es", "en"), ("en", "es"): ("en", "es"), }