feat(l10n): 다국어 텍스트 업데이트

- 영어, 한국어, 일본어, 중국어 번역 업데이트
- game_text_l10n 데이터 개선
This commit is contained in:
JiWoong Sul
2026-01-19 15:50:02 +09:00
parent 03aa117710
commit 724de9a63c
10 changed files with 294 additions and 265 deletions

View File

@@ -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)

View File

@@ -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" },

View File

@@ -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",

View File

@@ -68,7 +68,7 @@
"name": "이름",
"generateName": "이름 생성",
"total": "합계",
"unroll": "펼치기",
"unroll": "되돌리기",
"roll": "굴리기",
"race": "종족",
"classTitle": "직업",

View File

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

View File

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

View File

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

View File

@@ -220,7 +220,7 @@ class L10nKo extends L10n {
String get total => '합계';
@override
String get unroll => '펼치';
String get unroll => '되돌리';
@override
String get roll => '굴리기';

View File

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

View File

@@ -68,7 +68,7 @@
"name": "Name",
"generateName": "Generate Name",
"total": "Total",
"unroll": "Unroll",
"unroll": "撤销",
"roll": "Roll",
"race": "Race",
"classTitle": "Class",