fix: 自定义翻译简体中文统一使用 zh-hans

This commit is contained in:
guoqingshan
2026-08-02 09:02:58 +08:00
parent 3eabdc9f32
commit ffdeb79c0b
4 changed files with 20 additions and 9 deletions
+1
View File
@@ -81,6 +81,7 @@ server/data/spanish_diary.db
- 共享知识库 - 共享知识库
- 每用户翻译配置(本地 / MyMemory / 自定义接口) - 每用户翻译配置(本地 / MyMemory / 自定义接口)
- 实时翻译、选中翻译、保存和中译西统一调用每用户翻译配置 - 实时翻译、选中翻译、保存和中译西统一调用每用户翻译配置
- LibreTranslate 等自定义接口默认使用 `zh-hans` 表示简体中文,可通过扩展配置 `zh_code` 覆盖
- 每用户日记统计 - 每用户日记统计
- 每用户单词收藏 - 每用户单词收藏
- 手机、平板、桌面响应式适配 - 手机、平板、桌面响应式适配
+2 -2
View File
@@ -116,7 +116,7 @@ function translateEditorToEnZh(text) {
} }
return Promise.all([ return Promise.all([
apiTranslate({ text: text, source: 'es', target: 'en' }), 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) { ]).then(function(results) {
if (!results[0].translatedText || !results[1].translatedText) { if (!results[0].translatedText || !results[1].translatedText) {
throw new Error('翻译接口未返回结果'); throw new Error('翻译接口未返回结果');
@@ -397,7 +397,7 @@ function translateZhOnline(zh) {
var seq = ++helperRequestSeq; var seq = ++helperRequestSeq;
var request; var request;
if (shouldUseApiTranslation()) { 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 }; return { translatedText: data.translatedText };
}); });
} else if (!BACKEND_MODE) { } else if (!BACKEND_MODE) {
+1 -1
View File
@@ -85,7 +85,7 @@ def translate_text(user):
text = (data.get("text") or "").strip() text = (data.get("text") or "").strip()
if not text: if not text:
return jsonify({"error": "翻译内容不能为空"}), 400 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() target = (data.get("target") or "es").strip()
settings = get_user_settings(user["id"]) settings = get_user_settings(user["id"])
result = perform_translate(text, settings, source, target) result = perform_translate(text, settings, source, target)
+16 -6
View File
@@ -19,7 +19,7 @@ def translate_mymemory(text, source="zh-CN", target="es"):
return {"ok": False, "error": str(exc)} 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() api_url = (settings.get("api_url") or "").strip()
if not api_url: if not api_url:
return {"ok": False, "error": "未配置自定义翻译接口地址"} return {"ok": False, "error": "未配置自定义翻译接口地址"}
@@ -30,6 +30,12 @@ def translate_custom(text, settings, source="zh", target="es"):
except Exception: except Exception:
extra = {} 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 = extra.get("payload", {})
payload["q"] = text payload["q"] = text
payload["source"] = source payload["source"] = source
@@ -65,14 +71,18 @@ def translate_custom(text, settings, source="zh", target="es"):
return {"ok": False, "error": str(exc)} 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() provider = (settings.get("translator") or "local").lower()
if provider == "mymemory": 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 = { lang_map = {
("zh", "es"): ("zh-CN", "es"), ("zh-hans", "es"): ("zh-CN", "es"),
("es", "zh"): ("es", "zh-CN"), ("es", "zh-hans"): ("es", "zh-CN"),
("zh", "en"): ("zh-CN", "en"), ("zh-hans", "en"): ("zh-CN", "en"),
("en", "zh"): ("en", "zh-CN"), ("en", "zh-hans"): ("en", "zh-CN"),
("es", "en"): ("es", "en"), ("es", "en"): ("es", "en"),
("en", "es"): ("en", "es"), ("en", "es"): ("en", "es"),
} }