Localize user-facing UI, agent output, and backend messages to Simplified Chinese
ci / go (push) Waiting to run
ci / go-db (agent) (push) Waiting to run
ci / go-db (config) (push) Waiting to run
ci / go-db (db) (push) Waiting to run
ci / go-db (evidence) (push) Waiting to run
ci / go-db (llmrec) (push) Waiting to run
ci / go-db (server) (push) Waiting to run
detections / detections (push) Waiting to run
docs / links (push) Waiting to run
web / web (push) Waiting to run

This commit is contained in:
dela
2026-10-09 14:08:31 +08:00
parent 8af63417c8
commit 97668dab7e
148 changed files with 1671 additions and 1672 deletions
+13 -13
View File
@@ -6,17 +6,17 @@ import (
"unicode"
)
// A2: wrap-up / settlement 프롬프트 한국어화.
// A2: wrap-up / settlement 프롬프트 중국어화.
//
// 이 상수들은 run 또는 task 가 단계/시간 예산에 걸려 종료될 때 settlement 단계에서
// 주입되어, 사용자에게 그대로 노출되는 최종 요약을 직접 지시한다. 따라서 (1) 한국어로
// 작성되어야 하고, (2) 중국어(CJK 한자) 잔재가 없어야 하며, (3) 도구 이름과
// 주입되어, 사용자에게 그대로 노출되는 최종 요약을 직접 지시한다. 따라서 (1) 중국어로
// 작성되어야 하고, (2) 한글(Hangul) 잔재가 없어야 하며, (3) 도구 이름과
// "한 문장 순수 텍스트" 같은 지시 의미가 보존되어야 한다.
//
// DB 시드는 wrapup_prompt / task_timeout_wrapup_prompt 를 빈 문자열로 두고(db/db.go 의
// builtin 에이전트 INSERT 는 이 컬럼을 채우지 않는다), 비어 있으면 이 상수로 떨어진다.
// 즉 이 상수들이 wrap-up 문구의 유일한 원천이다.
func TestWrapupPromptsLocalizedToKorean(t *testing.T) {
func TestWrapupPromptsLocalizedToChinese(t *testing.T) {
all := map[string]string{
"settleWrapUpPrompt": settleWrapUpPrompt,
"plannerWrapUpDefault": plannerWrapUpDefault,
@@ -36,12 +36,12 @@ func TestWrapupPromptsLocalizedToKorean(t *testing.T) {
}
for name, p := range all {
if !hasScript(p, unicode.Hangul) {
t.Errorf("%s: 한글이 전혀 없어 한국어화되지 않았다", name)
if !hasScript(p, unicode.Han) {
t.Errorf("%s: 한자가 전혀 없어 중국어화되지 않았다", name)
}
// 도구 이름은 ASCII, 한글은 Hangul 블록이라 번역이 끝났다면 CJK 한자가 하나도 없어야 한다.
if hasScript(p, unicode.Han) {
t.Errorf("%s: CJK 한자 잔재가 남아 번역이 미완이다: %q", name, p)
// 도구 이름은 ASCII 이므로, 번역이 끝났다면 한글(Hangul)이 하나도 없어야 한다.
if hasScript(p, unicode.Hangul) {
t.Errorf("%s: 한글 잔재가 남아 번역이 미완이다: %q", name, p)
}
}
@@ -56,11 +56,11 @@ func TestWrapupPromptsLocalizedToKorean(t *testing.T) {
}
}
mustContain("settleWrapUpPrompt", settleWrapUpPrompt,
"insert_assets", "record_fact", "report_finding", "한 문장", "순수 텍스트")
"insert_assets", "record_fact", "report_finding", "一句", "纯文本")
mustContain("workerTaskTimeoutDefault", workerTaskTimeoutDefault,
"insert_assets", "record_fact", "report_finding", "한 문장", "순수 텍스트")
mustContain("genericWrapUpDefault", genericWrapUpDefault, "한 문장", "순수 텍스트")
mustContain("mainAgentWrapUpDefault", mainAgentWrapUpDefault, "한 문장", "순수 텍스트")
"insert_assets", "record_fact", "report_finding", "一句", "纯文本")
mustContain("genericWrapUpDefault", genericWrapUpDefault, "一句", "纯文本")
mustContain("mainAgentWrapUpDefault", mainAgentWrapUpDefault, "一句", "纯文本")
// planner 는 요약 문장을 내지 않고(판정만 하고 종료) 의도·목표·할일 도구를 유지한다.
mustContain("plannerWrapUpDefault", plannerWrapUpDefault, "add_intent", "prove_goal", "TodoWrite")
mustContain("plannerTaskTimeoutDefault", plannerTaskTimeoutDefault, "prove_goal")