{ "@@locale": "en", "appTitle": "Halkyon Train", "@appTitle": {"description": "The app's name: the window's title, and where halkyon_app's texts name the app."}, "launchProduct": "Train", "@launchProduct": {"description": "The app's word in its wordmark, under \"Halkyon\"."}, "instanceFirstStartSubtitle": "Choose the instance to keep your workouts on. Someone runs each one; you can add others later.", "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 one with the button below.", "recordAction": "Record", "recordBack": "Back to the recording", "recordSheetTitle": "Record a workout", "activityRunning": "Running", "activityWalking": "Walking", "activityHiking": "Hiking", "activityCycling": "Cycling", "activityIndoorRowing": "Rowing indoors", "recordAutoPause": "Pause by itself", "@recordAutoPause": {"description": "The switch for auto-pause, as the recording starts."}, "recordAutoPauseHint": "When you stand still, and going on as you move again", "recordStart": "Start", "recordLocationRefused": "Train needs your location to record this. You can allow it in the system's settings.", "recordingWaitingForGps": "Waiting for GPS", "recordingWaitingForGpsAccuracy": "Waiting for GPS · ±{metres} m", "@recordingWaitingForGpsAccuracy": {"description": "Before a fix precise enough: how far off the last one may be.", "placeholders": {"metres": {"type": "int"}}}, "recordingGpsAccuracy": "GPS ±{metres} m", "@recordingGpsAccuracy": {"description": "How far off the last fix may be.", "placeholders": {"metres": {"type": "int"}}}, "recordingMovingTime": "moving time", "@recordingMovingTime": {"description": "Under the time, lower case: the time moved, pauses left out."}, "recordingDistance": "distance", "recordingPace": "pace", "recordingSpeed": "speed", "recordingDistanceValue": "{km} km", "@recordingDistanceValue": {"placeholders": {"km": {"type": "String", "example": "5.12"}}}, "recordingPaceValue": "{pace} /km", "@recordingPaceValue": {"description": "Minutes and seconds a kilometre takes.", "placeholders": {"pace": {"type": "String", "example": "6:18"}}}, "recordingSpeedValue": "{kmh} km/h", "@recordingSpeedValue": {"placeholders": {"kmh": {"type": "String", "example": "24.3"}}}, "recordingPausedAuto": "Paused: not moving", "@recordingPausedAuto": {"description": "Train paused the recording by itself (auto-pause)."}, "recordingPausedByHand": "Paused", "recordingPause": "Pause", "recordingResume": "Resume", "recordingStop": "Stop", "recordingHoldToStop": "Hold Stop to end the workout", "recordingStoppedTitle": "Save this workout?", "recordingSave": "Save", "recordingDiscard": "Discard", "recordingDiscardTitle": "Discard this workout?", "recordingDiscardMessage": "Its time and track are deleted from this device. This can't be undone.", "recordingSaveFailed": "It can't be saved on this device, which doesn't hold your account's keys. It stays here until it can be.", "recordingCutOffTitle": "A recording was cut off", "recordingCutOffMessage": "A recording from {start} was cut off. Save it up to {end}, or discard it?", "@recordingCutOffMessage": {"description": "A recording found unfinished as the app opened: when it started and its last sample.", "placeholders": {"start": {"type": "String", "example": "07:30"}, "end": {"type": "String", "example": "08:02"}}}, "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"}}}, "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.", "recordHeartRate": "Heart rate", "recordNoStrap": "No strap", "@recordNoStrap": {"description": "On the Record sheet, under Heart rate, where no strap is chosen."}, "strapSheetTitle": "Heart-rate strap", "strapSearching": "Looking for straps nearby…", "strapSearchingHint": "Put the strap on: most wake up only once they touch skin.", "strapNear": "close by", "@strapNear": {"description": "Under a strap found: its signal is strong."}, "strapFar": "further off", "@strapFar": {"description": "Under a strap found: its signal is weak."}, "strapUnnamed": "Unnamed strap", "@strapUnnamed": {"description": "A strap that sends no name."}, "strapForget": "Forget strap", "strapRefused": "Train needs nearby devices to find your strap. You can allow it in the system's settings.", "strapBluetoothOff": "Bluetooth is off. Turn it on to look for devices nearby.", "recordingHeartRate": "heart rate", "@recordingHeartRate": {"description": "Under the heart rate, lower case."}, "recordingStrapLost": "Strap lost", "@recordingStrapLost": {"description": "While recording: the strap is out of reach or off; Train keeps asking for it."}, "workoutAverageHeartRate": "average heart rate", "@workoutAverageHeartRate": {"description": "Lower case, under a figure."}, "workoutMaxHeartRate": "highest heart rate", "@workoutMaxHeartRate": {"description": "Lower case, under a figure."}, "workoutBpmValue": "{bpm} bpm", "@workoutBpmValue": {"placeholders": {"bpm": {"type": "int"}}}, "workoutHeartRateChart": "Heart rate", "recordRower": "Rowing machine", "recordNoRower": "Choose your rowing machine", "recordRowerRefused": "Train needs nearby devices to record from your rowing machine. You can allow it in the system's settings.", "rowerSheetTitle": "Rowing machine", "rowerSearching": "Looking for rowing machines nearby…", "rowerSearchingHint": "Wake the console: most show once you pull or press a button. One another app holds (Christopeit Connect, Kinomap) can't be found: close that app first.", "rowerUnnamed": "Unnamed rowing machine", "rowerForget": "Forget rowing machine", "rowerRefused": "Train needs nearby devices to find your rowing machine. You can allow it in the system's settings.", "recordingRowerConnecting": "Looking for the rowing machine", "@recordingRowerConnecting": {"description": "While recording a row: the rower isn't connected yet. Another app may hold it."}, "recordingRowerLost": "Rowing machine lost", "@recordingRowerLost": {"description": "While recording a row: the rower is out of reach or off; Train keeps asking for it."}, "recordingSplit": "split", "@recordingSplit": {"description": "Lower case, under a figure: how long 500 m take now."}, "recordingStrokeRate": "strokes a minute", "@recordingStrokeRate": {"description": "Lower case, under a figure."}, "recordingWatts": "watts", "@recordingWatts": {"description": "Lower case, under a figure."}, "workoutSplitValue": "{split} /500 m", "@workoutSplitValue": {"description": "Minutes and seconds 500 m take.", "placeholders": {"split": {"type": "String", "example": "2:04"}}}, "workoutAverageSplit": "average split", "@workoutAverageSplit": {"description": "Lower case, under a figure."}, "workoutAverageStrokeRate": "average stroke rate", "@workoutAverageStrokeRate": {"description": "Lower case, under a figure."}, "workoutStrokeRateValue": "{rate} /min", "@workoutStrokeRateValue": {"description": "Strokes a minute.", "placeholders": {"rate": {"type": "String", "example": "24"}}}, "workoutAveragePower": "average power", "@workoutAveragePower": {"description": "Lower case, under a figure."}, "workoutMaxPower": "highest power", "@workoutMaxPower": {"description": "Lower case, under a figure."}, "workoutWattsValue": "{watts} W", "@workoutWattsValue": {"placeholders": {"watts": {"type": "int"}}}, "workoutStrokes": "strokes", "@workoutStrokes": {"description": "Lower case, under a figure: how many strokes."}, "workoutSplitMetres": "{from}–{to} m", "@workoutSplitMetres": {"description": "A rowing split of 500 m: where it starts and ends.", "placeholders": {"from": {"type": "int"}, "to": {"type": "int"}}}, "workoutSplitChart": "Split", "workoutStrokeRateChart": "Stroke rate", "workoutPowerChart": "Power", "recordAutoPauseRowingHint": "When you stop rowing, going on with the next stroke", "recordingMetres": "metres", "healthTitle": "Health Connect", "healthHint": "Share workouts with other apps on this phone", "@healthHint": {"description": "Under Health Connect in the account sheet."}, "healthUnavailable": "Health Connect isn't on this phone. Android 14 and later have it built in; before 14, it's an app of its own.", "healthNeedsUpdate": "Update the Health Connect app to use it with Train.", "healthWrite": "Write my workouts", "healthWriteHint": "Every workout on this phone, kept up to date as you edit or delete it", "healthWriteRefused": "Health Connect took this back. Allow it there to turn it on again.", "healthRefused": "Health Connect didn't allow it. You can allow it in its settings.", "healthOpenSettings": "Open Health Connect", "healthWhy": "Why Train asks", "healthRationaleTitle": "Train and Health Connect", "healthRationaleWrite": "Train writes your workouts to Health Connect only once you turn it on: each one with its route, heart rate, speed, power, distance and climb, so that other apps on this phone can use them. A workout edited or deleted in Train is edited or deleted there too.", "healthRationaleRead": "Train reads other apps' workouts only once you turn it on, and only from the apps you choose: their heart rate, distance and power come into Train as workouts, sealed with your key before they're synced to your instance, which can't read them.", "healthRationaleNothingElse": "What Train reads there is shown to you and nobody else, and isn't used for anything else. Turning a switch off, or taking a permission back in Health Connect, stops it." }