diff --git a/lib/data/game_text_l10n.dart b/lib/data/game_text_l10n.dart index b0bf4c7..3018fd1 100644 --- a/lib/data/game_text_l10n.dart +++ b/lib/data/game_text_l10n.dart @@ -84,37 +84,31 @@ String get taskCompiling => _l('Compiling', '컴파일 중', 'コンパイル中 String get taskPrologue => _l('Prologue', '프롤로그', 'プロローグ'); String taskHeadingToMarket() => _l( - 'Heading to the Data Market to trade loot', - '전리품을 팔기 위해 데이터 마켓으로 이동 중', - '戦利品を売るためデータマーケットへ移動中', - ); + 'Heading to the Data Market to trade loot', + '전리품을 팔기 위해 데이터 마켓으로 이동 중', + '戦利品を売るためデータマーケットへ移動中', +); String taskUpgradingHardware() => _l( - 'Upgrading hardware at the Tech Shop', - '테크 샵에서 하드웨어 업그레이드 중', - 'テックショップでハードウェアをアップグレード中', - ); + 'Upgrading hardware at the Tech Shop', + '테크 샵에서 하드웨어 업그레이드 중', + 'テックショップでハードウェアをアップグレード中', +); String taskEnteringDebugZone() => _l('Entering the Debug Zone', '디버그 존 진입 중', 'デバッグゾーンに進入中'); -String taskDebugging(String monsterName) => _l( - 'Debugging $monsterName', - '$monsterName 디버깅 중', - '$monsterName をデバッグ中', - ); +String taskDebugging(String monsterName) => + _l('Debugging $monsterName', '$monsterName 디버깅 중', '$monsterName をデバッグ中'); -String taskFinalBoss(String bossName) => _l( - 'Final Battle: $bossName', - '최종 보스와 대결: $bossName', - '最終ボスと対決: $bossName', - ); +String taskFinalBoss(String bossName) => + _l('Final Battle: $bossName', '최종 보스와 대결: $bossName', '最終ボスと対決: $bossName'); String taskSelling(String itemDescription) => _l( - 'Selling $itemDescription', - '$itemDescription 판매 중', - '$itemDescription を販売中', - ); + 'Selling $itemDescription', + '$itemDescription 판매 중', + '$itemDescription を販売中', +); // ============================================================================ // 부활 시퀀스 메시지 @@ -161,35 +155,48 @@ String get deathEnvironmentalHazard => // 속도 부스트 (Phase 6) // ============================================================================ -String get speedBoostTitle => - _l('Speed Boost', '속도 부스트', 'スピードブースト'); +String get speedBoostTitle => _l('Speed Boost', '속도 부스트', 'スピードブースト'); String get speedBoostActivate => _l('Activate 10x Speed', '10배속 활성화', '10倍速を有効化'); String speedBoostRemaining(int seconds) => _l('${seconds}s remaining', '${seconds}초 남음', '残り${seconds}秒'); -String get speedBoostActive => - _l('BOOST ACTIVE', '부스트 활성화', 'ブースト中'); +String get speedBoostActive => _l('BOOST ACTIVE', '부스트 활성화', 'ブースト中'); // ============================================================================ // 복귀 보상 (Phase 7) // ============================================================================ -String get returnRewardTitle => - _l('Welcome Back!', '돌아오셨군요!', 'おかえりなさい!'); +String get returnRewardTitle => _l('Welcome Back!', '돌아오셨군요!', 'おかえりなさい!'); String returnRewardHoursAway(String time) => _l('You were away for $time', '$time 동안 떠나있었습니다', '$time 離れていました'); -String get returnRewardBasic => - _l('Basic Reward', '기본 보상', '基本報酬'); -String get returnRewardBonus => - _l('Bonus Reward', '보너스 보상', 'ボーナス報酬'); -String returnRewardGold(int gold) => - _l('+$gold Gold', '+$gold 골드', '+$gold ゴールド'); -String get returnRewardClaim => - _l('Claim', '받기', '受け取る'); +String returnRewardChests(int count) => + _l('$count Treasure Chest(s)', '보물 상자 $count개', '宝箱 $count個'); +String get returnRewardOpenChests => _l('Open Chests', '상자 열기', '宝箱を開ける'); +String get returnRewardBonusChests => + _l('Bonus Chests', '보너스 상자', 'ボーナス宝箱'); String get returnRewardClaimBonus => - _l('Claim Bonus', '보너스 받기', 'ボーナス受取'); -String get returnRewardSkip => - _l('Skip', '건너뛰기', 'スキップ'); + _l('Get Bonus (AD)', '보너스 받기 (광고)', 'ボーナス受取 (広告)'); +String get returnRewardClaimBonusFree => + _l('Get Bonus (Free)', '보너스 받기 (무료)', 'ボーナス受取 (無料)'); +String get returnRewardSkip => _l('Skip', '건너뛰기', 'スキップ'); +String get returnRewardOpening => _l('Opening...', '여는 중...', '開封中...'); +String get returnRewardComplete => _l('Complete!', '완료!', '完了!'); + +// 상자 보상 타입 +String get chestRewardEquipment => _l('Equipment', '장비', '装備'); +String get chestRewardPotion => _l('Potion', '포션', 'ポーション'); +String get chestRewardGold => _l('Gold', '골드', 'ゴールド'); +String get chestRewardExperience => _l('Experience', '경험치', '経験値'); +String chestRewardGoldAmount(int gold) => + _l('+$gold Gold', '+$gold 골드', '+$gold ゴールド'); +String chestRewardExpAmount(int exp) => + _l('+$exp EXP', '+$exp 경험치', '+$exp 経験値'); +String chestRewardPotionAmount(String name, int count) => + _l('$name x$count', '$name x$count', '$name x$count'); +String get chestRewardEquipped => + _l('Equipped!', '장착됨!', '装備しました!'); +String get chestRewardBetterItem => + _l('Better than current!', '현재보다 좋습니다!', '現在より良い!'); // ============================================================================ // UI 일반 메시지 @@ -198,10 +205,8 @@ String get returnRewardSkip => String get uiNoPotions => _l('No potions', '포션 없음', 'ポーションなし'); String get uiTapToContinue => _l('Tap to continue', '탭하여 계속', 'タップして続行'); String get uiNoSkills => _l('No skills', '습득한 스킬이 없습니다', 'スキルなし'); -String get uiNoBonusStats => - _l('No bonus stats', '추가 스탯 없음', 'ボーナスステータスなし'); -String get uiNoActiveBuffs => - _l('No active buffs', '활성 버프 없음', 'アクティブバフなし'); +String get uiNoBonusStats => _l('No bonus stats', '추가 스탯 없음', 'ボーナスステータスなし'); +String get uiNoActiveBuffs => _l('No active buffs', '활성 버프 없음', 'アクティブバフなし'); String get uiReady => _l('Ready', '준비', '準備完了'); String get uiPotions => _l('Potions', '포션', 'ポーション'); String get uiBuffs => _l('Buffs', '버프', 'バフ'); @@ -236,87 +241,91 @@ String passiveEvasionBonus(int percent) => String passiveCritBonus(int percent) => _l('Critical +$percent%', '크리티컬 +$percent%', 'クリティカル +$percent%'); String passiveHpRegen(int percent) => _l( - 'Recover $percent% HP after combat', - '전투 후 HP $percent% 회복', - '戦闘後HP $percent%回復', - ); + 'Recover $percent% HP after combat', + '전투 후 HP $percent% 회복', + '戦闘後HP $percent%回復', +); String passiveMpRegen(int percent) => _l( - 'Recover $percent% MP after combat', - '전투 후 MP $percent% 회복', - '戦闘後MP $percent%回復', - ); + 'Recover $percent% MP after combat', + '전투 후 MP $percent% 회복', + '戦闘後MP $percent%回復', +); // ============================================================================ // 전투 로그 메시지 // ============================================================================ String combatYouHit(String targetName, int damage) => _l( - 'You hit $targetName for $damage damage', - '$targetName에게 $damage 데미지', - '$targetNameに$damageダメージ', - ); + 'You hit $targetName for $damage damage', + '$targetName에게 $damage 데미지', + '$targetNameに$damageダメージ', +); String combatYouEvaded(String targetName) => _l( - 'You evaded $targetName\'s attack!', - '$targetName의 공격 회피!', - '$targetNameの攻撃を回避!', - ); + 'You evaded $targetName\'s attack!', + '$targetName의 공격 회피!', + '$targetNameの攻撃を回避!', +); String combatEvadedAttackFrom(String targetName) => _l( - 'Evaded attack from $targetName', - '$targetName의 공격 회피', - '$targetNameの攻撃を回避', - ); + 'Evaded attack from $targetName', + '$targetName의 공격 회피', + '$targetNameの攻撃を回避', +); String combatHealedFor(int amount) => _l('Healed for $amount HP', 'HP $amount 회복', 'HP $amount回復'); String combatCritical(int damage, String targetName) => _l( - 'CRITICAL! $damage damage to $targetName!', - '크리티컬! $targetName에게 $damage 데미지!', - 'クリティカル! $targetNameに$damageダメージ!', - ); + 'CRITICAL! $damage damage to $targetName!', + '크리티컬! $targetName에게 $damage 데미지!', + 'クリティカル! $targetNameに$damageダメージ!', +); String combatMonsterHitsYou(String monsterName, int damage) => _l( - '$monsterName hits you for $damage damage', - '$monsterName이(가) $damage 데미지', - '$monsterNameが$damageダメージを与えた', - ); + '$monsterName hits you for $damage damage', + '$monsterName이(가) $damage 데미지', + '$monsterNameが$damageダメージを与えた', +); String combatMonsterEvaded(String monsterName) => _l( - '$monsterName evaded your attack!', - '$monsterName이(가) 공격 회피!', - '$monsterNameが攻撃を回避!', - ); + '$monsterName evaded your attack!', + '$monsterName이(가) 공격 회피!', + '$monsterNameが攻撃を回避!', +); String combatBlocked(int damage) => _l( - 'Blocked! Reduced to $damage damage', - '방어! $damage 데미지로 감소', - 'ブロック! $damageダメージに軽減', - ); + 'Blocked! Reduced to $damage damage', + '방어! $damage 데미지로 감소', + 'ブロック! $damageダメージに軽減', +); String combatParried(int damage) => _l( - 'Parried! Reduced to $damage damage', - '패리! $damage 데미지로 감소', - 'パリィ! $damageダメージに軽減', - ); + 'Parried! Reduced to $damage damage', + '패리! $damage 데미지로 감소', + 'パリィ! $damageダメージに軽減', +); // 스킬 관련 전투 메시지 String combatSkillCritical(String skillName, int damage) => _l( - 'CRITICAL $skillName! $damage damage!', - '크리티컬 $skillName! $damage 데미지!', - 'クリティカル$skillName! $damageダメージ!', - ); -String combatSkillDamage(String skillName, int damage) => - _l('$skillName: $damage damage', '$skillName: $damage 데미지', '$skillName: $damageダメージ'); + 'CRITICAL $skillName! $damage damage!', + '크리티컬 $skillName! $damage 데미지!', + 'クリティカル$skillName! $damageダメージ!', +); +String combatSkillDamage(String skillName, int damage) => _l( + '$skillName: $damage damage', + '$skillName: $damage 데미지', + '$skillName: $damageダメージ', +); // HP 형식이 동일하므로 단순화 -String combatSkillHeal(String skillName, int amount) => '$skillName: +$amount HP'; +String combatSkillHeal(String skillName, int amount) => + '$skillName: +$amount HP'; String get uiHeal => _l('Heal', '힐', 'ヒール'); String combatBuffActivated(String skillName) => _l('$skillName activated!', '$skillName 발동!', '$skillName 発動!'); String combatDebuffApplied(String skillName, String targetName) => _l( - '$skillName applied to $targetName!', - '$skillName → $targetName에 적용!', - '$skillName → $targetNameに適用!', - ); + '$skillName applied to $targetName!', + '$skillName → $targetName에 적용!', + '$skillName → $targetNameに適用!', +); String combatDotTick(String skillName, int damage) => _l( - '$skillName ticks for $damage damage', - '$skillName: $damage 지속 데미지', - '$skillName: $damage 継続ダメージ', - ); + '$skillName ticks for $damage damage', + '$skillName: $damage 지속 데미지', + '$skillName: $damage 継続ダメージ', +); // 포션 형식이 동일하므로 단순화 String combatPotionUsed(String potionName, int amount, String statName) => '$potionName: +$amount $statName'; @@ -325,15 +334,15 @@ String combatPotionDrop(String potionName) => // 사망 화면 전투 로그 (death overlay) String combatBlockedAttack(String monsterName, int reducedDamage) => _l( - 'Blocked $monsterName\'s attack ($reducedDamage reduced)', - '$monsterName의 공격 방어 ($reducedDamage 감소)', - '$monsterNameの攻撃を防御 ($reducedDamage軽減)', - ); + 'Blocked $monsterName\'s attack ($reducedDamage reduced)', + '$monsterName의 공격 방어 ($reducedDamage 감소)', + '$monsterNameの攻撃を防御 ($reducedDamage軽減)', +); String combatParriedAttack(String monsterName, int reducedDamage) => _l( - 'Parried $monsterName\'s attack ($reducedDamage reduced)', - '$monsterName의 공격 패리 ($reducedDamage 감소)', - '$monsterNameの攻撃をパリィ ($reducedDamage軽減)', - ); + 'Parried $monsterName\'s attack ($reducedDamage reduced)', + '$monsterName의 공격 패리 ($reducedDamage 감소)', + '$monsterNameの攻撃をパリィ ($reducedDamage軽減)', +); String get deathSelfInflicted => _l('Self-inflicted damage', '자해 데미지로 사망', '自傷ダメージで死亡'); @@ -343,8 +352,7 @@ String get deathSelfInflicted => String questPatch(String name) => _l('Patch $name', '$name 패치하기', '$name をパッチする'); -String questLocate(String item) => - _l('Locate $item', '$item 찾기', '$item を探す'); +String questLocate(String item) => _l('Locate $item', '$item 찾기', '$item を探す'); String questTransfer(String item) => _l('Transfer this $item', '이 $item 전송하기', 'この$item を転送する'); String questDownload(String item) => @@ -364,100 +372,100 @@ String actTitle(String romanNumeral) => // ============================================================================ String cinematicCacheZone1() => _l( - 'Exhausted, you reach a safe Cache Zone in the corrupted network', - '지쳐서 손상된 네트워크의 안전한 캐시 존에 도착하다', - '疲れ果てて、破損したネットワークの安全なキャッシュゾーンに到着する', - ); + 'Exhausted, you reach a safe Cache Zone in the corrupted network', + '지쳐서 손상된 네트워크의 안전한 캐시 존에 도착하다', + '疲れ果てて、破損したネットワークの安全なキャッシュゾーンに到着する', +); String cinematicCacheZone2() => _l( - 'You reconnect with old allies and fork new ones', - '옛 동맹들과 재연결하고 새로운 동료들을 포크하다', - '古い同盟者と再接続し、新しい仲間をフォークする', - ); + 'You reconnect with old allies and fork new ones', + '옛 동맹들과 재연결하고 새로운 동료들을 포크하다', + '古い同盟者と再接続し、新しい仲間をフォークする', +); String cinematicCacheZone3() => _l( - 'You attend a council of the Debugger Knights', - '디버거 기사단 회의에 참석하다', - 'デバッガー騎士団の会議に参加する', - ); + 'You attend a council of the Debugger Knights', + '디버거 기사단 회의에 참석하다', + 'デバッガー騎士団の会議に参加する', +); String cinematicCacheZone4() => _l( - 'Many bugs await. You are chosen to patch them!', - '많은 버그들이 기다린다. 당신이 패치하도록 선택되었다!', - '多くのバグが待っている。あなたがパッチを当てるよう選ばれた!', - ); + 'Many bugs await. You are chosen to patch them!', + '많은 버그들이 기다린다. 당신이 패치하도록 선택되었다!', + '多くのバグが待っている。あなたがパッチを当てるよう選ばれた!', +); // ============================================================================ // 시네마틱 텍스트 - 시나리오 2: 전투 // ============================================================================ String cinematicCombat1() => _l( - 'Your target is in sight, but a critical bug blocks your path!', - '목표가 눈앞에 있지만, 치명적인 버그가 길을 막는다!', - 'ターゲットは目の前だが、致命的なバグが道を塞ぐ!', - ); + 'Your target is in sight, but a critical bug blocks your path!', + '목표가 눈앞에 있지만, 치명적인 버그가 길을 막는다!', + 'ターゲットは目の前だが、致命的なバグが道を塞ぐ!', +); String cinematicCombat2(String nemesis) => _l( - 'A desperate debugging session begins with $nemesis', - '$nemesis와의 필사적인 디버깅 세션이 시작되다', - '$nemesisとの必死のデバッグセッションが始まる', - ); + 'A desperate debugging session begins with $nemesis', + '$nemesis와의 필사적인 디버깅 세션이 시작되다', + '$nemesisとの必死のデバッグセッションが始まる', +); String cinematicCombatLocked(String nemesis) => _l( - 'Locked in intense debugging with $nemesis', - '$nemesis와 치열한 디버깅 중', - '$nemesisと激しいデバッグ中', - ); + 'Locked in intense debugging with $nemesis', + '$nemesis와 치열한 디버깅 중', + '$nemesisと激しいデバッグ中', +); String cinematicCombatCorrupts(String nemesis) => _l( - '$nemesis corrupts your stack trace', - '$nemesis가 당신의 스택 트레이스를 손상시키다', - '$nemesisがあなたのスタックトレースを破損させる', - ); + '$nemesis corrupts your stack trace', + '$nemesis가 당신의 스택 트레이스를 손상시키다', + '$nemesisがあなたのスタックトレースを破損させる', +); String cinematicCombatWorking(String nemesis) => _l( - 'Your patch seems to be working against $nemesis', - '당신의 패치가 $nemesis에게 효과를 보이는 것 같다', - 'あなたのパッチが$nemesisに効いているようだ', - ); + 'Your patch seems to be working against $nemesis', + '당신의 패치가 $nemesis에게 효과를 보이는 것 같다', + 'あなたのパッチが$nemesisに効いているようだ', +); String cinematicCombatVictory(String nemesis) => _l( - 'Victory! $nemesis is patched! System reboots for recovery', - '승리! $nemesis가 패치되었다! 복구를 위해 시스템이 재부팅된다', - '勝利!$nemesisはパッチされた!復旧のためシステムが再起動する', - ); + 'Victory! $nemesis is patched! System reboots for recovery', + '승리! $nemesis가 패치되었다! 복구를 위해 시스템이 재부팅된다', + '勝利!$nemesisはパッチされた!復旧のためシステムが再起動する', +); String cinematicCombatWakeUp() => _l( - 'You wake up in a Safe Mode, but the kernel awaits', - '안전 모드에서 깨어나지만, 커널이 기다린다', - 'セーフモードで目覚めるが、カーネルが待ち構えている', - ); + 'You wake up in a Safe Mode, but the kernel awaits', + '안전 모드에서 깨어나지만, 커널이 기다린다', + 'セーフモードで目覚めるが、カーネルが待ち構えている', +); // ============================================================================ // 시네마틱 텍스트 - 시나리오 3: 배신 // ============================================================================ String cinematicBetrayal1(String guy) => _l( - 'What relief! You reach the secure server of $guy', - '안도감! $guy의 보안 서버에 도착하다', - '安堵!$guyのセキュアサーバーに到着する', - ); + 'What relief! You reach the secure server of $guy', + '안도감! $guy의 보안 서버에 도착하다', + '安堵!$guyのセキュアサーバーに到着する', +); String cinematicBetrayal2(String guy) => _l( - 'There is celebration, and a suspicious private handshake with $guy', - '축하가 이어지고, $guy와 수상한 비밀 핸드셰이크를 나누다', - '祝賀が続き、$guyと怪しい秘密のハンドシェイクを交わす', - ); + 'There is celebration, and a suspicious private handshake with $guy', + '축하가 이어지고, $guy와 수상한 비밀 핸드셰이크를 나누다', + '祝賀が続き、$guyと怪しい秘密のハンドシェイクを交わす', +); String cinematicBetrayal3(String item) => _l( - 'You forget your $item and go back to retrieve it', - '$item을 잊고 다시 가져오러 돌아가다', - '$itemを忘れて取りに戻る', - ); + 'You forget your $item and go back to retrieve it', + '$item을 잊고 다시 가져오러 돌아가다', + '$itemを忘れて取りに戻る', +); String cinematicBetrayal4() => _l( - 'What is this!? You intercept a corrupted packet!', - '이게 뭐지!? 손상된 패킷을 가로채다!', - 'これは何だ!?破損したパケットを傍受する!', - ); + 'What is this!? You intercept a corrupted packet!', + '이게 뭐지!? 손상된 패킷을 가로채다!', + 'これは何だ!?破損したパケットを傍受する!', +); String cinematicBetrayal5(String guy) => _l( - 'Could $guy be a backdoor for the Glitch God?', - '$guy가 글리치 신의 백도어일 수 있을까?', - '$guyはグリッチゴッドのバックドアなのか?', - ); + 'Could $guy be a backdoor for the Glitch God?', + '$guy가 글리치 신의 백도어일 수 있을까?', + '$guyはグリッチゴッドのバックドアなのか?', +); String cinematicBetrayal6() => _l( - 'Who can be trusted with this intel!? -- The Binary Temple, of course', - '이 정보를 누구에게 맡길 수 있을까!? -- 바이너리 신전이다', - 'この情報を誰に託せるか!? -- バイナリ神殿だ', - ); + 'Who can be trusted with this intel!? -- The Binary Temple, of course', + '이 정보를 누구에게 맡길 수 있을까!? -- 바이너리 신전이다', + 'この情報を誰に託せるか!? -- バイナリ神殿だ', +); // ============================================================================ // 몬스터 수식어 @@ -467,39 +475,29 @@ String modifierDead(String s) => _l('fallen $s', '쓰러진 $s', '倒れた$s'); String modifierComatose(String s) => _l('lurking $s', '잠복하는 $s', '潜む$s'); String modifierCrippled(String s) => _l('twisted $s', '흉측한 $s', '歪んだ$s'); String modifierSick(String s) => _l('tainted $s', '오염된 $s', '汚染された$s'); -String modifierUndernourished(String s) => - _l('ravenous $s', '굶주린 $s', '飢えた$s'); +String modifierUndernourished(String s) => _l('ravenous $s', '굶주린 $s', '飢えた$s'); String modifierFoetal(String s) => _l('nascent $s', '태동기 $s', '胎動期$s'); String modifierBaby(String s) => _l('fledgling $s', '초기형 $s', '初期型$s'); String modifierPreadolescent(String s) => _l('evolving $s', '진화 중인 $s', '進化中の$s'); String modifierTeenage(String s) => _l('lesser $s', '하급 $s', '下級$s'); -String modifierUnderage(String s) => - _l('incomplete $s', '불완전한 $s', '不完全な$s'); +String modifierUnderage(String s) => _l('incomplete $s', '불완전한 $s', '不完全な$s'); String modifierGreater(String s) => _l('greater $s', '상위 $s', '上位$s'); String modifierMassive(String s) => _l('massive $s', '거대한 $s', '巨大な$s'); String modifierEnormous(String s) => _l('enormous $s', '초거대 $s', '超巨大$s'); -String modifierGiant(String s) => - _l('giant $s', '자이언트 $s', 'ジャイアント$s'); +String modifierGiant(String s) => _l('giant $s', '자이언트 $s', 'ジャイアント$s'); -String modifierTitanic(String s) => - _l('titanic $s', '타이타닉 $s', 'タイタニック$s'); -String modifierVeteran(String s) => - _l('veteran $s', '베테랑 $s', 'ベテラン$s'); +String modifierTitanic(String s) => _l('titanic $s', '타이타닉 $s', 'タイタニック$s'); +String modifierVeteran(String s) => _l('veteran $s', '베테랑 $s', 'ベテラン$s'); String modifierBattle(String s) => _l('Battle-$s', '전투-$s', '戦闘-$s'); -String modifierCursed(String s) => - _l('cursed $s', '저주받은 $s', '呪われた$s'); +String modifierCursed(String s) => _l('cursed $s', '저주받은 $s', '呪われた$s'); String modifierWarrior(String s) => _l('warrior $s', '전사 $s', '戦士$s'); String modifierWere(String s) => _l('Were-$s', '늑대인간-$s', '狼男-$s'); -String modifierUndead(String s) => - _l('undead $s', '언데드 $s', 'アンデッド$s'); +String modifierUndead(String s) => _l('undead $s', '언데드 $s', 'アンデッド$s'); String modifierDemon(String s) => _l('demon $s', '데몬 $s', 'デーモン$s'); -String modifierMessianic(String s) => - _l('messianic $s', '메시아닉 $s', 'メシアニック$s'); -String modifierImaginary(String s) => - _l('imaginary $s', '상상의 $s', '想像上の$s'); -String modifierPassing(String s) => - _l('passing $s', '지나가는 $s', '通りすがりの$s'); +String modifierMessianic(String s) => _l('messianic $s', '메시아닉 $s', 'メシアニック$s'); +String modifierImaginary(String s) => _l('imaginary $s', '상상의 $s', '想像上の$s'); +String modifierPassing(String s) => _l('passing $s', '지나가는 $s', '通りすがりの$s'); // ============================================================================ // 시간 표시 @@ -509,8 +507,7 @@ String roughTimeSeconds(int seconds) => _l('$seconds seconds', '$seconds초', '$seconds秒'); String roughTimeMinutes(int minutes) => _l('$minutes minutes', '$minutes분', '$minutes分'); -String roughTimeHours(int hours) => - _l('$hours hours', '$hours시간', '$hours時間'); +String roughTimeHours(int hours) => _l('$hours hours', '$hours시간', '$hours時間'); String roughTimeDays(int days) => _l('$days days', '$days일', '$days日'); // ============================================================================ @@ -902,35 +899,30 @@ String translateSpell(String englishName) { String get uiHallOfFame => _l('Hall of Fame', '명예의 전당', '栄誉の殿堂'); String get uiLocalArena => _l('Local Arena', '로컬 아레나', 'ローカルアリーナ'); String get frontDescription => _l( - 'A retro-style offline single-player RPG', - '레트로 감성의 오프라인 싱글플레이어 RPG', - 'レトロ感のあるオフラインシングルプレイヤーRPG', - ); -String get frontTodayFocus => - _l("Today's focus", '오늘의 중점', '今日のフォーカス'); + 'A retro-style offline single-player RPG', + '레트로 감성의 오프라인 싱글플레이어 RPG', + 'レトロ感のあるオフラインシングルプレイヤーRPG', +); +String get frontTodayFocus => _l("Today's focus", '오늘의 중점', '今日のフォーカス'); // ============================================================================ // 명예의 전당 화면 텍스트 // ============================================================================ -String get hofNoHeroes => - _l('No heroes yet', '영웅이 아직 없습니다', 'まだ英雄がいません'); +String get hofNoHeroes => _l('No heroes yet', '영웅이 아직 없습니다', 'まだ英雄がいません'); String get hofDefeatGlitchGod => _l( - 'Defeat the Glitch God to enshrine your legend!', - '글리치 신을 처치하여 전설을 남기세요!', - 'グリッチゴッドを倒して伝説を刻もう!', - ); + 'Defeat the Glitch God to enshrine your legend!', + '글리치 신을 처치하여 전설을 남기세요!', + 'グリッチゴッドを倒して伝説を刻もう!', +); String get hofVictory => _l('VICTORY!', '승리!', '勝利!'); -String get hofDefeatedGlitchGod => _l( - 'You have defeated the Glitch God!', - '글리치 신을 처치했습니다!', - 'グリッチゴッドを倒しました!', - ); +String get hofDefeatedGlitchGod => + _l('You have defeated the Glitch God!', '글리치 신을 처치했습니다!', 'グリッチゴッドを倒しました!'); String get hofLegendEnshrined => _l( - 'Your legend has been enshrined in the Hall of Fame!', - '당신의 전설이 명예의 전당에 기록되었습니다!', - 'あなたの伝説が栄誉の殿堂に刻まれました!', - ); + 'Your legend has been enshrined in the Hall of Fame!', + '당신의 전설이 명예의 전당에 기록되었습니다!', + 'あなたの伝説が栄誉の殿堂に刻まれました!', +); String get hofViewHallOfFame => _l('View Hall of Fame', '명예의 전당 보기', '栄誉の殿堂を見る'); String get hofNewGame => _l('New Game', '새 게임', '新しいゲーム'); @@ -962,17 +954,20 @@ String get uiSkip => _l('SKIP', '건너뛰기', 'スキップ'); // ============================================================================ String get uiLevelUp => _l('Level Up!', '레벨 업!', 'レベルアップ!'); -String uiQuestComplete(String questName) => - _l('Quest Complete: $questName', '퀘스트 완료: $questName', 'クエスト完了: $questName'); +String uiQuestComplete(String questName) => _l( + 'Quest Complete: $questName', + '퀘스트 완료: $questName', + 'クエスト完了: $questName', +); // ============================================================================ // 장비 패널 텍스트 // ============================================================================ -String get uiEquipmentScore => - _l('Equipment Score', '장비 점수', '装備スコア'); +String get uiEquipmentScore => _l('Equipment Score', '장비 점수', '装備スコア'); String get uiEmpty => _l('(empty)', '(비어있음)', '(空)'); String uiWeight(int weight) => _l('Wt.$weight', '무게 $weight', '重量 $weight'); + /// 남은 시간 표시 String uiTimeRemaining(String time) => _l('$time remaining', '$time 남음', '残り$time'); @@ -1026,17 +1021,11 @@ String get rarityLegendary => _l('LEGENDARY', '전설', 'レジェンダリー') String uiRollHistory(int count) => _l('$count roll(s) in history', '리롤 기록: $count회', 'リロール履歴: $count回'); -String get uiEnterName => _l( - 'Please enter a name.', - '이름을 입력해주세요.', - '名前を入力してください。', - ); +String get uiEnterName => + _l('Please enter a name.', '이름을 입력해주세요.', '名前を入力してください。'); String get uiTestMode => _l('Test Mode', '테스트 모드', 'テストモード'); -String get uiTestModeDesc => _l( - 'Use mobile layout on web', - '웹에서 모바일 레이아웃 사용', - 'Webでモバイルレイアウトを使用', - ); +String get uiTestModeDesc => + _l('Use mobile layout on web', '웹에서 모바일 레이아웃 사용', 'Webでモバイルレイアウトを使用'); // ============================================================================ // 캐로셀 네비게이션 텍스트 @@ -1069,10 +1058,10 @@ String get menuNewGame => _l('New Game', '새로하기', '新規ゲーム'); String get confirmDeleteTitle => _l('Delete Save', '세이브 삭제', 'セーブ削除'); String get confirmDeleteMessage => _l( - 'Are you sure?\nAll progress will be lost.', - '정말 삭제하시겠습니까?\n모든 진행 상황이 사라집니다.', - '本当に削除しますか?\nすべての進行状況が失われます。', - ); + 'Are you sure?\nAll progress will be lost.', + '정말 삭제하시겠습니까?\n모든 진행 상황이 사라집니다.', + '本当に削除しますか?\nすべての進行状況が失われます。', +); String get buttonConfirm => _l('Confirm', '확인', '確認'); String get buttonCancel => _l('Cancel', '취소', 'キャンセル'); @@ -1082,12 +1071,13 @@ String get buttonCancel => _l('Cancel', '취소', 'キャンセル'); String get uiWarning => _l('Warning', '경고', '警告'); String get warningDeleteSave => _l( - 'Existing save file will be deleted. Continue?', - '기존 저장 파일이 삭제됩니다. 계속하시겠습니까?', - '既存のセーブファイルが削除されます。続行しますか?', - ); + 'Existing save file will be deleted. Continue?', + '기존 저장 파일이 삭제됩니다. 계속하시겠습니까?', + '既存のセーブファイルが削除されます。続行しますか?', +); // 카피라이트 텍스트는 언어에 따라 변하지 않음 -String get copyrightText => '© 2025 NatureBridgeAi & cclabs all rights reserved'; +String get copyrightText => + '© 2025 NatureBridgeAi & cclabs all rights reserved.'; // ============================================================================ // 테마 설정 텍스트 @@ -1120,17 +1110,16 @@ String get uiSound => _l('Sound', '사운드', 'サウンド'); String get uiBgmVolume => _l('BGM Volume', 'BGM 볼륨', 'BGM音量'); String get uiSfxVolume => _l('SFX Volume', '효과음 볼륨', '効果音音量'); String get uiSoundOff => _l('Muted', '음소거', 'ミュート'); -String get uiAnimationSpeed => - _l('Animation Speed', '애니메이션 속도', 'アニメーション速度'); +String get uiAnimationSpeed => _l('Animation Speed', '애니메이션 속도', 'アニメーション速度'); String get uiSpeedSlow => _l('Slow', '느림', '遅い'); String get uiSpeedNormal => _l('Normal', '보통', '普通'); String get uiSpeedFast => _l('Fast', '빠름', '速い'); String get uiAbout => _l('About', '정보', '情報'); String get uiAboutDescription => _l( - 'An offline single-player RPG with ASCII art and retro vibes.', - 'ASCII 아트와 레트로 감성의 오프라인 싱글플레이어 RPG입니다.', - 'ASCIIアートとレトロ感のあるオフラインシングルプレイヤーRPGです。', - ); + 'An offline single-player RPG with ASCII art and retro vibes.', + 'ASCII 아트와 레트로 감성의 오프라인 싱글플레이어 RPG입니다.', + 'ASCIIアートとレトロ感のあるオフラインシングルプレイヤーRPGです。', +); // ============================================================================ // 공통 UI 액션 텍스트 @@ -1143,11 +1132,51 @@ String get uiDelete => _l('Delete', '삭제', '削除'); String get uiConfirmDelete => _l('Are you sure you want to delete?', '정말로 삭제하시겠습니까?', '本当に削除しますか?'); String get uiDeleted => _l('Deleted', '삭제되었습니다', '削除されました'); -String get uiError => - _l('An error occurred', '오류가 발생했습니다', 'エラーが発生しました'); +String get uiError => _l('An error occurred', '오류가 발생했습니다', 'エラーが発生しました'); String get uiSaved => _l('Saved', '저장됨', '保存しました'); -String get uiSaveBattleLog => - _l('Save Battle Log', '배틀로그 저장', 'バトルログ保存'); +String get uiSaveBattleLog => _l('Save Battle Log', '배틀로그 저장', 'バトルログ保存'); + +// ============================================================================ +// IAP 구매 텍스트 +// ============================================================================ + +String get iapRemoveAds => _l('Remove Ads', '광고 제거', '広告削除'); +String get iapRemoveAdsDesc => + _l('Enjoy ad-free experience', '광고 없이 플레이', '広告なしでプレイ'); +String get iapBenefitTitle => + _l('Premium Benefits', '프리미엄 혜택', 'プレミアム特典'); +String get iapBenefit1 => + _l('Ad-free gameplay', '광고 없는 쾌적한 플레이', '広告なしの快適プレイ'); +String get iapBenefit2 => + _l('Unlimited speed boost', '속도 부스트 무제한', 'スピードブースト無制限'); +String get iapBenefit3 => _l( + 'Stat reroll undo: 3 times', + '신규 캐릭터 스탯 가챠 되돌리기 3회', + '新キャラステ振り直し3回', +); +String get iapBenefit4 => + _l('Unlimited rerolls', '굴리기 무제한', 'リロール無制限'); +String get iapBenefit5 => _l( + '2x offline time credited', + '오프라인 시간 2배 인정', + 'オフライン時間2倍適用', +); +String get iapBenefit6 => + _l('Return chests: 10 max', '복귀 상자 최대 10개', '帰還ボックス最大10個'); +String get iapPurchaseButton => _l('Purchase', '구매하기', '購入する'); +String get iapAlreadyPurchased => _l('Already purchased', '이미 구매됨', '購入済み'); +String get iapPurchaseSuccess => _l('Purchase successful!', '구매 완료!', '購入完了!'); +String get iapPurchaseFailed => _l( + 'Purchase failed. Please try again.', + '구매 실패. 다시 시도해주세요.', + '購入失敗。もう一度お試しください。', +); +String get iapStoreUnavailable => + _l('Store unavailable', '스토어 사용 불가', 'ストア利用不可'); +String get iapRestorePurchase => _l('Restore Purchase', '구매 복원', '購入を復元'); +String get iapRestoreSuccess => + _l('Purchase restored!', '구매 복원 완료!', '購入を復元しました!'); +String get iapRestoreFailed => _l('Restore failed', '복원 실패', '復元失敗'); // ============================================================================ // 스킬 상세 정보 라벨 (Skill Detail Labels) diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 9f212ab..cc97ee4 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -227,8 +227,8 @@ "total": "Total", "@total": { "description": "Total label for stats" }, - "unroll": "Unroll", - "@unroll": { "description": "Unroll button" }, + "unroll": "Undo", + "@unroll": { "description": "Undo button for stat reroll" }, "roll": "Roll", "@roll": { "description": "Roll button" }, diff --git a/lib/l10n/app_ja.arb b/lib/l10n/app_ja.arb index a29e33f..f0b2c4c 100644 --- a/lib/l10n/app_ja.arb +++ b/lib/l10n/app_ja.arb @@ -1,7 +1,7 @@ { "@@locale": "ja", - "appTitle": "ASCII NEVER DIE", + "appTitle": "アスキー ネバー ダイ", "tagNoNetwork": "No network", "tagIdleRpg": "Idle RPG loop", "tagLocalSaves": "Local saves", @@ -68,7 +68,7 @@ "name": "Name", "generateName": "Generate Name", "total": "Total", - "unroll": "Unroll", + "unroll": "元に戻す", "roll": "Roll", "race": "Race", "classTitle": "Class", diff --git a/lib/l10n/app_ko.arb b/lib/l10n/app_ko.arb index ba132c7..800c66b 100644 --- a/lib/l10n/app_ko.arb +++ b/lib/l10n/app_ko.arb @@ -68,7 +68,7 @@ "name": "이름", "generateName": "이름 생성", "total": "합계", - "unroll": "펼치기", + "unroll": "되돌리기", "roll": "굴리기", "race": "종족", "classTitle": "직업", diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index 5b10379..a0b4e65 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -503,10 +503,10 @@ abstract class L10n { /// **'Total'** String get total; - /// Unroll button + /// Undo button for stat reroll /// /// In en, this message translates to: - /// **'Unroll'** + /// **'Undo'** String get unroll; /// Roll button diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index 1da22d3..3bf7074 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -220,7 +220,7 @@ class L10nEn extends L10n { String get total => 'Total'; @override - String get unroll => 'Unroll'; + String get unroll => 'Undo'; @override String get roll => 'Roll'; diff --git a/lib/l10n/app_localizations_ja.dart b/lib/l10n/app_localizations_ja.dart index 6392794..a682b90 100644 --- a/lib/l10n/app_localizations_ja.dart +++ b/lib/l10n/app_localizations_ja.dart @@ -9,7 +9,7 @@ class L10nJa extends L10n { L10nJa([String locale = 'ja']) : super(locale); @override - String get appTitle => 'ASCII NEVER DIE'; + String get appTitle => 'アスキー ネバー ダイ'; @override String get tagNoNetwork => 'No network'; @@ -220,7 +220,7 @@ class L10nJa extends L10n { String get total => 'Total'; @override - String get unroll => 'Unroll'; + String get unroll => '元に戻す'; @override String get roll => 'Roll'; diff --git a/lib/l10n/app_localizations_ko.dart b/lib/l10n/app_localizations_ko.dart index f684061..1455d6c 100644 --- a/lib/l10n/app_localizations_ko.dart +++ b/lib/l10n/app_localizations_ko.dart @@ -220,7 +220,7 @@ class L10nKo extends L10n { String get total => '합계'; @override - String get unroll => '펼치기'; + String get unroll => '되돌리기'; @override String get roll => '굴리기'; diff --git a/lib/l10n/app_localizations_zh.dart b/lib/l10n/app_localizations_zh.dart index 633f495..97d3ad5 100644 --- a/lib/l10n/app_localizations_zh.dart +++ b/lib/l10n/app_localizations_zh.dart @@ -220,7 +220,7 @@ class L10nZh extends L10n { String get total => 'Total'; @override - String get unroll => 'Unroll'; + String get unroll => '撤销'; @override String get roll => 'Roll'; diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index ec1d9d6..39a3acd 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -68,7 +68,7 @@ "name": "Name", "generateName": "Generate Name", "total": "Total", - "unroll": "Unroll", + "unroll": "撤销", "roll": "Roll", "race": "Race", "classTitle": "Class",