fix(i18n): VictoryOverlay 번역 및 개선

- 일본어/중국어 번역 수정
- game_text_l10n 번역 데이터 정리
- VictoryOverlay 레이아웃 개선
- GameSessionController 상태 관리 개선
This commit is contained in:
JiWoong Sul
2026-01-01 03:29:48 +09:00
parent a6d3c1e42f
commit c9f0e35914
7 changed files with 45 additions and 55 deletions

View File

@@ -1211,9 +1211,9 @@ String get uiHallOfFame {
} }
String get frontDescription { String get frontDescription {
if (isKoreanLocale) return 'Flutter로 재구축된 오프라인 Progress Quest (PQ 6.4)'; if (isKoreanLocale) return '레트로 감성의 오프라인 싱글플레이어 RPG';
if (isJapaneseLocale) return 'Flutterで再構築されたオフラインProgress Quest (PQ 6.4)'; if (isJapaneseLocale) return 'レトロ感のあるオフラインシングルプレイヤーRPG';
return 'Offline Progress Quest (PQ 6.4) rebuilt with Flutter.'; return 'A retro-style offline single-player RPG';
} }
String get frontTodayFocus { String get frontTodayFocus {
@@ -1913,7 +1913,7 @@ String get uiAbout {
} }
String get uiAboutDescription { String get uiAboutDescription {
if (isKoreanLocale) return 'Progress Quest 6.4를 Flutter로 재구현한 오프라인 싱글플레이어 RPG입니다.'; if (isKoreanLocale) return 'ASCII 아트와 레트로 감성의 오프라인 싱글플레이어 RPG입니다.';
if (isJapaneseLocale) return 'Progress Quest 6.4をFlutterで再実装したオフラインシングルプレイヤーRPGです。'; if (isJapaneseLocale) return 'ASCIIアートとレトロ感のあるオフラインシングルプレイヤーRPGです。';
return 'An offline single-player RPG reimplementation of Progress Quest 6.4 in Flutter.'; return 'An offline single-player RPG with ASCII art and retro vibes.';
} }

View File

@@ -16,7 +16,7 @@
"saveProgressQuestion": "Save your progress before leaving?", "saveProgressQuestion": "Save your progress before leaving?",
"exitWithoutSaving": "Exit without saving", "exitWithoutSaving": "Exit without saving",
"saveAndExit": "Save and Exit", "saveAndExit": "Save and Exit",
"progressQuestTitle": "Progress Quest - {name}", "progressQuestTitle": "ASCII NEVER DIE - {name}",
"levelUp": "Level Up", "levelUp": "Level Up",
"completeQuest": "Complete Quest", "completeQuest": "Complete Quest",
"completePlot": "Complete Plot", "completePlot": "Complete Plot",
@@ -62,7 +62,7 @@
"actNumber": "Act {number}", "actNumber": "Act {number}",
"noActiveQuests": "No active quests", "noActiveQuests": "No active quests",
"questNumber": "Quest #{number}", "questNumber": "Quest #{number}",
"welcomeMessage": "Welcome to Progress Quest!", "welcomeMessage": "ASCII NEVER DIEへようこそ",
"noSavedGames": "No saved games found.", "noSavedGames": "No saved games found.",
"loadError": "Failed to load save file: {error}", "loadError": "Failed to load save file: {error}",
"name": "Name", "name": "Name",

View File

@@ -55,7 +55,7 @@ class L10nJa extends L10n {
@override @override
String progressQuestTitle(String name) { String progressQuestTitle(String name) {
return 'Progress Quest - $name'; return 'ASCII NEVER DIE - $name';
} }
@override @override
@@ -200,7 +200,7 @@ class L10nJa extends L10n {
} }
@override @override
String get welcomeMessage => 'Welcome to Progress Quest!'; String get welcomeMessage => 'ASCII NEVER DIEへようこそ';
@override @override
String get noSavedGames => 'No saved games found.'; String get noSavedGames => 'No saved games found.';

View File

@@ -55,7 +55,7 @@ class L10nZh extends L10n {
@override @override
String progressQuestTitle(String name) { String progressQuestTitle(String name) {
return 'Progress Quest - $name'; return 'ASCII NEVER DIE - $name';
} }
@override @override
@@ -200,7 +200,7 @@ class L10nZh extends L10n {
} }
@override @override
String get welcomeMessage => 'Welcome to Progress Quest!'; String get welcomeMessage => '欢迎来到ASCII NEVER DIE';
@override @override
String get noSavedGames => 'No saved games found.'; String get noSavedGames => 'No saved games found.';

View File

@@ -16,7 +16,7 @@
"saveProgressQuestion": "Save your progress before leaving?", "saveProgressQuestion": "Save your progress before leaving?",
"exitWithoutSaving": "Exit without saving", "exitWithoutSaving": "Exit without saving",
"saveAndExit": "Save and Exit", "saveAndExit": "Save and Exit",
"progressQuestTitle": "Progress Quest - {name}", "progressQuestTitle": "ASCII NEVER DIE - {name}",
"levelUp": "Level Up", "levelUp": "Level Up",
"completeQuest": "Complete Quest", "completeQuest": "Complete Quest",
"completePlot": "Complete Plot", "completePlot": "Complete Plot",
@@ -62,7 +62,7 @@
"actNumber": "Act {number}", "actNumber": "Act {number}",
"noActiveQuests": "No active quests", "noActiveQuests": "No active quests",
"questNumber": "Quest #{number}", "questNumber": "Quest #{number}",
"welcomeMessage": "Welcome to Progress Quest!", "welcomeMessage": "欢迎来到ASCII NEVER DIE",
"noSavedGames": "No saved games found.", "noSavedGames": "No saved games found.",
"loadError": "Failed to load save file: {error}", "loadError": "Failed to load save file: {error}",
"name": "Name", "name": "Name",

View File

@@ -316,6 +316,12 @@ class GameSessionController extends ChangeNotifier {
// 통계 기록 // 통계 기록
await _statisticsStorage.recordGameComplete(); await _statisticsStorage.recordGameComplete();
debugPrint('[HallOfFame] Registration complete'); debugPrint('[HallOfFame] Registration complete');
// 클리어된 세이브 파일 삭제 (중복 등록 방지)
if (success) {
final deleteResult = await saveManager.deleteSave();
debugPrint('[HallOfFame] Save file deleted: ${deleteResult.success}');
}
} catch (e, st) { } catch (e, st) {
debugPrint('[HallOfFame] ERROR: $e'); debugPrint('[HallOfFame] ERROR: $e');
debugPrint('[HallOfFame] StackTrace: $st'); debugPrint('[HallOfFame] StackTrace: $st');

View File

@@ -450,16 +450,16 @@ class _VictoryOverlayState extends State<VictoryOverlay>
Widget _buildTrophyAsciiArt(Color gold) { Widget _buildTrophyAsciiArt(Color gold) {
const trophy = ''' const trophy = '''
___________ ___________
'._==_==_=_.' '._==_==_=_.'
.-\\: /-. .-\\: /-.
| (|:. |) | | (|:. |) |
'-|:. |-' '-|:. |-'
\\::. / \\::. /
'::. .' '::. .'
) ( ) (
_.' '._ _.' '._
'-------' '''; '-------' ''';
return Text( return Text(
trophy, trophy,
@@ -476,51 +476,35 @@ class _VictoryOverlayState extends State<VictoryOverlay>
Widget _buildCredits(BuildContext context) { Widget _buildCredits(BuildContext context) {
final textPrimary = RetroColors.textPrimaryOf(context); final textPrimary = RetroColors.textPrimaryOf(context);
final textMuted = RetroColors.textMutedOf(context); final textMuted = RetroColors.textMutedOf(context);
final gold = RetroColors.goldOf(context);
return Column( return Column(
children: [ children: [
Text( Text(
'Based on', 'ASCII NEVER DIE',
style: TextStyle(
fontFamily: 'JetBrainsMono',
fontSize: 10,
color: textMuted,
),
),
const SizedBox(height: 4),
Text(
'Progress Quest',
style: TextStyle( style: TextStyle(
fontFamily: 'PressStart2P', fontFamily: 'PressStart2P',
fontSize: 10, fontSize: 12,
color: gold,
),
),
const SizedBox(height: 16),
Text(
'Thank you for playing!',
style: TextStyle(
fontFamily: 'JetBrainsMono',
fontSize: 12,
color: textPrimary, color: textPrimary,
), ),
), ),
const SizedBox(height: 4), const SizedBox(height: 8),
Text( Text(
'by Eric Fredricksen', 'Your legend lives on...',
style: TextStyle( style: TextStyle(
fontFamily: 'JetBrainsMono', fontFamily: 'JetBrainsMono',
fontSize: 10, fontSize: 10,
color: textMuted, color: textMuted,
), fontStyle: FontStyle.italic,
),
const SizedBox(height: 24),
Text(
'Flutter Port',
style: TextStyle(
fontFamily: 'JetBrainsMono',
fontSize: 10,
color: textMuted,
),
),
const SizedBox(height: 4),
Text(
'ASCII Never Die',
style: TextStyle(
fontFamily: 'PressStart2P',
fontSize: 10,
color: textPrimary,
), ),
), ),
], ],