implement missing localization
Some checks failed
Pull Request Pipeline / test (pull_request) Failing after 47s
Pull Request Pipeline / lint (pull_request) Failing after 56s

This commit is contained in:
2026-05-21 10:33:16 +02:00
parent b61a93328f
commit 9909d959b0
7 changed files with 262 additions and 122 deletions

View File

@@ -19,6 +19,7 @@
"color_red": "Rot",
"color_teal": "Türkis",
"color_yellow": "Gelb",
"confirm": "Bestätigen",
"could_not_add_player": "Spieler:in {playerName} konnte nicht hinzugefügt werden",
"create_game": "Spielvorlage erstellen",
"create_group": "Gruppe erstellen",
@@ -44,11 +45,14 @@
},
"delete_group": "Gruppe löschen",
"delete_match": "Spiel löschen",
"drag_to_set_placement": "Ziehen um Platzierung zu setzen",
"delete_player": "Spieler:in löschen",
"description": "Beschreibung",
"drag_to_set_placement": "Ziehen um Platzierung zu setzen",
"edit_game": "Spielvorlage bearbeiten",
"edit_group": "Gruppe bearbeiten",
"edit_match": "Gruppe bearbeiten",
"edit_name": "Name ändern",
"edit_player": "Spieler bearbeiten",
"enter_points": "Punkte eingeben",
"enter_results": "Ergebnisse eintragen",
"error_creating_group": "Fehler beim Erstellen der Gruppe, bitte erneut versuchen",
@@ -66,6 +70,8 @@
"group_name": "Gruppenname",
"group_profile": "Gruppenprofil",
"groups": "Gruppen",
"groups_part_of": "Gruppen Teil von",
"highest_score": "Höchste Punkte",
"home": "Startseite",
"import_canceled": "Import abgebrochen",
"import_data": "Daten importieren",
@@ -76,17 +82,23 @@
"legal_notice": "Impressum",
"licenses": "Lizenzen",
"live_edit_mode": "Live-Bearbeitungsmodus",
"loser": "Verlierer:in",
"lowest_score": "Niedrigste Punkte",
"match_in_progress": "Spiel läuft...",
"match_name": "Spieltitel",
"match_profile": "Spielprofil",
"matches": "Spiele",
"matches_part_of": "Spiele Teil von",
"matches_played": "Spiele gespielt",
"matches_won": "Spiele gewonnen",
"members": "Mitglieder",
"most_points": "Höchste Punkte",
"multiple_winners": "Mehrere Gewinner:innen",
"no_data_available": "Keine Daten verfügbar",
"no_games_created_yet": "Noch keine Spielvorlagen erstellt",
"no_groups_created_yet": "Noch keine Gruppen erstellt",
"no_licenses_found": "Keine Lizenzen gefunden",
"no_license_text_available": "Kein Lizenztext verfügbar",
"no_licenses_found": "Keine Lizenzen gefunden",
"no_matches_created_yet": "Noch keine Spiele erstellt",
"no_players_created_yet": "Noch keine Spieler:in erstellt",
"no_players_found_with_that_name": "Keine Spieler:in mit diesem Namen gefunden",
@@ -98,10 +110,11 @@
"none": "Kein",
"none_group": "Keine",
"not_available": "Nicht verfügbar",
"placement": "Platzierung",
"place": "Platz",
"placement": "Platzierung",
"played_matches": "Gespielte Spiele",
"player_name": "Spieler:innenname",
"player_profile": "Spieler:in-Profil",
"players": "Spieler:innen",
"point": "Punkt",
"points": "Punkte",
@@ -119,17 +132,14 @@
"save_changes": "Änderungen speichern",
"search_for_groups": "Nach Gruppen suchen",
"search_for_players": "Nach Spieler:innen suchen",
"select_loser": "Verlierer:in wählen",
"select_winner": "Gewinner:in wählen",
"select_winners": "Gewinner:innen wählen",
"select_loser": "Verlierer:in wählen",
"selected_players": "Ausgewählte Spieler:innen",
"set_name": "Name setzen",
"settings": "Einstellungen",
"single_loser": "Ein:e Verlierer:in",
"single_winner": "Ein:e Gewinner:in",
"highest_score": "Höchste Punkte",
"loser": "Verlierer:in",
"lowest_score": "Niedrigste Punkte",
"multiple_winners": "Mehrere Gewinner:innen",
"statistics": "Statistiken",
"stats": "Statistiken",
"successfully_added_player": "Spieler:in {playerName} erfolgreich hinzugefügt",

View File

@@ -1,6 +1,5 @@
{
"@@locale": "en",
"all_players": "All players",
"all_players_selected": "All players selected",
"amount_of_matches": "Amount of Matches",
@@ -20,13 +19,14 @@
"color_red": "Red",
"color_teal": "Teal",
"color_yellow": "Yellow",
"confirm": "Confirm",
"could_not_add_player": "Could not add player",
"create_game": "Create Game",
"create_group": "Create Group",
"create_match": "Create match",
"create_new_group": "Create new group",
"created_on": "Created on",
"create_new_match": "Create new match",
"created_on": "Created on",
"data": "Data",
"data_successfully_deleted": "Data successfully deleted",
"data_successfully_exported": "Data successfully exported",
@@ -45,11 +45,14 @@
},
"delete_group": "Delete Group",
"delete_match": "Delete Match",
"drag_to_set_placement": "Drag to set placement",
"delete_player": "Delete player?",
"description": "Description",
"drag_to_set_placement": "Drag to set placement",
"edit_game": "Edit Game",
"edit_group": "Edit Group",
"edit_match": "Edit Match",
"edit_name": "Edit name",
"edit_player": "Edit player",
"enter_points": "Enter points",
"enter_results": "Enter Results",
"error_creating_group": "Error while creating group, please try again",
@@ -67,6 +70,8 @@
"group_name": "Group name",
"group_profile": "Group Profile",
"groups": "Groups",
"groups_part_of": "Groups part of",
"highest_score": "Highest Score",
"home": "Home",
"import_canceled": "Import canceled",
"import_data": "Import data",
@@ -77,17 +82,23 @@
"legal_notice": "Legal Notice",
"licenses": "Licenses",
"live_edit_mode": "Live Edit Mode",
"loser": "Loser",
"lowest_score": "Lowest Score",
"match_in_progress": "Match in progress...",
"match_name": "Match name",
"match_profile": "Match Profile",
"matches": "Matches",
"matches_part_of": "Matches part of",
"matches_played": "Matches played",
"matches_won": "Matches won",
"members": "Members",
"most_points": "Most Points",
"multiple_winners": "Multiple Winners",
"no_data_available": "No data available",
"no_games_created_yet": "No games created yet",
"no_groups_created_yet": "No groups created yet",
"no_licenses_found": "No licenses found",
"no_license_text_available": "No license text available",
"no_licenses_found": "No licenses found",
"no_matches_created_yet": "No matches created yet",
"no_players_created_yet": "No players created yet",
"no_players_found_with_that_name": "No players found with that name",
@@ -99,10 +110,11 @@
"none": "None",
"none_group": "None",
"not_available": "Not available",
"placement": "Placement",
"place": "place",
"placement": "Placement",
"played_matches": "Played Matches",
"player_name": "Player name",
"player_profile": "Player Profile",
"players": "Players",
"point": "Point",
"points": "Points",
@@ -119,17 +131,14 @@
"save_changes": "Save Changes",
"search_for_groups": "Search for groups",
"search_for_players": "Search for players",
"select_loser": "Select Loser",
"select_winner": "Select Winner",
"select_winners": "Select Winners",
"select_loser": "Select Loser",
"selected_players": "Selected players",
"set_name": "Set name",
"settings": "Settings",
"single_loser": "Single Loser",
"single_winner": "Single Winner",
"highest_score": "Highest Score",
"loser": "Loser",
"lowest_score": "Lowest Score",
"multiple_winners": "Multiple Winners",
"statistics": "Statistics",
"stats": "Stats",
"successfully_added_player": "Successfully added player {playerName}",

View File

@@ -212,6 +212,12 @@ abstract class AppLocalizations {
/// **'Yellow'**
String get color_yellow;
/// No description provided for @confirm.
///
/// In en, this message translates to:
/// **'Confirm'**
String get confirm;
/// No description provided for @could_not_add_player.
///
/// In en, this message translates to:
@@ -242,18 +248,18 @@ abstract class AppLocalizations {
/// **'Create new group'**
String get create_new_group;
/// No description provided for @created_on.
///
/// In en, this message translates to:
/// **'Created on'**
String get created_on;
/// No description provided for @create_new_match.
///
/// In en, this message translates to:
/// **'Create new match'**
String get create_new_match;
/// No description provided for @created_on.
///
/// In en, this message translates to:
/// **'Created on'**
String get created_on;
/// No description provided for @data.
///
/// In en, this message translates to:
@@ -320,11 +326,11 @@ abstract class AppLocalizations {
/// **'Delete Match'**
String get delete_match;
/// No description provided for @drag_to_set_placement.
/// No description provided for @delete_player.
///
/// In en, this message translates to:
/// **'Drag to set placement'**
String get drag_to_set_placement;
/// **'Delete player?'**
String get delete_player;
/// No description provided for @description.
///
@@ -332,6 +338,12 @@ abstract class AppLocalizations {
/// **'Description'**
String get description;
/// No description provided for @drag_to_set_placement.
///
/// In en, this message translates to:
/// **'Drag to set placement'**
String get drag_to_set_placement;
/// No description provided for @edit_game.
///
/// In en, this message translates to:
@@ -350,6 +362,18 @@ abstract class AppLocalizations {
/// **'Edit Match'**
String get edit_match;
/// No description provided for @edit_name.
///
/// In en, this message translates to:
/// **'Edit name'**
String get edit_name;
/// No description provided for @edit_player.
///
/// In en, this message translates to:
/// **'Edit player'**
String get edit_player;
/// No description provided for @enter_points.
///
/// In en, this message translates to:
@@ -452,6 +476,18 @@ abstract class AppLocalizations {
/// **'Groups'**
String get groups;
/// No description provided for @groups_part_of.
///
/// In en, this message translates to:
/// **'Groups part of'**
String get groups_part_of;
/// No description provided for @highest_score.
///
/// In en, this message translates to:
/// **'Highest Score'**
String get highest_score;
/// No description provided for @home.
///
/// In en, this message translates to:
@@ -512,6 +548,18 @@ abstract class AppLocalizations {
/// **'Live Edit Mode'**
String get live_edit_mode;
/// No description provided for @loser.
///
/// In en, this message translates to:
/// **'Loser'**
String get loser;
/// No description provided for @lowest_score.
///
/// In en, this message translates to:
/// **'Lowest Score'**
String get lowest_score;
/// No description provided for @match_in_progress.
///
/// In en, this message translates to:
@@ -536,6 +584,24 @@ abstract class AppLocalizations {
/// **'Matches'**
String get matches;
/// No description provided for @matches_part_of.
///
/// In en, this message translates to:
/// **'Matches part of'**
String get matches_part_of;
/// No description provided for @matches_played.
///
/// In en, this message translates to:
/// **'Matches played'**
String get matches_played;
/// No description provided for @matches_won.
///
/// In en, this message translates to:
/// **'Matches won'**
String get matches_won;
/// No description provided for @members.
///
/// In en, this message translates to:
@@ -548,6 +614,12 @@ abstract class AppLocalizations {
/// **'Most Points'**
String get most_points;
/// No description provided for @multiple_winners.
///
/// In en, this message translates to:
/// **'Multiple Winners'**
String get multiple_winners;
/// No description provided for @no_data_available.
///
/// In en, this message translates to:
@@ -566,18 +638,18 @@ abstract class AppLocalizations {
/// **'No groups created yet'**
String get no_groups_created_yet;
/// No description provided for @no_licenses_found.
///
/// In en, this message translates to:
/// **'No licenses found'**
String get no_licenses_found;
/// No description provided for @no_license_text_available.
///
/// In en, this message translates to:
/// **'No license text available'**
String get no_license_text_available;
/// No description provided for @no_licenses_found.
///
/// In en, this message translates to:
/// **'No licenses found'**
String get no_licenses_found;
/// No description provided for @no_matches_created_yet.
///
/// In en, this message translates to:
@@ -644,18 +716,18 @@ abstract class AppLocalizations {
/// **'Not available'**
String get not_available;
/// No description provided for @placement.
///
/// In en, this message translates to:
/// **'Placement'**
String get placement;
/// No description provided for @place.
///
/// In en, this message translates to:
/// **'place'**
String get place;
/// No description provided for @placement.
///
/// In en, this message translates to:
/// **'Placement'**
String get placement;
/// No description provided for @played_matches.
///
/// In en, this message translates to:
@@ -668,6 +740,12 @@ abstract class AppLocalizations {
/// **'Player name'**
String get player_name;
/// No description provided for @player_profile.
///
/// In en, this message translates to:
/// **'Player Profile'**
String get player_profile;
/// No description provided for @players.
///
/// In en, this message translates to:
@@ -764,6 +842,12 @@ abstract class AppLocalizations {
/// **'Search for players'**
String get search_for_players;
/// No description provided for @select_loser.
///
/// In en, this message translates to:
/// **'Select Loser'**
String get select_loser;
/// No description provided for @select_winner.
///
/// In en, this message translates to:
@@ -776,18 +860,18 @@ abstract class AppLocalizations {
/// **'Select Winners'**
String get select_winners;
/// No description provided for @select_loser.
///
/// In en, this message translates to:
/// **'Select Loser'**
String get select_loser;
/// No description provided for @selected_players.
///
/// In en, this message translates to:
/// **'Selected players'**
String get selected_players;
/// No description provided for @set_name.
///
/// In en, this message translates to:
/// **'Set name'**
String get set_name;
/// No description provided for @settings.
///
/// In en, this message translates to:
@@ -806,30 +890,6 @@ abstract class AppLocalizations {
/// **'Single Winner'**
String get single_winner;
/// No description provided for @highest_score.
///
/// In en, this message translates to:
/// **'Highest Score'**
String get highest_score;
/// No description provided for @loser.
///
/// In en, this message translates to:
/// **'Loser'**
String get loser;
/// No description provided for @lowest_score.
///
/// In en, this message translates to:
/// **'Lowest Score'**
String get lowest_score;
/// No description provided for @multiple_winners.
///
/// In en, this message translates to:
/// **'Multiple Winners'**
String get multiple_winners;
/// No description provided for @statistics.
///
/// In en, this message translates to:

View File

@@ -65,6 +65,9 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get color_yellow => 'Gelb';
@override
String get confirm => 'Bestätigen';
@override
String could_not_add_player(Object playerName) {
return 'Spieler:in $playerName konnte nicht hinzugefügt werden';
@@ -83,10 +86,10 @@ class AppLocalizationsDe extends AppLocalizations {
String get create_new_group => 'Neue Gruppe erstellen';
@override
String get created_on => 'Erstellt am';
String get create_new_match => 'Neues Spiel erstellen';
@override
String get create_new_match => 'Neues Spiel erstellen';
String get created_on => 'Erstellt am';
@override
String get data => 'Daten';
@@ -132,11 +135,14 @@ class AppLocalizationsDe extends AppLocalizations {
String get delete_match => 'Spiel löschen';
@override
String get drag_to_set_placement => 'Ziehen um Platzierung zu setzen';
String get delete_player => 'Spieler:in löschen';
@override
String get description => 'Beschreibung';
@override
String get drag_to_set_placement => 'Ziehen um Platzierung zu setzen';
@override
String get edit_game => 'Spielvorlage bearbeiten';
@@ -146,6 +152,12 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get edit_match => 'Gruppe bearbeiten';
@override
String get edit_name => 'Name ändern';
@override
String get edit_player => 'Spieler bearbeiten';
@override
String get enter_points => 'Punkte eingeben';
@@ -201,6 +213,12 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get groups => 'Gruppen';
@override
String get groups_part_of => 'Gruppen Teil von';
@override
String get highest_score => 'Höchste Punkte';
@override
String get home => 'Startseite';
@@ -231,6 +249,12 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get live_edit_mode => 'Live-Bearbeitungsmodus';
@override
String get loser => 'Verlierer:in';
@override
String get lowest_score => 'Niedrigste Punkte';
@override
String get match_in_progress => 'Spiel läuft...';
@@ -243,12 +267,24 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get matches => 'Spiele';
@override
String get matches_part_of => 'Spiele Teil von';
@override
String get matches_played => 'Spiele gespielt';
@override
String get matches_won => 'Spiele gewonnen';
@override
String get members => 'Mitglieder';
@override
String get most_points => 'Höchste Punkte';
@override
String get multiple_winners => 'Mehrere Gewinner:innen';
@override
String get no_data_available => 'Keine Daten verfügbar';
@@ -259,10 +295,10 @@ class AppLocalizationsDe extends AppLocalizations {
String get no_groups_created_yet => 'Noch keine Gruppen erstellt';
@override
String get no_licenses_found => 'Keine Lizenzen gefunden';
String get no_license_text_available => 'Kein Lizenztext verfügbar';
@override
String get no_license_text_available => 'Kein Lizenztext verfügbar';
String get no_licenses_found => 'Keine Lizenzen gefunden';
@override
String get no_matches_created_yet => 'Noch keine Spiele erstellt';
@@ -299,10 +335,10 @@ class AppLocalizationsDe extends AppLocalizations {
String get not_available => 'Nicht verfügbar';
@override
String get placement => 'Platzierung';
String get place => 'Platz';
@override
String get place => 'Platz';
String get placement => 'Platzierung';
@override
String get played_matches => 'Gespielte Spiele';
@@ -310,6 +346,9 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get player_name => 'Spieler:innenname';
@override
String get player_profile => 'Spieler:in-Profil';
@override
String get players => 'Spieler:innen';
@@ -363,6 +402,9 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get search_for_players => 'Nach Spieler:innen suchen';
@override
String get select_loser => 'Verlierer:in wählen';
@override
String get select_winner => 'Gewinner:in wählen';
@@ -370,10 +412,10 @@ class AppLocalizationsDe extends AppLocalizations {
String get select_winners => 'Gewinner:innen wählen';
@override
String get select_loser => 'Verlierer:in wählen';
String get selected_players => 'Ausgewählte Spieler:innen';
@override
String get selected_players => 'Ausgewählte Spieler:innen';
String get set_name => 'Name setzen';
@override
String get settings => 'Einstellungen';
@@ -384,18 +426,6 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get single_winner => 'Ein:e Gewinner:in';
@override
String get highest_score => 'Höchste Punkte';
@override
String get loser => 'Verlierer:in';
@override
String get lowest_score => 'Niedrigste Punkte';
@override
String get multiple_winners => 'Mehrere Gewinner:innen';
@override
String get statistics => 'Statistiken';

View File

@@ -65,6 +65,9 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get color_yellow => 'Yellow';
@override
String get confirm => 'Confirm';
@override
String could_not_add_player(Object playerName) {
return 'Could not add player';
@@ -83,10 +86,10 @@ class AppLocalizationsEn extends AppLocalizations {
String get create_new_group => 'Create new group';
@override
String get created_on => 'Created on';
String get create_new_match => 'Create new match';
@override
String get create_new_match => 'Create new match';
String get created_on => 'Created on';
@override
String get data => 'Data';
@@ -132,11 +135,14 @@ class AppLocalizationsEn extends AppLocalizations {
String get delete_match => 'Delete Match';
@override
String get drag_to_set_placement => 'Drag to set placement';
String get delete_player => 'Delete player?';
@override
String get description => 'Description';
@override
String get drag_to_set_placement => 'Drag to set placement';
@override
String get edit_game => 'Edit Game';
@@ -146,6 +152,12 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get edit_match => 'Edit Match';
@override
String get edit_name => 'Edit name';
@override
String get edit_player => 'Edit player';
@override
String get enter_points => 'Enter points';
@@ -201,6 +213,12 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get groups => 'Groups';
@override
String get groups_part_of => 'Groups part of';
@override
String get highest_score => 'Highest Score';
@override
String get home => 'Home';
@@ -231,6 +249,12 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get live_edit_mode => 'Live Edit Mode';
@override
String get loser => 'Loser';
@override
String get lowest_score => 'Lowest Score';
@override
String get match_in_progress => 'Match in progress...';
@@ -243,12 +267,24 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get matches => 'Matches';
@override
String get matches_part_of => 'Matches part of';
@override
String get matches_played => 'Matches played';
@override
String get matches_won => 'Matches won';
@override
String get members => 'Members';
@override
String get most_points => 'Most Points';
@override
String get multiple_winners => 'Multiple Winners';
@override
String get no_data_available => 'No data available';
@@ -259,10 +295,10 @@ class AppLocalizationsEn extends AppLocalizations {
String get no_groups_created_yet => 'No groups created yet';
@override
String get no_licenses_found => 'No licenses found';
String get no_license_text_available => 'No license text available';
@override
String get no_license_text_available => 'No license text available';
String get no_licenses_found => 'No licenses found';
@override
String get no_matches_created_yet => 'No matches created yet';
@@ -299,10 +335,10 @@ class AppLocalizationsEn extends AppLocalizations {
String get not_available => 'Not available';
@override
String get placement => 'Placement';
String get place => 'place';
@override
String get place => 'place';
String get placement => 'Placement';
@override
String get played_matches => 'Played Matches';
@@ -310,6 +346,9 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get player_name => 'Player name';
@override
String get player_profile => 'Player Profile';
@override
String get players => 'Players';
@@ -363,6 +402,9 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get search_for_players => 'Search for players';
@override
String get select_loser => 'Select Loser';
@override
String get select_winner => 'Select Winner';
@@ -370,10 +412,10 @@ class AppLocalizationsEn extends AppLocalizations {
String get select_winners => 'Select Winners';
@override
String get select_loser => 'Select Loser';
String get selected_players => 'Selected players';
@override
String get selected_players => 'Selected players';
String get set_name => 'Set name';
@override
String get settings => 'Settings';
@@ -384,18 +426,6 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get single_winner => 'Single Winner';
@override
String get highest_score => 'Highest Score';
@override
String get loser => 'Loser';
@override
String get lowest_score => 'Lowest Score';
@override
String get multiple_winners => 'Multiple Winners';
@override
String get statistics => 'Statistics';

View File

@@ -90,7 +90,7 @@ class _PlayerDetailViewState extends State<PlayerDetailView> {
return Scaffold(
appBar: AppBar(
title: const Text('Player Profile'),
title: Text(loc.player_profile),
actions: [
HapticIconButton(
icon: const Icon(Icons.delete),
@@ -98,7 +98,7 @@ class _PlayerDetailViewState extends State<PlayerDetailView> {
showDialog<bool>(
context: context,
builder: (context) => CustomAlertDialog(
title: 'Delete player?',
title: loc.delete_player,
content: Text(loc.this_cannot_be_undone),
actions: [
CustomDialogAction(
@@ -178,7 +178,7 @@ class _PlayerDetailViewState extends State<PlayerDetailView> {
),
const SizedBox(height: 20),
InfoTile(
title: "Matches part of (${totalMatches})",
title: "${loc.matches_part_of} (${totalMatches})",
icon: Icons.sports_esports,
horizontalAlignment: CrossAxisAlignment.start,
content: AppSkeleton(
@@ -201,7 +201,7 @@ class _PlayerDetailViewState extends State<PlayerDetailView> {
),
const SizedBox(height: 15),
InfoTile(
title: "Groups part of (${totalGroups})",
title: "${loc.groups_part_of} (${totalGroups})",
icon: Icons.people,
horizontalAlignment: CrossAxisAlignment.start,
content: AppSkeleton(
@@ -232,12 +232,12 @@ class _PlayerDetailViewState extends State<PlayerDetailView> {
child: Column(
children: [
_buildStatRow(
"Matches played",
loc.matches_played,
totalMatches.toString(),
),
_buildStatRow("Matches won", matchesWon.toString()),
_buildStatRow(loc.matches_won, matchesWon.toString()),
_buildStatRow(
"Winrate",
loc.winrate,
'${totalMatches == 0 ? 0 : ((matchesWon / totalMatches) * 100).round()}%',
),
],
@@ -249,7 +249,7 @@ class _PlayerDetailViewState extends State<PlayerDetailView> {
Positioned(
bottom: MediaQuery.paddingOf(context).bottom,
child: MainMenuButton(
text: "Edit player",
text: loc.edit_player,
icon: Icons.edit,
onPressed: () async {
nameController.text = _player.name;
@@ -258,10 +258,10 @@ class _PlayerDetailViewState extends State<PlayerDetailView> {
builder: (context) => StatefulBuilder(
builder: (context, setDialogState) {
return CustomAlertDialog(
title: "Change Name",
title: loc.edit_name,
content: TextInputField(
controller: nameController,
hintText: 'Set a player name',
hintText: loc.set_name,
onChanged: (_) => setDialogState(() {}),
),
actions: [
@@ -269,7 +269,7 @@ class _PlayerDetailViewState extends State<PlayerDetailView> {
onPressed: isConfirmButtonEnabled()
? () => Navigator.of(context).pop(true)
: null,
text: "Confirm",
text: loc.confirm,
),
CustomDialogAction(
onPressed: () => Navigator.of(context).pop(false),