feat(ui): GameDataL10n 번역 UI 적용

new_character_screen.dart:
- 종족 목록에 GameDataL10n.getRaceName() 적용
- 직업 목록에 GameDataL10n.getKlassName() 적용

game_play_screen.dart:
- 캐릭터 정보의 종족/직업 번역 적용
- 주문 목록에 GameDataL10n.getSpellName() 적용
This commit is contained in:
JiWoong Sul
2025-12-11 18:26:57 +09:00
parent 14d83dc336
commit 17aa7f8f91
2 changed files with 16 additions and 5 deletions

View File

@@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
import 'package:askiineverdie/l10n/app_localizations.dart'; import 'package:askiineverdie/l10n/app_localizations.dart';
import 'package:askiineverdie/src/core/animation/ascii_animation_data.dart'; import 'package:askiineverdie/src/core/animation/ascii_animation_data.dart';
import 'package:askiineverdie/src/core/animation/ascii_animation_type.dart'; import 'package:askiineverdie/src/core/animation/ascii_animation_type.dart';
import 'package:askiineverdie/src/core/l10n/game_data_l10n.dart';
import 'package:askiineverdie/src/core/model/game_state.dart'; import 'package:askiineverdie/src/core/model/game_state.dart';
import 'package:askiineverdie/src/core/storage/theme_preferences.dart'; import 'package:askiineverdie/src/core/storage/theme_preferences.dart';
import 'package:askiineverdie/src/core/util/pq_logic.dart' as pq_logic; import 'package:askiineverdie/src/core/util/pq_logic.dart' as pq_logic;
@@ -409,8 +410,8 @@ class _GamePlayScreenState extends State<GamePlayScreen>
final l10n = L10n.of(context); final l10n = L10n.of(context);
final traits = [ final traits = [
(l10n.traitName, state.traits.name), (l10n.traitName, state.traits.name),
(l10n.traitRace, state.traits.race), (l10n.traitRace, GameDataL10n.getRaceName(context, state.traits.race)),
(l10n.traitClass, state.traits.klass), (l10n.traitClass, GameDataL10n.getKlassName(context, state.traits.klass)),
(l10n.traitLevel, '${state.traits.level}'), (l10n.traitLevel, '${state.traits.level}'),
]; ];
@@ -487,11 +488,12 @@ class _GamePlayScreenState extends State<GamePlayScreen>
padding: const EdgeInsets.symmetric(horizontal: 8), padding: const EdgeInsets.symmetric(horizontal: 8),
itemBuilder: (context, index) { itemBuilder: (context, index) {
final spell = state.spellBook.spells[index]; final spell = state.spellBook.spells[index];
final spellName = GameDataL10n.getSpellName(context, spell.name);
return Row( return Row(
children: [ children: [
Expanded( Expanded(
child: Text( child: Text(
spell.name, spellName,
style: const TextStyle(fontSize: 11), style: const TextStyle(fontSize: 11),
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
), ),

View File

@@ -3,6 +3,7 @@ import 'dart:math' as math;
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:askiineverdie/l10n/app_localizations.dart'; import 'package:askiineverdie/l10n/app_localizations.dart';
import 'package:askiineverdie/src/core/l10n/game_data_l10n.dart';
import 'package:askiineverdie/src/core/model/game_state.dart'; import 'package:askiineverdie/src/core/model/game_state.dart';
import 'package:askiineverdie/src/core/model/pq_config.dart'; import 'package:askiineverdie/src/core/model/pq_config.dart';
import 'package:askiineverdie/src/core/util/deterministic_random.dart'; import 'package:askiineverdie/src/core/util/deterministic_random.dart';
@@ -400,6 +401,10 @@ class _NewCharacterScreenState extends State<NewCharacterScreen> {
itemCount: _races.length, itemCount: _races.length,
itemBuilder: (context, index) { itemBuilder: (context, index) {
final isSelected = index == _selectedRaceIndex; final isSelected = index == _selectedRaceIndex;
final raceName = GameDataL10n.getRaceName(
context,
_races[index],
);
return ListTile( return ListTile(
leading: Icon( leading: Icon(
isSelected isSelected
@@ -410,7 +415,7 @@ class _NewCharacterScreenState extends State<NewCharacterScreen> {
: null, : null,
), ),
title: Text( title: Text(
_races[index], raceName,
style: TextStyle( style: TextStyle(
fontWeight: isSelected fontWeight: isSelected
? FontWeight.bold ? FontWeight.bold
@@ -445,6 +450,10 @@ class _NewCharacterScreenState extends State<NewCharacterScreen> {
itemCount: _klasses.length, itemCount: _klasses.length,
itemBuilder: (context, index) { itemBuilder: (context, index) {
final isSelected = index == _selectedKlassIndex; final isSelected = index == _selectedKlassIndex;
final klassName = GameDataL10n.getKlassName(
context,
_klasses[index],
);
return ListTile( return ListTile(
leading: Icon( leading: Icon(
isSelected isSelected
@@ -455,7 +464,7 @@ class _NewCharacterScreenState extends State<NewCharacterScreen> {
: null, : null,
), ),
title: Text( title: Text(
_klasses[index], klassName,
style: TextStyle( style: TextStyle(
fontWeight: isSelected fontWeight: isSelected
? FontWeight.bold ? FontWeight.bold