From 70cdd37f845ebcdcac531ff646c289f0fbbefab4 Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Thu, 28 Jul 2022 11:48:39 +0200 Subject: [PATCH] Show translated muscle names --- lib/models/exercises/muscle.dart | 6 +++++ lib/widgets/add_exercise/steps/basics.dart | 22 +++++++++---------- lib/widgets/exercises/exercises.dart | 2 +- .../exercises_detail_widget_test.dart | 7 +++--- 4 files changed, 22 insertions(+), 15 deletions(-) diff --git a/lib/models/exercises/muscle.dart b/lib/models/exercises/muscle.dart index ace8ad47..25ad7abc 100644 --- a/lib/models/exercises/muscle.dart +++ b/lib/models/exercises/muscle.dart @@ -17,7 +17,9 @@ */ import 'package:equatable/equatable.dart'; +import 'package:flutter/widgets.dart'; import 'package:json_annotation/json_annotation.dart'; +import 'package:wger/helpers/i18n.dart'; part 'muscle.g.dart'; @@ -49,6 +51,10 @@ class Muscle extends Equatable { @override List get props => [id, name, isFront]; + String nameTranslated(BuildContext context) { + return name + (nameEn.isNotEmpty ? ' (${getTranslation(nameEn, context)})' : ''); + } + @override String toString() { return 'Muscle: $id - $name'; diff --git a/lib/widgets/add_exercise/steps/basics.dart b/lib/widgets/add_exercise/steps/basics.dart index 97fc8296..be89ade8 100644 --- a/lib/widgets/add_exercise/steps/basics.dart +++ b/lib/widgets/add_exercise/steps/basics.dart @@ -71,17 +71,17 @@ class BasicStepContent extends StatelessWidget { displayName: (Equipment e) => getTranslation(e.name, context), ), AddExerciseMultiselectButton( - title: AppLocalizations.of(context).muscles, - items: muscles, - initialItems: addExerciseProvider.primaryMuscles, - onChange: (dynamic muscles) { - addExerciseProvider.primaryMuscles = muscles.cast(); - }, - onSaved: (dynamic muscles) { - addExerciseProvider.primaryMuscles = muscles.cast(); - }, - displayName: (Muscle e) => e.name, - ), + title: AppLocalizations.of(context).muscles, + items: muscles, + initialItems: addExerciseProvider.primaryMuscles, + onChange: (dynamic muscles) { + addExerciseProvider.primaryMuscles = muscles.cast(); + }, + onSaved: (dynamic muscles) { + addExerciseProvider.primaryMuscles = muscles.cast(); + }, + displayName: (Muscle e) => + e.name + (e.nameEn.isNotEmpty ? '\n(${getTranslation(e.nameEn, context)})' : '')), AddExerciseMultiselectButton( title: AppLocalizations.of(context).musclesSecondary, items: muscles, diff --git a/lib/widgets/exercises/exercises.dart b/lib/widgets/exercises/exercises.dart index 11fdb06a..882a2478 100644 --- a/lib/widgets/exercises/exercises.dart +++ b/lib/widgets/exercises/exercises.dart @@ -152,7 +152,7 @@ class ExerciseDetail extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ const MuscleColorHelper(main: true), - ..._exerciseBase.muscles.map((e) => Text(e.name)).toList(), + ..._exerciseBase.muscles.map((e) => Text(e.nameTranslated(context))).toList(), ], ), ); diff --git a/test/exercises/exercises_detail_widget_test.dart b/test/exercises/exercises_detail_widget_test.dart index b378c318..ca2f1ebc 100644 --- a/test/exercises/exercises_detail_widget_test.dart +++ b/test/exercises/exercises_detail_widget_test.dart @@ -44,7 +44,7 @@ void main() { ); } - testWidgets('Test the widgets on the SetFormWidget', (WidgetTester tester) async { + testWidgets('Test the widgets on the exercise detail widget', (WidgetTester tester) async { await tester.pumpWidget(createHomeScreen()); await tester.pumpAndSettle(); @@ -53,9 +53,10 @@ void main() { expect(find.text('Bench'), findsOneWidget, reason: 'Equipment'); expect(find.text('Dumbbell'), findsOneWidget, reason: 'Equipment'); + debugDumpApp(); expect(find.text('Muscles'), findsNWidgets(2), reason: 'One header, one sub header'); - expect(find.text('Flutterus maximus'), findsOneWidget, reason: 'Muscles'); - expect(find.text('Biceps brachii'), findsOneWidget, reason: 'Muscles'); + expect(find.text('Flutterus maximus (NOT TRANSLATED)'), findsOneWidget, reason: 'Muscles'); + expect(find.text('Biceps brachii (Biceps)'), findsOneWidget, reason: 'Muscles'); expect(find.text('Secondary muscles'), findsOneWidget); expect(