# -*- coding: utf-8 -*- """英译中,入库前统一翻译""" import os import re from typing import Optional def _is_mostly_chinese(text: str) -> bool: if not text or len(text.strip()) < 2: return False chinese = len(re.findall(r"[\u4e00-\u9fff]", text)) return chinese / max(len(text), 1) > 0.3 def translate_to_chinese(text: str) -> str: """将文本翻译成中文,失败或已是中文则返回原文。Google 失败时尝试 MyMemory。""" if not text or not text.strip(): return text if os.environ.get("TRANSLATE_DISABLED", "0") == "1": return text s = str(text).strip() if len(s) > 2000: s = s[:2000] if _is_mostly_chinese(s): return text for translator in ["google", "mymemory"]: try: if translator == "google": from deep_translator import GoogleTranslator out = GoogleTranslator(source="auto", target="zh-CN").translate(s) else: from deep_translator import MyMemoryTranslator out = MyMemoryTranslator(source="auto", target="zh-CN").translate(s) if out and out.strip() and out != s: return out except Exception: continue return text