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" -> {