feat(l10n): 게임 데이터 한국어 번역 시스템 추가

- game_translations_ko.dart: 한국어 번역 데이터
  - 종족/직업/몬스터/무기/갑옷/방패/주문 번역
  - 아이템 속성/접미사 번역
  - 칭호/특수 아이템 번역
- game_data_l10n.dart: 번역 헬퍼 클래스
  - getRaceName(), getKlassName(), getMonsterName() 등
  - BuildContext 기반 로케일 감지
This commit is contained in:
JiWoong Sul
2025-12-11 18:25:57 +09:00
parent e6f3bb70bb
commit 43924d6cfd
2 changed files with 729 additions and 0 deletions

View File

@@ -0,0 +1,557 @@
// 아스키나라(ASCII-Nara) 한국어 번역 데이터
// 게임 데이터의 한국어 번역을 제공합니다.
/// 종족 이름 한국어 번역
const Map<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> titleTranslationsKo = {
'Dev': '개발자',
'Senior': '시니어',
'Lead': '리드',
'Staff': '스태프',
'Principal': '프린시펄',
'Architect': '아키텍트',
'Fellow': '펠로우',
'Distinguished': '디스팅귀시드',
'Chief': '치프',
};
/// 인상적인 칭호 한국어 번역
const Map<String, String> 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<String, String> 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<String, String> 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<String, String> offenseAttribTranslationsKo = {
'Compiled': '컴파일된',
'Optimized': '최적화된',
'JIT-Enhanced': 'JIT 강화',
'Parallel': '병렬',
'Multithreaded': '멀티스레드',
'SIMD-Accelerated': 'SIMD 가속',
'GPU-Powered': 'GPU 파워',
'Quantum-Enhanced': '양자 강화',
'AI-Augmented': 'AI 증강',
'Neural': '신경망',
'Transcendent': '초월적',
};
/// 나쁜 공격 속성 한국어 번역
const Map<String, String> offenseBadTranslationsKo = {
'Interpreted': '인터프리트된',
'Unoptimized': '최적화 안 된',
'Buggy': '버그 많은',
'Deprecated': '사용 중단된',
'Legacy': '레거시',
'Bloated': '비대해진',
'Slow': '느린',
'Crashing': '충돌하는',
'Unstable': '불안정한',
};
/// 방어 속성 한국어 번역
const Map<String, String> defenseAttribTranslationsKo = {
'Patched': '패치된',
'Hardened': '강화된',
'Encrypted': '암호화된',
'Certified': '인증된',
'Blessed by Code God': '코드의 신의 축복',
'Sandboxed': '샌드박스된',
'Containerized': '컨테이너화된',
'Air-gapped': '에어갭된',
'Quantum-safe': '양자 안전',
};
/// 나쁜 방어 속성 한국어 번역
const Map<String, String> defenseBadTranslationsKo = {
'Deprecated': '사용 중단된',
'Unpatched': '패치 안 된',
'Vulnerable': '취약한',
'Exploited': '익스플로잇된',
'Backdoored': '백도어된',
'Infected': '감염된',
'Compromised': '침해된',
'Breached': '침투된',
'Pwned': '해킹당한',
'Cursed by Glitch': '글리치의 저주',
'Legacy': '레거시',
'End-of-life': '수명 종료',
'Unsupported': '지원 안 되는',
'Buggy': '버그 많은',
};
/// 특수 아이템 한국어 번역
const Map<String, String> 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': '빌더',
};

View File

@@ -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;
}
}