From c25f40927e416a02d7d93d3cf40fc7183af45510 Mon Sep 17 00:00:00 2001 From: liwenhao2 Date: Tue, 15 Sep 2026 10:59:36 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BF=BB=E8=AF=91=E4=B8=89=E8=AF=AD=E9=94=81?= =?UTF-8?q?=E5=AE=9A:=20=E6=8F=90=E7=A4=BA=E8=AF=8D=E6=98=BE=E5=BC=8F?= =?UTF-8?q?=E5=A3=B0=E6=98=8E=E5=8F=AA=E5=9C=A8=E4=B8=AD/=E6=97=A5/?= =?UTF-8?q?=E8=8B=B1=E9=97=B4=E7=BF=BB=E8=AF=91(=E9=9D=9E=E4=B8=89?= =?UTF-8?q?=E8=AF=AD=E8=BE=93=E5=85=A5=E8=BE=93=E5=87=BA=E7=A9=BA=E4=B8=B2?= =?UTF-8?q?),targetLangOk=E5=AF=B9=E8=A5=BF=E9=87=8C=E5=B0=94/=E9=98=BF?= =?UTF-8?q?=E6=8B=89=E4=BC=AF/=E5=B8=8C=E4=BC=AF=E6=9D=A5/=E6=B3=B0/?= =?UTF-8?q?=E9=9F=A9=E7=AD=89=E4=B8=89=E8=AF=AD=E5=A4=96=E6=96=87=E5=AD=97?= =?UTF-8?q?=E9=9B=B6=E5=AE=B9=E5=BF=8D(=E4=BB=BB=E4=BD=95=E7=9B=AE?= =?UTF-8?q?=E6=A0=87=E8=AF=AD=E7=9B=B4=E6=8E=A5=E6=8B=92=E6=94=B6=E2=86=92?= =?UTF-8?q?MISS=20langdrift=E2=86=92=E9=87=8D=E8=AF=95)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/k2fsa/sherpa/onnx/MainActivity.kt | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/k2fsa/sherpa/onnx/MainActivity.kt b/app/src/main/java/com/k2fsa/sherpa/onnx/MainActivity.kt index 639a1b7..ce6c269 100644 --- a/app/src/main/java/com/k2fsa/sherpa/onnx/MainActivity.kt +++ b/app/src/main/java/com/k2fsa/sherpa/onnx/MainActivity.kt @@ -2113,7 +2113,8 @@ class MainActivity : AppCompatActivity() { engine.generate( systemPrompt = "你是专业翻译。把给出的句子翻译成" + targetName + "。只输出译文本身,不要解释、不要引号、不要抄写原文。" + - langHint + "。", + "你只在中文、日本語、English 三种语言之间翻译;" + + "输入不属于这三种语言时输出空字符串。" + langHint + "。", userPrompt = segKeys[0].second, maxNewTokens = budget, temperature = temp, ) @@ -2134,6 +2135,7 @@ class MainActivity : AppCompatActivity() { "只输出JSON对象,键是编号字符串,值是译文," + "例如 {\"1\":\"…\",\"2\":\"…\"}。不得增删编号。" + "严禁把原文照抄为译文;无法翻译的段值输出空字符串。" + + "你只在中文、日本語、English 三种语言之间翻译。" + langHint + "。", userPrompt = "【文本】\n" + numbered, maxNewTokens = budget, temperature = temp, @@ -2160,6 +2162,7 @@ class MainActivity : AppCompatActivity() { e2.generate( systemPrompt = "你是专业翻译。把给出的文本翻译成" + targetName + "。只输出译文本身,不要解释。" + + "你只在中文、日本語、English 三种语言之间翻译。" + langHint + "。", userPrompt = st.second, maxNewTokens = (st.second.length * 2 + 96) @@ -2242,6 +2245,14 @@ class MainActivity : AppCompatActivity() { // ja 必须含足量假名;zh 不得有假名且繁体专用字 ≤1;en 不得含 CJK。 private val tradOnlyChars = "們這來說對學體豐華讓裡國變顯點單據觀" private fun targetLangOk(tr: String): Boolean { + // 三语以外文字零容忍(漂移成俄语/韩语/阿语/泰语等时任何目标语都不该放行) + tr.forEach { c -> + val cp = c.code + if (cp in 0x400..0x4FF || cp in 0x600..0x6FF || cp in 0x590..0x5FF || + cp in 0xE00..0xE7F || cp in 0x3130..0x318F || + cp in 0xAC00..0xD7AF || cp in 0x1100..0x11FF + ) return false + } if (tr.length < 12) return true return when (uiLanguage()) { "ja" -> {