From 616c23937551d54ad0c270abc10fff3aceaa143f Mon Sep 17 00:00:00 2001 From: Mathis Kirchner Date: Sat, 9 May 2026 17:47:23 +0200 Subject: [PATCH] change placement to text in match detail view --- lib/l10n/arb/app_de.arb | 1 + lib/l10n/arb/app_en.arb | 4 +++ lib/l10n/generated/app_localizations.dart | 6 ++++ lib/l10n/generated/app_localizations_de.dart | 5 ++- lib/l10n/generated/app_localizations_en.dart | 3 ++ .../match_view/match_detail_view.dart | 33 ++++++++++++++++++- 6 files changed, 50 insertions(+), 2 deletions(-) diff --git a/lib/l10n/arb/app_de.arb b/lib/l10n/arb/app_de.arb index a09ef91..bdb1da2 100644 --- a/lib/l10n/arb/app_de.arb +++ b/lib/l10n/arb/app_de.arb @@ -73,6 +73,7 @@ "none_group": "Keine", "not_available": "Nicht verfügbar", "placement": "Platzierung", + "place": "Platz", "played_matches": "Gespielte Spiele", "player_name": "Spieler:innenname", "players": "Spieler:innen", diff --git a/lib/l10n/arb/app_en.arb b/lib/l10n/arb/app_en.arb index 82f7404..a987a38 100644 --- a/lib/l10n/arb/app_en.arb +++ b/lib/l10n/arb/app_en.arb @@ -224,6 +224,9 @@ "@placement": { "description": "Title for placement ruleset" }, + "@place": { + "description": "Label for placement text in match detail view" + }, "@played_matches": { "description": "Label for played matches statistic" }, @@ -416,6 +419,7 @@ "none_group": "None", "not_available": "Not available", "placement": "Placement", + "place": "place", "played_matches": "Played Matches", "player_name": "Player name", "players": "Players", diff --git a/lib/l10n/generated/app_localizations.dart b/lib/l10n/generated/app_localizations.dart index f4cd87c..481d5ea 100644 --- a/lib/l10n/generated/app_localizations.dart +++ b/lib/l10n/generated/app_localizations.dart @@ -536,6 +536,12 @@ abstract class AppLocalizations { /// **'Placement'** String get placement; + /// Label for placement text in match detail view + /// + /// In en, this message translates to: + /// **'place'** + String get place; + /// Label for played matches statistic /// /// In en, this message translates to: diff --git a/lib/l10n/generated/app_localizations_de.dart b/lib/l10n/generated/app_localizations_de.dart index 383c3f4..aa67755 100644 --- a/lib/l10n/generated/app_localizations_de.dart +++ b/lib/l10n/generated/app_localizations_de.dart @@ -85,7 +85,7 @@ class AppLocalizationsDe extends AppLocalizations { String get delete_match => 'Spiel löschen'; @override - String get drag_to_set_placement => 'Drag to set placement'; + String get drag_to_set_placement => 'Ziehen um Platzierung zu setzen'; @override String get edit_group => 'Gruppe bearbeiten'; @@ -235,6 +235,9 @@ class AppLocalizationsDe extends AppLocalizations { @override String get placement => 'Platzierung'; + @override + String get place => 'Platz'; + @override String get played_matches => 'Gespielte Spiele'; diff --git a/lib/l10n/generated/app_localizations_en.dart b/lib/l10n/generated/app_localizations_en.dart index 6dcfda1..180600c 100644 --- a/lib/l10n/generated/app_localizations_en.dart +++ b/lib/l10n/generated/app_localizations_en.dart @@ -235,6 +235,9 @@ class AppLocalizationsEn extends AppLocalizations { @override String get placement => 'Placement'; + @override + String get place => 'place'; + @override String get played_matches => 'Played Matches'; diff --git a/lib/presentation/views/main_menu/match_view/match_detail_view.dart b/lib/presentation/views/main_menu/match_view/match_detail_view.dart index ed02538..2dc9756 100644 --- a/lib/presentation/views/main_menu/match_view/match_detail_view.dart +++ b/lib/presentation/views/main_menu/match_view/match_detail_view.dart @@ -318,7 +318,7 @@ class _MatchDetailViewState extends State { ), Text( ruleset == Ruleset.placement - ? '#${i + 1}' + ? getPlacementText(i + 1, context, loc) : getPointLabel(loc, playerScores[i].$2), style: const TextStyle( fontSize: 16, @@ -337,4 +337,35 @@ class _MatchDetailViewState extends State { return match.game.ruleset == Ruleset.singleWinner || match.game.ruleset == Ruleset.singleLoser; } + + String getPlacementText( + int rank, + BuildContext context, + AppLocalizations loc, + ) { + final locale = Localizations.localeOf(context).languageCode; + + if (locale == 'de') { + return '$rank. ${loc.place}'; + } + + return '${_ordinalEn(rank)} ${loc.place}'; + } + + String _ordinalEn(int number) { + if (number % 100 >= 11 && number % 100 <= 13) { + return '${number}th'; + } + + switch (number % 10) { + case 1: + return '${number}st'; + case 2: + return '${number}nd'; + case 3: + return '${number}rd'; + default: + return '${number}th'; + } + } }