feat(watch): add localizations for workout UI strings

This commit is contained in:
2026-08-09 18:03:36 +02:00
parent 8512bee27a
commit 1387d6bbdb
3 changed files with 241 additions and 4 deletions
+2 -2
View File
@@ -52,7 +52,7 @@ struct WorkoutListView: View {
} label: { } label: {
HStack { HStack {
VStack(alignment: .leading, spacing: 4) { VStack(alignment: .leading, spacing: 4) {
Text(workout.name ?? String(localized: "Workout")) Text(workout.name ?? "Workout")
.font(.headline) .font(.headline)
.foregroundColor(.primary) .foregroundColor(.primary)
Text("\(workout.sets.reduce(0) { $0 + $1.distancePerRep * $1.repCount })m · \(workout.sets.count) sets") Text("\(workout.sets.reduce(0) { $0 + $1.distancePerRep * $1.repCount })m · \(workout.sets.count) sets")
@@ -77,7 +77,7 @@ struct WorkoutListView: View {
ForEach(workoutManager.completedWorkouts.prefix(3)) { workout in ForEach(workoutManager.completedWorkouts.prefix(3)) { workout in
HStack { HStack {
VStack(alignment: .leading, spacing: 2) { VStack(alignment: .leading, spacing: 2) {
Text(workout.name ?? String(localized: "Workout")) Text(workout.name ?? "Workout")
.font(.subheadline) .font(.subheadline)
.foregroundColor(.primary) .foregroundColor(.primary)
Text(workout.completedAt ?? "") Text(workout.completedAt ?? "")
+236
View File
@@ -1346,6 +1346,242 @@
} }
} }
}, },
"End Workout" : {
"extractionState" : "manual",
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Workout beenden"
}
},
"dk" : {
"stringUnit" : {
"state" : "translated",
"value" : "Afslut træning"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "End Workout"
}
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Finalizar entrenamiento"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Terminer l'entraînement"
}
},
"it" : {
"stringUnit" : {
"state" : "translated",
"value" : "Termina allenamento"
}
},
"nl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Workout beëindigen"
}
},
"pl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Zakończ trening"
}
},
"pt" : {
"stringUnit" : {
"state" : "translated",
"value" : "Terminar treino"
}
}
}
},
"Pause" : {
"extractionState" : "manual",
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Pause"
}
},
"dk" : {
"stringUnit" : {
"state" : "translated",
"value" : "Pause"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Pause"
}
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Pausa"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Pause"
}
},
"it" : {
"stringUnit" : {
"state" : "translated",
"value" : "Pausa"
}
},
"nl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Pauze"
}
},
"pl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Pauza"
}
},
"pt" : {
"stringUnit" : {
"state" : "translated",
"value" : "Pausa"
}
}
}
},
"Resume" : {
"extractionState" : "manual",
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Fortsetzen"
}
},
"dk" : {
"stringUnit" : {
"state" : "translated",
"value" : "Forsæt"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Resume"
}
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Reanudar"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Reprendre"
}
},
"it" : {
"stringUnit" : {
"state" : "translated",
"value" : "Riprendi"
}
},
"nl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Hervatten"
}
},
"pl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Wznów"
}
},
"pt" : {
"stringUnit" : {
"state" : "translated",
"value" : "Retomar"
}
}
}
},
"Rest %@" : {
"extractionState" : "manual",
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Pause %@"
}
},
"dk" : {
"stringUnit" : {
"state" : "translated",
"value" : "Hvile %@"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Rest %@"
}
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Descanso %@"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Repos %@"
}
},
"it" : {
"stringUnit" : {
"state" : "translated",
"value" : "Recupero %@"
}
},
"nl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Rust %@"
}
},
"pl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Odpoczynek %@"
}
},
"pt" : {
"stringUnit" : {
"state" : "translated",
"value" : "Descanso %@"
}
}
}
},
"Workout complete!" : { "Workout complete!" : {
"extractionState" : "manual", "extractionState" : "manual",
"localizations" : { "localizations" : {
+3 -2
View File
@@ -8,14 +8,15 @@ struct WorkoutDetailView: View {
if let workout = workoutManager.selectedWorkout { if let workout = workoutManager.selectedWorkout {
Section { Section {
VStack(spacing: 8) { VStack(spacing: 8) {
Text(workout.name ?? String(localized: "Workout")) Text(workout.name ?? "Workout")
.font(.headline) .font(.headline)
Text("\(Int(workout.poolLength))m pool") Text("\(Int(workout.poolLength))m pool")
.font(.caption) .font(.caption)
.foregroundColor(.secondary) .foregroundColor(.secondary)
Text("\(workout.sets.reduce(0) { $0 + $1.distancePerRep * $1.repCount })m total") let totalM = workout.sets.reduce(0) { $0 + $1.distancePerRep * $1.repCount }
Text("\(totalM)m total")
.font(.caption) .font(.caption)
.foregroundColor(.secondary) .foregroundColor(.secondary)
} }