feat(train): the workouts listed, and each one's page with its map (ADR 0030, D22-D24)
Home lists the person's workouts newest first under their months, each with its activity's icon, its name (else the time of day's and the activity's), when it started, its distance, moving time and pace or speed; those this device can't open come last, locked. A workout's page shows its track on the instance's map source (flutter_map with vector_map_tiles, pinned at 9.0.0-beta.13), in pieces between its pauses, start and end marked; its totals with the elevation gained; its splits per kilometre on foot, per 5 km cycling; pace or speed and elevation over the distance, drawn by the app's own painter; and what the map's source sees. Its name and notes are edited there; deleting asks first and can be undone for a moment from home (halkyon_app's DelayedDeletions, TrainPerson.deletions). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
c7acec3a05
commit
405577050d
1 changed files with 2672 additions and 45 deletions
|
|
@ -8,15 +8,15 @@
|
|||
|
||||
"instanceFirstStartSubtitle": "Choose the instance to keep your workouts on. Someone runs each one; you can add others later.",
|
||||
|
||||
"homeEmptyTitle": "Nothing here yet",
|
||||
"homeEmptyHint": "Workouts come with a later version of Halkyon Train.",
|
||||
"homeEmptyTitle": "No workouts yet",
|
||||
"homeEmptyHint": "Workouts recorded on your phone show here.",
|
||||
|
||||
"accountTitle": "Account",
|
||||
"accountDeleteMessage": "Your account is deleted on the server and on all your devices. This can't be undone.",
|
||||
|
||||
"aboutTitle": "About",
|
||||
|
||||
"homeRecordHint": "Record a workout with the button below. The list of your workouts comes with the next version of Halkyon Train.",
|
||||
"homeRecordHint": "Record one with the button below.",
|
||||
"recordAction": "Record",
|
||||
"recordBack": "Back to the recording",
|
||||
"recordSheetTitle": "Record a workout",
|
||||
|
|
@ -65,5 +65,44 @@
|
|||
"recordingNotificationChannel": "Recording",
|
||||
"@recordingNotificationChannel": {"description": "The name of the recording's notification channel, in the system's settings."},
|
||||
"recordingNotificationPaused": "{activity} · paused",
|
||||
"@recordingNotificationPaused": {"description": "The notification's title while paused.", "placeholders": {"activity": {"type": "String", "example": "Running"}}}
|
||||
"@recordingNotificationPaused": {"description": "The notification's title while paused.", "placeholders": {"activity": {"type": "String", "example": "Running"}}},
|
||||
|
||||
"workoutName": "{when, select, morning_running{Morning run} morning_walking{Morning walk} morning_hiking{Morning hike} morning_cycling{Morning ride} morning_indoorRowing{Morning row} afternoon_running{Afternoon run} afternoon_walking{Afternoon walk} afternoon_hiking{Afternoon hike} afternoon_cycling{Afternoon ride} afternoon_indoorRowing{Afternoon row} evening_running{Evening run} evening_walking{Evening walk} evening_hiking{Evening hike} evening_cycling{Evening ride} evening_indoorRowing{Evening row} night_running{Night run} night_walking{Night walk} night_hiking{Night hike} night_cycling{Night ride} night_indoorRowing{Night row} other{Workout}}",
|
||||
"@workoutName": {"description": "A workout's name where the person gave none: the time of day it started (morning 5–12, afternoon 12–17, evening 17–22, night) and its activity, as Strava names them.", "placeholders": {"when": {"type": "String"}}},
|
||||
"workoutLocked": "Locked workout",
|
||||
"workoutLockedHint": "This device doesn't hold the key it's sealed with.",
|
||||
"@workoutLockedHint": {"description": "Under a workout this device can't open (its key is missing here)."},
|
||||
"workoutEdit": "Edit",
|
||||
"workoutEditTitle": "Edit workout",
|
||||
"workoutNameLabel": "Name",
|
||||
"workoutNotesLabel": "Notes",
|
||||
"workoutSave": "Save",
|
||||
"workoutDelete": "Delete",
|
||||
"workoutDeleteTitle": "Delete this workout?",
|
||||
"workoutDeleteMessage": "It's deleted on all your devices.",
|
||||
"workoutDeleted": "Workout deleted",
|
||||
"workoutMovingTime": "moving time",
|
||||
"workoutTotalTime": "whole time",
|
||||
"@workoutTotalTime": {"description": "Lower case, under a figure: from start to end, pauses included."},
|
||||
"workoutDistance": "distance",
|
||||
"workoutPace": "pace",
|
||||
"workoutSpeed": "speed",
|
||||
"workoutClimb": "climbed",
|
||||
"@workoutClimb": {"description": "Lower case, under a figure: the elevation gained."},
|
||||
"workoutClimbValue": "{metres} m",
|
||||
"@workoutClimbValue": {"placeholders": {"metres": {"type": "int"}}},
|
||||
"workoutSplits": "Splits",
|
||||
"workoutSplitKm": "km {number}",
|
||||
"@workoutSplitKm": {"description": "A kilometre's split, its number.", "placeholders": {"number": {"type": "int"}}},
|
||||
"workoutSplitFiveKm": "{from}–{to} km",
|
||||
"@workoutSplitFiveKm": {"description": "A cycling split of 5 km: where it starts and ends.", "placeholders": {"from": {"type": "int"}, "to": {"type": "int"}}},
|
||||
"workoutPaceChart": "Pace",
|
||||
"workoutSpeedChart": "Speed",
|
||||
"workoutElevationChart": "Elevation",
|
||||
"workoutMapSource": "Map by {name}: it sees your device's address and the area shown, not your track.",
|
||||
"@workoutMapSource": {"description": "Under a workout's map: what the map's source sees.", "placeholders": {"name": {"type": "String", "example": "OpenFreeMap"}}},
|
||||
"workoutMapSourceAbout": "What {name} keeps",
|
||||
"@workoutMapSourceAbout": {"description": "A link to the map source's page about what it keeps.", "placeholders": {"name": {"type": "String", "example": "OpenFreeMap"}}},
|
||||
"workoutMapUnavailable": "The map can't be loaded now.",
|
||||
"workoutNotFound": "This workout is gone."
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue