Translate categories and equipment in other parts of the application

This commit is contained in:
Roland Geider
2022-04-13 12:08:46 +02:00
parent 6622fad56b
commit bf710bc5d5
4 changed files with 18 additions and 14 deletions

View File

@@ -22,6 +22,7 @@ import 'package:flutter_html/flutter_html.dart';
import 'package:flutter_svg/svg.dart';
import 'package:provider/provider.dart';
import 'package:wger/helpers/consts.dart';
import 'package:wger/helpers/i18n.dart';
import 'package:wger/models/exercises/exercise.dart';
import 'package:wger/models/exercises/muscle.dart';
import 'package:wger/providers/exercises.dart';
@@ -44,7 +45,7 @@ class ExerciseDetail extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
// Category and equipment
getCategoriesAndEquipment(),
getCategoriesAndEquipment(context),
// Videos
...getVideos(),
@@ -190,14 +191,16 @@ class ExerciseDetail extends StatelessWidget {
return out;
}
Widget getCategoriesAndEquipment() {
Widget getCategoriesAndEquipment(BuildContext context) {
final List<Widget> out = [];
out.add(Chip(
label: Text(_exercise.baseObj.category.name),
));
out.add(
Chip(label: Text(getTranslation(_exercise.baseObj.category.name, context))),
);
if (_exercise.baseObj.equipment.isNotEmpty) {
_exercise.baseObj.equipment.map((e) => Chip(label: Text(e.name))).forEach((element) {
_exercise.baseObj.equipment
.map((e) => Chip(label: Text(getTranslation(e.name, context))))
.forEach((element) {
out.add(element);
});
}

View File

@@ -18,6 +18,7 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:wger/helpers/i18n.dart';
import 'package:wger/providers/exercises.dart';
class ExerciseFilterModalBody extends StatefulWidget {
@@ -26,8 +27,7 @@ class ExerciseFilterModalBody extends StatefulWidget {
}) : super(key: key);
@override
_ExerciseFilterModalBodyState createState() =>
_ExerciseFilterModalBodyState();
_ExerciseFilterModalBodyState createState() => _ExerciseFilterModalBodyState();
}
class _ExerciseFilterModalBodyState extends State<ExerciseFilterModalBody> {
@@ -70,12 +70,11 @@ class _ExerciseFilterModalBodyState extends State<ExerciseFilterModalBody> {
children: filterCategory.items.entries.map(
(currentEntry) {
return SwitchListTile(
title: Text(currentEntry.key.name),
title: Text(getTranslation(currentEntry.key.name, context)),
value: currentEntry.value,
onChanged: (_) {
setState(() {
filterCategory.items
.update(currentEntry.key, (value) => !value);
filterCategory.items.update(currentEntry.key, (value) => !value);
Provider.of<ExercisesProvider>(context, listen: false)
.setFilters(filters);
});

View File

@@ -17,6 +17,7 @@
*/
import 'package:flutter/material.dart';
import 'package:wger/helpers/i18n.dart';
import 'package:wger/models/exercises/exercise.dart';
import 'package:wger/screens/exercise_screen.dart';
import 'package:wger/widgets/exercises/images.dart';
@@ -56,7 +57,7 @@ class ExerciseListTile extends StatelessWidget {
maxLines: 2,
),
subtitle: Text(
'${exercise.category.name} / ${exercise.equipment.map((e) => e.name).toList().join(', ')}',
'${getTranslation(exercise.category.name, context)} / ${exercise.equipment.map((e) => getTranslation(e.name, context)).toList().join(', ')}',
),
onTap: () {
Navigator.pushNamed(context, ExerciseDetailScreen.routeName, arguments: exercise);

View File

@@ -25,6 +25,7 @@ import 'package:provider/provider.dart';
import 'package:wger/exceptions/http_exception.dart';
import 'package:wger/helpers/consts.dart';
import 'package:wger/helpers/gym_mode.dart';
import 'package:wger/helpers/i18n.dart';
import 'package:wger/helpers/json.dart';
import 'package:wger/helpers/misc.dart';
import 'package:wger/helpers/ui.dart';
@@ -682,13 +683,13 @@ class ExerciseOverview extends StatelessWidget {
padding: const EdgeInsets.symmetric(horizontal: 15),
children: [
Text(
_exercise.category.name,
getTranslation(_exercise.category.name, context),
style: Theme.of(context).textTheme.headline6,
textAlign: TextAlign.center,
),
..._exercise.equipment
.map((e) => Text(
e.name,
getTranslation(e.name, context),
style: Theme.of(context).textTheme.headline6,
textAlign: TextAlign.center,
))