fix: 필수 팩 기본 활성화 + 저부하 모드 토글 반영 + 용어 겹침 수정

리뷰 지적 2건과, 그것을 고치다 드러난 용어집 버그 1건을 함께 처리했다.

1) 저부하 모드 토글이 모델에 반영되지 않던 버그
   ModelManager 는 생성 시점의 low_power 로 정밀도를 정하는데 설정에서
   토글해도 갱신되지 않았고, stop() 은 모델을 내리지 않아 이전 정밀도
   모델이 그대로 남았다. TranslationEngine.sync_performance() 를 추가해
   값이 바뀌면 언로드 후 갱신하고, _bootstrap 과 재시작 경로에서 부른다.

2) 필수 게임 팩이 기본으로 꺼져 있던 문제
   새 설치 기본값을 fps-common + 오버워치 + 배그 + R6 + 워독스로 켰다.

3) (1)(2)를 고치며 드러난 것: 팩 여러 개를 켜면 결과가 체크 순서에
   휘둘렸다. knocked 가 FPS공통 "기절" / 배그 "눕혔다" 로 갈리는 식으로
   19개 용어가 충돌하는데, 사용자는 그 순서를 볼 수도 바꿀 수도 없었다.
   팩에 scope(generic/game) 를 두고 범용 -> 게임 전용 -> 사용자 항목
   순으로 적용해 결정적으로 만들었다. 게임 팩끼리 갈리는 것은 사람이
   판단할 문제라 find_conflicts() 로 뽑아 용어집 화면에 표시한다.

4) 용어 겹침 버그: "the blue"(조각)가 "blue zone" 보다 앞 위치라는
   이유로 먼저 잡혀 "자기장 자기장" 이 됐다. 최장일치 정렬은 같은 시작
   위치에서만 통한다. 조각 항목을 제거하고, 모든 팩을 켠 상태로 각
   용어가 정확히 한 번만 치환되는지 검사하는 테스트를 추가했다.

검증: pytest 110개 통과 (저부하 6 + 팩 계층/충돌/겹침 12 신규), ruff clean

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
EJClaw
2026-09-21 18:05:22 +09:00
parent a7eafd03e1
commit e4a048c8d5
19 changed files with 4266 additions and 506 deletions

View File

@@ -28,7 +28,7 @@
- **게임과 같이 써도 안 무겁게** — GPU를 얼마나 양보할지 직접 정합니다 (아래 참고) - **게임과 같이 써도 안 무겁게** — GPU를 얼마나 양보할지 직접 정합니다 (아래 참고)
- **디스코드식 자막 배치** — 모니터를 고르고 9칸 중 하나를 누르면 그 자리에 붙습니다 - **디스코드식 자막 배치** — 모니터를 고르고 9칸 중 하나를 누르면 그 자리에 붙습니다
- **전역 단축키** — 게임 중에 `Ctrl+Alt+S` 로 자막을 껐다 켭니다 - **전역 단축키** — 게임 중에 `Ctrl+Alt+S` 로 자막을 껐다 켭니다
- **게임별 기본 용어집 내장** — 옵치2·워독스·배그·R6·롤·발로란트·에이펙스 등 **541개** - **게임별 기본 용어집 내장** — 옵치2·워독스·배그·R6·롤·발로란트·에이펙스 등 **540개** (필수 게임은 기본 켜짐)
- **5단계 품질 선택** — 속도 우선(0.6초)부터 품질 우선까지 - **5단계 품질 선택** — 속도 우선(0.6초)부터 품질 우선까지
- **자막 자유 설정** — 글꼴·크기·색·외곽선·투명도·줄 수 - **자막 자유 설정** — 글꼴·크기·색·외곽선·투명도·줄 수
- **추가학습** — 게임/방송 말투로 번역 모델을 LoRA 학습시킬 수 있습니다 - **추가학습** — 게임/방송 말투로 번역 모델을 LoRA 학습시킬 수 있습니다
@@ -155,13 +155,16 @@ VRAM이 넉넉하면 **모델** 화면에서 올리면 됩니다.
게임 고유명사가 이상하게 번역될 때 씁니다. **학습이 필요 없고 즉시 적용됩니다.** 게임 고유명사가 이상하게 번역될 때 씁니다. **학습이 필요 없고 즉시 적용됩니다.**
### 기본 제공 용어집 (체크만 하면 끝) ### 기본 제공 용어집
**처음 설치하면 `FPS 공통 · 오버워치2 · 배그 · R6 · 워독스`가 이미 켜져 있습니다.**
안 하는 게임은 체크를 끄면 됩니다.
| 팩 | 개수 | 내용 | | 팩 | 개수 | 내용 |
|---|---|---| |---|---|---|
| 리그 오브 레전드 | 74 | 바론·갱·억제기·한타·오브젝트 콜 | | 리그 오브 레전드 | 74 | 바론·갱·억제기·한타·오브젝트 콜 |
| 레인보우 식스 시즈 | 67 | 보강·하드브리치·앵커/로머·디퓨저·파밸 | | 레인보우 식스 시즈 | 67 | 보강·하드브리치·앵커/로머·디퓨저·파밸 |
| 배틀그라운드 | 66 | 자기장·어부·파밍·낙하·스쿼드 콜 | | 배틀그라운드 | 65 | 자기장·어부·파밍·낙하·스쿼드 콜 |
| 발로란트 | 59 | 스파이크·설치·해체·이코·리테이크 | | 발로란트 | 59 | 스파이크·설치·해체·이코·리테이크 |
| 워치독스 | 59 | 데드섹·ctOS·블룸·해킹/잠입 용어 | | 워치독스 | 59 | 데드섹·ctOS·블룸·해킹/잠입 용어 |
| 오버워치 2 | 49 | 궁 게이지·거점·화물·역할군 | | 오버워치 2 | 49 | 궁 게이지·거점·화물·역할군 |
@@ -170,7 +173,14 @@ VRAM이 넉넉하면 **모델** 화면에서 올리면 됩니다.
| 마인크래프트 | 38 | 블록·몹·차원 이름 (한국어판 공식 번역어) | | 마인크래프트 | 38 | 블록·몹·차원 이름 (한국어판 공식 번역어) |
| 방송·스트리밍 | 38 | 후원·구독·클립·메타 등 방송 말투 | | 방송·스트리밍 | 38 | 후원·구독·클립·메타 등 방송 말투 |
게임별 팩 + `FPS 공통`을 같이 켜는 것을 권합니다. 겹치는 단어는 게임별 팩이 이깁니다. #### 여러 팩을 같이 켜면
적용 순서는 **장르 공통 → 게임 전용 → 내가 등록한 것** 입니다. 뒤에 오는 쪽이 이기므로
`knocked`는 배그를 켰으면 항상 "눕혔다"(배그)가 되고, 체크한 순서에 휘둘리지 않습니다.
게임 전용 팩끼리 역어가 갈리는 경우(예: `payload`가 오버워치는 "화물", 워독스는 "페이로드")는
용어집 화면이 어떤 단어인지 알려줍니다. 안 하는 게임을 끄거나, 원하는 역어를 직접
등록하면 됩니다.
![용어집 화면](docs/images/glossary.png) ![용어집 화면](docs/images/glossary.png)

View File

@@ -89,6 +89,23 @@ WASAPI의 `ActivateAudioInterfaceAsync` + `AUDIOCLIENT_ACTIVATION_TYPE_PROCESS_L
매번 번역까지 돌리면 GPU가 몇 배로 바빠지고, 문장이 완성되기 전 번역은 어차피 매번 번역까지 돌리면 GPU가 몇 배로 바빠지고, 문장이 완성되기 전 번역은 어차피
틀린다. 그래서 **중간 결과는 원문만, 확정 문장만 번역**한다. 틀린다. 그래서 **중간 결과는 원문만, 확정 문장만 번역**한다.
### 용어집 팩은 계층으로 겹친다
여러 게임 팩을 동시에 켜면 같은 단어의 역어가 갈린다 (`knocked`는 FPS 공통에서
"기절", 배그에서 "눕혔다"). 단순히 켠 순서대로 덮어쓰면 체크박스를 누른 순서가
결과를 바꾸는데, 사용자는 그 순서를 볼 수도 바꿀 수도 없다.
그래서 팩에 `scope`("generic" / "game")를 두고 **범용 → 게임 전용 → 사용자 항목**
순으로 적용한다. 게임 전용이 항상 범용을 이기므로 결과가 결정적이다.
게임 팩끼리 갈리는 것은 사람이 판단할 문제라, `find_conflicts()` 로 뽑아 UI에
그대로 보여준다.
데이터 쪽 함정도 하나 있다. 용어 목록은 최장일치를 위해 길이 내림차순으로
정렬하지만, 이는 **같은 시작 위치**에서만 통한다. "the blue"(조각)가 등록돼
있으면 "the blue zone"에서 더 앞 위치라는 이유로 "blue zone"을 이겨 "자기장
자기장"이 된다. `test_each_term_protects_as_a_single_unit` 이 모든 팩을 켠
상태로 이 겹침을 잡는다.
### 배치 계산을 Qt에서 떼어냈다 ### 배치 계산을 Qt에서 떼어냈다
`placement.py` 는 `ScreenInfo` 라는 순수 데이터만 받아 좌표를 계산한다. 덕분에 `placement.py` 는 `ScreenInfo` 라는 순수 데이터만 받아 좌표를 계산한다. 덕분에

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 131 KiB

View File

@@ -87,8 +87,13 @@ class GlossaryConfig:
enabled: bool = True enabled: bool = True
path: str = "" # 비어있으면 user_data_dir()/glossary.json path: str = "" # 비어있으면 user_data_dir()/glossary.json
case_sensitive: bool = False case_sensitive: bool = False
#: 함께 불러온 기본 제공 용어집 팩 키 목록 (presets/games 참고) #: 처음 설치했을 때 켜져 있는 용어집 팩.
enabled_packs: list[str] = field(default_factory=list) #: 체크를 안 해보고 그냥 쓰는 경우가 대부분이라 기본으로 켜둔다.
#: 게임 전용 팩끼리 역어가 갈리면 용어집 화면이 알려주므로, 안 하는 게임은
#: 꺼주면 된다.
enabled_packs: list[str] = field(
default_factory=lambda: ["fps-common", "overwatch", "pubg", "r6siege", "watchdogs"]
)
@dataclass @dataclass

View File

@@ -103,9 +103,28 @@ class TranslationEngine:
def reload_glossary(self) -> None: def reload_glossary(self) -> None:
self.glossary = self._load_glossary() self.glossary = self._load_glossary()
def sync_performance(self) -> bool:
"""저부하 모드 설정을 모델 매니저에 반영한다. 바뀌었으면 True.
`ModelManager` 는 생성 시점의 `low_power` 로 연산 정밀도를 정한다.
설정에서 모드를 토글해도 이 값을 갱신하지 않으면 이미 올라가 있는
이전 정밀도 모델이 그대로 쓰여서, 껐는데 품질이 안 오르거나 켰는데
게임이 계속 버벅이는 상태가 된다. 그래서 값을 바꾸고 모델을 내려
다음 사용 때 새 사양으로 다시 올라가게 한다.
"""
want = self.config.performance.game_mode
if self.models.low_power == want:
return False
log.info("저부하 모드 %s — 모델을 새 정밀도로 다시 올립니다", "켬" if want else "끔")
self.models.unload()
self.models.low_power = want
return True
# --- 내부 스레드 ---------------------------------------------------- # --- 내부 스레드 ----------------------------------------------------
def _bootstrap(self) -> None: def _bootstrap(self) -> None:
try: try:
# 설정이 바뀐 채로 재시작됐을 수 있으므로 매 시작마다 맞춘다.
self.sync_performance()
perf = self.config.performance perf = self.config.performance
if perf.game_mode and self.config.models.device == "cuda": if perf.game_mode and self.config.models.device == "cuda":
# 모델을 올리기 *전에* 걸어야 상한이 실제로 먹는다. # 모델을 올리기 *전에* 걸어야 상한이 실제로 먹는다.

View File

@@ -2,51 +2,367 @@
"key": "apex", "key": "apex",
"name": "에이펙스 레전드", "name": "에이펙스 레전드",
"description": "링·배너·부활 등 스쿼드 콜. 배틀로얄 FPS를 같이 하신다면 켜두세요.", "description": "링·배너·부활 등 스쿼드 콜. 배틀로얄 FPS를 같이 하신다면 켜두세요.",
"scope": "game",
"entries": [ "entries": [
{"source": "legend", "targets": {"ko": "레전드", "ja": "レジェンド", "zh": "传奇"}}, {
{"source": "ring", "targets": {"ko": "링", "ja": "リング", "zh": "圆圈"}}, "source": "legend",
{"source": "ring is closing", "targets": {"ko": "링 좁혀진다", "ja": "リングが縮む", "zh": "圈要缩了"}}, "targets": {
{"source": "jumpmaster", "targets": {"ko": "점프마스터", "ja": "ジャンプマスター", "zh": "跳伞指挥"}}, "ko": "레전드",
{"source": "hot zone", "targets": {"ko": "핫존", "ja": "ホットゾーン", "zh": "热区"}}, "ja": "レジェンド",
{"source": "care package", "targets": {"ko": "보급", "ja": "ケアパッケージ", "zh": "空投"}}, "zh": "传奇"
{"source": "banner", "targets": {"ko": "배너", "ja": "バナー", "zh": "旗帜"}}, }
{"source": "grab my banner", "targets": {"ko": "내 배너 챙겨", "ja": "バナー取って", "zh": "捡我旗帜"}}, },
{"source": "respawn beacon", "targets": {"ko": "리스폰 비컨", "ja": "リスポーンビーコン", "zh": "重生信标"}}, {
{"source": "survey beacon", "targets": {"ko": "조사 비컨", "ja": "調査ビーコン", "zh": "勘探信标"}}, "source": "ring",
{"source": "knocked", "targets": {"ko": "눕혔다", "ja": "ダウンさせた", "zh": "打倒了"}}, "targets": {
{"source": "thirsting", "targets": {"ko": "마무리", "ja": "追い打ち", "zh": "补刀"}}, "ko": "링",
{"source": "finisher", "targets": {"ko": "피니셔", "ja": "フィニッシャー", "zh": "处决"}}, "ja": "リング",
{"source": "knockdown shield", "targets": {"ko": "녹다운 실드", "ja": "ノックダウンシールド", "zh": "击倒护盾"}}, "zh": "圆圈"
{"source": "evo shield", "targets": {"ko": "진화 실드", "ja": "EVOシールド", "zh": "进化护盾"}}, }
{"source": "shield cell", "targets": {"ko": "실드 셀", "ja": "シールドセル", "zh": "小蓝"}}, },
{"source": "shield battery", "targets": {"ko": "실드 배터리", "ja": "シールドバッテリー", "zh": "大蓝"}}, {
{"source": "med kit", "targets": {"ko": "의료 키트", "ja": "医療キット", "zh": "大血包"}}, "source": "ring is closing",
{"source": "syringe", "targets": {"ko": "주사기", "ja": "注射器", "zh": "小血包"}}, "targets": {
{"source": "phoenix kit", "targets": {"ko": "피닉스 키트", "ja": "フェニックスキット", "zh": "凤凰治疗包"}}, "ko": "링 좁혀진다",
{"source": "heat shield", "targets": {"ko": "히트 실드", "ja": "ヒートシールド", "zh": "隔热罩"}}, "ja": "リングが縮む",
{"source": "ult", "targets": {"ko": "궁", "ja": "アルト", "zh": "大招"}}, "zh": "圈要缩了"
{"source": "ultimate accelerant", "targets": {"ko": "궁 가속제", "ja": "アルト促進剤", "zh": "大招加速器"}}, }
{"source": "tactical", "targets": {"ko": "전술 능력", "ja": "戦術アビリティ", "zh": "战术技能"}}, },
{"source": "passive", "targets": {"ko": "패시브", "ja": "パッシブ", "zh": "被动"}}, {
{"source": "zipline", "targets": {"ko": "집라인", "ja": "ジップライン", "zh": "索道"}}, "source": "jumpmaster",
{"source": "portal", "targets": {"ko": "포탈", "ja": "ポータル", "zh": "传送门"}}, "targets": {
{"source": "dome", "targets": {"ko": "돔", "ja": "ドーム", "zh": "护盾罩"}}, "ko": "점프마스터",
{"source": "gas", "targets": {"ko": "가스", "ja": "ガス", "zh": "毒气"}}, "ja": "ジャンプマスター",
{"source": "wall", "targets": {"ko": "벽", "ja": "ウォール", "zh": "墙"}}, "zh": "跳伞指挥"
{"source": "attachment", "targets": {"ko": "부착물", "ja": "アタッチメント", "zh": "配件"}}, }
{"source": "purple", "targets": {"ko": "보라", "ja": "紫", "zh": "紫色"}}, },
{"source": "gold", "targets": {"ko": "금", "ja": "金", "zh": "金色"}}, {
{"source": "loot bin", "targets": {"ko": "보급 상자", "ja": "ルートビン", "zh": "物资箱"}}, "source": "hot zone",
{"source": "death box", "targets": {"ko": "데스박스", "ja": "デスボックス", "zh": "死亡盒"}}, "targets": {
{"source": "third party", "targets": {"ko": "어부", "ja": "漁夫", "zh": "第三方"}}, "ko": "핫존",
{"source": "rotate", "targets": {"ko": "로테", "ja": "ローテ", "zh": "转点"}}, "ja": "ホットゾーン",
{"source": "push them", "targets": {"ko": "밀어", "ja": "詰めよう", "zh": "推他们"}}, "zh": "热区"
{"source": "back off", "targets": {"ko": "빠져", "ja": "引こう", "zh": "撤"}}, }
{"source": "high ground", "targets": {"ko": "고지", "ja": "高所", "zh": "高地"}}, },
{"source": "ping", "targets": {"ko": "핑", "ja": "ピン", "zh": "标记"}}, {
{"source": "ping it", "targets": {"ko": "핑 찍어", "ja": "ピンして", "zh": "标记一下"}}, "source": "care package",
{"source": "squad wiped", "targets": {"ko": "스쿼드 전멸", "ja": "スクワッド全滅", "zh": "小队团灭"}}, "targets": {
{"source": "champion", "targets": {"ko": "챔피언", "ja": "チャンピオン", "zh": "冠军"}}, "ko": "보급",
{"source": "kill leader", "targets": {"ko": "킬 리더", "ja": "キルリーダー", "zh": "击杀王"}} "ja": "ケアパッケージ",
"zh": "空投"
}
},
{
"source": "banner",
"targets": {
"ko": "배너",
"ja": "バナー",
"zh": "旗帜"
}
},
{
"source": "grab my banner",
"targets": {
"ko": "내 배너 챙겨",
"ja": "バナー取って",
"zh": "捡我旗帜"
}
},
{
"source": "respawn beacon",
"targets": {
"ko": "리스폰 비컨",
"ja": "リスポーンビーコン",
"zh": "重生信标"
}
},
{
"source": "survey beacon",
"targets": {
"ko": "조사 비컨",
"ja": "調査ビーコン",
"zh": "勘探信标"
}
},
{
"source": "knocked",
"targets": {
"ko": "눕혔다",
"ja": "ダウンさせた",
"zh": "打倒了"
}
},
{
"source": "thirsting",
"targets": {
"ko": "마무리",
"ja": "追い打ち",
"zh": "补刀"
}
},
{
"source": "finisher",
"targets": {
"ko": "피니셔",
"ja": "フィニッシャー",
"zh": "处决"
}
},
{
"source": "knockdown shield",
"targets": {
"ko": "녹다운 실드",
"ja": "ノックダウンシールド",
"zh": "击倒护盾"
}
},
{
"source": "evo shield",
"targets": {
"ko": "진화 실드",
"ja": "EVOシールド",
"zh": "进化护盾"
}
},
{
"source": "shield cell",
"targets": {
"ko": "실드 셀",
"ja": "シールドセル",
"zh": "小蓝"
}
},
{
"source": "shield battery",
"targets": {
"ko": "실드 배터리",
"ja": "シールドバッテリー",
"zh": "大蓝"
}
},
{
"source": "med kit",
"targets": {
"ko": "의료 키트",
"ja": "医療キット",
"zh": "大血包"
}
},
{
"source": "syringe",
"targets": {
"ko": "주사기",
"ja": "注射器",
"zh": "小血包"
}
},
{
"source": "phoenix kit",
"targets": {
"ko": "피닉스 키트",
"ja": "フェニックスキット",
"zh": "凤凰治疗包"
}
},
{
"source": "heat shield",
"targets": {
"ko": "히트 실드",
"ja": "ヒートシールド",
"zh": "隔热罩"
}
},
{
"source": "ult",
"targets": {
"ko": "궁",
"ja": "アルト",
"zh": "大招"
}
},
{
"source": "ultimate accelerant",
"targets": {
"ko": "궁 가속제",
"ja": "アルト促進剤",
"zh": "大招加速器"
}
},
{
"source": "tactical",
"targets": {
"ko": "전술 능력",
"ja": "戦術アビリティ",
"zh": "战术技能"
}
},
{
"source": "passive",
"targets": {
"ko": "패시브",
"ja": "パッシブ",
"zh": "被动"
}
},
{
"source": "zipline",
"targets": {
"ko": "집라인",
"ja": "ジップライン",
"zh": "索道"
}
},
{
"source": "portal",
"targets": {
"ko": "포탈",
"ja": "ポータル",
"zh": "传送门"
}
},
{
"source": "dome",
"targets": {
"ko": "돔",
"ja": "ドーム",
"zh": "护盾罩"
}
},
{
"source": "gas",
"targets": {
"ko": "가스",
"ja": "ガス",
"zh": "毒气"
}
},
{
"source": "wall",
"targets": {
"ko": "벽",
"ja": "ウォール",
"zh": "墙"
}
},
{
"source": "attachment",
"targets": {
"ko": "부착물",
"ja": "アタッチメント",
"zh": "配件"
}
},
{
"source": "purple",
"targets": {
"ko": "보라",
"ja": "紫",
"zh": "紫色"
}
},
{
"source": "gold",
"targets": {
"ko": "금",
"ja": "金",
"zh": "金色"
}
},
{
"source": "loot bin",
"targets": {
"ko": "보급 상자",
"ja": "ルートビン",
"zh": "物资箱"
}
},
{
"source": "death box",
"targets": {
"ko": "데스박스",
"ja": "デスボックス",
"zh": "死亡盒"
}
},
{
"source": "third party",
"targets": {
"ko": "어부",
"ja": "漁夫",
"zh": "第三方"
}
},
{
"source": "rotate",
"targets": {
"ko": "로테",
"ja": "ローテ",
"zh": "转点"
}
},
{
"source": "push them",
"targets": {
"ko": "밀어",
"ja": "詰めよう",
"zh": "推他们"
}
},
{
"source": "back off",
"targets": {
"ko": "빠져",
"ja": "引こう",
"zh": "撤"
}
},
{
"source": "high ground",
"targets": {
"ko": "고지",
"ja": "高所",
"zh": "高地"
}
},
{
"source": "ping",
"targets": {
"ko": "핑",
"ja": "ピン",
"zh": "标记"
}
},
{
"source": "ping it",
"targets": {
"ko": "핑 찍어",
"ja": "ピンして",
"zh": "标记一下"
}
},
{
"source": "squad wiped",
"targets": {
"ko": "스쿼드 전멸",
"ja": "スクワッド全滅",
"zh": "小队团灭"
}
},
{
"source": "champion",
"targets": {
"ko": "챔피언",
"ja": "チャンピオン",
"zh": "冠军"
}
},
{
"source": "kill leader",
"targets": {
"ko": "킬 리더",
"ja": "キルリーダー",
"zh": "击杀王"
}
}
] ]
} }

View File

@@ -2,6 +2,7 @@
"key": "fps-common", "key": "fps-common",
"name": "FPS 공통", "name": "FPS 공통",
"description": "장르 전반에서 두루 쓰는 총기·교전·파티 콜. 게임별 팩과 같이 켜세요.", "description": "장르 전반에서 두루 쓰는 총기·교전·파티 콜. 게임별 팩과 같이 켜세요.",
"scope": "generic",
"entries": [ "entries": [
{ {
"source": "enemy", "source": "enemy",

View File

@@ -2,80 +2,599 @@
"key": "lol", "key": "lol",
"name": "리그 오브 레전드", "name": "리그 오브 레전드",
"description": "라인·오브젝트·교전 콜, 한국 서버에서 실제로 쓰는 말로 맞췄습니다.", "description": "라인·오브젝트·교전 콜, 한국 서버에서 실제로 쓰는 말로 맞췄습니다.",
"scope": "game",
"entries": [ "entries": [
{"source": "Nexus", "targets": {"ko": "넥서스", "ja": "ネクサス", "zh": "基地"}}, {
{"source": "inhibitor", "targets": {"ko": "억제기", "ja": "抑制器", "zh": "水晶"}}, "source": "Nexus",
{"source": "inhib", "targets": {"ko": "억제기", "ja": "抑制器", "zh": "水晶"}}, "targets": {
{"source": "turret", "targets": {"ko": "포탑", "ja": "タワー", "zh": "防御塔"}}, "ko": "넥서스",
{"source": "tower", "targets": {"ko": "포탑", "ja": "タワー", "zh": "防御塔"}}, "ja": "ネクサス",
{"source": "baron", "targets": {"ko": "바론", "ja": "バロン", "zh": "大龙"}}, "zh": "基地"
{"source": "Baron Nashor", "targets": {"ko": "내셔 남작", "ja": "バロン・ナッシャー", "zh": "纳什男爵"}}, }
{"source": "dragon", "targets": {"ko": "드래곤", "ja": "ドラゴン", "zh": "小龙"}}, },
{"source": "drake", "targets": {"ko": "드래곤", "ja": "ドラゴン", "zh": "小龙"}}, {
{"source": "elder", "targets": {"ko": "장로 드래곤", "ja": "エルダードラゴン", "zh": "远古龙"}}, "source": "inhibitor",
{"source": "herald", "targets": {"ko": "전령", "ja": "ヘラルド", "zh": "峡谷先锋"}}, "targets": {
{"source": "Rift Herald", "targets": {"ko": "협곡의 전령", "ja": "リフトヘラルド", "zh": "峡谷先锋"}}, "ko": "억제기",
{"source": "grubs", "targets": {"ko": "유충", "ja": "虫", "zh": "虚空幼虫"}}, "ja": "抑制器",
{"source": "gank", "targets": {"ko": "갱", "ja": "ガンク", "zh": "抓人"}}, "zh": "水晶"
{"source": "ganking", "targets": {"ko": "갱킹", "ja": "ガンク", "zh": "抓人"}}, }
{"source": "counter gank", "targets": {"ko": "역갱", "ja": "カウンターガンク", "zh": "反蹲"}}, },
{"source": "roam", "targets": {"ko": "로밍", "ja": "ローム", "zh": "游走"}}, {
{"source": "jungle", "targets": {"ko": "정글", "ja": "ジャングル", "zh": "打野"}}, "source": "inhib",
{"source": "jungler", "targets": {"ko": "정글러", "ja": "ジャングラー", "zh": "打野"}}, "targets": {
{"source": "top lane", "targets": {"ko": "탑", "ja": "トップ", "zh": "上路"}}, "ko": "억제기",
{"source": "mid lane", "targets": {"ko": "미드", "ja": "ミッド", "zh": "中路"}}, "ja": "抑制器",
{"source": "bot lane", "targets": {"ko": "바텀", "ja": "ボット", "zh": "下路"}}, "zh": "水晶"
{"source": "support", "targets": {"ko": "서폿", "ja": "サポート", "zh": "辅助"}}, }
{"source": "ADC", "targets": {"ko": "원딜", "ja": "ADC", "zh": "ADC"}}, },
{"source": "minion", "targets": {"ko": "미니언", "ja": "ミニオン", "zh": "小兵"}}, {
{"source": "wave", "targets": {"ko": "웨이브", "ja": "ウェーブ", "zh": "兵线"}}, "source": "turret",
{"source": "creep score", "targets": {"ko": "CS", "ja": "CS", "zh": "补刀"}}, "targets": {
{"source": "last hit", "targets": {"ko": "막타", "ja": "ラストヒット", "zh": "补刀"}}, "ko": "포탑",
{"source": "freeze", "targets": {"ko": "프리징", "ja": "フリーズ", "zh": "控线"}}, "ja": "タワー",
{"source": "push", "targets": {"ko": "푸시", "ja": "プッシュ", "zh": "推线"}}, "zh": "防御塔"
{"source": "split push", "targets": {"ko": "스플릿", "ja": "スプリットプッシュ", "zh": "分推"}}, }
{"source": "back", "targets": {"ko": "귀환", "ja": "リコール", "zh": "回城"}}, },
{"source": "recall", "targets": {"ko": "귀환", "ja": "リコール", "zh": "回城"}}, {
{"source": "ward", "targets": {"ko": "와드", "ja": "ワード", "zh": "眼"}}, "source": "tower",
{"source": "vision", "targets": {"ko": "시야", "ja": "視界", "zh": "视野"}}, "targets": {
{"source": "flash", "targets": {"ko": "점멸", "ja": "フラッシュ", "zh": "闪现"}}, "ko": "포탑",
{"source": "ignite", "targets": {"ko": "점화", "ja": "イグナイト", "zh": "点燃"}}, "ja": "タワー",
{"source": "teleport", "targets": {"ko": "순간이동", "ja": "テレポート", "zh": "传送"}}, "zh": "防御塔"
{"source": "smite", "targets": {"ko": "강타", "ja": "スマイト", "zh": "惩戒"}}, }
{"source": "ult", "targets": {"ko": "궁", "ja": "アルト", "zh": "大招"}}, },
{"source": "ultimate", "targets": {"ko": "궁극기", "ja": "アルティメット", "zh": "大招"}}, {
{"source": "cooldown", "targets": {"ko": "쿨", "ja": "クールダウン", "zh": "冷却"}}, "source": "baron",
{"source": "on cooldown", "targets": {"ko": "쿨 도는 중", "ja": "クール中", "zh": "冷却中"}}, "targets": {
{"source": "engage", "targets": {"ko": "이니시", "ja": "エンゲージ", "zh": "开团"}}, "ko": "바론",
{"source": "disengage", "targets": {"ko": "빠지기", "ja": "ディスエンゲージ", "zh": "撤退"}}, "ja": "バロン",
{"source": "team fight", "targets": {"ko": "한타", "ja": "集団戦", "zh": "团战"}}, "zh": "大龙"
{"source": "teamfight", "targets": {"ko": "한타", "ja": "集団戦", "zh": "团战"}}, }
{"source": "peel", "targets": {"ko": "피어싱 보호", "ja": "ピール", "zh": "保护"}}, },
{"source": "kite", "targets": {"ko": "카이팅", "ja": "カイト", "zh": "风筝"}}, {
{"source": "poke", "targets": {"ko": "견제", "ja": "ポーク", "zh": "消耗"}}, "source": "Baron Nashor",
{"source": "dive", "targets": {"ko": "다이브", "ja": "ダイブ", "zh": "越塔"}}, "targets": {
{"source": "tower dive", "targets": {"ko": "타워 다이브", "ja": "タワーダイブ", "zh": "越塔强杀"}}, "ko": "내셔 남작",
{"source": "ace", "targets": {"ko": "에이스", "ja": "エース", "zh": "团灭"}}, "ja": "バロン・ナッシャー",
{"source": "first blood", "targets": {"ko": "퍼블", "ja": "ファーストブラッド", "zh": "一血"}}, "zh": "纳什男爵"
{"source": "shutdown", "targets": {"ko": "현상금", "ja": "シャットダウン", "zh": "赏金"}}, }
{"source": "respawn", "targets": {"ko": "부활", "ja": "リスポーン", "zh": "复活"}}, },
{"source": "missing", "targets": {"ko": "실종", "ja": "ミア", "zh": "消失"}}, {
{"source": "MIA", "targets": {"ko": "실종", "ja": "ミア", "zh": "消失"}}, "source": "dragon",
{"source": "SS", "targets": {"ko": "실종", "ja": "ミア", "zh": "消失"}}, "targets": {
{"source": "fed", "targets": {"ko": "잘 큰", "ja": "育った", "zh": "养肥"}}, "ko": "드래곤",
{"source": "scaling", "targets": {"ko": "성장력", "ja": "スケーリング", "zh": "后期"}}, "ja": "ドラゴン",
{"source": "objective", "targets": {"ko": "오브젝트", "ja": "オブジェクト", "zh": "资源"}}, "zh": "小龙"
{"source": "backdoor", "targets": {"ko": "백도어", "ja": "バックドア", "zh": "偷家"}}, }
{"source": "surrender", "targets": {"ko": "항복", "ja": "サレンダー", "zh": "投降"}}, },
{"source": "buff", "targets": {"ko": "버프", "ja": "バフ", "zh": "增益"}}, {
{"source": "nerf", "targets": {"ko": "너프", "ja": "ナーフ", "zh": "削弱"}}, "source": "drake",
{"source": "CC", "targets": {"ko": "군중제어", "ja": "CC", "zh": "控制"}}, "targets": {
{"source": "stun", "targets": {"ko": "기절", "ja": "スタン", "zh": "眩晕"}}, "ko": "드래곤",
{"source": "slow", "targets": {"ko": "둔화", "ja": "スロウ", "zh": "减速"}}, "ja": "ドラゴン",
{"source": "shield", "targets": {"ko": "실드", "ja": "シールド", "zh": "护盾"}}, "zh": "小龙"
{"source": "heal", "targets": {"ko": "회복", "ja": "ヒール", "zh": "治疗"}}, }
{"source": "mana", "targets": {"ko": "마나", "ja": "マナ", "zh": "蓝"}}, },
{"source": "low HP", "targets": {"ko": "체력 낮음", "ja": "体力低い", "zh": "残血"}}, {
{"source": "full build", "targets": {"ko": "풀템", "ja": "フルビルド", "zh": "满装备"}} "source": "elder",
"targets": {
"ko": "장로 드래곤",
"ja": "エルダードラゴン",
"zh": "远古龙"
}
},
{
"source": "herald",
"targets": {
"ko": "전령",
"ja": "ヘラルド",
"zh": "峡谷先锋"
}
},
{
"source": "Rift Herald",
"targets": {
"ko": "협곡의 전령",
"ja": "リフトヘラルド",
"zh": "峡谷先锋"
}
},
{
"source": "grubs",
"targets": {
"ko": "유충",
"ja": "虫",
"zh": "虚空幼虫"
}
},
{
"source": "gank",
"targets": {
"ko": "갱",
"ja": "ガンク",
"zh": "抓人"
}
},
{
"source": "ganking",
"targets": {
"ko": "갱킹",
"ja": "ガンク",
"zh": "抓人"
}
},
{
"source": "counter gank",
"targets": {
"ko": "역갱",
"ja": "カウンターガンク",
"zh": "反蹲"
}
},
{
"source": "roam",
"targets": {
"ko": "로밍",
"ja": "ローム",
"zh": "游走"
}
},
{
"source": "jungle",
"targets": {
"ko": "정글",
"ja": "ジャングル",
"zh": "打野"
}
},
{
"source": "jungler",
"targets": {
"ko": "정글러",
"ja": "ジャングラー",
"zh": "打野"
}
},
{
"source": "top lane",
"targets": {
"ko": "탑",
"ja": "トップ",
"zh": "上路"
}
},
{
"source": "mid lane",
"targets": {
"ko": "미드",
"ja": "ミッド",
"zh": "中路"
}
},
{
"source": "bot lane",
"targets": {
"ko": "바텀",
"ja": "ボット",
"zh": "下路"
}
},
{
"source": "support",
"targets": {
"ko": "서폿",
"ja": "サポート",
"zh": "辅助"
}
},
{
"source": "ADC",
"targets": {
"ko": "원딜",
"ja": "ADC",
"zh": "ADC"
}
},
{
"source": "minion",
"targets": {
"ko": "미니언",
"ja": "ミニオン",
"zh": "小兵"
}
},
{
"source": "wave",
"targets": {
"ko": "웨이브",
"ja": "ウェーブ",
"zh": "兵线"
}
},
{
"source": "creep score",
"targets": {
"ko": "CS",
"ja": "CS",
"zh": "补刀"
}
},
{
"source": "last hit",
"targets": {
"ko": "막타",
"ja": "ラストヒット",
"zh": "补刀"
}
},
{
"source": "freeze",
"targets": {
"ko": "프리징",
"ja": "フリーズ",
"zh": "控线"
}
},
{
"source": "push",
"targets": {
"ko": "푸시",
"ja": "プッシュ",
"zh": "推线"
}
},
{
"source": "split push",
"targets": {
"ko": "스플릿",
"ja": "スプリットプッシュ",
"zh": "分推"
}
},
{
"source": "back",
"targets": {
"ko": "귀환",
"ja": "リコール",
"zh": "回城"
}
},
{
"source": "recall",
"targets": {
"ko": "귀환",
"ja": "リコール",
"zh": "回城"
}
},
{
"source": "ward",
"targets": {
"ko": "와드",
"ja": "ワード",
"zh": "眼"
}
},
{
"source": "vision",
"targets": {
"ko": "시야",
"ja": "視界",
"zh": "视野"
}
},
{
"source": "flash",
"targets": {
"ko": "점멸",
"ja": "フラッシュ",
"zh": "闪现"
}
},
{
"source": "ignite",
"targets": {
"ko": "점화",
"ja": "イグナイト",
"zh": "点燃"
}
},
{
"source": "teleport",
"targets": {
"ko": "순간이동",
"ja": "テレポート",
"zh": "传送"
}
},
{
"source": "smite",
"targets": {
"ko": "강타",
"ja": "スマイト",
"zh": "惩戒"
}
},
{
"source": "ult",
"targets": {
"ko": "궁",
"ja": "アルト",
"zh": "大招"
}
},
{
"source": "ultimate",
"targets": {
"ko": "궁극기",
"ja": "アルティメット",
"zh": "大招"
}
},
{
"source": "cooldown",
"targets": {
"ko": "쿨",
"ja": "クールダウン",
"zh": "冷却"
}
},
{
"source": "on cooldown",
"targets": {
"ko": "쿨 도는 중",
"ja": "クール中",
"zh": "冷却中"
}
},
{
"source": "engage",
"targets": {
"ko": "이니시",
"ja": "エンゲージ",
"zh": "开团"
}
},
{
"source": "disengage",
"targets": {
"ko": "빠지기",
"ja": "ディスエンゲージ",
"zh": "撤退"
}
},
{
"source": "team fight",
"targets": {
"ko": "한타",
"ja": "集団戦",
"zh": "团战"
}
},
{
"source": "teamfight",
"targets": {
"ko": "한타",
"ja": "集団戦",
"zh": "团战"
}
},
{
"source": "peel",
"targets": {
"ko": "피어싱 보호",
"ja": "ピール",
"zh": "保护"
}
},
{
"source": "kite",
"targets": {
"ko": "카이팅",
"ja": "カイト",
"zh": "风筝"
}
},
{
"source": "poke",
"targets": {
"ko": "견제",
"ja": "ポーク",
"zh": "消耗"
}
},
{
"source": "dive",
"targets": {
"ko": "다이브",
"ja": "ダイブ",
"zh": "越塔"
}
},
{
"source": "tower dive",
"targets": {
"ko": "타워 다이브",
"ja": "タワーダイブ",
"zh": "越塔强杀"
}
},
{
"source": "ace",
"targets": {
"ko": "에이스",
"ja": "エース",
"zh": "团灭"
}
},
{
"source": "first blood",
"targets": {
"ko": "퍼블",
"ja": "ファーストブラッド",
"zh": "一血"
}
},
{
"source": "shutdown",
"targets": {
"ko": "현상금",
"ja": "シャットダウン",
"zh": "赏金"
}
},
{
"source": "respawn",
"targets": {
"ko": "부활",
"ja": "リスポーン",
"zh": "复活"
}
},
{
"source": "missing",
"targets": {
"ko": "실종",
"ja": "ミア",
"zh": "消失"
}
},
{
"source": "MIA",
"targets": {
"ko": "실종",
"ja": "ミア",
"zh": "消失"
}
},
{
"source": "SS",
"targets": {
"ko": "실종",
"ja": "ミア",
"zh": "消失"
}
},
{
"source": "fed",
"targets": {
"ko": "잘 큰",
"ja": "育った",
"zh": "养肥"
}
},
{
"source": "scaling",
"targets": {
"ko": "성장력",
"ja": "スケーリング",
"zh": "后期"
}
},
{
"source": "objective",
"targets": {
"ko": "오브젝트",
"ja": "オブジェクト",
"zh": "资源"
}
},
{
"source": "backdoor",
"targets": {
"ko": "백도어",
"ja": "バックドア",
"zh": "偷家"
}
},
{
"source": "surrender",
"targets": {
"ko": "항복",
"ja": "サレンダー",
"zh": "投降"
}
},
{
"source": "buff",
"targets": {
"ko": "버프",
"ja": "バフ",
"zh": "增益"
}
},
{
"source": "nerf",
"targets": {
"ko": "너프",
"ja": "ナーフ",
"zh": "削弱"
}
},
{
"source": "CC",
"targets": {
"ko": "군중제어",
"ja": "CC",
"zh": "控制"
}
},
{
"source": "stun",
"targets": {
"ko": "기절",
"ja": "スタン",
"zh": "眩晕"
}
},
{
"source": "slow",
"targets": {
"ko": "둔화",
"ja": "スロウ",
"zh": "减速"
}
},
{
"source": "shield",
"targets": {
"ko": "실드",
"ja": "シールド",
"zh": "护盾"
}
},
{
"source": "heal",
"targets": {
"ko": "회복",
"ja": "ヒール",
"zh": "治疗"
}
},
{
"source": "mana",
"targets": {
"ko": "마나",
"ja": "マナ",
"zh": "蓝"
}
},
{
"source": "low HP",
"targets": {
"ko": "체력 낮음",
"ja": "体力低い",
"zh": "残血"
}
},
{
"source": "full build",
"targets": {
"ko": "풀템",
"ja": "フルビルド",
"zh": "满装备"
}
}
] ]
} }

View File

@@ -2,44 +2,311 @@
"key": "minecraft", "key": "minecraft",
"name": "마인크래프트", "name": "마인크래프트",
"description": "블록·몹·아이템 이름. 한국어판 공식 번역어를 따랐습니다.", "description": "블록·몹·아이템 이름. 한국어판 공식 번역어를 따랐습니다.",
"scope": "game",
"entries": [ "entries": [
{"source": "creeper", "targets": {"ko": "크리퍼", "ja": "クリーパー", "zh": "苦力怕"}}, {
{"source": "enderman", "targets": {"ko": "엔더맨", "ja": "エンダーマン", "zh": "末影人"}}, "source": "creeper",
{"source": "ender dragon", "targets": {"ko": "엔더 드래곤", "ja": "エンダードラゴン", "zh": "末影龙"}}, "targets": {
{"source": "wither", "targets": {"ko": "위더", "ja": "ウィザー", "zh": "凋灵"}}, "ko": "크리퍼",
{"source": "skeleton", "targets": {"ko": "스켈레톤", "ja": "スケルトン", "zh": "骷髅"}}, "ja": "クリーパー",
{"source": "zombie", "targets": {"ko": "좀비", "ja": "ゾンビ", "zh": "僵尸"}}, "zh": "苦力怕"
{"source": "piglin", "targets": {"ko": "피글린", "ja": "ピグリン", "zh": "猪灵"}}, }
{"source": "villager", "targets": {"ko": "주민", "ja": "村人", "zh": "村民"}}, },
{"source": "the Nether", "targets": {"ko": "네더", "ja": "ネザー", "zh": "下界"}}, {
{"source": "the End", "targets": {"ko": "엔드", "ja": "ジ・エンド", "zh": "末地"}}, "source": "enderman",
{"source": "Overworld", "targets": {"ko": "오버월드", "ja": "オーバーワールド", "zh": "主世界"}}, "targets": {
{"source": "nether portal", "targets": {"ko": "네더 차원문", "ja": "ネザーゲート", "zh": "下界传送门"}}, "ko": "엔더맨",
{"source": "stronghold", "targets": {"ko": "요새", "ja": "要塞", "zh": "要塞"}}, "ja": "エンダーマン",
{"source": "bastion", "targets": {"ko": "잔해 성채", "ja": "砦の残骸", "zh": "堡垒遗迹"}}, "zh": "末影人"
{"source": "diamond", "targets": {"ko": "다이아몬드", "ja": "ダイヤ", "zh": "钻石"}}, }
{"source": "netherite", "targets": {"ko": "네더라이트", "ja": "ネザライト", "zh": "下界合金"}}, },
{"source": "obsidian", "targets": {"ko": "흑요석", "ja": "黒曜石", "zh": "黑曜石"}}, {
{"source": "redstone", "targets": {"ko": "레드스톤", "ja": "レッドストーン", "zh": "红石"}}, "source": "ender dragon",
{"source": "ender pearl", "targets": {"ko": "엔더 진주", "ja": "エンダーパール", "zh": "末影珍珠"}}, "targets": {
{"source": "blaze rod", "targets": {"ko": "블레이즈 막대", "ja": "ブレイズロッド", "zh": "烈焰棒"}}, "ko": "엔더 드래곤",
{"source": "elytra", "targets": {"ko": "겉날개", "ja": "エリトラ", "zh": "鞘翅"}}, "ja": "エンダードラゴン",
{"source": "totem", "targets": {"ko": "불사의 토템", "ja": "不死のトーテム", "zh": "不死图腾"}}, "zh": "末影龙"
{"source": "enchant", "targets": {"ko": "인챈트", "ja": "エンチャント", "zh": "附魔"}}, }
{"source": "anvil", "targets": {"ko": "모루", "ja": "金床", "zh": "铁砧"}}, },
{"source": "crafting table", "targets": {"ko": "작업대", "ja": "作業台", "zh": "工作台"}}, {
{"source": "furnace", "targets": {"ko": "화로", "ja": "かまど", "zh": "熔炉"}}, "source": "wither",
{"source": "chest", "targets": {"ko": "상자", "ja": "チェスト", "zh": "箱子"}}, "targets": {
{"source": "spawn point", "targets": {"ko": "스폰 지점", "ja": "スポーン地点", "zh": "出生点"}}, "ko": "위더",
{"source": "respawn", "targets": {"ko": "리스폰", "ja": "リスポーン", "zh": "重生"}}, "ja": "ウィザー",
{"source": "biome", "targets": {"ko": "생물 군계", "ja": "バイオーム", "zh": "生物群系"}}, "zh": "凋灵"
{"source": "seed", "targets": {"ko": "시드", "ja": "シード", "zh": "种子"}}, }
{"source": "mob", "targets": {"ko": "몹", "ja": "モブ", "zh": "生物"}}, },
{"source": "hardcore", "targets": {"ko": "하드코어", "ja": "ハードコア", "zh": "极限模式"}}, {
{"source": "speedrun", "targets": {"ko": "스피드런", "ja": "RTA", "zh": "速通"}}, "source": "skeleton",
{"source": "mine", "targets": {"ko": "채굴", "ja": "採掘", "zh": "挖矿"}}, "targets": {
{"source": "craft", "targets": {"ko": "제작", "ja": "クラフト", "zh": "合成"}}, "ko": "스켈레톤",
{"source": "build", "targets": {"ko": "건축", "ja": "建築", "zh": "建造"}}, "ja": "スケルトン",
{"source": "farm", "targets": {"ko": "농장", "ja": "トラップ", "zh": "农场"}} "zh": "骷髅"
}
},
{
"source": "zombie",
"targets": {
"ko": "좀비",
"ja": "ゾンビ",
"zh": "僵尸"
}
},
{
"source": "piglin",
"targets": {
"ko": "피글린",
"ja": "ピグリン",
"zh": "猪灵"
}
},
{
"source": "villager",
"targets": {
"ko": "주민",
"ja": "村人",
"zh": "村民"
}
},
{
"source": "the Nether",
"targets": {
"ko": "네더",
"ja": "ネザー",
"zh": "下界"
}
},
{
"source": "the End",
"targets": {
"ko": "엔드",
"ja": "ジ・エンド",
"zh": "末地"
}
},
{
"source": "Overworld",
"targets": {
"ko": "오버월드",
"ja": "オーバーワールド",
"zh": "主世界"
}
},
{
"source": "nether portal",
"targets": {
"ko": "네더 차원문",
"ja": "ネザーゲート",
"zh": "下界传送门"
}
},
{
"source": "stronghold",
"targets": {
"ko": "요새",
"ja": "要塞",
"zh": "要塞"
}
},
{
"source": "bastion",
"targets": {
"ko": "잔해 성채",
"ja": "砦の残骸",
"zh": "堡垒遗迹"
}
},
{
"source": "diamond",
"targets": {
"ko": "다이아몬드",
"ja": "ダイヤ",
"zh": "钻石"
}
},
{
"source": "netherite",
"targets": {
"ko": "네더라이트",
"ja": "ネザライト",
"zh": "下界合金"
}
},
{
"source": "obsidian",
"targets": {
"ko": "흑요석",
"ja": "黒曜石",
"zh": "黑曜石"
}
},
{
"source": "redstone",
"targets": {
"ko": "레드스톤",
"ja": "レッドストーン",
"zh": "红石"
}
},
{
"source": "ender pearl",
"targets": {
"ko": "엔더 진주",
"ja": "エンダーパール",
"zh": "末影珍珠"
}
},
{
"source": "blaze rod",
"targets": {
"ko": "블레이즈 막대",
"ja": "ブレイズロッド",
"zh": "烈焰棒"
}
},
{
"source": "elytra",
"targets": {
"ko": "겉날개",
"ja": "エリトラ",
"zh": "鞘翅"
}
},
{
"source": "totem",
"targets": {
"ko": "불사의 토템",
"ja": "不死のトーテム",
"zh": "不死图腾"
}
},
{
"source": "enchant",
"targets": {
"ko": "인챈트",
"ja": "エンチャント",
"zh": "附魔"
}
},
{
"source": "anvil",
"targets": {
"ko": "모루",
"ja": "金床",
"zh": "铁砧"
}
},
{
"source": "crafting table",
"targets": {
"ko": "작업대",
"ja": "作業台",
"zh": "工作台"
}
},
{
"source": "furnace",
"targets": {
"ko": "화로",
"ja": "かまど",
"zh": "熔炉"
}
},
{
"source": "chest",
"targets": {
"ko": "상자",
"ja": "チェスト",
"zh": "箱子"
}
},
{
"source": "spawn point",
"targets": {
"ko": "스폰 지점",
"ja": "スポーン地点",
"zh": "出生点"
}
},
{
"source": "respawn",
"targets": {
"ko": "리스폰",
"ja": "リスポーン",
"zh": "重生"
}
},
{
"source": "biome",
"targets": {
"ko": "생물 군계",
"ja": "バイオーム",
"zh": "生物群系"
}
},
{
"source": "seed",
"targets": {
"ko": "시드",
"ja": "シード",
"zh": "种子"
}
},
{
"source": "mob",
"targets": {
"ko": "몹",
"ja": "モブ",
"zh": "生物"
}
},
{
"source": "hardcore",
"targets": {
"ko": "하드코어",
"ja": "ハードコア",
"zh": "极限模式"
}
},
{
"source": "speedrun",
"targets": {
"ko": "스피드런",
"ja": "RTA",
"zh": "速通"
}
},
{
"source": "mine",
"targets": {
"ko": "채굴",
"ja": "採掘",
"zh": "挖矿"
}
},
{
"source": "craft",
"targets": {
"ko": "제작",
"ja": "クラフト",
"zh": "合成"
}
},
{
"source": "build",
"targets": {
"ko": "건축",
"ja": "建築",
"zh": "建造"
}
},
{
"source": "farm",
"targets": {
"ko": "농장",
"ja": "トラップ",
"zh": "农场"
}
}
] ]
} }

View File

@@ -2,55 +2,399 @@
"key": "overwatch", "key": "overwatch",
"name": "오버워치 2", "name": "오버워치 2",
"description": "역할·궁·거점 콜. 한국 공식 번역어를 우선했습니다.", "description": "역할·궁·거점 콜. 한국 공식 번역어를 우선했습니다.",
"scope": "game",
"entries": [ "entries": [
{"source": "tank", "targets": {"ko": "탱커", "ja": "タンク", "zh": "重装"}}, {
{"source": "DPS", "targets": {"ko": "딜러", "ja": "ダメージ", "zh": "输出"}}, "source": "tank",
{"source": "damage", "targets": {"ko": "딜", "ja": "ダメージ", "zh": "伤害"}}, "targets": {
{"source": "support", "targets": {"ko": "지원가", "ja": "サポート", "zh": "辅助"}}, "ko": "탱커",
{"source": "healer", "targets": {"ko": "힐러", "ja": "ヒーラー", "zh": "奶"}}, "ja": "タンク",
{"source": "ult", "targets": {"ko": "궁", "ja": "アルト", "zh": "大招"}}, "zh": "重装"
{"source": "ultimate", "targets": {"ko": "궁극기", "ja": "アルティメット", "zh": "终极技能"}}, }
{"source": "ult charge", "targets": {"ko": "궁 게이지", "ja": "アルトゲージ", "zh": "大招能量"}}, },
{"source": "ult economy", "targets": {"ko": "궁 경제", "ja": "アルト回し", "zh": "大招经济"}}, {
{"source": "combo", "targets": {"ko": "연계", "ja": "コンボ", "zh": "连招"}}, "source": "DPS",
{"source": "dive", "targets": {"ko": "다이브", "ja": "ダイブ", "zh": "突进"}}, "targets": {
{"source": "poke", "targets": {"ko": "견제", "ja": "ポーク", "zh": "消耗"}}, "ko": "딜러",
{"source": "brawl", "targets": {"ko": "난전", "ja": "ブロール", "zh": "近战团"}}, "ja": "ダメージ",
{"source": "payload", "targets": {"ko": "화물", "ja": "ペイロード", "zh": "运载目标"}}, "zh": "输出"
{"source": "point", "targets": {"ko": "거점", "ja": "拠点", "zh": "点"}}, }
{"source": "capture", "targets": {"ko": "점령", "ja": "占領", "zh": "占点"}}, },
{"source": "contest", "targets": {"ko": "저지", "ja": "コンテスト", "zh": "拖点"}}, {
{"source": "overtime", "targets": {"ko": "연장", "ja": "オーバータイム", "zh": "加时"}}, "source": "damage",
{"source": "checkpoint", "targets": {"ko": "관문", "ja": "チェックポイント", "zh": "检查点"}}, "targets": {
{"source": "spawn", "targets": {"ko": "리스폰", "ja": "リスポーン", "zh": "重生点"}}, "ko": "딜",
{"source": "regroup", "targets": {"ko": "모이자", "ja": "集合", "zh": "集合"}}, "ja": "ダメージ",
{"source": "group up", "targets": {"ko": "모이자", "ja": "集合", "zh": "集合"}}, "zh": "伤害"
{"source": "stagger", "targets": {"ko": "스태거", "ja": "スタッガー", "zh": "送人头"}}, }
{"source": "flank", "targets": {"ko": "측면", "ja": "フランク", "zh": "绕后"}}, },
{"source": "high ground", "targets": {"ko": "고지", "ja": "高台", "zh": "高地"}}, {
{"source": "cooldown", "targets": {"ko": "쿨", "ja": "クールダウン", "zh": "冷却"}}, "source": "support",
{"source": "barrier", "targets": {"ko": "방벽", "ja": "バリア", "zh": "护盾"}}, "targets": {
{"source": "shield", "targets": {"ko": "보호막", "ja": "シールド", "zh": "护盾"}}, "ko": "지원가",
{"source": "armor", "targets": {"ko": "방어력", "ja": "アーマー", "zh": "护甲"}}, "ja": "サポート",
{"source": "burst", "targets": {"ko": "순간 딜", "ja": "バースト", "zh": "爆发"}}, "zh": "辅助"
{"source": "focus", "targets": {"ko": "집중 공격", "ja": "フォーカス", "zh": "集火"}}, }
{"source": "peel", "targets": {"ko": "보호", "ja": "ピール", "zh": "保护"}}, },
{"source": "nano", "targets": {"ko": "나노", "ja": "ナノ", "zh": "纳米"}}, {
{"source": "beat", "targets": {"ko": "비트", "ja": "ビート", "zh": "音障"}}, "source": "healer",
{"source": "sound barrier", "targets": {"ko": "음파 방벽", "ja": "サウンドバリア", "zh": "音障"}}, "targets": {
{"source": "rez", "targets": {"ko": "부활", "ja": "リザ", "zh": "复活"}}, "ko": "힐러",
{"source": "resurrect", "targets": {"ko": "부활", "ja": "リザレクト", "zh": "复活"}}, "ja": "ヒーラー",
{"source": "discord", "targets": {"ko": "불화의 구슬", "ja": "ディスコード", "zh": "不和之球"}}, "zh": "奶"
{"source": "hack", "targets": {"ko": "해킹", "ja": "ハック", "zh": "黑入"}}, }
{"source": "EMP", "targets": {"ko": "EMP", "ja": "EMP", "zh": "EMP"}}, },
{"source": "team wipe", "targets": {"ko": "전멸", "ja": "全滅", "zh": "团灭"}}, {
{"source": "team fight", "targets": {"ko": "한타", "ja": "チームファイト", "zh": "团战"}}, "source": "ult",
{"source": "counter pick", "targets": {"ko": "카운터 픽", "ja": "カウンターピック", "zh": "针对英雄"}}, "targets": {
{"source": "swap", "targets": {"ko": "영웅 교체", "ja": "ヒーロー変更", "zh": "换英雄"}}, "ko": "궁",
{"source": "health pack", "targets": {"ko": "회복팩", "ja": "回復パック", "zh": "血包"}}, "ja": "アルト",
{"source": "critical", "targets": {"ko": "치명타", "ja": "クリティカル", "zh": "暴击"}}, "zh": "大招"
{"source": "behind you", "targets": {"ko": "뒤에 있다", "ja": "後ろだ", "zh": "背后有人"}}, }
{"source": "falling back", "targets": {"ko": "후퇴한다", "ja": "後退する", "zh": "撤退"}}, },
{"source": "push", "targets": {"ko": "밀자", "ja": "押そう", "zh": "推进"}} {
"source": "ultimate",
"targets": {
"ko": "궁극기",
"ja": "アルティメット",
"zh": "终极技能"
}
},
{
"source": "ult charge",
"targets": {
"ko": "궁 게이지",
"ja": "アルトゲージ",
"zh": "大招能量"
}
},
{
"source": "ult economy",
"targets": {
"ko": "궁 경제",
"ja": "アルト回し",
"zh": "大招经济"
}
},
{
"source": "combo",
"targets": {
"ko": "연계",
"ja": "コンボ",
"zh": "连招"
}
},
{
"source": "dive",
"targets": {
"ko": "다이브",
"ja": "ダイブ",
"zh": "突进"
}
},
{
"source": "poke",
"targets": {
"ko": "견제",
"ja": "ポーク",
"zh": "消耗"
}
},
{
"source": "brawl",
"targets": {
"ko": "난전",
"ja": "ブロール",
"zh": "近战团"
}
},
{
"source": "payload",
"targets": {
"ko": "화물",
"ja": "ペイロード",
"zh": "运载目标"
}
},
{
"source": "point",
"targets": {
"ko": "거점",
"ja": "拠点",
"zh": "点"
}
},
{
"source": "capture",
"targets": {
"ko": "점령",
"ja": "占領",
"zh": "占点"
}
},
{
"source": "contest",
"targets": {
"ko": "저지",
"ja": "コンテスト",
"zh": "拖点"
}
},
{
"source": "overtime",
"targets": {
"ko": "연장",
"ja": "オーバータイム",
"zh": "加时"
}
},
{
"source": "checkpoint",
"targets": {
"ko": "관문",
"ja": "チェックポイント",
"zh": "检查点"
}
},
{
"source": "spawn",
"targets": {
"ko": "리스폰",
"ja": "リスポーン",
"zh": "重生点"
}
},
{
"source": "regroup",
"targets": {
"ko": "모이자",
"ja": "集合",
"zh": "集合"
}
},
{
"source": "group up",
"targets": {
"ko": "모이자",
"ja": "集合",
"zh": "集合"
}
},
{
"source": "stagger",
"targets": {
"ko": "스태거",
"ja": "スタッガー",
"zh": "送人头"
}
},
{
"source": "flank",
"targets": {
"ko": "측면",
"ja": "フランク",
"zh": "绕后"
}
},
{
"source": "high ground",
"targets": {
"ko": "고지",
"ja": "高台",
"zh": "高地"
}
},
{
"source": "cooldown",
"targets": {
"ko": "쿨",
"ja": "クールダウン",
"zh": "冷却"
}
},
{
"source": "barrier",
"targets": {
"ko": "방벽",
"ja": "バリア",
"zh": "护盾"
}
},
{
"source": "shield",
"targets": {
"ko": "보호막",
"ja": "シールド",
"zh": "护盾"
}
},
{
"source": "armor",
"targets": {
"ko": "방어력",
"ja": "アーマー",
"zh": "护甲"
}
},
{
"source": "burst",
"targets": {
"ko": "순간 딜",
"ja": "バースト",
"zh": "爆发"
}
},
{
"source": "focus",
"targets": {
"ko": "집중 공격",
"ja": "フォーカス",
"zh": "集火"
}
},
{
"source": "peel",
"targets": {
"ko": "보호",
"ja": "ピール",
"zh": "保护"
}
},
{
"source": "nano",
"targets": {
"ko": "나노",
"ja": "ナノ",
"zh": "纳米"
}
},
{
"source": "beat",
"targets": {
"ko": "비트",
"ja": "ビート",
"zh": "音障"
}
},
{
"source": "sound barrier",
"targets": {
"ko": "음파 방벽",
"ja": "サウンドバリア",
"zh": "音障"
}
},
{
"source": "rez",
"targets": {
"ko": "부활",
"ja": "リザ",
"zh": "复活"
}
},
{
"source": "resurrect",
"targets": {
"ko": "부활",
"ja": "リザレクト",
"zh": "复活"
}
},
{
"source": "discord",
"targets": {
"ko": "불화의 구슬",
"ja": "ディスコード",
"zh": "不和之球"
}
},
{
"source": "hack",
"targets": {
"ko": "해킹",
"ja": "ハック",
"zh": "黑入"
}
},
{
"source": "EMP",
"targets": {
"ko": "EMP",
"ja": "EMP",
"zh": "EMP"
}
},
{
"source": "team wipe",
"targets": {
"ko": "전멸",
"ja": "全滅",
"zh": "团灭"
}
},
{
"source": "team fight",
"targets": {
"ko": "한타",
"ja": "チームファイト",
"zh": "团战"
}
},
{
"source": "counter pick",
"targets": {
"ko": "카운터 픽",
"ja": "カウンターピック",
"zh": "针对英雄"
}
},
{
"source": "swap",
"targets": {
"ko": "영웅 교체",
"ja": "ヒーロー変更",
"zh": "换英雄"
}
},
{
"source": "health pack",
"targets": {
"ko": "회복팩",
"ja": "回復パック",
"zh": "血包"
}
},
{
"source": "critical",
"targets": {
"ko": "치명타",
"ja": "クリティカル",
"zh": "暴击"
}
},
{
"source": "behind you",
"targets": {
"ko": "뒤에 있다",
"ja": "後ろだ",
"zh": "背后有人"
}
},
{
"source": "falling back",
"targets": {
"ko": "후퇴한다",
"ja": "後退する",
"zh": "撤退"
}
},
{
"source": "push",
"targets": {
"ko": "밀자",
"ja": "押そう",
"zh": "推进"
}
}
] ]
} }

View File

@@ -2,72 +2,527 @@
"key": "pubg", "key": "pubg",
"name": "배틀그라운드 (PUBG)", "name": "배틀그라운드 (PUBG)",
"description": "자기장·파밍·스쿼드 콜. 배틀로얄 공통 용어도 같이 들어 있습니다.", "description": "자기장·파밍·스쿼드 콜. 배틀로얄 공통 용어도 같이 들어 있습니다.",
"scope": "game",
"entries": [ "entries": [
{"source": "chicken dinner", "targets": {"ko": "치킨", "ja": "ドン勝", "zh": "吃鸡"}}, {
{"source": "winner winner chicken dinner", "targets": {"ko": "이겼닭! 오늘 저녁은 치킨이닭!", "ja": "ドン勝つ!", "zh": "大吉大利,今晚吃鸡"}}, "source": "chicken dinner",
{"source": "blue zone", "targets": {"ko": "자기장", "ja": "ブルーゾーン", "zh": "蓝圈"}}, "targets": {
{"source": "the blue", "targets": {"ko": "자기장", "ja": "ブルーゾーン", "zh": "蓝圈"}}, "ko": "치킨",
{"source": "circle", "targets": {"ko": "자기장", "ja": "サークル", "zh": "圈"}}, "ja": "ドン勝",
{"source": "red zone", "targets": {"ko": "폭격 지역", "ja": "レッドゾーン", "zh": "红区"}}, "zh": "吃鸡"
{"source": "safe zone", "targets": {"ko": "안전 구역", "ja": "セーフゾーン", "zh": "安全区"}}, }
{"source": "zone is closing", "targets": {"ko": "자기장 좁혀진다", "ja": "ゾーンが縮まる", "zh": "圈要缩了"}}, },
{"source": "final circle", "targets": {"ko": "막자", "ja": "最終サークル", "zh": "决赛圈"}}, {
{"source": "drop", "targets": {"ko": "낙하", "ja": "降下", "zh": "跳伞"}}, "source": "winner winner chicken dinner",
{"source": "hot drop", "targets": {"ko": "핫드랍", "ja": "ホットドロップ", "zh": "热门点"}}, "targets": {
{"source": "landing", "targets": {"ko": "착지", "ja": "着地", "zh": "落地"}}, "ko": "이겼닭! 오늘 저녁은 치킨이닭!",
{"source": "where are we dropping", "targets": {"ko": "어디 내릴까", "ja": "どこ降りる", "zh": "跳哪里"}}, "ja": "ドン勝つ!",
{"source": "loot", "targets": {"ko": "파밍", "ja": "物資", "zh": "物资"}}, "zh": "大吉大利,今晚吃鸡"
{"source": "looting", "targets": {"ko": "파밍 중", "ja": "漁り中", "zh": "搜物资"}}, }
{"source": "care package", "targets": {"ko": "보급", "ja": "補給物資", "zh": "空投"}}, },
{"source": "airdrop", "targets": {"ko": "보급 상자", "ja": "エアドロップ", "zh": "空投"}}, {
{"source": "third party", "targets": {"ko": "어부", "ja": "漁夫", "zh": "第三方"}}, "source": "blue zone",
{"source": "third partied", "targets": {"ko": "어부 당했다", "ja": "漁夫られた", "zh": "被第三方了"}}, "targets": {
{"source": "squad", "targets": {"ko": "스쿼드", "ja": "スクワッド", "zh": "四排"}}, "ko": "자기장",
{"source": "duo", "targets": {"ko": "듀오", "ja": "デュオ", "zh": "双排"}}, "ja": "ブルーゾーン",
{"source": "solo", "targets": {"ko": "솔로", "ja": "ソロ", "zh": "单排"}}, "zh": "蓝圈"
{"source": "knocked", "targets": {"ko": "눕혔다", "ja": "ダウンさせた", "zh": "打倒了"}}, }
{"source": "knocked down", "targets": {"ko": "기절", "ja": "ダウン", "zh": "倒地"}}, },
{"source": "finish him", "targets": {"ko": "마무리해", "ja": "とどめ刺して", "zh": "补掉他"}}, {
{"source": "revive", "targets": {"ko": "살리기", "ja": "蘇生", "zh": "救人"}}, "source": "circle",
{"source": "reviving", "targets": {"ko": "살리는 중", "ja": "蘇生中", "zh": "救人中"}}, "targets": {
{"source": "res me", "targets": {"ko": "살려줘", "ja": "起こして", "zh": "救我"}}, "ko": "자기장",
{"source": "med kit", "targets": {"ko": "구급상자", "ja": "救急箱", "zh": "医疗箱"}}, "ja": "サークル",
{"source": "first aid", "targets": {"ko": "구급상자", "ja": "応急手当", "zh": "急救包"}}, "zh": "圈"
{"source": "bandage", "targets": {"ko": "붕대", "ja": "包帯", "zh": "绷带"}}, }
{"source": "energy drink", "targets": {"ko": "에너지 드링크", "ja": "エナドリ", "zh": "饮料"}}, },
{"source": "painkiller", "targets": {"ko": "진통제", "ja": "鎮痛剤", "zh": "止痛药"}}, {
{"source": "boost", "targets": {"ko": "부스트", "ja": "ブースト", "zh": "能量"}}, "source": "red zone",
{"source": "level 3 helmet", "targets": {"ko": "3렙 헬멧", "ja": "レベル3ヘルメット", "zh": "三级头"}}, "targets": {
{"source": "level 3 vest", "targets": {"ko": "3렙 조끼", "ja": "レベル3アーマー", "zh": "三级甲"}}, "ko": "폭격 지역",
{"source": "backpack", "targets": {"ko": "가방", "ja": "バックパック", "zh": "背包"}}, "ja": "レッドゾーン",
{"source": "scope", "targets": {"ko": "배율", "ja": "スコープ", "zh": "倍镜"}}, "zh": "红区"
{"source": "8x", "targets": {"ko": "8배율", "ja": "8倍", "zh": "八倍镜"}}, }
{"source": "4x", "targets": {"ko": "4배율", "ja": "4倍", "zh": "四倍镜"}}, },
{"source": "red dot", "targets": {"ko": "레드닷", "ja": "レッドドット", "zh": "红点"}}, {
{"source": "suppressor", "targets": {"ko": "소음기", "ja": "サプレッサー", "zh": "消音器"}}, "source": "safe zone",
{"source": "compensator", "targets": {"ko": "보정기", "ja": "コンペンセイター", "zh": "补偿器"}}, "targets": {
{"source": "grip", "targets": {"ko": "손잡이", "ja": "グリップ", "zh": "握把"}}, "ko": "안전 구역",
{"source": "extended mag", "targets": {"ko": "확장 탄창", "ja": "拡張マガジン", "zh": "扩容弹匣"}}, "ja": "セーフゾーン",
{"source": "ammo", "targets": {"ko": "탄약", "ja": "弾薬", "zh": "子弹"}}, "zh": "安全区"
{"source": "need ammo", "targets": {"ko": "탄 필요해", "ja": "弾ちょうだい", "zh": "要子弹"}}, }
{"source": "frag grenade", "targets": {"ko": "수류탄", "ja": "フラグ", "zh": "手雷"}}, },
{"source": "molotov", "targets": {"ko": "화염병", "ja": "モロトフ", "zh": "燃烧瓶"}}, {
{"source": "smoke", "targets": {"ko": "연막", "ja": "スモーク", "zh": "烟雾弹"}}, "source": "zone is closing",
{"source": "stun", "targets": {"ko": "섬광", "ja": "スタン", "zh": "闪光"}}, "targets": {
{"source": "prone", "targets": {"ko": "엎드려", "ja": "伏せろ", "zh": "趴下"}}, "ko": "자기장 좁혀진다",
{"source": "take cover", "targets": {"ko": "엄폐해", "ja": "隠れて", "zh": "找掩体"}}, "ja": "ゾーンが縮まる",
{"source": "cover", "targets": {"ko": "엄폐물", "ja": "遮蔽物", "zh": "掩体"}}, "zh": "圈要缩了"
{"source": "compound", "targets": {"ko": "건물 단지", "ja": "建物群", "zh": "房区"}}, }
{"source": "ridge", "targets": {"ko": "능선", "ja": "尾根", "zh": "山脊"}}, },
{"source": "high ground", "targets": {"ko": "고지", "ja": "高所", "zh": "高地"}}, {
{"source": "vehicle", "targets": {"ko": "차량", "ja": "車両", "zh": "载具"}}, "source": "final circle",
{"source": "get in the car", "targets": {"ko": "차 타", "ja": "車乗って", "zh": "上车"}}, "targets": {
{"source": "fuel", "targets": {"ko": "연료", "ja": "燃料", "zh": "油"}}, "ko": "막자",
{"source": "footsteps", "targets": {"ko": "발소리", "ja": "足音", "zh": "脚步声"}}, "ja": "最終サークル",
{"source": "I hear footsteps", "targets": {"ko": "발소리 들린다", "ja": "足音する", "zh": "听到脚步"}}, "zh": "决赛圈"
{"source": "sniper", "targets": {"ko": "저격수", "ja": "スナイパー", "zh": "狙击手"}}, }
{"source": "kar98", "targets": {"ko": "카구팔", "ja": "Kar98k", "zh": "98K"}}, },
{"source": "spectate", "targets": {"ko": "관전", "ja": "観戦", "zh": "观战"}}, {
{"source": "rank push", "targets": {"ko": "티어 올리기", "ja": "ランク上げ", "zh": "上分"}} "source": "drop",
"targets": {
"ko": "낙하",
"ja": "降下",
"zh": "跳伞"
}
},
{
"source": "hot drop",
"targets": {
"ko": "핫드랍",
"ja": "ホットドロップ",
"zh": "热门点"
}
},
{
"source": "landing",
"targets": {
"ko": "착지",
"ja": "着地",
"zh": "落地"
}
},
{
"source": "where are we dropping",
"targets": {
"ko": "어디 내릴까",
"ja": "どこ降りる",
"zh": "跳哪里"
}
},
{
"source": "loot",
"targets": {
"ko": "파밍",
"ja": "物資",
"zh": "物资"
}
},
{
"source": "looting",
"targets": {
"ko": "파밍 중",
"ja": "漁り中",
"zh": "搜物资"
}
},
{
"source": "care package",
"targets": {
"ko": "보급",
"ja": "補給物資",
"zh": "空投"
}
},
{
"source": "airdrop",
"targets": {
"ko": "보급 상자",
"ja": "エアドロップ",
"zh": "空投"
}
},
{
"source": "third party",
"targets": {
"ko": "어부",
"ja": "漁夫",
"zh": "第三方"
}
},
{
"source": "third partied",
"targets": {
"ko": "어부 당했다",
"ja": "漁夫られた",
"zh": "被第三方了"
}
},
{
"source": "squad",
"targets": {
"ko": "스쿼드",
"ja": "スクワッド",
"zh": "四排"
}
},
{
"source": "duo",
"targets": {
"ko": "듀오",
"ja": "デュオ",
"zh": "双排"
}
},
{
"source": "solo",
"targets": {
"ko": "솔로",
"ja": "ソロ",
"zh": "单排"
}
},
{
"source": "knocked",
"targets": {
"ko": "눕혔다",
"ja": "ダウンさせた",
"zh": "打倒了"
}
},
{
"source": "knocked down",
"targets": {
"ko": "기절",
"ja": "ダウン",
"zh": "倒地"
}
},
{
"source": "finish him",
"targets": {
"ko": "마무리해",
"ja": "とどめ刺して",
"zh": "补掉他"
}
},
{
"source": "revive",
"targets": {
"ko": "살리기",
"ja": "蘇生",
"zh": "救人"
}
},
{
"source": "reviving",
"targets": {
"ko": "살리는 중",
"ja": "蘇生中",
"zh": "救人中"
}
},
{
"source": "res me",
"targets": {
"ko": "살려줘",
"ja": "起こして",
"zh": "救我"
}
},
{
"source": "med kit",
"targets": {
"ko": "구급상자",
"ja": "救急箱",
"zh": "医疗箱"
}
},
{
"source": "first aid",
"targets": {
"ko": "구급상자",
"ja": "応急手当",
"zh": "急救包"
}
},
{
"source": "bandage",
"targets": {
"ko": "붕대",
"ja": "包帯",
"zh": "绷带"
}
},
{
"source": "energy drink",
"targets": {
"ko": "에너지 드링크",
"ja": "エナドリ",
"zh": "饮料"
}
},
{
"source": "painkiller",
"targets": {
"ko": "진통제",
"ja": "鎮痛剤",
"zh": "止痛药"
}
},
{
"source": "boost",
"targets": {
"ko": "부스트",
"ja": "ブースト",
"zh": "能量"
}
},
{
"source": "level 3 helmet",
"targets": {
"ko": "3렙 헬멧",
"ja": "レベル3ヘルメット",
"zh": "三级头"
}
},
{
"source": "level 3 vest",
"targets": {
"ko": "3렙 조끼",
"ja": "レベル3アーマー",
"zh": "三级甲"
}
},
{
"source": "backpack",
"targets": {
"ko": "가방",
"ja": "バックパック",
"zh": "背包"
}
},
{
"source": "scope",
"targets": {
"ko": "배율",
"ja": "スコープ",
"zh": "倍镜"
}
},
{
"source": "8x",
"targets": {
"ko": "8배율",
"ja": "8倍",
"zh": "八倍镜"
}
},
{
"source": "4x",
"targets": {
"ko": "4배율",
"ja": "4倍",
"zh": "四倍镜"
}
},
{
"source": "red dot",
"targets": {
"ko": "레드닷",
"ja": "レッドドット",
"zh": "红点"
}
},
{
"source": "suppressor",
"targets": {
"ko": "소음기",
"ja": "サプレッサー",
"zh": "消音器"
}
},
{
"source": "compensator",
"targets": {
"ko": "보정기",
"ja": "コンペンセイター",
"zh": "补偿器"
}
},
{
"source": "grip",
"targets": {
"ko": "손잡이",
"ja": "グリップ",
"zh": "握把"
}
},
{
"source": "extended mag",
"targets": {
"ko": "확장 탄창",
"ja": "拡張マガジン",
"zh": "扩容弹匣"
}
},
{
"source": "ammo",
"targets": {
"ko": "탄약",
"ja": "弾薬",
"zh": "子弹"
}
},
{
"source": "need ammo",
"targets": {
"ko": "탄 필요해",
"ja": "弾ちょうだい",
"zh": "要子弹"
}
},
{
"source": "frag grenade",
"targets": {
"ko": "수류탄",
"ja": "フラグ",
"zh": "手雷"
}
},
{
"source": "molotov",
"targets": {
"ko": "화염병",
"ja": "モロトフ",
"zh": "燃烧瓶"
}
},
{
"source": "smoke",
"targets": {
"ko": "연막",
"ja": "スモーク",
"zh": "烟雾弹"
}
},
{
"source": "stun",
"targets": {
"ko": "섬광",
"ja": "スタン",
"zh": "闪光"
}
},
{
"source": "prone",
"targets": {
"ko": "엎드려",
"ja": "伏せろ",
"zh": "趴下"
}
},
{
"source": "take cover",
"targets": {
"ko": "엄폐해",
"ja": "隠れて",
"zh": "找掩体"
}
},
{
"source": "cover",
"targets": {
"ko": "엄폐물",
"ja": "遮蔽物",
"zh": "掩体"
}
},
{
"source": "compound",
"targets": {
"ko": "건물 단지",
"ja": "建物群",
"zh": "房区"
}
},
{
"source": "ridge",
"targets": {
"ko": "능선",
"ja": "尾根",
"zh": "山脊"
}
},
{
"source": "high ground",
"targets": {
"ko": "고지",
"ja": "高所",
"zh": "高地"
}
},
{
"source": "vehicle",
"targets": {
"ko": "차량",
"ja": "車両",
"zh": "载具"
}
},
{
"source": "get in the car",
"targets": {
"ko": "차 타",
"ja": "車乗って",
"zh": "上车"
}
},
{
"source": "fuel",
"targets": {
"ko": "연료",
"ja": "燃料",
"zh": "油"
}
},
{
"source": "footsteps",
"targets": {
"ko": "발소리",
"ja": "足音",
"zh": "脚步声"
}
},
{
"source": "I hear footsteps",
"targets": {
"ko": "발소리 들린다",
"ja": "足音する",
"zh": "听到脚步"
}
},
{
"source": "sniper",
"targets": {
"ko": "저격수",
"ja": "スナイパー",
"zh": "狙击手"
}
},
{
"source": "kar98",
"targets": {
"ko": "카구팔",
"ja": "Kar98k",
"zh": "98K"
}
},
{
"source": "spectate",
"targets": {
"ko": "관전",
"ja": "観戦",
"zh": "观战"
}
},
{
"source": "rank push",
"targets": {
"ko": "티어 올리기",
"ja": "ランク上げ",
"zh": "上分"
}
}
] ]
} }

View File

@@ -2,73 +2,543 @@
"key": "r6siege", "key": "r6siege",
"name": "레인보우 식스 시즈", "name": "레인보우 식스 시즈",
"description": "역할·보강·파밸·콜아웃. 한국 서버에서 실제로 쓰는 말로 맞췄습니다.", "description": "역할·보강·파밸·콜아웃. 한국 서버에서 실제로 쓰는 말로 맞췄습니다.",
"scope": "game",
"entries": [ "entries": [
{"source": "operator", "targets": {"ko": "오퍼레이터", "ja": "オペレーター", "zh": "干员"}}, {
{"source": "op", "targets": {"ko": "오퍼", "ja": "オペ", "zh": "干员"}}, "source": "operator",
{"source": "attacker", "targets": {"ko": "공격팀", "ja": "攻撃側", "zh": "进攻方"}}, "targets": {
{"source": "defender", "targets": {"ko": "수비팀", "ja": "防衛側", "zh": "防守方"}}, "ko": "오퍼레이터",
{"source": "drone", "targets": {"ko": "드론", "ja": "ドローン", "zh": "无人机"}}, "ja": "オペレーター",
{"source": "droning", "targets": {"ko": "드론 정찰", "ja": "ドローン偵察", "zh": "无人机侦察"}}, "zh": "干员"
{"source": "prep phase", "targets": {"ko": "준비 시간", "ja": "準備フェーズ", "zh": "准备阶段"}}, }
{"source": "roam", "targets": {"ko": "로밍", "ja": "ローミング", "zh": "游走"}}, },
{"source": "roamer", "targets": {"ko": "로머", "ja": "ローマー", "zh": "游走位"}}, {
{"source": "anchor", "targets": {"ko": "앵커", "ja": "アンカー", "zh": "守点位"}}, "source": "op",
{"source": "anchoring", "targets": {"ko": "앵커링", "ja": "アンカリング", "zh": "守点"}}, "targets": {
{"source": "site", "targets": {"ko": "거점", "ja": "サイト", "zh": "据点"}}, "ko": "오퍼",
{"source": "bomb site", "targets": {"ko": "폭탄 거점", "ja": "爆弾サイト", "zh": "炸弹点"}}, "ja": "オペ",
{"source": "defuser", "targets": {"ko": "디퓨저", "ja": "ディフューザー", "zh": "拆弹器"}}, "zh": "干员"
{"source": "plant", "targets": {"ko": "설치", "ja": "設置", "zh": "安装"}}, }
{"source": "planted", "targets": {"ko": "설치됐다", "ja": "設置された", "zh": "已安装"}}, },
{"source": "defuse", "targets": {"ko": "해체", "ja": "解除", "zh": "拆除"}}, {
{"source": "reinforcement", "targets": {"ko": "보강", "ja": "補強", "zh": "加固"}}, "source": "attacker",
{"source": "reinforce", "targets": {"ko": "보강하다", "ja": "補強する", "zh": "加固"}}, "targets": {
{"source": "hard breach", "targets": {"ko": "하드 브리치", "ja": "ハードブリーチ", "zh": "硬破"}}, "ko": "공격팀",
{"source": "hard breacher", "targets": {"ko": "하드 브리처", "ja": "ハードブリーチャー", "zh": "硬破手"}}, "ja": "攻撃側",
{"source": "soft breach", "targets": {"ko": "소프트 브리치", "ja": "ソフトブリーチ", "zh": "软破"}}, "zh": "进攻方"
{"source": "breach charge", "targets": {"ko": "브리치 차지", "ja": "ブリーチチャージ", "zh": "破门炸药"}}, }
{"source": "rotate hole", "targets": {"ko": "로테 구멍", "ja": "ローテ穴", "zh": "转点洞"}}, },
{"source": "murder hole", "targets": {"ko": "총구멍", "ja": "マーダーホール", "zh": "射击孔"}}, {
{"source": "hatch", "targets": {"ko": "해치", "ja": "ハッチ", "zh": "天花板洞"}}, "source": "defender",
{"source": "rappel", "targets": {"ko": "레펠", "ja": "ラペル", "zh": "速降"}}, "targets": {
{"source": "vault", "targets": {"ko": "창넘기", "ja": "乗り越え", "zh": "翻窗"}}, "ko": "수비팀",
{"source": "run out", "targets": {"ko": "런아웃", "ja": "ランアウト", "zh": "冲出"}}, "ja": "防衛側",
{"source": "spawn peek", "targets": {"ko": "스폰킬", "ja": "スポーンピーク", "zh": "出生点偷袭"}}, "zh": "防守方"
{"source": "gadget", "targets": {"ko": "장비", "ja": "ガジェット", "zh": "道具"}}, }
{"source": "utility", "targets": {"ko": "유틸", "ja": "ユーティリティ", "zh": "道具"}}, },
{"source": "trap", "targets": {"ko": "함정", "ja": "トラップ", "zh": "陷阱"}}, {
{"source": "nitro cell", "targets": {"ko": "니트로", "ja": "ニトロセル", "zh": "C4"}}, "source": "drone",
{"source": "impact", "targets": {"ko": "임팩트", "ja": "インパクト", "zh": "碰撞雷"}}, "targets": {
{"source": "flashbang", "targets": {"ko": "섬광탄", "ja": "フラッシュ", "zh": "闪光弹"}}, "ko": "드론",
{"source": "smoke grenade", "targets": {"ko": "연막탄", "ja": "スモーク", "zh": "烟雾弹"}}, "ja": "ドローン",
{"source": "claymore", "targets": {"ko": "클레이모어", "ja": "クレイモア", "zh": "阔剑雷"}}, "zh": "无人机"
{"source": "barbed wire", "targets": {"ko": "철조망", "ja": "鉄条網", "zh": "铁丝网"}}, }
{"source": "deployable shield", "targets": {"ko": "방패", "ja": "展開シールド", "zh": "可部署盾"}}, },
{"source": "bulletproof camera", "targets": {"ko": "방탄 카메라", "ja": "防弾カメラ", "zh": "防弹摄像头"}}, {
{"source": "cam", "targets": {"ko": "카메라", "ja": "カメラ", "zh": "摄像头"}}, "source": "droning",
{"source": "destroy the cam", "targets": {"ko": "카메라 깨줘", "ja": "カメラ壊して", "zh": "打掉摄像头"}}, "targets": {
{"source": "prefire", "targets": {"ko": "선샷", "ja": "プリファイア", "zh": "预瞄"}}, "ko": "드론 정찰",
{"source": "peek", "targets": {"ko": "픽", "ja": "ピーク", "zh": "架点"}}, "ja": "ドローン偵察",
{"source": "lean", "targets": {"ko": "린", "ja": "リーン", "zh": "侧身"}}, "zh": "无人机侦察"
{"source": "crouch", "targets": {"ko": "앉기", "ja": "しゃがみ", "zh": "蹲"}}, }
{"source": "prone", "targets": {"ko": "엎드리기", "ja": "伏せ", "zh": "趴下"}}, },
{"source": "trade", "targets": {"ko": "트레이드", "ja": "トレード", "zh": "换人"}}, {
{"source": "entry frag", "targets": {"ko": "선취점", "ja": "エントリーキル", "zh": "首杀"}}, "source": "prep phase",
{"source": "clutch", "targets": {"ko": "클러치", "ja": "クラッチ", "zh": "残局"}}, "targets": {
{"source": "ace", "targets": {"ko": "에이스", "ja": "エース", "zh": "一穿五"}}, "ko": "준비 시간",
{"source": "down", "targets": {"ko": "다운", "ja": "ダウン", "zh": "倒地"}}, "ja": "準備フェーズ",
{"source": "dbno", "targets": {"ko": "기절", "ja": "ダウン状態", "zh": "濒死"}}, "zh": "准备阶段"
{"source": "revive", "targets": {"ko": "살리기", "ja": "蘇生", "zh": "扶起"}}, }
{"source": "callout", "targets": {"ko": "콜", "ja": "コール", "zh": "报点"}}, },
{"source": "rotate", "targets": {"ko": "로테", "ja": "ローテ", "zh": "转点"}}, {
{"source": "flank", "targets": {"ko": "측면", "ja": "フランク", "zh": "绕后"}}, "source": "roam",
{"source": "watch flank", "targets": {"ko": "측면 봐줘", "ja": "フランク見て", "zh": "看侧面"}}, "targets": {
{"source": "above you", "targets": {"ko": "위에 있다", "ja": "上にいる", "zh": "在你上面"}}, "ko": "로밍",
{"source": "below you", "targets": {"ko": "아래에 있다", "ja": "下にいる", "zh": "在你下面"}}, "ja": "ローミング",
{"source": "basement", "targets": {"ko": "지하", "ja": "地下", "zh": "地下室"}}, "zh": "游走"
{"source": "top floor", "targets": {"ko": "최상층", "ja": "最上階", "zh": "顶层"}}, }
{"source": "outside", "targets": {"ko": "바깥", "ja": "外", "zh": "外面"}}, },
{"source": "ranked", "targets": {"ko": "랭크", "ja": "ランク", "zh": "排位"}}, {
{"source": "overtime", "targets": {"ko": "연장", "ja": "オーバータイム", "zh": "加时"}}, "source": "roamer",
{"source": "ban", "targets": {"ko": "밴", "ja": "バン", "zh": "禁用"}} "targets": {
"ko": "로머",
"ja": "ローマー",
"zh": "游走位"
}
},
{
"source": "anchor",
"targets": {
"ko": "앵커",
"ja": "アンカー",
"zh": "守点位"
}
},
{
"source": "anchoring",
"targets": {
"ko": "앵커링",
"ja": "アンカリング",
"zh": "守点"
}
},
{
"source": "site",
"targets": {
"ko": "거점",
"ja": "サイト",
"zh": "据点"
}
},
{
"source": "bomb site",
"targets": {
"ko": "폭탄 거점",
"ja": "爆弾サイト",
"zh": "炸弹点"
}
},
{
"source": "defuser",
"targets": {
"ko": "디퓨저",
"ja": "ディフューザー",
"zh": "拆弹器"
}
},
{
"source": "plant",
"targets": {
"ko": "설치",
"ja": "設置",
"zh": "安装"
}
},
{
"source": "planted",
"targets": {
"ko": "설치됐다",
"ja": "設置された",
"zh": "已安装"
}
},
{
"source": "defuse",
"targets": {
"ko": "해체",
"ja": "解除",
"zh": "拆除"
}
},
{
"source": "reinforcement",
"targets": {
"ko": "보강",
"ja": "補強",
"zh": "加固"
}
},
{
"source": "reinforce",
"targets": {
"ko": "보강하다",
"ja": "補強する",
"zh": "加固"
}
},
{
"source": "hard breach",
"targets": {
"ko": "하드 브리치",
"ja": "ハードブリーチ",
"zh": "硬破"
}
},
{
"source": "hard breacher",
"targets": {
"ko": "하드 브리처",
"ja": "ハードブリーチャー",
"zh": "硬破手"
}
},
{
"source": "soft breach",
"targets": {
"ko": "소프트 브리치",
"ja": "ソフトブリーチ",
"zh": "软破"
}
},
{
"source": "breach charge",
"targets": {
"ko": "브리치 차지",
"ja": "ブリーチチャージ",
"zh": "破门炸药"
}
},
{
"source": "rotate hole",
"targets": {
"ko": "로테 구멍",
"ja": "ローテ穴",
"zh": "转点洞"
}
},
{
"source": "murder hole",
"targets": {
"ko": "총구멍",
"ja": "マーダーホール",
"zh": "射击孔"
}
},
{
"source": "hatch",
"targets": {
"ko": "해치",
"ja": "ハッチ",
"zh": "天花板洞"
}
},
{
"source": "rappel",
"targets": {
"ko": "레펠",
"ja": "ラペル",
"zh": "速降"
}
},
{
"source": "vault",
"targets": {
"ko": "창넘기",
"ja": "乗り越え",
"zh": "翻窗"
}
},
{
"source": "run out",
"targets": {
"ko": "런아웃",
"ja": "ランアウト",
"zh": "冲出"
}
},
{
"source": "spawn peek",
"targets": {
"ko": "스폰킬",
"ja": "スポーンピーク",
"zh": "出生点偷袭"
}
},
{
"source": "gadget",
"targets": {
"ko": "장비",
"ja": "ガジェット",
"zh": "道具"
}
},
{
"source": "utility",
"targets": {
"ko": "유틸",
"ja": "ユーティリティ",
"zh": "道具"
}
},
{
"source": "trap",
"targets": {
"ko": "함정",
"ja": "トラップ",
"zh": "陷阱"
}
},
{
"source": "nitro cell",
"targets": {
"ko": "니트로",
"ja": "ニトロセル",
"zh": "C4"
}
},
{
"source": "impact",
"targets": {
"ko": "임팩트",
"ja": "インパクト",
"zh": "碰撞雷"
}
},
{
"source": "flashbang",
"targets": {
"ko": "섬광탄",
"ja": "フラッシュ",
"zh": "闪光弹"
}
},
{
"source": "smoke grenade",
"targets": {
"ko": "연막탄",
"ja": "スモーク",
"zh": "烟雾弹"
}
},
{
"source": "claymore",
"targets": {
"ko": "클레이모어",
"ja": "クレイモア",
"zh": "阔剑雷"
}
},
{
"source": "barbed wire",
"targets": {
"ko": "철조망",
"ja": "鉄条網",
"zh": "铁丝网"
}
},
{
"source": "deployable shield",
"targets": {
"ko": "방패",
"ja": "展開シールド",
"zh": "可部署盾"
}
},
{
"source": "bulletproof camera",
"targets": {
"ko": "방탄 카메라",
"ja": "防弾カメラ",
"zh": "防弹摄像头"
}
},
{
"source": "cam",
"targets": {
"ko": "카메라",
"ja": "カメラ",
"zh": "摄像头"
}
},
{
"source": "destroy the cam",
"targets": {
"ko": "카메라 깨줘",
"ja": "カメラ壊して",
"zh": "打掉摄像头"
}
},
{
"source": "prefire",
"targets": {
"ko": "선샷",
"ja": "プリファイア",
"zh": "预瞄"
}
},
{
"source": "peek",
"targets": {
"ko": "픽",
"ja": "ピーク",
"zh": "架点"
}
},
{
"source": "lean",
"targets": {
"ko": "린",
"ja": "リーン",
"zh": "侧身"
}
},
{
"source": "crouch",
"targets": {
"ko": "앉기",
"ja": "しゃがみ",
"zh": "蹲"
}
},
{
"source": "prone",
"targets": {
"ko": "엎드리기",
"ja": "伏せ",
"zh": "趴下"
}
},
{
"source": "trade",
"targets": {
"ko": "트레이드",
"ja": "トレード",
"zh": "换人"
}
},
{
"source": "entry frag",
"targets": {
"ko": "선취점",
"ja": "エントリーキル",
"zh": "首杀"
}
},
{
"source": "clutch",
"targets": {
"ko": "클러치",
"ja": "クラッチ",
"zh": "残局"
}
},
{
"source": "ace",
"targets": {
"ko": "에이스",
"ja": "エース",
"zh": "一穿五"
}
},
{
"source": "down",
"targets": {
"ko": "다운",
"ja": "ダウン",
"zh": "倒地"
}
},
{
"source": "dbno",
"targets": {
"ko": "기절",
"ja": "ダウン状態",
"zh": "濒死"
}
},
{
"source": "revive",
"targets": {
"ko": "살리기",
"ja": "蘇生",
"zh": "扶起"
}
},
{
"source": "callout",
"targets": {
"ko": "콜",
"ja": "コール",
"zh": "报点"
}
},
{
"source": "rotate",
"targets": {
"ko": "로테",
"ja": "ローテ",
"zh": "转点"
}
},
{
"source": "flank",
"targets": {
"ko": "측면",
"ja": "フランク",
"zh": "绕后"
}
},
{
"source": "watch flank",
"targets": {
"ko": "측면 봐줘",
"ja": "フランク見て",
"zh": "看侧面"
}
},
{
"source": "above you",
"targets": {
"ko": "위에 있다",
"ja": "上にいる",
"zh": "在你上面"
}
},
{
"source": "below you",
"targets": {
"ko": "아래에 있다",
"ja": "下にいる",
"zh": "在你下面"
}
},
{
"source": "basement",
"targets": {
"ko": "지하",
"ja": "地下",
"zh": "地下室"
}
},
{
"source": "top floor",
"targets": {
"ko": "최상층",
"ja": "最上階",
"zh": "顶层"
}
},
{
"source": "outside",
"targets": {
"ko": "바깥",
"ja": "外",
"zh": "外面"
}
},
{
"source": "ranked",
"targets": {
"ko": "랭크",
"ja": "ランク",
"zh": "排位"
}
},
{
"source": "overtime",
"targets": {
"ko": "연장",
"ja": "オーバータイム",
"zh": "加时"
}
},
{
"source": "ban",
"targets": {
"ko": "밴",
"ja": "バン",
"zh": "禁用"
}
}
] ]
} }

View File

@@ -2,44 +2,311 @@
"key": "streaming", "key": "streaming",
"name": "방송·스트리밍", "name": "방송·스트리밍",
"description": "해외 방송을 볼 때 자주 나오는 말. 게임 용어집과 같이 켜면 좋습니다.", "description": "해외 방송을 볼 때 자주 나오는 말. 게임 용어집과 같이 켜면 좋습니다.",
"scope": "generic",
"entries": [ "entries": [
{"source": "stream", "targets": {"ko": "방송", "ja": "配信", "zh": "直播"}}, {
{"source": "streamer", "targets": {"ko": "스트리머", "ja": "配信者", "zh": "主播"}}, "source": "stream",
{"source": "chat", "targets": {"ko": "채팅", "ja": "チャット", "zh": "弹幕"}}, "targets": {
{"source": "donation", "targets": {"ko": "후원", "ja": "投げ銭", "zh": "打赏"}}, "ko": "방송",
{"source": "donate", "targets": {"ko": "후원하다", "ja": "投げ銭する", "zh": "打赏"}}, "ja": "配信",
{"source": "sub", "targets": {"ko": "구독", "ja": "サブスク", "zh": "订阅"}}, "zh": "直播"
{"source": "subscriber", "targets": {"ko": "구독자", "ja": "登録者", "zh": "订阅者"}}, }
{"source": "follow", "targets": {"ko": "팔로우", "ja": "フォロー", "zh": "关注"}}, },
{"source": "raid", "targets": {"ko": "합방 몰아주기", "ja": "レイド", "zh": "转播"}}, {
{"source": "mod", "targets": {"ko": "매니저", "ja": "モデレーター", "zh": "房管"}}, "source": "streamer",
{"source": "clip", "targets": {"ko": "클립", "ja": "クリップ", "zh": "切片"}}, "targets": {
{"source": "highlight", "targets": {"ko": "하이라이트", "ja": "ハイライト", "zh": "高光"}}, "ko": "스트리머",
{"source": "VOD", "targets": {"ko": "다시보기", "ja": "アーカイブ", "zh": "录播"}}, "ja": "配信者",
{"source": "lag", "targets": {"ko": "렉", "ja": "ラグ", "zh": "卡"}}, "zh": "主播"
{"source": "ping", "targets": {"ko": "핑", "ja": "ピン", "zh": "延迟"}}, }
{"source": "frame drop", "targets": {"ko": "프레임 드랍", "ja": "フレーム落ち", "zh": "掉帧"}}, },
{"source": "patch", "targets": {"ko": "패치", "ja": "パッチ", "zh": "补丁"}}, {
{"source": "meta", "targets": {"ko": "메타", "ja": "メタ", "zh": "版本环境"}}, "source": "chat",
{"source": "nerf", "targets": {"ko": "너프", "ja": "ナーフ", "zh": "削弱"}}, "targets": {
{"source": "buff", "targets": {"ko": "버프", "ja": "バフ", "zh": "加强"}}, "ko": "채팅",
{"source": "ranked", "targets": {"ko": "랭크", "ja": "ランク", "zh": "排位"}}, "ja": "チャット",
{"source": "casual", "targets": {"ko": "일반전", "ja": "カジュアル", "zh": "休闲"}}, "zh": "弹幕"
{"source": "smurf", "targets": {"ko": "부계정", "ja": "サブ垢", "zh": "小号"}}, }
{"source": "grind", "targets": {"ko": "노가다", "ja": "周回", "zh": "刷"}}, },
{"source": "carry", "targets": {"ko": "캐리", "ja": "キャリー", "zh": "带飞"}}, {
{"source": "throw", "targets": {"ko": "던지다", "ja": "スローする", "zh": "送"}}, "source": "donation",
{"source": "griefing", "targets": {"ko": "트롤링", "ja": "荒らし", "zh": "演员"}}, "targets": {
{"source": "toxic", "targets": {"ko": "매너 나쁜", "ja": "民度が低い", "zh": "喷子"}}, "ko": "후원",
{"source": "cracked", "targets": {"ko": "미쳤다", "ja": "ヤバい", "zh": "太强了"}}, "ja": "投げ銭",
{"source": "insane", "targets": {"ko": "대박", "ja": "やばい", "zh": "离谱"}}, "zh": "打赏"
{"source": "clutch", "targets": {"ko": "클러치", "ja": "クラッチ", "zh": "关键时刻"}}, }
{"source": "let's go", "targets": {"ko": "가자", "ja": "行くぞ", "zh": "冲"}}, },
{"source": "no way", "targets": {"ko": "말도 안 돼", "ja": "ありえない", "zh": "不可能吧"}}, {
{"source": "give me a second", "targets": {"ko": "잠깐만", "ja": "ちょっと待って", "zh": "等一下"}}, "source": "donate",
{"source": "hold on", "targets": {"ko": "잠깐", "ja": "待って", "zh": "等等"}}, "targets": {
{"source": "be right back", "targets": {"ko": "금방 올게", "ja": "すぐ戻る", "zh": "马上回来"}}, "ko": "후원하다",
{"source": "thanks for the sub", "targets": {"ko": "구독 고마워", "ja": "サブありがとう", "zh": "谢谢订阅"}}, "ja": "投げ銭する",
{"source": "welcome back", "targets": {"ko": "다시 왔네", "ja": "おかえり", "zh": "欢迎回来"}} "zh": "打赏"
}
},
{
"source": "sub",
"targets": {
"ko": "구독",
"ja": "サブスク",
"zh": "订阅"
}
},
{
"source": "subscriber",
"targets": {
"ko": "구독자",
"ja": "登録者",
"zh": "订阅者"
}
},
{
"source": "follow",
"targets": {
"ko": "팔로우",
"ja": "フォロー",
"zh": "关注"
}
},
{
"source": "raid",
"targets": {
"ko": "합방 몰아주기",
"ja": "レイド",
"zh": "转播"
}
},
{
"source": "mod",
"targets": {
"ko": "매니저",
"ja": "モデレーター",
"zh": "房管"
}
},
{
"source": "clip",
"targets": {
"ko": "클립",
"ja": "クリップ",
"zh": "切片"
}
},
{
"source": "highlight",
"targets": {
"ko": "하이라이트",
"ja": "ハイライト",
"zh": "高光"
}
},
{
"source": "VOD",
"targets": {
"ko": "다시보기",
"ja": "アーカイブ",
"zh": "录播"
}
},
{
"source": "lag",
"targets": {
"ko": "렉",
"ja": "ラグ",
"zh": "卡"
}
},
{
"source": "ping",
"targets": {
"ko": "핑",
"ja": "ピン",
"zh": "延迟"
}
},
{
"source": "frame drop",
"targets": {
"ko": "프레임 드랍",
"ja": "フレーム落ち",
"zh": "掉帧"
}
},
{
"source": "patch",
"targets": {
"ko": "패치",
"ja": "パッチ",
"zh": "补丁"
}
},
{
"source": "meta",
"targets": {
"ko": "메타",
"ja": "メタ",
"zh": "版本环境"
}
},
{
"source": "nerf",
"targets": {
"ko": "너프",
"ja": "ナーフ",
"zh": "削弱"
}
},
{
"source": "buff",
"targets": {
"ko": "버프",
"ja": "バフ",
"zh": "加强"
}
},
{
"source": "ranked",
"targets": {
"ko": "랭크",
"ja": "ランク",
"zh": "排位"
}
},
{
"source": "casual",
"targets": {
"ko": "일반전",
"ja": "カジュアル",
"zh": "休闲"
}
},
{
"source": "smurf",
"targets": {
"ko": "부계정",
"ja": "サブ垢",
"zh": "小号"
}
},
{
"source": "grind",
"targets": {
"ko": "노가다",
"ja": "周回",
"zh": "刷"
}
},
{
"source": "carry",
"targets": {
"ko": "캐리",
"ja": "キャリー",
"zh": "带飞"
}
},
{
"source": "throw",
"targets": {
"ko": "던지다",
"ja": "スローする",
"zh": "送"
}
},
{
"source": "griefing",
"targets": {
"ko": "트롤링",
"ja": "荒らし",
"zh": "演员"
}
},
{
"source": "toxic",
"targets": {
"ko": "매너 나쁜",
"ja": "民度が低い",
"zh": "喷子"
}
},
{
"source": "cracked",
"targets": {
"ko": "미쳤다",
"ja": "ヤバい",
"zh": "太强了"
}
},
{
"source": "insane",
"targets": {
"ko": "대박",
"ja": "やばい",
"zh": "离谱"
}
},
{
"source": "clutch",
"targets": {
"ko": "클러치",
"ja": "クラッチ",
"zh": "关键时刻"
}
},
{
"source": "let's go",
"targets": {
"ko": "가자",
"ja": "行くぞ",
"zh": "冲"
}
},
{
"source": "no way",
"targets": {
"ko": "말도 안 돼",
"ja": "ありえない",
"zh": "不可能吧"
}
},
{
"source": "give me a second",
"targets": {
"ko": "잠깐만",
"ja": "ちょっと待って",
"zh": "等一下"
}
},
{
"source": "hold on",
"targets": {
"ko": "잠깐",
"ja": "待って",
"zh": "等等"
}
},
{
"source": "be right back",
"targets": {
"ko": "금방 올게",
"ja": "すぐ戻る",
"zh": "马上回来"
}
},
{
"source": "thanks for the sub",
"targets": {
"ko": "구독 고마워",
"ja": "サブありがとう",
"zh": "谢谢订阅"
}
},
{
"source": "welcome back",
"targets": {
"ko": "다시 왔네",
"ja": "おかえり",
"zh": "欢迎回来"
}
}
] ]
} }

View File

@@ -2,65 +2,479 @@
"key": "valorant", "key": "valorant",
"name": "발로란트", "name": "발로란트",
"description": "스파이크·유틸·이코노미 콜. 아시아 서버 영어 콜아웃에 맞췄습니다.", "description": "스파이크·유틸·이코노미 콜. 아시아 서버 영어 콜아웃에 맞췄습니다.",
"scope": "game",
"entries": [ "entries": [
{"source": "spike", "targets": {"ko": "스파이크", "ja": "スパイク", "zh": "斩杀者"}}, {
{"source": "plant", "targets": {"ko": "설치", "ja": "設置", "zh": "安装"}}, "source": "spike",
{"source": "planted", "targets": {"ko": "설치됐다", "ja": "設置された", "zh": "已安装"}}, "targets": {
{"source": "defuse", "targets": {"ko": "해체", "ja": "解除", "zh": "拆包"}}, "ko": "스파이크",
{"source": "defusing", "targets": {"ko": "해체 중", "ja": "解除中", "zh": "拆包中"}}, "ja": "スパイク",
{"source": "fake defuse", "targets": {"ko": "페이크 해체", "ja": "フェイク解除", "zh": "假拆"}}, "zh": "斩杀者"
{"source": "post plant", "targets": {"ko": "설치 후", "ja": "ポストプラント", "zh": "安装后"}}, }
{"source": "retake", "targets": {"ko": "리테이크", "ja": "リテイク", "zh": "残局夺回"}}, },
{"source": "site", "targets": {"ko": "사이트", "ja": "サイト", "zh": "包点"}}, {
{"source": "A site", "targets": {"ko": "A사이트", "ja": "Aサイト", "zh": "A点"}}, "source": "plant",
{"source": "B site", "targets": {"ko": "B사이트", "ja": "Bサイト", "zh": "B点"}}, "targets": {
{"source": "mid", "targets": {"ko": "미드", "ja": "ミッド", "zh": "中路"}}, "ko": "설치",
{"source": "rotate", "targets": {"ko": "로테", "ja": "ローテ", "zh": "换点"}}, "ja": "設置",
{"source": "rotating", "targets": {"ko": "로테 중", "ja": "ローテ中", "zh": "换点中"}}, "zh": "安装"
{"source": "eco", "targets": {"ko": "이코", "ja": "エコ", "zh": "经济局"}}, }
{"source": "full eco", "targets": {"ko": "풀이코", "ja": "フルエコ", "zh": "全经济局"}}, },
{"source": "eco round", "targets": {"ko": "이코 라운드", "ja": "エコラウンド", "zh": "经济局"}}, {
{"source": "save", "targets": {"ko": "세이브", "ja": "セーブ", "zh": "存钱"}}, "source": "planted",
{"source": "buy round", "targets": {"ko": "풀 구매", "ja": "フルバイ", "zh": "全起"}}, "targets": {
{"source": "force buy", "targets": {"ko": "강제 구매", "ja": "フォースバイ", "zh": "强起"}}, "ko": "설치됐다",
{"source": "pistol round", "targets": {"ko": "권총 라운드", "ja": "ピストルラウンド", "zh": "手枪局"}}, "ja": "設置された",
{"source": "ult", "targets": {"ko": "궁", "ja": "アルト", "zh": "大招"}}, "zh": "已安装"
{"source": "ultimate", "targets": {"ko": "궁극기", "ja": "アルティメット", "zh": "终极技能"}}, }
{"source": "ult orb", "targets": {"ko": "궁 오브", "ja": "アルトオーブ", "zh": "能量球"}}, },
{"source": "util", "targets": {"ko": "유틸", "ja": "ユーティリティ", "zh": "技能"}}, {
{"source": "utility", "targets": {"ko": "유틸", "ja": "ユーティリティ", "zh": "技能"}}, "source": "defuse",
{"source": "smoke", "targets": {"ko": "연막", "ja": "スモーク", "zh": "烟"}}, "targets": {
{"source": "flash", "targets": {"ko": "섬광", "ja": "フラッシュ", "zh": "闪"}}, "ko": "해체",
{"source": "flashed", "targets": {"ko": "섬광 맞음", "ja": "フラッシュ食らった", "zh": "被闪了"}}, "ja": "解除",
{"source": "molly", "targets": {"ko": "몰리", "ja": "モリー", "zh": "火"}}, "zh": "拆包"
{"source": "wall", "targets": {"ko": "벽", "ja": "ウォール", "zh": "墙"}}, }
{"source": "recon", "targets": {"ko": "정찰", "ja": "リコン", "zh": "侦察"}}, },
{"source": "one tap", "targets": {"ko": "원탭", "ja": "ワンタップ", "zh": "一枪"}}, {
{"source": "headshot", "targets": {"ko": "헤드샷", "ja": "ヘッドショット", "zh": "爆头"}}, "source": "defusing",
{"source": "entry", "targets": {"ko": "진입", "ja": "エントリー", "zh": "突破"}}, "targets": {
{"source": "entry frag", "targets": {"ko": "선취점", "ja": "エントリーキル", "zh": "首杀"}}, "ko": "해체 중",
{"source": "trade", "targets": {"ko": "트레이드", "ja": "トレード", "zh": "换人"}}, "ja": "解除中",
{"source": "peek", "targets": {"ko": "픽", "ja": "ピーク", "zh": "架点"}}, "zh": "拆包中"
{"source": "wide peek", "targets": {"ko": "와이드 픽", "ja": "ワイドピーク", "zh": "大幅架点"}}, }
{"source": "clear", "targets": {"ko": "클리어", "ja": "クリア", "zh": "清点"}}, },
{"source": "rush", "targets": {"ko": "러쉬", "ja": "ラッシュ", "zh": "强攻"}}, {
{"source": "stack", "targets": {"ko": "몰빵", "ja": "スタック", "zh": "集火"}}, "source": "fake defuse",
{"source": "lurk", "targets": {"ko": "럴커", "ja": "ラーク", "zh": "潜伏"}}, "targets": {
{"source": "op", "targets": {"ko": "오페", "ja": "オペ", "zh": "狙"}}, "ko": "페이크 해체",
{"source": "operator", "targets": {"ko": "오퍼레이터", "ja": "オペレーター", "zh": "狙击枪"}}, "ja": "フェイク解除",
{"source": "clutch", "targets": {"ko": "클러치", "ja": "クラッチ", "zh": "残局"}}, "zh": "假拆"
{"source": "ace", "targets": {"ko": "에이스", "ja": "エース", "zh": "一穿五"}}, }
{"source": "spray", "targets": {"ko": "연사", "ja": "スプレー", "zh": "扫射"}}, },
{"source": "crosshair", "targets": {"ko": "크로스헤어", "ja": "クロスヘア", "zh": "准星"}}, {
{"source": "callout", "targets": {"ko": "콜", "ja": "コール", "zh": "报点"}}, "source": "post plant",
{"source": "spotted", "targets": {"ko": "봤다", "ja": "発見", "zh": "看到了"}}, "targets": {
{"source": "one down", "targets": {"ko": "한 명 잡음", "ja": "一人ダウン", "zh": "倒一个"}}, "ko": "설치 후",
{"source": "man advantage", "targets": {"ko": "인원 우위", "ja": "人数有利", "zh": "人数优势"}}, "ja": "ポストプラント",
{"source": "low", "targets": {"ko": "피 없음", "ja": "体力低い", "zh": "残血"}}, "zh": "安装后"
{"source": "armor", "targets": {"ko": "방어구", "ja": "アーマー", "zh": "护甲"}}, }
{"source": "creds", "targets": {"ko": "크레딧", "ja": "クレジット", "zh": "钱"}}, },
{"source": "drop", "targets": {"ko": "드랍", "ja": "ドロップ", "zh": "丢枪"}}, {
{"source": "overtime", "targets": {"ko": "연장", "ja": "オーバータイム", "zh": "加时"}}, "source": "retake",
{"source": "match point", "targets": {"ko": "매치포인트", "ja": "マッチポイント", "zh": "赛点"}} "targets": {
"ko": "리테이크",
"ja": "リテイク",
"zh": "残局夺回"
}
},
{
"source": "site",
"targets": {
"ko": "사이트",
"ja": "サイト",
"zh": "包点"
}
},
{
"source": "A site",
"targets": {
"ko": "A사이트",
"ja": "Aサイト",
"zh": "A点"
}
},
{
"source": "B site",
"targets": {
"ko": "B사이트",
"ja": "Bサイト",
"zh": "B点"
}
},
{
"source": "mid",
"targets": {
"ko": "미드",
"ja": "ミッド",
"zh": "中路"
}
},
{
"source": "rotate",
"targets": {
"ko": "로테",
"ja": "ローテ",
"zh": "换点"
}
},
{
"source": "rotating",
"targets": {
"ko": "로테 중",
"ja": "ローテ中",
"zh": "换点中"
}
},
{
"source": "eco",
"targets": {
"ko": "이코",
"ja": "エコ",
"zh": "经济局"
}
},
{
"source": "full eco",
"targets": {
"ko": "풀이코",
"ja": "フルエコ",
"zh": "全经济局"
}
},
{
"source": "eco round",
"targets": {
"ko": "이코 라운드",
"ja": "エコラウンド",
"zh": "经济局"
}
},
{
"source": "save",
"targets": {
"ko": "세이브",
"ja": "セーブ",
"zh": "存钱"
}
},
{
"source": "buy round",
"targets": {
"ko": "풀 구매",
"ja": "フルバイ",
"zh": "全起"
}
},
{
"source": "force buy",
"targets": {
"ko": "강제 구매",
"ja": "フォースバイ",
"zh": "强起"
}
},
{
"source": "pistol round",
"targets": {
"ko": "권총 라운드",
"ja": "ピストルラウンド",
"zh": "手枪局"
}
},
{
"source": "ult",
"targets": {
"ko": "궁",
"ja": "アルト",
"zh": "大招"
}
},
{
"source": "ultimate",
"targets": {
"ko": "궁극기",
"ja": "アルティメット",
"zh": "终极技能"
}
},
{
"source": "ult orb",
"targets": {
"ko": "궁 오브",
"ja": "アルトオーブ",
"zh": "能量球"
}
},
{
"source": "util",
"targets": {
"ko": "유틸",
"ja": "ユーティリティ",
"zh": "技能"
}
},
{
"source": "utility",
"targets": {
"ko": "유틸",
"ja": "ユーティリティ",
"zh": "技能"
}
},
{
"source": "smoke",
"targets": {
"ko": "연막",
"ja": "スモーク",
"zh": "烟"
}
},
{
"source": "flash",
"targets": {
"ko": "섬광",
"ja": "フラッシュ",
"zh": "闪"
}
},
{
"source": "flashed",
"targets": {
"ko": "섬광 맞음",
"ja": "フラッシュ食らった",
"zh": "被闪了"
}
},
{
"source": "molly",
"targets": {
"ko": "몰리",
"ja": "モリー",
"zh": "火"
}
},
{
"source": "wall",
"targets": {
"ko": "벽",
"ja": "ウォール",
"zh": "墙"
}
},
{
"source": "recon",
"targets": {
"ko": "정찰",
"ja": "リコン",
"zh": "侦察"
}
},
{
"source": "one tap",
"targets": {
"ko": "원탭",
"ja": "ワンタップ",
"zh": "一枪"
}
},
{
"source": "headshot",
"targets": {
"ko": "헤드샷",
"ja": "ヘッドショット",
"zh": "爆头"
}
},
{
"source": "entry",
"targets": {
"ko": "진입",
"ja": "エントリー",
"zh": "突破"
}
},
{
"source": "entry frag",
"targets": {
"ko": "선취점",
"ja": "エントリーキル",
"zh": "首杀"
}
},
{
"source": "trade",
"targets": {
"ko": "트레이드",
"ja": "トレード",
"zh": "换人"
}
},
{
"source": "peek",
"targets": {
"ko": "픽",
"ja": "ピーク",
"zh": "架点"
}
},
{
"source": "wide peek",
"targets": {
"ko": "와이드 픽",
"ja": "ワイドピーク",
"zh": "大幅架点"
}
},
{
"source": "clear",
"targets": {
"ko": "클리어",
"ja": "クリア",
"zh": "清点"
}
},
{
"source": "rush",
"targets": {
"ko": "러쉬",
"ja": "ラッシュ",
"zh": "强攻"
}
},
{
"source": "stack",
"targets": {
"ko": "몰빵",
"ja": "スタック",
"zh": "集火"
}
},
{
"source": "lurk",
"targets": {
"ko": "럴커",
"ja": "ラーク",
"zh": "潜伏"
}
},
{
"source": "op",
"targets": {
"ko": "오페",
"ja": "オペ",
"zh": "狙"
}
},
{
"source": "operator",
"targets": {
"ko": "오퍼레이터",
"ja": "オペレーター",
"zh": "狙击枪"
}
},
{
"source": "clutch",
"targets": {
"ko": "클러치",
"ja": "クラッチ",
"zh": "残局"
}
},
{
"source": "ace",
"targets": {
"ko": "에이스",
"ja": "エース",
"zh": "一穿五"
}
},
{
"source": "spray",
"targets": {
"ko": "연사",
"ja": "スプレー",
"zh": "扫射"
}
},
{
"source": "crosshair",
"targets": {
"ko": "크로스헤어",
"ja": "クロスヘア",
"zh": "准星"
}
},
{
"source": "callout",
"targets": {
"ko": "콜",
"ja": "コール",
"zh": "报点"
}
},
{
"source": "spotted",
"targets": {
"ko": "봤다",
"ja": "発見",
"zh": "看到了"
}
},
{
"source": "one down",
"targets": {
"ko": "한 명 잡음",
"ja": "一人ダウン",
"zh": "倒一个"
}
},
{
"source": "man advantage",
"targets": {
"ko": "인원 우위",
"ja": "人数有利",
"zh": "人数优势"
}
},
{
"source": "low",
"targets": {
"ko": "피 없음",
"ja": "体力低い",
"zh": "残血"
}
},
{
"source": "armor",
"targets": {
"ko": "방어구",
"ja": "アーマー",
"zh": "护甲"
}
},
{
"source": "creds",
"targets": {
"ko": "크레딧",
"ja": "クレジット",
"zh": "钱"
}
},
{
"source": "drop",
"targets": {
"ko": "드랍",
"ja": "ドロップ",
"zh": "丢枪"
}
},
{
"source": "overtime",
"targets": {
"ko": "연장",
"ja": "オーバータイム",
"zh": "加时"
}
},
{
"source": "match point",
"targets": {
"ko": "매치포인트",
"ja": "マッチポイント",
"zh": "赛点"
}
}
] ]
} }

View File

@@ -2,65 +2,479 @@
"key": "watchdogs", "key": "watchdogs",
"name": "워치독스 (Watch Dogs)", "name": "워치독스 (Watch Dogs)",
"description": "1·2·리전 공통. 조직명과 해킹 용어는 고유명사라 번역기가 특히 잘 틀립니다.", "description": "1·2·리전 공통. 조직명과 해킹 용어는 고유명사라 번역기가 특히 잘 틀립니다.",
"scope": "game",
"entries": [ "entries": [
{"source": "DedSec", "targets": {"ko": "데드섹", "ja": "デッドセック", "zh": "DedSec"}}, {
{"source": "ctOS", "targets": {"ko": "ctOS", "ja": "ctOS", "zh": "ctOS"}}, "source": "DedSec",
{"source": "Blume", "targets": {"ko": "블룸", "ja": "ブルーム", "zh": "布鲁姆"}}, "targets": {
{"source": "Albion", "targets": {"ko": "알비온", "ja": "アルビオン", "zh": "阿尔比恩"}}, "ko": "데드섹",
{"source": "Clan Kelley", "targets": {"ko": "켈리 클랜", "ja": "ケリー一家", "zh": "凯利帮"}}, "ja": "デッドセック",
{"source": "Zero Day", "targets": {"ko": "제로 데이", "ja": "ゼロデイ", "zh": "零日"}}, "zh": "DedSec"
{"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": "ctOS",
{"source": "operative", "targets": {"ko": "요원", "ja": "オペレーティブ", "zh": "特工"}}, "targets": {
{"source": "recruit", "targets": {"ko": "영입", "ja": "勧誘", "zh": "招募"}}, "ko": "ctOS",
{"source": "permadeath", "targets": {"ko": "영구 사망", "ja": "パーマデス", "zh": "永久死亡"}}, "ja": "ctOS",
{"source": "hack", "targets": {"ko": "해킹", "ja": "ハッキング", "zh": "黑入"}}, "zh": "ctOS"
{"source": "hacked", "targets": {"ko": "해킹됐다", "ja": "ハックされた", "zh": "被黑了"}}, }
{"source": "remote hack", "targets": {"ko": "원격 해킹", "ja": "リモートハック", "zh": "远程黑入"}}, },
{"source": "backdoor", "targets": {"ko": "백도어", "ja": "バックドア", "zh": "后门"}}, {
{"source": "firewall", "targets": {"ko": "방화벽", "ja": "ファイアウォール", "zh": "防火墙"}}, "source": "Blume",
{"source": "exploit", "targets": {"ko": "익스플로잇", "ja": "エクスプロイト", "zh": "漏洞利用"}}, "targets": {
{"source": "payload", "targets": {"ko": "페이로드", "ja": "ペイロード", "zh": "载荷"}}, "ko": "블룸",
{"source": "botnet", "targets": {"ko": "봇넷", "ja": "ボットネット", "zh": "僵尸网络"}}, "ja": "ブルーム",
{"source": "server farm", "targets": {"ko": "서버 팜", "ja": "サーバーファーム", "zh": "服务器农场"}}, "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": "Albion",
{"source": "surveillance", "targets": {"ko": "감시", "ja": "監視", "zh": "监控"}}, "targets": {
{"source": "security camera", "targets": {"ko": "감시 카메라", "ja": "防犯カメラ", "zh": "监控摄像头"}}, "ko": "알비온",
{"source": "jump to camera", "targets": {"ko": "카메라 이동", "ja": "カメラに移動", "zh": "切换摄像头"}}, "ja": "アルビオン",
{"source": "NetHack", "targets": {"ko": "넷핵", "ja": "ネットハック", "zh": "网络视野"}}, "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": "Clan Kelley",
{"source": "cargo drone", "targets": {"ko": "화물 드론", "ja": "カーゴドローン", "zh": "货运无人机"}}, "targets": {
{"source": "turret", "targets": {"ko": "터렛", "ja": "タレット", "zh": "炮塔"}}, "ko": "켈리 클랜",
{"source": "guard", "targets": {"ko": "경비원", "ja": "警備員", "zh": "守卫"}}, "ja": "ケリー一家",
{"source": "restricted area", "targets": {"ko": "제한 구역", "ja": "立ち入り禁止区域", "zh": "禁区"}}, "zh": "凯利帮"
{"source": "detected", "targets": {"ko": "발각됐다", "ja": "見つかった", "zh": "被发现了"}}, }
{"source": "stay hidden", "targets": {"ko": "숨어 있어", "ja": "隠れてろ", "zh": "别暴露"}}, },
{"source": "take down", "targets": {"ko": "제압", "ja": "テイクダウン", "zh": "制服"}}, {
{"source": "non lethal", "targets": {"ko": "비살상", "ja": "非殺傷", "zh": "非致命"}}, "source": "Zero Day",
{"source": "lethal", "targets": {"ko": "살상", "ja": "殺傷", "zh": "致命"}}, "targets": {
{"source": "heat level", "targets": {"ko": "수배 단계", "ja": "指名手配レベル", "zh": "通缉等级"}}, "ko": "제로 데이",
{"source": "wanted", "targets": {"ko": "수배 중", "ja": "指名手配", "zh": "被通缉"}}, "ja": "ゼロデイ",
{"source": "lose the cops", "targets": {"ko": "경찰 따돌려", "ja": "警察撒いて", "zh": "甩掉警察"}}, "zh": "零日"
{"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": "Bratva",
{"source": "mission", "targets": {"ko": "임무", "ja": "ミッション", "zh": "任务"}}, "targets": {
{"source": "side mission", "targets": {"ko": "서브 임무", "ja": "サブミッション", "zh": "支线任务"}}, "ko": "브라트바",
{"source": "checkpoint", "targets": {"ko": "체크포인트", "ja": "チェックポイント", "zh": "检查点"}}, "ja": "ブラトヴァ",
{"source": "borough", "targets": {"ko": "자치구", "ja": "区", "zh": "行政区"}}, "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": "Viceroys",
{"source": "the city is watching", "targets": {"ko": "도시가 지켜보고 있다", "ja": "街が見ている", "zh": "城市在注视"}} "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": "被黑了"
}
},
{
"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": "被发现了"
}
},
{
"source": "stay hidden",
"targets": {
"ko": "숨어 있어",
"ja": "隠れてろ",
"zh": "别暴露"
}
},
{
"source": "take down",
"targets": {
"ko": "제압",
"ja": "テイクダウン",
"zh": "制服"
}
},
{
"source": "non lethal",
"targets": {
"ko": "비살상",
"ja": "非殺傷",
"zh": "非致命"
}
},
{
"source": "lethal",
"targets": {
"ko": "살상",
"ja": "殺傷",
"zh": "致命"
}
},
{
"source": "heat level",
"targets": {
"ko": "수배 단계",
"ja": "指名手配レベル",
"zh": "通缉等级"
}
},
{
"source": "wanted",
"targets": {
"ko": "수배 중",
"ja": "指名手配",
"zh": "被通缉"
}
},
{
"source": "lose the cops",
"targets": {
"ko": "경찰 따돌려",
"ja": "警察撒いて",
"zh": "甩掉警察"
}
},
{
"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": "城市在注视"
}
}
] ]
} }

View File

@@ -238,6 +238,8 @@ class MainWindow(QMainWindow):
self.engine.start() self.engine.start()
def _on_restart_needed(self) -> None: def _on_restart_needed(self) -> None:
# 정지 상태에서도 반영해 둬야 저부하 모드를 켠 즉시 VRAM이 반납된다.
self.engine.sync_performance()
if self.engine.running: if self.engine.running:
self.engine.stop() self.engine.stop()
self.engine.start() self.engine.start()

View File

@@ -25,8 +25,8 @@ from PySide6.QtWidgets import (
from ...config import AppConfig from ...config import AppConfig
from ...constants import LANGUAGE_CODES, LANGUAGES, user_data_dir from ...constants import LANGUAGE_CODES, LANGUAGES, user_data_dir
from ...models import Glossary, GlossaryEntry from ...models import Glossary, GlossaryEntry
from ...models.packs import available_packs from ...models.packs import available_packs, find_conflicts
from ..theme import SPACING from ..theme import SPACING, palette
from ..widgets import Card, PageHeader from ..widgets import Card, PageHeader
COLUMNS = ["원문 용어", *[f"{LANGUAGES[c]['label']} 역어" for c in LANGUAGE_CODES], "메모"] COLUMNS = ["원문 용어", *[f"{LANGUAGES[c]['label']} 역어" for c in LANGUAGE_CODES], "메모"]
@@ -71,14 +71,17 @@ class GlossaryPage(QWidget):
card.add(_hint("기본 제공 용어집을 찾지 못했습니다.")) card.add(_hint("기본 제공 용어집을 찾지 못했습니다."))
return card return card
for pack in packs: # 범용 팩을 위에 두어 "게임 전용이 범용을 이긴다"는 규칙이 눈에 보이게 한다.
check = QCheckBox(f"{pack.name} ({len(pack)}개)") for pack in sorted(packs, key=lambda p: (not p.is_generic, p.name)):
suffix = " · 장르 공통" if pack.is_generic else ""
check = QCheckBox(f"{pack.name} ({len(pack)}개){suffix}")
check.setChecked(pack.key in enabled) check.setChecked(pack.key in enabled)
check.setToolTip(pack.description) check.setToolTip(pack.description)
check.toggled.connect(self._on_packs_changed) check.toggled.connect(self._on_packs_changed)
self._pack_checks[pack.key] = check self._pack_checks[pack.key] = check
card.add(check) card.add(check)
self.conflict_label = card.add(_warning(""))
self.pack_total = card.add(_hint("")) self.pack_total = card.add(_hint(""))
self._update_pack_total() self._update_pack_total()
return card return card
@@ -94,6 +97,33 @@ class GlossaryPage(QWidget):
enabled = set(self.config.glossary.enabled_packs) enabled = set(self.config.glossary.enabled_packs)
total = sum(len(p) for p in available_packs() if p.key in enabled) total = sum(len(p) for p in available_packs() if p.key in enabled)
self.pack_total.setText(f"켜둔 기본 용어 {total}개") self.pack_total.setText(f"켜둔 기본 용어 {total}개")
self._update_conflicts()
def _update_conflicts(self) -> None:
"""게임 전용 팩끼리 역어가 갈리는 단어를 알려준다.
예를 들어 오버워치와 워치독스를 같이 켜면 payload 가 '화물'과
'페이로드'로 갈린다. 조용히 아무거나 고르면 사용자는 영문도 모른 채
이상한 자막을 보게 되므로, 어떤 단어가 문제인지 그대로 보여준다.
"""
conflicts = find_conflicts(self.config.glossary.enabled_packs)
if not conflicts:
self.conflict_label.setText("")
self.conflict_label.setVisible(False)
return
shown = sorted(conflicts.items())[:4]
parts = [
f"{source} ({' / '.join(t for _, t in owners)})" for source, owners in shown
]
more = f" 외 {len(conflicts) - len(shown)}개" if len(conflicts) > len(shown) else ""
self.conflict_label.setText(
"게임 팩끼리 역어가 갈리는 단어가 있습니다 — "
+ ", ".join(parts)
+ more
+ ". 안 하는 게임은 꺼주세요. (직접 등록하면 그쪽이 이깁니다)"
)
self.conflict_label.setVisible(True)
# --- 구성 ----------------------------------------------------------- # --- 구성 -----------------------------------------------------------
def _build_options_card(self) -> Card: def _build_options_card(self) -> Card:
@@ -295,3 +325,12 @@ def _hint(text: str) -> QLabel:
label.setObjectName("Hint") label.setObjectName("Hint")
label.setAlignment(Qt.AlignmentFlag.AlignRight) label.setAlignment(Qt.AlignmentFlag.AlignRight)
return label return label
def _warning(text: str) -> QLabel:
label = QLabel(text)
label.setObjectName("Hint")
label.setWordWrap(True)
label.setStyleSheet(f"color: {palette('dark').warning};")
label.setVisible(bool(text))
return label

95
tests/test_low_power.py Normal file
View File

@@ -0,0 +1,95 @@
"""저부하(게임) 모드 토글이 실제로 모델에 반영되는지.
설정 화면에서 모드를 꺼도 이미 올라가 있는 int8 모델이 그대로 남으면
"껐는데 품질이 안 올라간다"가 된다. 반대로 켜도 float16 모델이 남으면
게임 프레임을 지키려던 목적이 통째로 무산된다.
"""
from __future__ import annotations
from livesub.config import AppConfig
from livesub.core.engine import TranslationEngine
from livesub.models import ModelManager
def make_engine(game_mode: bool, tmp_path) -> TranslationEngine:
cfg = AppConfig()
cfg.models.preload_on_start = False
cfg.glossary.path = str(tmp_path / "glossary.json")
cfg.performance.game_mode = game_mode
return TranslationEngine(cfg)
def test_manager_reflects_initial_game_mode(tmp_path):
on = make_engine(True, tmp_path)
off = make_engine(False, tmp_path)
assert on.models.low_power is True
assert off.models.low_power is False
def test_toggling_game_mode_updates_manager(tmp_path):
"""설정에서 모드를 바꾸면 다음 시작 때 모델 사양이 따라와야 한다."""
engine = make_engine(True, tmp_path)
assert "int8" in engine.models.effective_asr_spec().compute_type
engine.config.performance.game_mode = False
engine.sync_performance()
assert engine.models.low_power is False
assert engine.models.effective_asr_spec() == engine.models.tier.asr
def test_toggling_back_on_restores_low_power_specs(tmp_path):
engine = make_engine(False, tmp_path)
engine.config.performance.game_mode = True
engine.sync_performance()
assert engine.models.low_power is True
assert "int8" in engine.models.effective_asr_spec().compute_type
def test_changed_mode_unloads_stale_models(tmp_path):
"""정밀도가 바뀌었으면 이미 올라간 모델을 반드시 내려야 한다."""
engine = make_engine(True, tmp_path)
class FakeModel:
def __init__(self):
self.loaded = True
self.unloaded = False
def unload(self):
self.unloaded = True
self.loaded = False
asr, mt = FakeModel(), FakeModel()
engine.models._asr, engine.models._mt = asr, mt
engine.config.performance.game_mode = False
changed = engine.sync_performance()
assert changed is True
assert asr.unloaded and mt.unloaded
assert engine.models._asr is None and engine.models._mt is None
def test_unchanged_mode_keeps_models_loaded(tmp_path):
"""바뀐 게 없으면 굳이 내려서 재다운로드/재로딩을 유발하면 안 된다."""
engine = make_engine(True, tmp_path)
class FakeModel:
loaded = True
def unload(self):
raise AssertionError("바뀐 게 없는데 언로드하면 안 됩니다")
engine.models._asr = FakeModel()
engine.models._mt = FakeModel()
assert engine.sync_performance() is False
assert engine.models._asr is not None
def test_int4_tier_is_not_downgraded_further(tmp_path):
cfg = AppConfig()
cfg.models.tier = "precision"
manager = ModelManager(cfg.models, low_power=True)
assert manager.effective_mt_spec().compute_type == "int4"

View File

@@ -4,7 +4,13 @@ from __future__ import annotations
from livesub.constants import LANGUAGE_CODES from livesub.constants import LANGUAGE_CODES
from livesub.models.glossary import Glossary, GlossaryEntry from livesub.models.glossary import Glossary, GlossaryEntry
from livesub.models.packs import available_packs, build_glossary, get_pack from livesub.models.packs import (
available_packs,
build_glossary,
find_conflicts,
get_pack,
resolve_packs,
)
#: 사용자가 "필수 게임"으로 지정한 것 — 빠지면 테스트가 잡아낸다. #: 사용자가 "필수 게임"으로 지정한 것 — 빠지면 테스트가 잡아낸다.
REQUIRED_GAMES = {"overwatch", "watchdogs", "pubg", "r6siege"} REQUIRED_GAMES = {"overwatch", "watchdogs", "pubg", "r6siege"}
@@ -102,3 +108,103 @@ def test_no_packs_means_only_user_entries():
user = Glossary([GlossaryEntry("foo", {"ko": "푸"})]) user = Glossary([GlossaryEntry("foo", {"ko": "푸"})])
merged = build_glossary(user, []) merged = build_glossary(user, [])
assert len(merged) == 1 assert len(merged) == 1
# --- 팩 계층: 게임 전용이 장르 공통을 이긴다 --------------------------------
def test_generic_packs_are_tagged():
generic = {p.key for p in available_packs() if p.is_generic}
assert generic == {"fps-common", "streaming"}
def test_game_pack_beats_generic_regardless_of_check_order():
"""체크한 순서가 결과를 바꾸면 안 된다.
knocked 는 FPS 공통에서 '기절', 배그에서 '눕혔다'다. 배그를 켰으면
어느 쪽을 먼저 눌렀든 '눕혔다'가 나와야 한다.
"""
for order in (["fps-common", "pubg"], ["pubg", "fps-common"]):
_, repl = build_glossary(Glossary(), order).protect("knocked", "ko")
assert repl == ["눕혔다"], f"{order} 에서 순서에 휘둘림"
def test_resolve_packs_puts_generic_first():
order = [p.key for p in resolve_packs(["pubg", "fps-common", "overwatch", "streaming"])]
assert order.index("fps-common") < order.index("pubg")
assert order.index("streaming") < order.index("overwatch")
def test_user_entry_still_beats_everything():
user = Glossary([GlossaryEntry("knocked", {"ko": "쓰러짐"})])
_, repl = build_glossary(user, ["fps-common", "pubg"]).protect("knocked", "ko")
assert repl == ["쓰러짐"]
# --- 충돌 감지 ---------------------------------------------------------------
def test_conflicts_detected_between_game_packs():
conflicts = find_conflicts(["overwatch", "watchdogs"])
assert "payload" in conflicts
assert {t for _, t in conflicts["payload"]} == {"화물", "페이로드"}
def test_generic_vs_game_is_not_reported_as_conflict():
"""범용은 게임 팩에 확실히 지므로 사용자가 판단할 일이 없다."""
assert "knocked" not in find_conflicts(["fps-common", "pubg"])
def test_single_game_pack_has_no_conflicts():
assert find_conflicts(["pubg", "fps-common", "streaming"]) == {}
def test_default_enabled_packs_cover_required_games():
from livesub.config import AppConfig
enabled = set(AppConfig().glossary.enabled_packs)
assert enabled >= REQUIRED_GAMES, f"기본값에서 빠진 필수 게임: {REQUIRED_GAMES - enabled}"
def test_default_enabled_packs_all_exist():
from livesub.config import AppConfig
keys = {p.key for p in available_packs()}
assert set(AppConfig().glossary.enabled_packs) <= keys
def test_default_enabled_packs_actually_translate():
from livesub.config import AppConfig
cfg = AppConfig()
merged = build_glossary(Glossary(), cfg.glossary.enabled_packs)
_, repl = merged.protect("DedSec hacked the ctOS server", "ko")
assert repl == ["데드섹", "해킹됐다", "ctOS"]
# --- 용어가 조각나서 두 번 치환되지 않는지 -----------------------------------
def test_each_term_protects_as_a_single_unit():
"""등록된 용어를 그대로 넣으면 정확히 한 번만 치환돼야 한다.
조각 용어("the blue")가 더 긴 용어("blue zone")보다 앞 위치에서 먼저
매칭되면 "자기장 자기장" 같은 겹침이 생긴다. 최장일치 정렬은 같은 시작
위치에서만 통하므로, 데이터에 조각이 섞이면 이 테스트가 잡아낸다.
팩을 전부 켠 최악의 조합으로 검사한다.
"""
merged = build_glossary(Glossary(), [p.key for p in available_packs()])
broken = []
for entry in merged.entries:
_, repl = merged.protect(entry.source, "ko")
if len(repl) != 1:
broken.append((entry.source, repl))
assert not broken, f"한 용어가 여러 조각으로 잘립니다: {broken[:5]}"
def test_blue_zone_is_one_replacement():
merged = build_glossary(Glossary(), ["fps-common", "pubg"])
protected, repl = merged.protect("head to the blue zone", "ko")
assert repl == ["자기장"], f"겹침 발생: {protected}"
assert Glossary.restore(protected, repl) == "head to the 자기장"