From 43924d6cfd3acc58b4644ec9d94e98d5cf686dc2 Mon Sep 17 00:00:00 2001 From: JiWoong Sul Date: Thu, 11 Dec 2025 18:25:57 +0900 Subject: [PATCH] =?UTF-8?q?feat(l10n):=20=EA=B2=8C=EC=9E=84=20=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=20=ED=95=9C=EA=B5=AD=EC=96=B4=20=EB=B2=88?= =?UTF-8?q?=EC=97=AD=20=EC=8B=9C=EC=8A=A4=ED=85=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - game_translations_ko.dart: 한국어 번역 데이터 - 종족/직업/몬스터/무기/갑옷/방패/주문 번역 - 아이템 속성/접미사 번역 - 칭호/특수 아이템 번역 - game_data_l10n.dart: 번역 헬퍼 클래스 - getRaceName(), getKlassName(), getMonsterName() 등 - BuildContext 기반 로케일 감지 --- lib/data/game_translations_ko.dart | 557 ++++++++++++++++++++++++++ lib/src/core/l10n/game_data_l10n.dart | 172 ++++++++ 2 files changed, 729 insertions(+) create mode 100644 lib/data/game_translations_ko.dart create mode 100644 lib/src/core/l10n/game_data_l10n.dart diff --git a/lib/data/game_translations_ko.dart b/lib/data/game_translations_ko.dart new file mode 100644 index 0000000..29ce9e7 --- /dev/null +++ b/lib/data/game_translations_ko.dart @@ -0,0 +1,557 @@ +// 아스키나라(ASCII-Nara) 한국어 번역 데이터 +// 게임 데이터의 한국어 번역을 제공합니다. + +/// 종족 이름 한국어 번역 +const Map raceTranslationsKo = { + 'Byte Human': '바이트 인간', + 'Null Elf': '널 엘프', + 'Buffer Dwarf': '버퍼 드워프', + 'Bit Halfling': '비트 하플링', + 'Array Orc': '배열 오크', + 'Stack Goblin': '스택 고블린', + 'Heap Troll': '힙 트롤', + 'Pointer Fairy': '포인터 요정', + 'Register Gnome': '레지스터 노움', + 'Cache Imp': '캐시 임프', + 'Kernel Giant': '커널 거인', + 'Thread Spirit': '스레드 정령', + 'Coredump Undead': '코어덤프 언데드', + 'Flag Knight': '플래그 기사', + 'Loop Wizard': '루프 마법사', + 'Recursive Sage': '재귀 현자', + 'Iterator Rogue': '이터레이터 도적', + 'Callback Priest': '콜백 사제', + 'Lambda Druid': '람다 드루이드', + 'Protocol Paladin': '프로토콜 성기사', + 'Index Ranger': '인덱스 레인저', +}; + +/// 직업 이름 한국어 번역 +const Map klassTranslationsKo = { + 'Bug Hunter': '버그 헌터', + 'Debugger Paladin': '디버거 성기사', + 'Compiler Mage': '컴파일러 마법사', + 'Refactor Monk': '리팩터 수도승', + 'Overflow Warrior': '오버플로우 전사', + 'Exception Handler': '예외 처리자', + 'Loop Breaker': '루프 파괴자', + 'Recursion Master': '재귀 마스터', + 'Callback Samurai': '콜백 사무라이', + 'Pointer Assassin': '포인터 암살자', + 'Garbage Collector': '가비지 컬렉터', + 'Memory Leaker': '메모리 리커', + 'Stack Crusher': '스택 파괴자', + 'Null Checker': '널 체커', + 'Type Caster': '타입 캐스터', + 'Assertion Knight': '어설션 기사', + 'Tester Jester': '테스터 광대', + 'DevOps Shaman': '데브옵스 샤먼', +}; + +/// 주문 이름 한국어 번역 +const Map spellTranslationsKo = { + 'Garbage Collection': '가비지 컬렉션', + 'Memory Optimization': '메모리 최적화', + 'Debug Mode': '디버그 모드', + 'Breakpoint': '브레이크포인트', + 'Step Over': '스텝 오버', + 'Step Into': '스텝 인투', + 'Watch Variable': '변수 감시', + 'Hot Reload': '핫 리로드', + 'Cold Boot': '콜드 부트', + 'Safe Mode': '안전 모드', + 'Kernel Panic': '커널 패닉', + 'Blue Screen': '블루 스크린', + 'Stack Trace': '스택 트레이스', + 'Core Dump': '코어 덤프', + 'Memory Dump': '메모리 덤프', + 'Heap Analysis': '힙 분석', + 'Profile Run': '프로파일 실행', + 'Benchmark': '벤치마크', + 'Unit Test': '유닛 테스트', + 'Integration Test': '통합 테스트', + 'Fuzzing': '퍼징', + 'Sanitizer': '새니타이저', + 'Static Analysis': '정적 분석', + 'Dynamic Analysis': '동적 분석', + 'Reverse Engineer': '역공학', + 'Decompile': '디컴파일', + 'Disassemble': '디스어셈블', + 'Patch Binary': '바이너리 패치', + 'Hook Function': '함수 후킹', + 'Inject Code': '코드 인젝션', + 'Elevate Privilege': '권한 상승', + 'Spawn Shell': '쉘 생성', + 'Pivot Network': '네트워크 피벗', + 'Exfiltrate Data': '데이터 유출', + 'Cover Tracks': '흔적 은폐', + 'Git Commit': 'Git 커밋', + 'Git Push': 'Git 푸시', + 'Git Merge': 'Git 머지', + 'Rollback': '롤백', + 'Hotfix': '핫픽스', + 'Deploy': '배포', + 'Scale Up': '스케일 업', + 'Failover': '페일오버', +}; + +/// 몬스터 이름 한국어 번역 (주요 몬스터만) +const Map monsterTranslationsKo = { + // 레벨 0-5: 초급 버그들 + 'Syntax Error': '문법 오류', + 'Typo Bug': '오타 버그', + 'Missing Bracket': '누락된 괄호', + 'Lint Warning': '린트 경고', + 'Tab-Space Conflict': '탭-스페이스 충돌', + 'Trailing Comma': '후행 쉼표', + 'Undefined Variable': '미정의 변수', + 'Type Mismatch': '타입 불일치', + 'Import Error': '임포트 오류', + 'Compile Warning': '컴파일 경고', + 'Null Reference': '널 참조', + 'Index Out of Bounds': '인덱스 초과', + 'Division by Zero': '0으로 나누기', + 'Stack Trace': '스택 트레이스', + 'Assertion Failure': '어설션 실패', + 'Parse Error': '파싱 오류', + 'Encoding Bug': '인코딩 버그', + 'Off-by-One Error': '하나 차이 오류', + 'Logic Bug': '논리 버그', + 'Infinite Loop Larva': '무한 루프 유충', + 'Memory Leak Sprout': '메모리 누수 싹', + 'Buffer Overflow Seed': '버퍼 오버플로우 씨앗', + 'Race Condition Pup': '레이스 컨디션 새끼', + 'Null Pointer Imp': '널 포인터 임프', + 'Segfault Sprite': '세그폴트 요정', + 'Exception Goblin': '예외 고블린', + 'Timeout Gremlin': '타임아웃 그렘린', + 'Connection Drop': '연결 끊김', + 'File Not Found': '파일 없음', + 'Permission Denied': '권한 거부', + + // 레벨 6-10: 중급 버그들 + 'Memory Leak': '메모리 누수', + 'Buffer Overflow': '버퍼 오버플로우', + 'Null Pointer Exception': '널 포인터 예외', + 'Array Index Bug': '배열 인덱스 버그', + 'Type Confusion': '타입 혼란', + 'Use After Free': '해제 후 사용', + 'Double Free': '이중 해제', + 'Integer Overflow': '정수 오버플로우', + 'Format String Bug': '포맷 문자열 버그', + 'SQL Injection': 'SQL 인젝션', + 'XSS Worm': 'XSS 웜', + 'CSRF Token': 'CSRF 토큰', + 'Path Traversal': '경로 순회', + 'Command Injection': '명령어 인젝션', + 'Race Condition': '레이스 컨디션', + 'Deadlock': '데드락', + 'Livelock': '라이브락', + 'Priority Inversion': '우선순위 역전', + 'Thread Starvation': '스레드 기아', + 'Heap Corruption': '힙 손상', + 'Stack Smash': '스택 스매시', + 'Memory Corruption': '메모리 손상', + 'Data Race': '데이터 레이스', + 'Dangling Pointer': '댕글링 포인터', + + // 레벨 11-20: 고급 버그들 + 'Kernel Panic': '커널 패닉', + 'Blue Screen Beast': '블루 스크린 야수', + 'Core Dump': '코어 덤프', + 'Segmentation Fault': '세그먼테이션 폴트', + 'Bus Error': '버스 오류', + 'Page Fault Phantom': '페이지 폴트 유령', + 'Cache Corruption': '캐시 손상', + 'TLB Miss Monster': 'TLB 미스 괴물', + 'DMA Error': 'DMA 오류', + 'Interrupt Storm': '인터럽트 폭풍', + 'Watchdog Timeout': '워치독 타임아웃', + 'Firmware Bug': '펌웨어 버그', + 'BIOS Corruption': 'BIOS 손상', + 'EFI Malware': 'EFI 악성코드', + 'Bootkit': '부트킷', + 'Rootkit': '루트킷', + 'Ring Zero Bug': '링 제로 버그', + 'Hypervisor Escape': '하이퍼바이저 탈출', + 'SMM Bug': 'SMM 버그', + 'Microcode Error': '마이크로코드 오류', + 'Spectre Variant': '스펙터 변종', + 'Meltdown Ghost': '멜트다운 유령', + 'Rowhammer': '로우해머', + 'Cold Boot Specter': '콜드 부트 망령', + 'DMA Attack': 'DMA 공격', + 'Side Channel Leak': '사이드 채널 누출', + 'Firmware Rootkit': '펌웨어 루트킷', + 'UEFI Implant': 'UEFI 임플란트', + 'Intel ME Bug': 'Intel ME 버그', + + // 레벨 21-30: 엘리트 위협들 + 'Advanced Persistent Threat': '지능형 지속 위협', + 'Nation State Actor': '국가급 해커', + 'Zero Day Exploit': '제로데이 익스플로잇', + 'Supply Chain Attack': '공급망 공격', + 'Watering Hole': '워터링 홀', + 'Spear Phishing': '스피어 피싱', + 'Living Off the Land': '자원 활용 공격', + 'Fileless Malware': '파일리스 악성코드', + 'Polymorphic Virus': '다형성 바이러스', + 'Metamorphic Engine': '변형 엔진', + 'Code Cave Lurker': '코드 동굴 잠복자', + + // 레벨 31-40: 보스급 위협들 + 'Worm Cluster': '웜 클러스터', + 'Botnet Commander': '봇넷 사령관', + 'Ransomware King': '랜섬웨어 왕', + 'Cryptominer Hive': '크립토마이너 하이브', + 'Data Exfiltrator': '데이터 탈취자', + 'Credential Harvester': '자격증명 수확자', + 'Keylogger Phantom': '키로거 유령', + 'Screen Scraper': '화면 스크래퍼', + 'Clipboard Hijacker': '클립보드 하이재커', + 'DNS Poisoner': 'DNS 포이즈너', + + // 레벨 41-45: 전설급 위협들 + 'Stuxnet Legacy': '스턱스넷 유산', + 'NotPetya Remnant': '낫페티아 잔재', + 'WannaCry Echo': '워너크라이 메아리', + 'Equation Group Tool': '에퀘이션 그룹 도구', + 'Shadow Broker Cache': '섀도우 브로커 캐시', + + // 레벨 46-53: 신화급 보스들 + 'Overflow Dragon': '오버플로우 드래곤', + 'Memory Corruptor': '메모리 코럽터', + 'Kernel Destroyer': '커널 파괴자', + 'Stack Annihilator': '스택 섬멸자', + 'Heap Devastator': '힙 파괴자', + 'Glitch Archon': '글리치 아콘', + 'Bug God Minion': '버그 신의 하수인', + 'The Glitch God': '글리치 신', + + // 코드 품질 관련 + 'Deprecated Function': '사용 중단 함수', + 'Legacy Code Zombie': '레거시 코드 좀비', + 'Spaghetti Code': '스파게티 코드', + 'God Object': '갓 오브젝트', + 'Circular Dependency': '순환 의존성', + 'Magic Number': '매직 넘버', + 'Hardcoded Path': '하드코딩된 경로', + 'Global Variable': '전역 변수', + 'Copy-Paste Error': '복붙 오류', + 'Cargo Cult Code': '카고 컬트 코드', + 'Dead Code Walker': '죽은 코드 워커', + 'Zombie Process': '좀비 프로세스', + 'Orphan Thread': '고아 스레드', + 'Phantom Pointer': '유령 포인터', + 'Heisenbug': '하이젠버그', + 'Schrodinger Bug': '슈뢰딩거 버그', + 'Bohrbug': '보어버그', + 'Mandelbug': '만델버그', + 'Hindenbug': '힌덴버그', +}; + +/// 무기 이름 한국어 번역 +const Map weaponTranslationsKo = { + 'Keyboard': '키보드', + 'USB Cable': 'USB 케이블', + 'Ethernet Cord': '이더넷 케이블', + 'Power Cable': '전원 케이블', + 'Mouse': '마우스', + 'Trackpad': '트랙패드', + 'Monitor Stand': '모니터 스탠드', + 'Laptop Charger': '노트북 충전기', + 'Docking Station': '도킹 스테이션', + 'Server Rack': '서버 랙', + 'Network Switch': '네트워크 스위치', + 'Router': '라우터', + 'Fiber Optic': '광케이블', + 'SSD': 'SSD', + 'NVMe Drive': 'NVMe 드라이브', + 'RAID Array': 'RAID 어레이', + 'RAM Stick': 'RAM 스틱', + 'CPU Cooler': 'CPU 쿨러', + 'Heat Sink': '방열판', + 'Water Cooler': '수랭 쿨러', + 'GPU': '그래픽 카드', + 'Tensor Core': '텐서 코어', + 'TPU': 'TPU', + 'FPGA': 'FPGA', + 'ASIC': 'ASIC', + 'Quantum Bit': '양자 비트', + 'Photonic Chip': '광자 칩', + 'Neural Processor': '신경망 프로세서', + 'Mainframe Terminal': '메인프레임 터미널', + 'Supercomputer Node': '슈퍼컴퓨터 노드', + 'Cluster Blade': '클러스터 블레이드', + 'Data Center Rack': '데이터센터 랙', + 'Submarine Cable': '해저 케이블', + 'Satellite Link': '위성 링크', + 'Quantum Entangler': '양자 얽힘 장치', + 'Dyson Sphere Core': '다이슨 구 코어', + 'Black Hole Computer': '블랙홀 컴퓨터', + 'Universe Simulator': '우주 시뮬레이터', +}; + +/// 갑옷 이름 한국어 번역 +const Map armorTranslationsKo = { + 'Firewall': '방화벽', + 'Spam Filter': '스팸 필터', + 'Antivirus': '안티바이러스', + 'VPN Cloak': 'VPN 망토', + 'SSL Certificate': 'SSL 인증서', + 'Encryption Layer': '암호화 레이어', + 'Hash Armor': '해시 갑옷', + 'Binary Coat': '바이너리 코트', + 'Packet Shield': '패킷 실드', + 'Protocol Suit': '프로토콜 수트', + 'Kernel Guard': '커널 가드', + 'Memory Barrier': '메모리 배리어', + 'Stack Protector': '스택 프로텍터', + 'Heap Guard': '힙 가드', + 'ASLR Armor': 'ASLR 아머', + 'Sandbox Shell': '샌드박스 쉘', + 'Container Suit': '컨테이너 수트', + 'Virtualization Mail': '가상화 메일', + 'Quantum Encryption': '양자 암호화', + 'Zero-Day Aegis': '제로데이 아이기스', +}; + +/// 방패 이름 한국어 번역 +const Map shieldTranslationsKo = { + 'CAPTCHA': '캡차', + 'Rate Limiter': '속도 제한기', + 'WAF Shield': 'WAF 실드', + 'Load Balancer': '로드 밸런서', + 'CDN Shield': 'CDN 실드', + 'DDoS Protection': 'DDoS 방어', + 'Firewall Shield': '방화벽 실드', + 'IDS Shield': 'IDS 실드', + 'IPS Shield': 'IPS 실드', + 'SIEM Barrier': 'SIEM 배리어', + 'SOC Shield': 'SOC 실드', + 'Honeypot Decoy': '허니팟 디코이', + 'Sandbox Barrier': '샌드박스 배리어', + 'Air Gap Shield': '에어갭 실드', + 'Faraday Shield': '패러데이 실드', + 'Quantum Firewall': '양자 방화벽', +}; + +/// 칭호 한국어 번역 +const Map titleTranslationsKo = { + 'Dev': '개발자', + 'Senior': '시니어', + 'Lead': '리드', + 'Staff': '스태프', + 'Principal': '프린시펄', + 'Architect': '아키텍트', + 'Fellow': '펠로우', + 'Distinguished': '디스팅귀시드', + 'Chief': '치프', +}; + +/// 인상적인 칭호 한국어 번역 +const Map impressiveTitleTranslationsKo = { + 'Root': '루트', + 'Admin': '관리자', + 'Superuser': '슈퍼유저', + 'Kernel Lord': '커널 로드', + 'Arch-Compiler': '대컴파일러', + 'Prime Debugger': '수석 디버거', + 'Code Sovereign': '코드 군주', + 'Data Emperor': '데이터 황제', + 'Stack Overlord': '스택 오버로드', + 'Memory Master': '메모리 마스터', + 'Thread King': '스레드 왕', + 'Process Monarch': '프로세스 군주', + 'System Architect': '시스템 아키텍트', +}; + +/// 아이템 속성 한국어 번역 +const Map itemAttribTranslationsKo = { + 'Golden': '황금의', + 'Binary': '바이너리', + 'Hexadecimal': '16진법의', + 'Quantum': '양자', + 'Recursive': '재귀적', + 'Polymorphic': '다형성', + 'Encrypted': '암호화된', + 'Compiled': '컴파일된', + 'Optimized': '최적화된', + 'Debugged': '디버그된', + 'Refactored': '리팩터링된', + 'Blessed': '축복받은', + 'Sacred': '신성한', + 'Legendary': '전설의', + 'Mythic': '신화의', + 'Crystalline': '수정의', + 'Holographic': '홀로그래픽', + 'Virtual': '가상의', + 'Augmented': '증강된', + 'Pristine': '순수한', + 'Ancient': '고대의', + 'Primordial': '원시의', + 'Transcendent': '초월적', + 'Ethereal': '초월의', + 'Magnificent': '웅장한', + 'Immutable': '불변의', + 'Atomic': '원자적', + 'Distributed': '분산된', + 'Replicated': '복제된', + 'Synchronized': '동기화된', + 'Hashed': '해시된', + 'Signed': '서명된', + 'Verified': '검증된', +}; + +/// 아이템 "~의" 접미사 한국어 번역 +const Map itemOfsTranslationsKo = { + 'Compilation': '컴파일', + 'Execution': '실행', + 'Iteration': '반복', + 'Recursion': '재귀', + 'Optimization': '최적화', + 'Debugging': '디버깅', + 'Refactoring': '리팩터링', + 'Deployment': '배포', + 'Integration': '통합', + 'Testing': '테스팅', + 'Validation': '검증', + 'Verification': '확인', + 'Authentication': '인증', + 'Authorization': '권한 부여', + 'Encryption': '암호화', + 'Decryption': '복호화', + 'Compression': '압축', + 'Decompression': '압축 해제', + 'Serialization': '직렬화', + 'Parsing': '파싱', + 'Rendering': '렌더링', + 'Processing': '처리', + 'Computing': '연산', + 'Calculating': '계산', + 'Analyzing': '분석', + 'Monitoring': '모니터링', + 'Logging': '로깅', + 'Caching': '캐싱', + 'Buffering': '버퍼링', + 'Streaming': '스트리밍', + 'Threading': '스레딩', + 'Forking': '포킹', + 'Spawning': '스포닝', + 'Termination': '종료', + 'Resurrection': '부활', + 'Null': '널', + 'Infinity': '무한', + 'the Stack': '스택', + 'the Heap': '힙', + 'the Core': '코어', + 'Binary': '바이너리', + 'Hexadecimal': '16진법', + 'the Algorithm': '알고리즘', + 'the Protocol': '프로토콜', + 'the API': 'API', + 'the Framework': '프레임워크', + 'the Runtime': '런타임', + 'the Compiler': '컴파일러', + 'the Kernel': '커널', +}; + +/// 공격 속성 한국어 번역 +const Map offenseAttribTranslationsKo = { + 'Compiled': '컴파일된', + 'Optimized': '최적화된', + 'JIT-Enhanced': 'JIT 강화', + 'Parallel': '병렬', + 'Multithreaded': '멀티스레드', + 'SIMD-Accelerated': 'SIMD 가속', + 'GPU-Powered': 'GPU 파워', + 'Quantum-Enhanced': '양자 강화', + 'AI-Augmented': 'AI 증강', + 'Neural': '신경망', + 'Transcendent': '초월적', +}; + +/// 나쁜 공격 속성 한국어 번역 +const Map offenseBadTranslationsKo = { + 'Interpreted': '인터프리트된', + 'Unoptimized': '최적화 안 된', + 'Buggy': '버그 많은', + 'Deprecated': '사용 중단된', + 'Legacy': '레거시', + 'Bloated': '비대해진', + 'Slow': '느린', + 'Crashing': '충돌하는', + 'Unstable': '불안정한', +}; + +/// 방어 속성 한국어 번역 +const Map defenseAttribTranslationsKo = { + 'Patched': '패치된', + 'Hardened': '강화된', + 'Encrypted': '암호화된', + 'Certified': '인증된', + 'Blessed by Code God': '코드의 신의 축복', + 'Sandboxed': '샌드박스된', + 'Containerized': '컨테이너화된', + 'Air-gapped': '에어갭된', + 'Quantum-safe': '양자 안전', +}; + +/// 나쁜 방어 속성 한국어 번역 +const Map defenseBadTranslationsKo = { + 'Deprecated': '사용 중단된', + 'Unpatched': '패치 안 된', + 'Vulnerable': '취약한', + 'Exploited': '익스플로잇된', + 'Backdoored': '백도어된', + 'Infected': '감염된', + 'Compromised': '침해된', + 'Breached': '침투된', + 'Pwned': '해킹당한', + 'Cursed by Glitch': '글리치의 저주', + 'Legacy': '레거시', + 'End-of-life': '수명 종료', + 'Unsupported': '지원 안 되는', + 'Buggy': '버그 많은', +}; + +/// 특수 아이템 한국어 번역 +const Map specialTranslationsKo = { + 'Algorithm': '알고리즘', + 'Data Structure': '자료구조', + 'Design Pattern': '디자인 패턴', + 'Framework': '프레임워크', + 'Library': '라이브러리', + 'Module': '모듈', + 'Package': '패키지', + 'Component': '컴포넌트', + 'Service': '서비스', + 'API': 'API', + 'Protocol': '프로토콜', + 'Schema': '스키마', + 'Model': '모델', + 'Interface': '인터페이스', + 'Abstract Class': '추상 클래스', + 'Singleton': '싱글톤', + 'Factory': '팩토리', + 'Observer': '옵저버', + 'Strategy': '전략', + 'Decorator': '데코레이터', + 'Adapter': '어댑터', + 'Proxy': '프록시', + 'Facade': '파사드', + 'Bridge': '브릿지', + 'Composite': '컴포지트', + 'Iterator': '이터레이터', + 'Mediator': '미디에이터', + 'Memento': '메멘토', + 'State': '스테이트', + 'Visitor': '비지터', + 'Chain': '체인', + 'Command': '커맨드', + 'Template': '템플릿', + 'Interpreter': '인터프리터', + 'Flyweight': '플라이웨이트', + 'Prototype': '프로토타입', + 'Builder': '빌더', +}; diff --git a/lib/src/core/l10n/game_data_l10n.dart b/lib/src/core/l10n/game_data_l10n.dart new file mode 100644 index 0000000..e16733b --- /dev/null +++ b/lib/src/core/l10n/game_data_l10n.dart @@ -0,0 +1,172 @@ +import 'package:askiineverdie/data/game_translations_ko.dart'; +import 'package:flutter/widgets.dart'; + +/// 게임 데이터 번역을 위한 헬퍼 클래스 +/// 현재 로케일에 따라 게임 데이터의 번역을 제공합니다. +class GameDataL10n { + GameDataL10n._(); + + /// 현재 로케일이 한국어인지 확인 + static bool _isKorean(BuildContext context) { + final locale = Localizations.localeOf(context); + return locale.languageCode == 'ko'; + } + + /// 종족 이름 번역 + static String getRaceName(BuildContext context, String englishName) { + if (_isKorean(context)) { + return raceTranslationsKo[englishName] ?? englishName; + } + return englishName; + } + + /// 직업 이름 번역 + static String getKlassName(BuildContext context, String englishName) { + if (_isKorean(context)) { + return klassTranslationsKo[englishName] ?? englishName; + } + return englishName; + } + + /// 주문 이름 번역 + static String getSpellName(BuildContext context, String englishName) { + if (_isKorean(context)) { + return spellTranslationsKo[englishName] ?? englishName; + } + return englishName; + } + + /// 몬스터 이름 번역 + static String getMonsterName(BuildContext context, String englishName) { + if (_isKorean(context)) { + return monsterTranslationsKo[englishName] ?? englishName; + } + return englishName; + } + + /// 무기 이름 번역 + static String getWeaponName(BuildContext context, String englishName) { + if (_isKorean(context)) { + return weaponTranslationsKo[englishName] ?? englishName; + } + return englishName; + } + + /// 갑옷 이름 번역 + static String getArmorName(BuildContext context, String englishName) { + if (_isKorean(context)) { + return armorTranslationsKo[englishName] ?? englishName; + } + return englishName; + } + + /// 방패 이름 번역 + static String getShieldName(BuildContext context, String englishName) { + if (_isKorean(context)) { + return shieldTranslationsKo[englishName] ?? englishName; + } + return englishName; + } + + /// 칭호 번역 + static String getTitleName(BuildContext context, String englishName) { + if (_isKorean(context)) { + return titleTranslationsKo[englishName] ?? englishName; + } + return englishName; + } + + /// 인상적인 칭호 번역 + static String getImpressiveTitleName( + BuildContext context, + String englishName, + ) { + if (_isKorean(context)) { + return impressiveTitleTranslationsKo[englishName] ?? englishName; + } + return englishName; + } + + /// 아이템 속성 번역 + static String getItemAttribName(BuildContext context, String englishName) { + if (_isKorean(context)) { + return itemAttribTranslationsKo[englishName] ?? englishName; + } + return englishName; + } + + /// 아이템 접미사 번역 + static String getItemOfName(BuildContext context, String englishName) { + if (_isKorean(context)) { + return itemOfsTranslationsKo[englishName] ?? englishName; + } + return englishName; + } + + /// 공격 속성 번역 + static String getOffenseAttribName(BuildContext context, String englishName) { + if (_isKorean(context)) { + return offenseAttribTranslationsKo[englishName] ?? englishName; + } + return englishName; + } + + /// 나쁜 공격 속성 번역 + static String getOffenseBadName(BuildContext context, String englishName) { + if (_isKorean(context)) { + return offenseBadTranslationsKo[englishName] ?? englishName; + } + return englishName; + } + + /// 방어 속성 번역 + static String getDefenseAttribName(BuildContext context, String englishName) { + if (_isKorean(context)) { + return defenseAttribTranslationsKo[englishName] ?? englishName; + } + return englishName; + } + + /// 나쁜 방어 속성 번역 + static String getDefenseBadName(BuildContext context, String englishName) { + if (_isKorean(context)) { + return defenseBadTranslationsKo[englishName] ?? englishName; + } + return englishName; + } + + /// 특수 아이템 번역 + static String getSpecialName(BuildContext context, String englishName) { + if (_isKorean(context)) { + return specialTranslationsKo[englishName] ?? englishName; + } + return englishName; + } + + /// 일반 게임 텍스트 번역 (context 없이 로케일 직접 지정) + static String getRaceNameByLocale(String englishName, String languageCode) { + if (languageCode == 'ko') { + return raceTranslationsKo[englishName] ?? englishName; + } + return englishName; + } + + /// 직업 이름 번역 (context 없이) + static String getKlassNameByLocale(String englishName, String languageCode) { + if (languageCode == 'ko') { + return klassTranslationsKo[englishName] ?? englishName; + } + return englishName; + } + + /// 몬스터 이름 번역 (context 없이) + static String getMonsterNameByLocale( + String englishName, + String languageCode, + ) { + if (languageCode == 'ko') { + return monsterTranslationsKo[englishName] ?? englishName; + } + return englishName; + } +}