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 get taskPrologue => _l('Prologue', '프롤로그', 'プロローグ');
String taskHeadingToMarket() => _l( String taskHeadingToMarket() => _l(
'Heading to the Data Market to trade loot', 'Heading to the Data Market to trade loot',
'전리품을 팔기 위해 데이터 마켓으로 이동 중', '전리품을 팔기 위해 데이터 마켓으로 이동 중',
'戦利品を売るためデータマーケットへ移動中', '戦利品を売るためデータマーケットへ移動中',
); );
String taskUpgradingHardware() => _l( String taskUpgradingHardware() => _l(
'Upgrading hardware at the Tech Shop', 'Upgrading hardware at the Tech Shop',
'테크 샵에서 하드웨어 업그레이드 중', '테크 샵에서 하드웨어 업그레이드 중',
'テックショップでハードウェアをアップグレード中', 'テックショップでハードウェアをアップグレード中',
); );
String taskEnteringDebugZone() => String taskEnteringDebugZone() =>
_l('Entering the Debug Zone', '디버그 존 진입 중', 'デバッグゾーンに進入中'); _l('Entering the Debug Zone', '디버그 존 진입 중', 'デバッグゾーンに進入中');
String taskDebugging(String monsterName) => _l( String taskDebugging(String monsterName) =>
'Debugging $monsterName', _l('Debugging $monsterName', '$monsterName 디버깅 중', '$monsterName をデバッグ中');
'$monsterName 디버깅 중',
'$monsterName をデバッグ中',
);
String taskFinalBoss(String bossName) => _l( String taskFinalBoss(String bossName) =>
'Final Battle: $bossName', _l('Final Battle: $bossName', '최종 보스와 대결: $bossName', '最終ボスと対決: $bossName');
'최종 보스와 대결: $bossName',
'最終ボスと対決: $bossName',
);
String taskSelling(String itemDescription) => _l( String taskSelling(String itemDescription) => _l(
'Selling $itemDescription', 'Selling $itemDescription',
'$itemDescription 판매 중', '$itemDescription 판매 중',
'$itemDescription を販売中', '$itemDescription を販売中',
); );
// ============================================================================ // ============================================================================
// 부활 시퀀스 메시지 // 부활 시퀀스 메시지
@@ -161,35 +155,48 @@ String get deathEnvironmentalHazard =>
// 속도 부스트 (Phase 6) // 속도 부스트 (Phase 6)
// ============================================================================ // ============================================================================
String get speedBoostTitle => String get speedBoostTitle => _l('Speed Boost', '속도 부스트', 'スピードブースト');
_l('Speed Boost', '속도 부스트', 'スピードブースト');
String get speedBoostActivate => String get speedBoostActivate =>
_l('Activate 10x Speed', '10배속 활성화', '10倍速を有効化'); _l('Activate 10x Speed', '10배속 활성화', '10倍速を有効化');
String speedBoostRemaining(int seconds) => String speedBoostRemaining(int seconds) =>
_l('${seconds}s remaining', '${seconds}초 남음', '残り${seconds}'); _l('${seconds}s remaining', '${seconds}초 남음', '残り${seconds}');
String get speedBoostActive => String get speedBoostActive => _l('BOOST ACTIVE', '부스트 활성화', 'ブースト中');
_l('BOOST ACTIVE', '부스트 활성화', 'ブースト中');
// ============================================================================ // ============================================================================
// 복귀 보상 (Phase 7) // 복귀 보상 (Phase 7)
// ============================================================================ // ============================================================================
String get returnRewardTitle => String get returnRewardTitle => _l('Welcome Back!', '돌아오셨군요!', 'おかえりなさい!');
_l('Welcome Back!', '돌아오셨군요!', 'おかえりなさい!');
String returnRewardHoursAway(String time) => String returnRewardHoursAway(String time) =>
_l('You were away for $time', '$time 동안 떠나있었습니다', '$time 離れていました'); _l('You were away for $time', '$time 동안 떠나있었습니다', '$time 離れていました');
String get returnRewardBasic => String returnRewardChests(int count) =>
_l('Basic Reward', '기본 보상', '基本報酬'); _l('$count Treasure Chest(s)', '보물 상자 $count개', '宝箱 $count個');
String get returnRewardBonus => String get returnRewardOpenChests => _l('Open Chests', '상자 열기', '宝箱を開ける');
_l('Bonus Reward', '보너스 보상', 'ボーナス報酬'); String get returnRewardBonusChests =>
String returnRewardGold(int gold) => _l('Bonus Chests', '보너스 상자', 'ボーナス宝箱');
_l('+$gold Gold', '+$gold 골드', '+$gold ゴールド');
String get returnRewardClaim =>
_l('Claim', '받기', '受け取る');
String get returnRewardClaimBonus => String get returnRewardClaimBonus =>
_l('Claim Bonus', '보너스 받기', 'ボーナス受取'); _l('Get Bonus (AD)', '보너스 받기 (광고)', 'ボーナス受取 (広告)');
String get returnRewardSkip => String get returnRewardClaimBonusFree =>
_l('Skip', '건너뛰기', 'スキップ'); _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 일반 메시지 // UI 일반 메시지
@@ -198,10 +205,8 @@ String get returnRewardSkip =>
String get uiNoPotions => _l('No potions', '포션 없음', 'ポーションなし'); String get uiNoPotions => _l('No potions', '포션 없음', 'ポーションなし');
String get uiTapToContinue => _l('Tap to continue', '탭하여 계속', 'タップして続行'); String get uiTapToContinue => _l('Tap to continue', '탭하여 계속', 'タップして続行');
String get uiNoSkills => _l('No skills', '습득한 스킬이 없습니다', 'スキルなし'); String get uiNoSkills => _l('No skills', '습득한 스킬이 없습니다', 'スキルなし');
String get uiNoBonusStats => String get uiNoBonusStats => _l('No bonus stats', '추가 스탯 없음', 'ボーナスステータスなし');
_l('No bonus stats', '추가 스탯 없음', 'ボーナスステータスなし'); String get uiNoActiveBuffs => _l('No active buffs', '활성 버프 없음', 'アクティブバフなし');
String get uiNoActiveBuffs =>
_l('No active buffs', '활성 버프 없음', 'アクティブバフなし');
String get uiReady => _l('Ready', '준비', '準備完了'); String get uiReady => _l('Ready', '준비', '準備完了');
String get uiPotions => _l('Potions', '포션', 'ポーション'); String get uiPotions => _l('Potions', '포션', 'ポーション');
String get uiBuffs => _l('Buffs', '버프', 'バフ'); String get uiBuffs => _l('Buffs', '버프', 'バフ');
@@ -236,87 +241,91 @@ String passiveEvasionBonus(int percent) =>
String passiveCritBonus(int percent) => String passiveCritBonus(int percent) =>
_l('Critical +$percent%', '크리티컬 +$percent%', 'クリティカル +$percent%'); _l('Critical +$percent%', '크리티컬 +$percent%', 'クリティカル +$percent%');
String passiveHpRegen(int percent) => _l( String passiveHpRegen(int percent) => _l(
'Recover $percent% HP after combat', 'Recover $percent% HP after combat',
'전투 후 HP $percent% 회복', '전투 후 HP $percent% 회복',
'戦闘後HP $percent%回復', '戦闘後HP $percent%回復',
); );
String passiveMpRegen(int percent) => _l( String passiveMpRegen(int percent) => _l(
'Recover $percent% MP after combat', 'Recover $percent% MP after combat',
'전투 후 MP $percent% 회복', '전투 후 MP $percent% 회복',
'戦闘後MP $percent%回復', '戦闘後MP $percent%回復',
); );
// ============================================================================ // ============================================================================
// 전투 로그 메시지 // 전투 로그 메시지
// ============================================================================ // ============================================================================
String combatYouHit(String targetName, int damage) => _l( String combatYouHit(String targetName, int damage) => _l(
'You hit $targetName for $damage damage', 'You hit $targetName for $damage damage',
'$targetName에게 $damage 데미지', '$targetName에게 $damage 데미지',
'$targetNameに$damageダメージ', '$targetNameに$damageダメージ',
); );
String combatYouEvaded(String targetName) => _l( String combatYouEvaded(String targetName) => _l(
'You evaded $targetName\'s attack!', 'You evaded $targetName\'s attack!',
'$targetName의 공격 회피!', '$targetName의 공격 회피!',
'$targetNameの攻撃を回避!', '$targetNameの攻撃を回避!',
); );
String combatEvadedAttackFrom(String targetName) => _l( String combatEvadedAttackFrom(String targetName) => _l(
'Evaded attack from $targetName', 'Evaded attack from $targetName',
'$targetName의 공격 회피', '$targetName의 공격 회피',
'$targetNameの攻撃を回避', '$targetNameの攻撃を回避',
); );
String combatHealedFor(int amount) => String combatHealedFor(int amount) =>
_l('Healed for $amount HP', 'HP $amount 회복', 'HP $amount回復'); _l('Healed for $amount HP', 'HP $amount 회복', 'HP $amount回復');
String combatCritical(int damage, String targetName) => _l( String combatCritical(int damage, String targetName) => _l(
'CRITICAL! $damage damage to $targetName!', 'CRITICAL! $damage damage to $targetName!',
'크리티컬! $targetName에게 $damage 데미지!', '크리티컬! $targetName에게 $damage 데미지!',
'クリティカル! $targetNameに$damageダメージ!', 'クリティカル! $targetNameに$damageダメージ!',
); );
String combatMonsterHitsYou(String monsterName, int damage) => _l( String combatMonsterHitsYou(String monsterName, int damage) => _l(
'$monsterName hits you for $damage damage', '$monsterName hits you for $damage damage',
'$monsterName이(가) $damage 데미지', '$monsterName이(가) $damage 데미지',
'$monsterNameが$damageダメージを与えた', '$monsterNameが$damageダメージを与えた',
); );
String combatMonsterEvaded(String monsterName) => _l( String combatMonsterEvaded(String monsterName) => _l(
'$monsterName evaded your attack!', '$monsterName evaded your attack!',
'$monsterName이(가) 공격 회피!', '$monsterName이(가) 공격 회피!',
'$monsterNameが攻撃を回避!', '$monsterNameが攻撃を回避!',
); );
String combatBlocked(int damage) => _l( String combatBlocked(int damage) => _l(
'Blocked! Reduced to $damage damage', 'Blocked! Reduced to $damage damage',
'방어! $damage 데미지로 감소', '방어! $damage 데미지로 감소',
'ブロック! $damageダメージに軽減', 'ブロック! $damageダメージに軽減',
); );
String combatParried(int damage) => _l( String combatParried(int damage) => _l(
'Parried! Reduced to $damage damage', 'Parried! Reduced to $damage damage',
'패리! $damage 데미지로 감소', '패리! $damage 데미지로 감소',
'パリィ! $damageダメージに軽減', 'パリィ! $damageダメージに軽減',
); );
// 스킬 관련 전투 메시지 // 스킬 관련 전투 메시지
String combatSkillCritical(String skillName, int damage) => _l( String combatSkillCritical(String skillName, int damage) => _l(
'CRITICAL $skillName! $damage damage!', 'CRITICAL $skillName! $damage damage!',
'크리티컬 $skillName! $damage 데미지!', '크리티컬 $skillName! $damage 데미지!',
'クリティカル$skillName! $damageダメージ!', 'クリティカル$skillName! $damageダメージ!',
); );
String combatSkillDamage(String skillName, int damage) => String combatSkillDamage(String skillName, int damage) => _l(
_l('$skillName: $damage damage', '$skillName: $damage 데미지', '$skillName: $damageダメージ'); '$skillName: $damage damage',
'$skillName: $damage 데미지',
'$skillName: $damageダメージ',
);
// HP 형식이 동일하므로 단순화 // 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 get uiHeal => _l('Heal', '', 'ヒール');
String combatBuffActivated(String skillName) => String combatBuffActivated(String skillName) =>
_l('$skillName activated!', '$skillName 발동!', '$skillName 発動!'); _l('$skillName activated!', '$skillName 발동!', '$skillName 発動!');
String combatDebuffApplied(String skillName, String targetName) => _l( String combatDebuffApplied(String skillName, String targetName) => _l(
'$skillName applied to $targetName!', '$skillName applied to $targetName!',
'$skillName$targetName에 적용!', '$skillName$targetName에 적용!',
'$skillName$targetNameに適用!', '$skillName$targetNameに適用!',
); );
String combatDotTick(String skillName, int damage) => _l( String combatDotTick(String skillName, int damage) => _l(
'$skillName ticks for $damage damage', '$skillName ticks for $damage damage',
'$skillName: $damage 지속 데미지', '$skillName: $damage 지속 데미지',
'$skillName: $damage 継続ダメージ', '$skillName: $damage 継続ダメージ',
); );
// 포션 형식이 동일하므로 단순화 // 포션 형식이 동일하므로 단순화
String combatPotionUsed(String potionName, int amount, String statName) => String combatPotionUsed(String potionName, int amount, String statName) =>
'$potionName: +$amount $statName'; '$potionName: +$amount $statName';
@@ -325,15 +334,15 @@ String combatPotionDrop(String potionName) =>
// 사망 화면 전투 로그 (death overlay) // 사망 화면 전투 로그 (death overlay)
String combatBlockedAttack(String monsterName, int reducedDamage) => _l( String combatBlockedAttack(String monsterName, int reducedDamage) => _l(
'Blocked $monsterName\'s attack ($reducedDamage reduced)', 'Blocked $monsterName\'s attack ($reducedDamage reduced)',
'$monsterName의 공격 방어 ($reducedDamage 감소)', '$monsterName의 공격 방어 ($reducedDamage 감소)',
'$monsterNameの攻撃を防御 ($reducedDamage軽減)', '$monsterNameの攻撃を防御 ($reducedDamage軽減)',
); );
String combatParriedAttack(String monsterName, int reducedDamage) => _l( String combatParriedAttack(String monsterName, int reducedDamage) => _l(
'Parried $monsterName\'s attack ($reducedDamage reduced)', 'Parried $monsterName\'s attack ($reducedDamage reduced)',
'$monsterName의 공격 패리 ($reducedDamage 감소)', '$monsterName의 공격 패리 ($reducedDamage 감소)',
'$monsterNameの攻撃をパリィ ($reducedDamage軽減)', '$monsterNameの攻撃をパリィ ($reducedDamage軽減)',
); );
String get deathSelfInflicted => String get deathSelfInflicted =>
_l('Self-inflicted damage', '자해 데미지로 사망', '自傷ダメージで死亡'); _l('Self-inflicted damage', '자해 데미지로 사망', '自傷ダメージで死亡');
@@ -343,8 +352,7 @@ String get deathSelfInflicted =>
String questPatch(String name) => String questPatch(String name) =>
_l('Patch $name', '$name 패치하기', '$name をパッチする'); _l('Patch $name', '$name 패치하기', '$name をパッチする');
String questLocate(String item) => String questLocate(String item) => _l('Locate $item', '$item 찾기', '$item を探す');
_l('Locate $item', '$item 찾기', '$item を探す');
String questTransfer(String item) => String questTransfer(String item) =>
_l('Transfer this $item', '$item 전송하기', 'この$item を転送する'); _l('Transfer this $item', '$item 전송하기', 'この$item を転送する');
String questDownload(String item) => String questDownload(String item) =>
@@ -364,100 +372,100 @@ String actTitle(String romanNumeral) =>
// ============================================================================ // ============================================================================
String cinematicCacheZone1() => _l( 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( String cinematicCacheZone2() => _l(
'You reconnect with old allies and fork new ones', 'You reconnect with old allies and fork new ones',
'옛 동맹들과 재연결하고 새로운 동료들을 포크하다', '옛 동맹들과 재연결하고 새로운 동료들을 포크하다',
'古い同盟者と再接続し、新しい仲間をフォークする', '古い同盟者と再接続し、新しい仲間をフォークする',
); );
String cinematicCacheZone3() => _l( String cinematicCacheZone3() => _l(
'You attend a council of the Debugger Knights', 'You attend a council of the Debugger Knights',
'디버거 기사단 회의에 참석하다', '디버거 기사단 회의에 참석하다',
'デバッガー騎士団の会議に参加する', 'デバッガー騎士団の会議に参加する',
); );
String cinematicCacheZone4() => _l( String cinematicCacheZone4() => _l(
'Many bugs await. You are chosen to patch them!', 'Many bugs await. You are chosen to patch them!',
'많은 버그들이 기다린다. 당신이 패치하도록 선택되었다!', '많은 버그들이 기다린다. 당신이 패치하도록 선택되었다!',
'多くのバグが待っている。あなたがパッチを当てるよう選ばれた!', '多くのバグが待っている。あなたがパッチを当てるよう選ばれた!',
); );
// ============================================================================ // ============================================================================
// 시네마틱 텍스트 - 시나리오 2: 전투 // 시네마틱 텍스트 - 시나리오 2: 전투
// ============================================================================ // ============================================================================
String cinematicCombat1() => _l( 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( String cinematicCombat2(String nemesis) => _l(
'A desperate debugging session begins with $nemesis', 'A desperate debugging session begins with $nemesis',
'$nemesis와의 필사적인 디버깅 세션이 시작되다', '$nemesis와의 필사적인 디버깅 세션이 시작되다',
'$nemesisとの必死のデバッグセッションが始まる', '$nemesisとの必死のデバッグセッションが始まる',
); );
String cinematicCombatLocked(String nemesis) => _l( String cinematicCombatLocked(String nemesis) => _l(
'Locked in intense debugging with $nemesis', 'Locked in intense debugging with $nemesis',
'$nemesis와 치열한 디버깅 중', '$nemesis와 치열한 디버깅 중',
'$nemesisと激しいデバッグ中', '$nemesisと激しいデバッグ中',
); );
String cinematicCombatCorrupts(String nemesis) => _l( String cinematicCombatCorrupts(String nemesis) => _l(
'$nemesis corrupts your stack trace', '$nemesis corrupts your stack trace',
'$nemesis가 당신의 스택 트레이스를 손상시키다', '$nemesis가 당신의 스택 트레이스를 손상시키다',
'$nemesisがあなたのスタックトレースを破損させる', '$nemesisがあなたのスタックトレースを破損させる',
); );
String cinematicCombatWorking(String nemesis) => _l( String cinematicCombatWorking(String nemesis) => _l(
'Your patch seems to be working against $nemesis', 'Your patch seems to be working against $nemesis',
'당신의 패치가 $nemesis에게 효과를 보이는 것 같다', '당신의 패치가 $nemesis에게 효과를 보이는 것 같다',
'あなたのパッチが$nemesisに効いているようだ', 'あなたのパッチが$nemesisに効いているようだ',
); );
String cinematicCombatVictory(String nemesis) => _l( String cinematicCombatVictory(String nemesis) => _l(
'Victory! $nemesis is patched! System reboots for recovery', 'Victory! $nemesis is patched! System reboots for recovery',
'승리! $nemesis가 패치되었다! 복구를 위해 시스템이 재부팅된다', '승리! $nemesis가 패치되었다! 복구를 위해 시스템이 재부팅된다',
'勝利!$nemesisはパッチされた!復旧のためシステムが再起動する', '勝利!$nemesisはパッチされた!復旧のためシステムが再起動する',
); );
String cinematicCombatWakeUp() => _l( 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: 배신 // 시네마틱 텍스트 - 시나리오 3: 배신
// ============================================================================ // ============================================================================
String cinematicBetrayal1(String guy) => _l( String cinematicBetrayal1(String guy) => _l(
'What relief! You reach the secure server of $guy', 'What relief! You reach the secure server of $guy',
'안도감! $guy의 보안 서버에 도착하다', '안도감! $guy의 보안 서버에 도착하다',
'安堵!$guyのセキュアサーバーに到着する', '安堵!$guyのセキュアサーバーに到着する',
); );
String cinematicBetrayal2(String guy) => _l( String cinematicBetrayal2(String guy) => _l(
'There is celebration, and a suspicious private handshake with $guy', 'There is celebration, and a suspicious private handshake with $guy',
'축하가 이어지고, $guy와 수상한 비밀 핸드셰이크를 나누다', '축하가 이어지고, $guy와 수상한 비밀 핸드셰이크를 나누다',
'祝賀が続き、$guyと怪しい秘密のハンドシェイクを交わす', '祝賀が続き、$guyと怪しい秘密のハンドシェイクを交わす',
); );
String cinematicBetrayal3(String item) => _l( String cinematicBetrayal3(String item) => _l(
'You forget your $item and go back to retrieve it', 'You forget your $item and go back to retrieve it',
'$item을 잊고 다시 가져오러 돌아가다', '$item을 잊고 다시 가져오러 돌아가다',
'$itemを忘れて取りに戻る', '$itemを忘れて取りに戻る',
); );
String cinematicBetrayal4() => _l( String cinematicBetrayal4() => _l(
'What is this!? You intercept a corrupted packet!', 'What is this!? You intercept a corrupted packet!',
'이게 뭐지!? 손상된 패킷을 가로채다!', '이게 뭐지!? 손상된 패킷을 가로채다!',
'これは何だ!?破損したパケットを傍受する!', 'これは何だ!?破損したパケットを傍受する!',
); );
String cinematicBetrayal5(String guy) => _l( String cinematicBetrayal5(String guy) => _l(
'Could $guy be a backdoor for the Glitch God?', 'Could $guy be a backdoor for the Glitch God?',
'$guy가 글리치 신의 백도어일 수 있을까?', '$guy가 글리치 신의 백도어일 수 있을까?',
'$guyはグリッチゴッドのバックドアなのか', '$guyはグリッチゴッドのバックドアなのか',
); );
String cinematicBetrayal6() => _l( 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 modifierComatose(String s) => _l('lurking $s', '잠복하는 $s', '潜む$s');
String modifierCrippled(String s) => _l('twisted $s', '흉측한 $s', '歪んだ$s'); String modifierCrippled(String s) => _l('twisted $s', '흉측한 $s', '歪んだ$s');
String modifierSick(String s) => _l('tainted $s', '오염된 $s', '汚染された$s'); String modifierSick(String s) => _l('tainted $s', '오염된 $s', '汚染された$s');
String modifierUndernourished(String s) => String modifierUndernourished(String s) => _l('ravenous $s', '굶주린 $s', '飢えた$s');
_l('ravenous $s', '굶주린 $s', '飢えた$s');
String modifierFoetal(String s) => _l('nascent $s', '태동기 $s', '胎動期$s'); String modifierFoetal(String s) => _l('nascent $s', '태동기 $s', '胎動期$s');
String modifierBaby(String s) => _l('fledgling $s', '초기형 $s', '初期型$s'); String modifierBaby(String s) => _l('fledgling $s', '초기형 $s', '初期型$s');
String modifierPreadolescent(String s) => String modifierPreadolescent(String s) =>
_l('evolving $s', '진화 중인 $s', '進化中の$s'); _l('evolving $s', '진화 중인 $s', '進化中の$s');
String modifierTeenage(String s) => _l('lesser $s', '하급 $s', '下級$s'); String modifierTeenage(String s) => _l('lesser $s', '하급 $s', '下級$s');
String modifierUnderage(String s) => String modifierUnderage(String s) => _l('incomplete $s', '불완전한 $s', '不完全な$s');
_l('incomplete $s', '불완전한 $s', '不完全な$s');
String modifierGreater(String s) => _l('greater $s', '상위 $s', '上位$s'); String modifierGreater(String s) => _l('greater $s', '상위 $s', '上位$s');
String modifierMassive(String s) => _l('massive $s', '거대한 $s', '巨大な$s'); String modifierMassive(String s) => _l('massive $s', '거대한 $s', '巨大な$s');
String modifierEnormous(String s) => _l('enormous $s', '초거대 $s', '超巨大$s'); String modifierEnormous(String s) => _l('enormous $s', '초거대 $s', '超巨大$s');
String modifierGiant(String s) => String modifierGiant(String s) => _l('giant $s', '자이언트 $s', 'ジャイアント$s');
_l('giant $s', '자이언트 $s', 'ジャイアント$s');
String modifierTitanic(String s) => String modifierTitanic(String s) => _l('titanic $s', '타이타닉 $s', 'タイタニック$s');
_l('titanic $s', '타이타닉 $s', 'タイタニック$s'); String modifierVeteran(String s) => _l('veteran $s', '베테랑 $s', 'ベテラン$s');
String modifierVeteran(String s) =>
_l('veteran $s', '베테랑 $s', 'ベテラン$s');
String modifierBattle(String s) => _l('Battle-$s', '전투-$s', '戦闘-$s'); String modifierBattle(String s) => _l('Battle-$s', '전투-$s', '戦闘-$s');
String modifierCursed(String s) => String modifierCursed(String s) => _l('cursed $s', '저주받은 $s', '呪われた$s');
_l('cursed $s', '저주받은 $s', '呪われた$s');
String modifierWarrior(String s) => _l('warrior $s', '전사 $s', '戦士$s'); String modifierWarrior(String s) => _l('warrior $s', '전사 $s', '戦士$s');
String modifierWere(String s) => _l('Were-$s', '늑대인간-$s', '狼男-$s'); String modifierWere(String s) => _l('Were-$s', '늑대인간-$s', '狼男-$s');
String modifierUndead(String s) => String modifierUndead(String s) => _l('undead $s', '언데드 $s', 'アンデッド$s');
_l('undead $s', '언데드 $s', 'アンデッド$s');
String modifierDemon(String s) => _l('demon $s', '데몬 $s', 'デーモン$s'); String modifierDemon(String s) => _l('demon $s', '데몬 $s', 'デーモン$s');
String modifierMessianic(String s) => String modifierMessianic(String s) => _l('messianic $s', '메시아닉 $s', 'メシアニック$s');
_l('messianic $s', '메시아닉 $s', 'メシアニック$s'); String modifierImaginary(String s) => _l('imaginary $s', '상상의 $s', '想像上の$s');
String modifierImaginary(String s) => String modifierPassing(String s) => _l('passing $s', '지나가는 $s', '通りすがりの$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秒'); _l('$seconds seconds', '$seconds초', '$seconds秒');
String roughTimeMinutes(int minutes) => String roughTimeMinutes(int minutes) =>
_l('$minutes minutes', '$minutes분', '$minutes分'); _l('$minutes minutes', '$minutes분', '$minutes分');
String roughTimeHours(int hours) => String roughTimeHours(int hours) => _l('$hours hours', '$hours시간', '$hours時間');
_l('$hours hours', '$hours시간', '$hours時間');
String roughTimeDays(int days) => _l('$days days', '$days일', '$days日'); 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 uiHallOfFame => _l('Hall of Fame', '명예의 전당', '栄誉の殿堂');
String get uiLocalArena => _l('Local Arena', '로컬 아레나', 'ローカルアリーナ'); String get uiLocalArena => _l('Local Arena', '로컬 아레나', 'ローカルアリーナ');
String get frontDescription => _l( String get frontDescription => _l(
'A retro-style offline single-player RPG', 'A retro-style offline single-player RPG',
'레트로 감성의 오프라인 싱글플레이어 RPG', '레트로 감성의 오프라인 싱글플레이어 RPG',
'レトロ感のあるオフラインシングルプレイヤーRPG', 'レトロ感のあるオフラインシングルプレイヤーRPG',
); );
String get frontTodayFocus => String get frontTodayFocus => _l("Today's focus", '오늘의 중점', '今日のフォーカス');
_l("Today's focus", '오늘의 중점', '今日のフォーカス');
// ============================================================================ // ============================================================================
// 명예의 전당 화면 텍스트 // 명예의 전당 화면 텍스트
// ============================================================================ // ============================================================================
String get hofNoHeroes => String get hofNoHeroes => _l('No heroes yet', '영웅이 아직 없습니다', 'まだ英雄がいません');
_l('No heroes yet', '영웅이 아직 없습니다', 'まだ英雄がいません');
String get hofDefeatGlitchGod => _l( 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 hofVictory => _l('VICTORY!', '승리!', '勝利!');
String get hofDefeatedGlitchGod => _l( String get hofDefeatedGlitchGod =>
'You have defeated the Glitch God!', _l('You have defeated the Glitch God!', '글리치 신을 처치했습니다!', 'グリッチゴッドを倒しました!');
'글리치 신을 처치했습니다!',
'グリッチゴッドを倒しました!',
);
String get hofLegendEnshrined => _l( 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 => String get hofViewHallOfFame =>
_l('View Hall of Fame', '명예의 전당 보기', '栄誉の殿堂を見る'); _l('View Hall of Fame', '명예의 전당 보기', '栄誉の殿堂を見る');
String get hofNewGame => _l('New Game', '새 게임', '新しいゲーム'); String get hofNewGame => _l('New Game', '새 게임', '新しいゲーム');
@@ -962,17 +954,20 @@ String get uiSkip => _l('SKIP', '건너뛰기', 'スキップ');
// ============================================================================ // ============================================================================
String get uiLevelUp => _l('Level Up!', '레벨 업!', 'レベルアップ!'); String get uiLevelUp => _l('Level Up!', '레벨 업!', 'レベルアップ!');
String uiQuestComplete(String questName) => String uiQuestComplete(String questName) => _l(
_l('Quest Complete: $questName', '퀘스트 완료: $questName', 'クエスト完了: $questName'); 'Quest Complete: $questName',
'퀘스트 완료: $questName',
'クエスト完了: $questName',
);
// ============================================================================ // ============================================================================
// 장비 패널 텍스트 // 장비 패널 텍스트
// ============================================================================ // ============================================================================
String get uiEquipmentScore => String get uiEquipmentScore => _l('Equipment Score', '장비 점수', '装備スコア');
_l('Equipment Score', '장비 점수', '装備スコア');
String get uiEmpty => _l('(empty)', '(비어있음)', '(空)'); String get uiEmpty => _l('(empty)', '(비어있음)', '(空)');
String uiWeight(int weight) => _l('Wt.$weight', '무게 $weight', '重量 $weight'); String uiWeight(int weight) => _l('Wt.$weight', '무게 $weight', '重量 $weight');
/// 남은 시간 표시 /// 남은 시간 표시
String uiTimeRemaining(String time) => String uiTimeRemaining(String time) =>
_l('$time remaining', '$time 남음', '残り$time'); _l('$time remaining', '$time 남음', '残り$time');
@@ -1026,17 +1021,11 @@ String get rarityLegendary => _l('LEGENDARY', '전설', 'レジェンダリー')
String uiRollHistory(int count) => String uiRollHistory(int count) =>
_l('$count roll(s) in history', '리롤 기록: $count회', 'リロール履歴: $count回'); _l('$count roll(s) in history', '리롤 기록: $count회', 'リロール履歴: $count回');
String get uiEnterName => _l( String get uiEnterName =>
'Please enter a name.', _l('Please enter a name.', '이름을 입력해주세요.', '名前を入力してください。');
'이름을 입력해주세요.',
'名前を入力してください。',
);
String get uiTestMode => _l('Test Mode', '테스트 모드', 'テストモード'); String get uiTestMode => _l('Test Mode', '테스트 모드', 'テストモード');
String get uiTestModeDesc => _l( String get uiTestModeDesc =>
'Use mobile layout on web', _l('Use mobile layout on web', '웹에서 모바일 레이아웃 사용', 'Webでモバイルレイアウトを使用');
'웹에서 모바일 레이아웃 사용',
'Webでモバイルレイアウトを使用',
);
// ============================================================================ // ============================================================================
// 캐로셀 네비게이션 텍스트 // 캐로셀 네비게이션 텍스트
@@ -1069,10 +1058,10 @@ String get menuNewGame => _l('New Game', '새로하기', '新規ゲーム');
String get confirmDeleteTitle => _l('Delete Save', '세이브 삭제', 'セーブ削除'); String get confirmDeleteTitle => _l('Delete Save', '세이브 삭제', 'セーブ削除');
String get confirmDeleteMessage => _l( String get confirmDeleteMessage => _l(
'Are you sure?\nAll progress will be lost.', 'Are you sure?\nAll progress will be lost.',
'정말 삭제하시겠습니까?\n모든 진행 상황이 사라집니다.', '정말 삭제하시겠습니까?\n모든 진행 상황이 사라집니다.',
'本当に削除しますか?\nすべての進行状況が失われます。', '本当に削除しますか?\nすべての進行状況が失われます。',
); );
String get buttonConfirm => _l('Confirm', '확인', '確認'); String get buttonConfirm => _l('Confirm', '확인', '確認');
String get buttonCancel => _l('Cancel', '취소', 'キャンセル'); String get buttonCancel => _l('Cancel', '취소', 'キャンセル');
@@ -1082,12 +1071,13 @@ String get buttonCancel => _l('Cancel', '취소', 'キャンセル');
String get uiWarning => _l('Warning', '경고', '警告'); String get uiWarning => _l('Warning', '경고', '警告');
String get warningDeleteSave => _l( 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 uiBgmVolume => _l('BGM Volume', 'BGM 볼륨', 'BGM音量');
String get uiSfxVolume => _l('SFX Volume', '효과음 볼륨', '効果音音量'); String get uiSfxVolume => _l('SFX Volume', '효과음 볼륨', '効果音音量');
String get uiSoundOff => _l('Muted', '음소거', 'ミュート'); String get uiSoundOff => _l('Muted', '음소거', 'ミュート');
String get uiAnimationSpeed => String get uiAnimationSpeed => _l('Animation Speed', '애니메이션 속도', 'アニメーション速度');
_l('Animation Speed', '애니메이션 속도', 'アニメーション速度');
String get uiSpeedSlow => _l('Slow', '느림', '遅い'); String get uiSpeedSlow => _l('Slow', '느림', '遅い');
String get uiSpeedNormal => _l('Normal', '보통', '普通'); String get uiSpeedNormal => _l('Normal', '보통', '普通');
String get uiSpeedFast => _l('Fast', '빠름', '速い'); String get uiSpeedFast => _l('Fast', '빠름', '速い');
String get uiAbout => _l('About', '정보', '情報'); String get uiAbout => _l('About', '정보', '情報');
String get uiAboutDescription => _l( String get uiAboutDescription => _l(
'An offline single-player RPG with ASCII art and retro vibes.', 'An offline single-player RPG with ASCII art and retro vibes.',
'ASCII 아트와 레트로 감성의 오프라인 싱글플레이어 RPG입니다.', 'ASCII 아트와 레트로 감성의 오프라인 싱글플레이어 RPG입니다.',
'ASCIIアートとレトロ感のあるオフラインシングルプレイヤーRPGです。', 'ASCIIアートとレトロ感のあるオフラインシングルプレイヤーRPGです。',
); );
// ============================================================================ // ============================================================================
// 공통 UI 액션 텍스트 // 공통 UI 액션 텍스트
@@ -1143,11 +1132,51 @@ String get uiDelete => _l('Delete', '삭제', '削除');
String get uiConfirmDelete => String get uiConfirmDelete =>
_l('Are you sure you want to delete?', '정말로 삭제하시겠습니까?', '本当に削除しますか?'); _l('Are you sure you want to delete?', '정말로 삭제하시겠습니까?', '本当に削除しますか?');
String get uiDeleted => _l('Deleted', '삭제되었습니다', '削除されました'); String get uiDeleted => _l('Deleted', '삭제되었습니다', '削除されました');
String get uiError => String get uiError => _l('An error occurred', '오류가 발생했습니다', 'エラーが発生しました');
_l('An error occurred', '오류가 발생했습니다', 'エラーが発生しました');
String get uiSaved => _l('Saved', '저장됨', '保存しました'); String get uiSaved => _l('Saved', '저장됨', '保存しました');
String get uiSaveBattleLog => String get uiSaveBattleLog => _l('Save Battle Log', '배틀로그 저장', 'バトルログ保存');
_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) // 스킬 상세 정보 라벨 (Skill Detail Labels)

View File

@@ -227,8 +227,8 @@
"total": "Total", "total": "Total",
"@total": { "description": "Total label for stats" }, "@total": { "description": "Total label for stats" },
"unroll": "Unroll", "unroll": "Undo",
"@unroll": { "description": "Unroll button" }, "@unroll": { "description": "Undo button for stat reroll" },
"roll": "Roll", "roll": "Roll",
"@roll": { "description": "Roll button" }, "@roll": { "description": "Roll button" },

View File

@@ -1,7 +1,7 @@
{ {
"@@locale": "ja", "@@locale": "ja",
"appTitle": "ASCII NEVER DIE", "appTitle": "アスキー ネバー ダイ",
"tagNoNetwork": "No network", "tagNoNetwork": "No network",
"tagIdleRpg": "Idle RPG loop", "tagIdleRpg": "Idle RPG loop",
"tagLocalSaves": "Local saves", "tagLocalSaves": "Local saves",
@@ -68,7 +68,7 @@
"name": "Name", "name": "Name",
"generateName": "Generate Name", "generateName": "Generate Name",
"total": "Total", "total": "Total",
"unroll": "Unroll", "unroll": "元に戻す",
"roll": "Roll", "roll": "Roll",
"race": "Race", "race": "Race",
"classTitle": "Class", "classTitle": "Class",

View File

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

View File

@@ -503,10 +503,10 @@ abstract class L10n {
/// **'Total'** /// **'Total'**
String get total; String get total;
/// Unroll button /// Undo button for stat reroll
/// ///
/// In en, this message translates to: /// In en, this message translates to:
/// **'Unroll'** /// **'Undo'**
String get unroll; String get unroll;
/// Roll button /// Roll button

View File

@@ -220,7 +220,7 @@ class L10nEn extends L10n {
String get total => 'Total'; String get total => 'Total';
@override @override
String get unroll => 'Unroll'; String get unroll => 'Undo';
@override @override
String get roll => 'Roll'; String get roll => 'Roll';

View File

@@ -9,7 +9,7 @@ class L10nJa extends L10n {
L10nJa([String locale = 'ja']) : super(locale); L10nJa([String locale = 'ja']) : super(locale);
@override @override
String get appTitle => 'ASCII NEVER DIE'; String get appTitle => 'アスキー ネバー ダイ';
@override @override
String get tagNoNetwork => 'No network'; String get tagNoNetwork => 'No network';
@@ -220,7 +220,7 @@ class L10nJa extends L10n {
String get total => 'Total'; String get total => 'Total';
@override @override
String get unroll => 'Unroll'; String get unroll => '元に戻す';
@override @override
String get roll => 'Roll'; String get roll => 'Roll';

View File

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

View File

@@ -220,7 +220,7 @@ class L10nZh extends L10n {
String get total => 'Total'; String get total => 'Total';
@override @override
String get unroll => 'Unroll'; String get unroll => '撤销';
@override @override
String get roll => 'Roll'; String get roll => 'Roll';

View File

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