diff --git a/lib/data/game_text_l10n.dart b/lib/data/game_text_l10n.dart index 9d50959..144259f 100644 --- a/lib/data/game_text_l10n.dart +++ b/lib/data/game_text_l10n.dart @@ -1388,6 +1388,13 @@ String uiWeight(int weight) { return 'Wt.$weight'; } +/// 남은 시간 표시 +String uiTimeRemaining(String time) { + if (isKoreanLocale) return '$time 남음'; + if (isJapaneseLocale) return '残り$time'; + return '$time remaining'; +} + // 장비 슬롯 이름 String get slotWeapon { if (isKoreanLocale) return '무기'; diff --git a/lib/src/features/game/game_play_screen.dart b/lib/src/features/game/game_play_screen.dart index 415f4e1..1d33753 100644 --- a/lib/src/features/game/game_play_screen.dart +++ b/lib/src/features/game/game_play_screen.dart @@ -515,6 +515,14 @@ class _GamePlayScreenState extends State } } + @override + void didChangeDependencies() { + super.didChangeDependencies(); + // 로케일 변경 시 게임 l10n 동기화 (시네마틱 번역 등에 필수) + final locale = Localizations.localeOf(context); + game_l10n.setGameLocale(locale.languageCode); + } + @override void dispose() { _notificationService.dispose(); diff --git a/lib/src/features/game/pages/story_page.dart b/lib/src/features/game/pages/story_page.dart index 78c40fc..023637b 100644 --- a/lib/src/features/game/pages/story_page.dart +++ b/lib/src/features/game/pages/story_page.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; +import 'package:askiineverdie/data/game_text_l10n.dart' as l10n; import 'package:askiineverdie/l10n/app_localizations.dart'; import 'package:askiineverdie/src/core/model/game_state.dart'; import 'package:askiineverdie/src/core/util/pq_logic.dart' as pq_logic; @@ -118,7 +119,7 @@ class StoryPage extends StatelessWidget { ), const SizedBox(height: 4), Text( - '$remainingTime remaining', + l10n.uiTimeRemaining(remainingTime), style: TextStyle(fontSize: 10, color: Colors.grey.shade600), ), ],