Files
live-app-translator/src/livesub/resources/glossaries/watchdogs.json
EJClaw bede94ee48 fix: 포터블에 transformers 포함 + 실제 모델로 드러난 용어집 결함 수정
리뷰 지적(포터블에서 transformers 제외 -> NLLB 로드 실패)을 고치려고 실제
NLLB 를 받아 돌려봤고, 그 과정에서 용어집이 사실상 동작하지 않고 있었다는
것을 발견했다. 단위 테스트는 "모델이 자리표시자를 통과시킨다"는 틀린 전제
위에 서 있었다.

1) 포터블 패키징 (리뷰 지적)
   transformers 를 제외 목록에서 빼고 hiddenimports 에 넣었다. NLLB
   토크나이저가 AutoTokenizer 를 쓰기 때문이다. transformers 는 torch 가
   없으면 토크나이저 전용 모드로 뜨며 그게 우리 용도와 정확히 맞는다.
   torch 없는 환경에서 ctranslate2/transformers/faster-whisper import 와
   앱 기동을 검증하는 test_portable.py 를 추가했다.

2) 자리표시자 형식 (실측으로 발견)
   `⟦0⟧` 는 NLLB 가 괄호를 날려 생존률 0/3 이었다. 용어가 자막에서 그냥
   사라지고 있었다 ("Third party incoming" -> "0 들어오는"). 후보 8종을
   실제 모델로 비교해 `#0#` 로 교체 (3/3, 다중 4/5).

3) 소실 대비
   모델이 문장 일부를 누락하면 자리표시자도 사라진다. 그대로 복원하면
   용어가 증발하므로, 하나라도 없으면 보호 없이 재번역한다.

4) 서술어는 문장 전체일 때만 (whole_only)
   절/서술어를 문장 중간에서 치환하면 문법이 무너진다.
     before: "탄 필요해와 구급상자"
     after : "탄약과 구급상자가 필요합니다"
   해당 56개 항목을 whole_only 로 지정해 단독 발화일 때만 적용한다.
   ("Cover me!" -> "엄호해줘" 는 그대로 유지)

5) 조사 교정
   역어 받침이 달라 "자기장를" 이 남던 것을 fix_particles() 로 고친다.
   을/를, 이/가, 은/는, 과/와, (으)로 — 한글 코드에서 받침을 읽어 판정.

검증: pytest 189개 통과, ruff clean
      실제 NLLB-600M(torch 없이 CPU)로 번역 품질 직접 확인

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-09-23 01:20:42 +09:00

488 lines
9.5 KiB
JSON

{
"key": "watchdogs",
"name": "워치독스 (Watch Dogs)",
"description": "1·2·리전 공통. 조직명과 해킹 용어는 고유명사라 번역기가 특히 잘 틀립니다.",
"scope": "game",
"entries": [
{
"source": "DedSec",
"targets": {
"ko": "데드섹",
"ja": "デッドセック",
"zh": "DedSec"
}
},
{
"source": "ctOS",
"targets": {
"ko": "ctOS",
"ja": "ctOS",
"zh": "ctOS"
}
},
{
"source": "Blume",
"targets": {
"ko": "블룸",
"ja": "ブルーム",
"zh": "布鲁姆"
}
},
{
"source": "Albion",
"targets": {
"ko": "알비온",
"ja": "アルビオン",
"zh": "阿尔比恩"
}
},
{
"source": "Clan Kelley",
"targets": {
"ko": "켈리 클랜",
"ja": "ケリー一家",
"zh": "凯利帮"
}
},
{
"source": "Zero Day",
"targets": {
"ko": "제로 데이",
"ja": "ゼロデイ",
"zh": "零日"
}
},
{
"source": "Bratva",
"targets": {
"ko": "브라트바",
"ja": "ブラトヴァ",
"zh": "兄弟会"
}
},
{
"source": "Viceroys",
"targets": {
"ko": "바이스로이",
"ja": "ヴァイスロイ",
"zh": "总督帮"
}
},
{
"source": "the Fixer",
"targets": {
"ko": "해결사",
"ja": "フィクサー",
"zh": "中间人"
}
},
{
"source": "fixer contract",
"targets": {
"ko": "해결사 의뢰",
"ja": "フィクサー依頼",
"zh": "中间人任务"
}
},
{
"source": "operative",
"targets": {
"ko": "요원",
"ja": "オペレーティブ",
"zh": "特工"
}
},
{
"source": "recruit",
"targets": {
"ko": "영입",
"ja": "勧誘",
"zh": "招募"
}
},
{
"source": "permadeath",
"targets": {
"ko": "영구 사망",
"ja": "パーマデス",
"zh": "永久死亡"
}
},
{
"source": "hack",
"targets": {
"ko": "해킹",
"ja": "ハッキング",
"zh": "黑入"
}
},
{
"source": "hacked",
"targets": {
"ko": "해킹됐다",
"ja": "ハックされた",
"zh": "被黑了"
},
"whole_only": true
},
{
"source": "remote hack",
"targets": {
"ko": "원격 해킹",
"ja": "リモートハック",
"zh": "远程黑入"
}
},
{
"source": "backdoor",
"targets": {
"ko": "백도어",
"ja": "バックドア",
"zh": "后门"
}
},
{
"source": "firewall",
"targets": {
"ko": "방화벽",
"ja": "ファイアウォール",
"zh": "防火墙"
}
},
{
"source": "exploit",
"targets": {
"ko": "익스플로잇",
"ja": "エクスプロイト",
"zh": "漏洞利用"
}
},
{
"source": "payload",
"targets": {
"ko": "페이로드",
"ja": "ペイロード",
"zh": "载荷"
}
},
{
"source": "botnet",
"targets": {
"ko": "봇넷",
"ja": "ボットネット",
"zh": "僵尸网络"
}
},
{
"source": "server farm",
"targets": {
"ko": "서버 팜",
"ja": "サーバーファーム",
"zh": "服务器农场"
}
},
{
"source": "data breach",
"targets": {
"ko": "정보 유출",
"ja": "情報漏洩",
"zh": "数据泄露"
}
},
{
"source": "encryption",
"targets": {
"ko": "암호화",
"ja": "暗号化",
"zh": "加密"
}
},
{
"source": "profiler",
"targets": {
"ko": "프로파일러",
"ja": "プロファイラー",
"zh": "分析器"
}
},
{
"source": "profiling",
"targets": {
"ko": "신원 조회",
"ja": "プロファイリング",
"zh": "身份分析"
}
},
{
"source": "surveillance",
"targets": {
"ko": "감시",
"ja": "監視",
"zh": "监控"
}
},
{
"source": "security camera",
"targets": {
"ko": "감시 카메라",
"ja": "防犯カメラ",
"zh": "监控摄像头"
}
},
{
"source": "jump to camera",
"targets": {
"ko": "카메라 이동",
"ja": "カメラに移動",
"zh": "切换摄像头"
}
},
{
"source": "NetHack",
"targets": {
"ko": "넷핵",
"ja": "ネットハック",
"zh": "网络视野"
}
},
{
"source": "spiderbot",
"targets": {
"ko": "스파이더봇",
"ja": "スパイダーボット",
"zh": "蜘蛛机器人"
}
},
{
"source": "quadcopter",
"targets": {
"ko": "쿼드콥터",
"ja": "クアッドコプター",
"zh": "四轴飞行器"
}
},
{
"source": "jumper",
"targets": {
"ko": "점퍼",
"ja": "ジャンパー",
"zh": "跳跳车"
}
},
{
"source": "RC car",
"targets": {
"ko": "RC카",
"ja": "ラジコン",
"zh": "遥控车"
}
},
{
"source": "cargo drone",
"targets": {
"ko": "화물 드론",
"ja": "カーゴドローン",
"zh": "货运无人机"
}
},
{
"source": "turret",
"targets": {
"ko": "터렛",
"ja": "タレット",
"zh": "炮塔"
}
},
{
"source": "guard",
"targets": {
"ko": "경비원",
"ja": "警備員",
"zh": "守卫"
}
},
{
"source": "restricted area",
"targets": {
"ko": "제한 구역",
"ja": "立ち入り禁止区域",
"zh": "禁区"
}
},
{
"source": "detected",
"targets": {
"ko": "발각됐다",
"ja": "見つかった",
"zh": "被发现了"
},
"whole_only": true
},
{
"source": "stay hidden",
"targets": {
"ko": "숨어 있어",
"ja": "隠れてろ",
"zh": "别暴露"
},
"whole_only": true
},
{
"source": "take down",
"targets": {
"ko": "제압",
"ja": "テイクダウン",
"zh": "制服"
},
"whole_only": true
},
{
"source": "non lethal",
"targets": {
"ko": "비살상",
"ja": "非殺傷",
"zh": "非致命"
}
},
{
"source": "lethal",
"targets": {
"ko": "살상",
"ja": "殺傷",
"zh": "致命"
},
"whole_only": true
},
{
"source": "heat level",
"targets": {
"ko": "수배 단계",
"ja": "指名手配レベル",
"zh": "通缉等级"
}
},
{
"source": "wanted",
"targets": {
"ko": "수배 중",
"ja": "指名手配",
"zh": "被通缉"
}
},
{
"source": "lose the cops",
"targets": {
"ko": "경찰 따돌려",
"ja": "警察撒いて",
"zh": "甩掉警察"
},
"whole_only": true
},
{
"source": "traffic light",
"targets": {
"ko": "신호등",
"ja": "信号機",
"zh": "红绿灯"
}
},
{
"source": "steam pipe",
"targets": {
"ko": "증기관",
"ja": "蒸気管",
"zh": "蒸汽管道"
}
},
{
"source": "blocker",
"targets": {
"ko": "차단봉",
"ja": "ブロッカー",
"zh": "路障"
}
},
{
"source": "escape",
"targets": {
"ko": "도주",
"ja": "逃走",
"zh": "逃脱"
}
},
{
"source": "mission",
"targets": {
"ko": "임무",
"ja": "ミッション",
"zh": "任务"
}
},
{
"source": "side mission",
"targets": {
"ko": "서브 임무",
"ja": "サブミッション",
"zh": "支线任务"
}
},
{
"source": "checkpoint",
"targets": {
"ko": "체크포인트",
"ja": "チェックポイント",
"zh": "检查点"
}
},
{
"source": "borough",
"targets": {
"ko": "자치구",
"ja": "区",
"zh": "行政区"
}
},
{
"source": "uprising",
"targets": {
"ko": "봉기",
"ja": "蜂起",
"zh": "起义"
}
},
{
"source": "resistance",
"targets": {
"ko": "저항군",
"ja": "レジスタンス",
"zh": "抵抗组织"
}
},
{
"source": "whistleblower",
"targets": {
"ko": "내부 고발자",
"ja": "内部告発者",
"zh": "举报人"
}
},
{
"source": "privacy",
"targets": {
"ko": "사생활",
"ja": "プライバシー",
"zh": "隐私"
}
},
{
"source": "the city is watching",
"targets": {
"ko": "도시가 지켜보고 있다",
"ja": "街が見ている",
"zh": "城市在注视"
},
"whole_only": true
}
]
}