feat(l10n): 누락된 번역 및 기본 무기 수정
- 기본 무기를 'Sharp Stick'에서 'Keyboard'로 변경 (아스키나라 세계관) - 몬스터 번역 168개 추가 (보안 위협, 버그 등) - BoringItems(잡템) 번역 42개 추가 - game_data_l10n에서 boringItem 번역 적용
This commit is contained in:
@@ -248,6 +248,189 @@ const Map<String, String> monsterTranslationsKo = {
|
|||||||
'Bohrbug': '보어버그',
|
'Bohrbug': '보어버그',
|
||||||
'Mandelbug': '만델버그',
|
'Mandelbug': '만델버그',
|
||||||
'Hindenbug': '힌덴버그',
|
'Hindenbug': '힌덴버그',
|
||||||
|
|
||||||
|
// 추가 버그 및 회피 기법
|
||||||
|
'Schroedinbug': '슈뢰딘버그',
|
||||||
|
'Antivirus Evasion': '안티바이러스 회피',
|
||||||
|
'Packer': '패커',
|
||||||
|
'Crypter': '크립터',
|
||||||
|
'Dropper': '드로퍼',
|
||||||
|
'Loader': '로더',
|
||||||
|
'Payload Carrier': '페이로드 운반자',
|
||||||
|
'Persistence Mechanism': '지속성 메커니즘',
|
||||||
|
'Privilege Escalation': '권한 상승',
|
||||||
|
'Lateral Movement': '측면 이동',
|
||||||
|
'Exfil Channel': '유출 채널',
|
||||||
|
'C2 Beacon': 'C2 비콘',
|
||||||
|
'DNS Tunnel': 'DNS 터널',
|
||||||
|
'ICMP Shell': 'ICMP 쉘',
|
||||||
|
'HTTP Backdoor': 'HTTP 백도어',
|
||||||
|
'Reverse Shell': '리버스 쉘',
|
||||||
|
'Bind Shell': '바인드 쉘',
|
||||||
|
'Web Shell': '웹 쉘',
|
||||||
|
'Cron Job Malware': '크론잡 악성코드',
|
||||||
|
'Init Script Virus': '초기화 스크립트 바이러스',
|
||||||
|
|
||||||
|
// 코드 인젝션 기법
|
||||||
|
'Library Injection': '라이브러리 인젝션',
|
||||||
|
'Process Hollowing': '프로세스 할로잉',
|
||||||
|
'Thread Injection': '스레드 인젝션',
|
||||||
|
'APC Injection': 'APC 인젝션',
|
||||||
|
'Atom Bombing': '아톰 봄빙',
|
||||||
|
'Process Doppelganging': '프로세스 도플갱잉',
|
||||||
|
'Ghostwriting': '고스트라이팅',
|
||||||
|
'Module Stomping': '모듈 스톰핑',
|
||||||
|
'Reflective Loading': '리플렉티브 로딩',
|
||||||
|
'Manual Mapping': '수동 매핑',
|
||||||
|
'Syscall Stub': '시스콜 스텁',
|
||||||
|
'Heaven Gate': '헤븐 게이트',
|
||||||
|
|
||||||
|
// 비동기 및 메모리 관련
|
||||||
|
'Callback Hell': '콜백 지옥',
|
||||||
|
'Promise Rejection': '프로미스 거부',
|
||||||
|
'Event Loop Block': '이벤트 루프 블록',
|
||||||
|
'Memory Pressure': '메모리 압박',
|
||||||
|
'Garbage Storm': '가비지 폭풍',
|
||||||
|
'Finalizer Bug': '파이널라이저 버그',
|
||||||
|
'Weak Reference Leak': '약한 참조 누수',
|
||||||
|
'String Interning Bug': '문자열 인터닝 버그',
|
||||||
|
'Classloader Leak': '클래스로더 누수',
|
||||||
|
'Native Memory Leak': '네이티브 메모리 누수',
|
||||||
|
'Direct Buffer Leak': '다이렉트 버퍼 누수',
|
||||||
|
'Thread Local Leak': '스레드 로컬 누수',
|
||||||
|
'Connection Pool Leak': '커넥션 풀 누수',
|
||||||
|
'File Handle Leak': '파일 핸들 누수',
|
||||||
|
'Timer Leak': '타이머 누수',
|
||||||
|
'Listener Leak': '리스너 누수',
|
||||||
|
'Observable Leak': '옵저버블 누수',
|
||||||
|
'Async Leak': '비동기 누수',
|
||||||
|
'Context Leak': '컨텍스트 누수',
|
||||||
|
'Bitmap Leak': '비트맵 누수',
|
||||||
|
'Cursor Leak': '커서 누수',
|
||||||
|
'Stream Leak': '스트림 누수',
|
||||||
|
'Transaction Leak': '트랜잭션 누수',
|
||||||
|
'Session Leak': '세션 누수',
|
||||||
|
'Cache Bloat': '캐시 비대화',
|
||||||
|
'Queue Overflow': '큐 오버플로우',
|
||||||
|
'Ring Buffer Bug': '링 버퍼 버그',
|
||||||
|
|
||||||
|
// 동시성 및 락 관련
|
||||||
|
'Lock Contention': '락 경합',
|
||||||
|
'Spin Lock Burn': '스핀 락 연소',
|
||||||
|
'False Sharing': '거짓 공유',
|
||||||
|
'NUMA Bug': 'NUMA 버그',
|
||||||
|
'Affinity Bug': '어피니티 버그',
|
||||||
|
'Context Switch Storm': '컨텍스트 스위치 폭풍',
|
||||||
|
'TLB Shootdown': 'TLB 슛다운',
|
||||||
|
'IPI Storm': 'IPI 폭풍',
|
||||||
|
'Interrupt Disable Bug': '인터럽트 비활성화 버그',
|
||||||
|
'Preemption Bug': '선점 버그',
|
||||||
|
'RCU Bug': 'RCU 버그',
|
||||||
|
'Seqlock Bug': '시퀀스 락 버그',
|
||||||
|
'RWLock Bug': '읽기쓰기 락 버그',
|
||||||
|
'Futex Bug': 'Futex 버그',
|
||||||
|
'Spinlock Bug': '스핀락 버그',
|
||||||
|
'Barrier Bug': '배리어 버그',
|
||||||
|
'Condition Variable Bug': '조건 변수 버그',
|
||||||
|
'Semaphore Leak': '세마포어 누수',
|
||||||
|
'Message Queue Bug': '메시지 큐 버그',
|
||||||
|
'Shared Memory Bug': '공유 메모리 버그',
|
||||||
|
'Pipe Deadlock': '파이프 데드락',
|
||||||
|
'Socket Leak': '소켓 누수',
|
||||||
|
'Epoll Bug': 'Epoll 버그',
|
||||||
|
'Kqueue Bug': 'Kqueue 버그',
|
||||||
|
'IOCP Bug': 'IOCP 버그',
|
||||||
|
'AIO Bug': 'AIO 버그',
|
||||||
|
'Scatter Gather Bug': '스캐터 개더 버그',
|
||||||
|
'Zero Copy Bug': '제로 카피 버그',
|
||||||
|
'Splice Bug': '스플라이스 버그',
|
||||||
|
'Vmsplice Bug': 'Vmsplice 버그',
|
||||||
|
'Tee Bug': 'Tee 버그',
|
||||||
|
'Fallocate Bug': 'Fallocate 버그',
|
||||||
|
'Punch Hole Bug': '펀치 홀 버그',
|
||||||
|
'Direct IO Bug': '다이렉트 IO 버그',
|
||||||
|
'Sync Bug': '동기화 버그',
|
||||||
|
'Datasync Bug': '데이터 동기화 버그',
|
||||||
|
'Journal Bug': '저널 버그',
|
||||||
|
'Inode Leak': 'Inode 누수',
|
||||||
|
'Dentry Cache Bug': 'Dentry 캐시 버그',
|
||||||
|
'Buffer Head Bug': '버퍼 헤드 버그',
|
||||||
|
'Page Cache Bug': '페이지 캐시 버그',
|
||||||
|
'Slab Leak': '슬랩 누수',
|
||||||
|
'Kmalloc Bug': 'Kmalloc 버그',
|
||||||
|
'Vmalloc Bug': 'Vmalloc 버그',
|
||||||
|
'Highmem Bug': '상위 메모리 버그',
|
||||||
|
'Lowmem Bug': '하위 메모리 버그',
|
||||||
|
'OOM Killer': 'OOM 킬러',
|
||||||
|
|
||||||
|
// 폭탄 및 DoS 관련
|
||||||
|
'Fork Bomb': '포크 폭탄',
|
||||||
|
'Zip Bomb': '압축 폭탄',
|
||||||
|
'Xml Bomb': 'XML 폭탄',
|
||||||
|
'Regex Bomb': '정규식 폭탄',
|
||||||
|
'Hash Collision Attack': '해시 충돌 공격',
|
||||||
|
'Algorithmic Complexity': '알고리즘 복잡도 공격',
|
||||||
|
'Slowloris': '슬로우로리스',
|
||||||
|
'RUDY': 'RUDY',
|
||||||
|
'Apache Killer': '아파치 킬러',
|
||||||
|
'HashDoS': '해시 DoS',
|
||||||
|
'SYN Flood Spirit': 'SYN 플러드 정령',
|
||||||
|
'UDP Flood': 'UDP 플러드',
|
||||||
|
'ICMP Flood': 'ICMP 플러드',
|
||||||
|
'Smurf Attack': '스머프 공격',
|
||||||
|
'Fraggle Attack': '프래글 공격',
|
||||||
|
'DNS Amplification': 'DNS 증폭',
|
||||||
|
'NTP Amplification': 'NTP 증폭',
|
||||||
|
'SSDP Amplification': 'SSDP 증폭',
|
||||||
|
'Memcached Amplification': 'Memcached 증폭',
|
||||||
|
'CLDAP Amplification': 'CLDAP 증폭',
|
||||||
|
'Reflection Attack': '반사 공격',
|
||||||
|
'Carpet Bombing': '융단 폭격',
|
||||||
|
'Pulse Wave': '펄스 웨이브',
|
||||||
|
'Low and Slow': '저속 공격',
|
||||||
|
'Application Layer': '애플리케이션 레이어 공격',
|
||||||
|
'SSL Exhaustion': 'SSL 고갈',
|
||||||
|
'Renegotiation Attack': '재협상 공격',
|
||||||
|
|
||||||
|
// 유명 취약점들
|
||||||
|
'BEAST': 'BEAST',
|
||||||
|
'CRIME': 'CRIME',
|
||||||
|
'BREACH': 'BREACH',
|
||||||
|
'POODLE': 'POODLE',
|
||||||
|
'Heartbleed Ghost': '하트블리드 유령',
|
||||||
|
'Shellshock': '쉘쇼크',
|
||||||
|
'Dirty COW': '더티 카우',
|
||||||
|
'VENOM': 'VENOM',
|
||||||
|
'Cloudbleed': '클라우드블리드',
|
||||||
|
'Krack Attack': 'KRACK 공격',
|
||||||
|
'Dragonblood': '드래곤블러드',
|
||||||
|
'Frag Attack': '프래그 공격',
|
||||||
|
'Kr00k': 'Kr00k',
|
||||||
|
'PMKID Attack': 'PMKID 공격',
|
||||||
|
|
||||||
|
// 무선 네트워크 공격
|
||||||
|
'Evil Twin': '이블 트윈',
|
||||||
|
'Karma Attack': '카르마 공격',
|
||||||
|
'Deauth Attack': '인증해제 공격',
|
||||||
|
'Beacon Flood': '비콘 플러드',
|
||||||
|
'Bluetooth Bug': '블루투스 버그',
|
||||||
|
'Blueborne': '블루본',
|
||||||
|
'Sweyntooth': '스웨인투스',
|
||||||
|
'Braktooth': '브랙투스',
|
||||||
|
'Knob Attack': 'KNOB 공격',
|
||||||
|
'Bias Attack': 'BIAS 공격',
|
||||||
|
|
||||||
|
// 네트워크 장비 및 프로토콜 버그
|
||||||
|
'Cable Haunt': '케이블 헌트',
|
||||||
|
'CallStranger': '콜스트레인저',
|
||||||
|
'Ripple20': 'Ripple20',
|
||||||
|
'Amnesia33': 'Amnesia33',
|
||||||
|
'Number Jack': '넘버 잭',
|
||||||
|
'NAME:WRECK': 'NAME:WRECK',
|
||||||
|
'BadAlloc': 'BadAlloc',
|
||||||
|
'PwnKit': 'PwnKit',
|
||||||
|
'Sudo Bug': 'Sudo 버그',
|
||||||
|
'Baron Samedit': '바론 사메딧',
|
||||||
};
|
};
|
||||||
|
|
||||||
/// 무기 이름 한국어 번역
|
/// 무기 이름 한국어 번역
|
||||||
@@ -555,3 +738,49 @@ const Map<String, String> specialTranslationsKo = {
|
|||||||
'Prototype': '프로토타입',
|
'Prototype': '프로토타입',
|
||||||
'Builder': '빌더',
|
'Builder': '빌더',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// 잡템(BoringItems) 한국어 번역
|
||||||
|
/// 몬스터 처치 시 획득하는 일반 아이템들
|
||||||
|
const Map<String, String> boringItemTranslationsKo = {
|
||||||
|
'semicolon': '세미콜론',
|
||||||
|
'curly brace': '중괄호',
|
||||||
|
'null pointer': '널 포인터',
|
||||||
|
'empty string': '빈 문자열',
|
||||||
|
'deprecated token': '사용 중단 토큰',
|
||||||
|
'legacy code': '레거시 코드',
|
||||||
|
'tab character': '탭 문자',
|
||||||
|
'whitespace': '공백 문자',
|
||||||
|
'comment block': '주석 블록',
|
||||||
|
'todo marker': 'TODO 마커',
|
||||||
|
'fixme note': 'FIXME 노트',
|
||||||
|
'readme fragment': 'README 조각',
|
||||||
|
'config shard': '설정 파편',
|
||||||
|
'log entry': '로그 항목',
|
||||||
|
'stack trace': '스택 트레이스',
|
||||||
|
'core dump': '코어 덤프',
|
||||||
|
'crash report': '충돌 보고서',
|
||||||
|
'error message': '오류 메시지',
|
||||||
|
'warning flag': '경고 플래그',
|
||||||
|
'lint error': '린트 오류',
|
||||||
|
'syntax fragment': '구문 조각',
|
||||||
|
'broken link': '깨진 링크',
|
||||||
|
'orphan process': '고아 프로세스',
|
||||||
|
'zombie thread': '좀비 스레드',
|
||||||
|
'dangling pointer': '댕글링 포인터',
|
||||||
|
'memory leak': '메모리 누수',
|
||||||
|
'buffer scrap': '버퍼 조각',
|
||||||
|
'bit bucket': '비트 버킷',
|
||||||
|
'dev null': '/dev/null',
|
||||||
|
'/dev/random': '/dev/random',
|
||||||
|
'entropy pool': '엔트로피 풀',
|
||||||
|
'hash collision': '해시 충돌',
|
||||||
|
'race condition': '레이스 컨디션',
|
||||||
|
'deadlock key': '데드락 키',
|
||||||
|
'mutex token': '뮤텍스 토큰',
|
||||||
|
'semaphore': '세마포어',
|
||||||
|
'signal handler': '시그널 핸들러',
|
||||||
|
'interrupt vector': '인터럽트 벡터',
|
||||||
|
'return value': '반환값',
|
||||||
|
'exit code': '종료 코드',
|
||||||
|
'errno': 'errno',
|
||||||
|
};
|
||||||
|
|||||||
@@ -526,6 +526,18 @@ abstract class L10n {
|
|||||||
/// In en, this message translates to:
|
/// In en, this message translates to:
|
||||||
/// **'{percent}% complete'**
|
/// **'{percent}% complete'**
|
||||||
String percentComplete(int percent);
|
String percentComplete(int percent);
|
||||||
|
|
||||||
|
/// New character screen title
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'ASCII-Nara - New Character'**
|
||||||
|
String get newCharacterTitle;
|
||||||
|
|
||||||
|
/// Confirm character creation button
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Sold!'**
|
||||||
|
String get soldButton;
|
||||||
}
|
}
|
||||||
|
|
||||||
class _L10nDelegate extends LocalizationsDelegate<L10n> {
|
class _L10nDelegate extends LocalizationsDelegate<L10n> {
|
||||||
|
|||||||
@@ -232,4 +232,10 @@ class L10nEn extends L10n {
|
|||||||
String percentComplete(int percent) {
|
String percentComplete(int percent) {
|
||||||
return '$percent% complete';
|
return '$percent% complete';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get newCharacterTitle => 'ASCII-Nara - New Character';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get soldButton => 'Sold!';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -232,4 +232,10 @@ class L10nJa extends L10n {
|
|||||||
String percentComplete(int percent) {
|
String percentComplete(int percent) {
|
||||||
return '$percent% complete';
|
return '$percent% complete';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get newCharacterTitle => 'ASCII-Nara - New Character';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get soldButton => 'Sold!';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -232,4 +232,10 @@ class L10nKo extends L10n {
|
|||||||
String percentComplete(int percent) {
|
String percentComplete(int percent) {
|
||||||
return '$percent% 완료';
|
return '$percent% 완료';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get newCharacterTitle => '아스키나라 - 새 캐릭터';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get soldButton => '확인!';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -232,4 +232,10 @@ class L10nZh extends L10n {
|
|||||||
String percentComplete(int percent) {
|
String percentComplete(int percent) {
|
||||||
return '$percent% complete';
|
return '$percent% complete';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get newCharacterTitle => 'ASCII-Nara - New Character';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get soldButton => 'Sold!';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -244,9 +244,7 @@ class GameDataL10n {
|
|||||||
static String _renderItemResultKo(ItemResult result) {
|
static String _renderItemResultKo(ItemResult result) {
|
||||||
// 단순 아이템 (boringItem)
|
// 단순 아이템 (boringItem)
|
||||||
if (result.boringItem != null) {
|
if (result.boringItem != null) {
|
||||||
// boringItem은 별도 번역 맵이 필요할 수 있음
|
return boringItemTranslationsKo[result.boringItem] ?? result.boringItem!;
|
||||||
// 현재는 그대로 반환 (대부분 영어 그대로 사용)
|
|
||||||
return result.boringItem!;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 복합 아이템: attrib + special + itemOf
|
// 복합 아이템: attrib + special + itemOf
|
||||||
@@ -383,7 +381,7 @@ class GameDataL10n {
|
|||||||
return '$attribKo $specialKo';
|
return '$attribKo $specialKo';
|
||||||
}
|
}
|
||||||
|
|
||||||
// 단일 단어 (boringItem 등)
|
// 단일 단어 (boringItem 등) - 잡템 번역 시도
|
||||||
return itemString;
|
return boringItemTranslationsKo[itemString] ?? itemString;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -302,7 +302,7 @@ class Equipment {
|
|||||||
static const slotCount = 11;
|
static const slotCount = 11;
|
||||||
|
|
||||||
factory Equipment.empty() => const Equipment(
|
factory Equipment.empty() => const Equipment(
|
||||||
weapon: 'Sharp Stick',
|
weapon: 'Keyboard',
|
||||||
shield: '',
|
shield: '',
|
||||||
helm: '',
|
helm: '',
|
||||||
hauberk: '',
|
hauberk: '',
|
||||||
|
|||||||
@@ -173,7 +173,7 @@ class GameSave {
|
|||||||
.toList(),
|
.toList(),
|
||||||
),
|
),
|
||||||
equipment: Equipment(
|
equipment: Equipment(
|
||||||
weapon: equipmentJson['weapon'] as String? ?? 'Sharp Stick',
|
weapon: equipmentJson['weapon'] as String? ?? 'Keyboard',
|
||||||
shield: equipmentJson['shield'] as String? ?? '',
|
shield: equipmentJson['shield'] as String? ?? '',
|
||||||
helm: equipmentJson['helm'] as String? ?? '',
|
helm: equipmentJson['helm'] as String? ?? '',
|
||||||
hauberk: equipmentJson['hauberk'] as String? ?? '',
|
hauberk: equipmentJson['hauberk'] as String? ?? '',
|
||||||
|
|||||||
Reference in New Issue
Block a user