While the Loop gave figures for today, Home shows them above the week: steps, active time, last night's sleep and Nightly Recharge, as Profile lists a day, tapped opening the day's page. Shown above Home's message too, before a first workout; the week waits for one. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
737 lines
43 KiB
Text
737 lines
43 KiB
Text
{
|
||
"@@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 Halkyon Train",
|
||
|
||
"homeRecordHint": "Record one from the Record tab.",
|
||
"recordBack": "Back to the recording",
|
||
"activityRunning": "Running",
|
||
"activityWalking": "Walking",
|
||
"activityHiking": "Hiking",
|
||
"activityCycling": "Cycling",
|
||
"activityIndoorRowing": "Rowing indoors",
|
||
"activityOther": "Other workout",
|
||
"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",
|
||
"recordPlan": "Plan",
|
||
"recordNoPlan": "None",
|
||
"recordingLap": "Lap",
|
||
"recordingPlanDone": "Plan done",
|
||
"recordingStepOf": "Step {index} of {count}",
|
||
"@recordingStepOf": {"placeholders": {"index": {"type": "int"}, "count": {"type": "int"}}},
|
||
"recordingNextStep": "Next: {step}",
|
||
"@recordingNextStep": {"placeholders": {"step": {"type": "String"}}},
|
||
"recordingStepTapLap": "Until you tap Lap",
|
||
"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",
|
||
"workoutActivityLabel": "Activity",
|
||
"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",
|
||
"workoutSteps": "Steps of {plan}",
|
||
"@workoutSteps": {"placeholders": {"plan": {"type": "String"}}},
|
||
"workoutOnTarget": "On target",
|
||
"workoutOffTarget": "Off target",
|
||
"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"}}},
|
||
"workoutMapOwn": "Map by your instance, {name}, from OpenStreetMap: it keeps nothing of the area shown.",
|
||
"@workoutMapOwn": {"description": "Under a workout's map drawn from the instance's own tiles (D50): what it sees.", "placeholders": {"name": {"type": "String", "example": "train.halkyon.eu"}}},
|
||
"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",
|
||
"recordHeartLoop": "From the Polar Loop",
|
||
"recordHeartStrapThenLoop": "{strap}, the Loop while it is lost",
|
||
"@recordHeartStrapThenLoop": {"placeholders": {"strap": {"type": "String", "example": "Polar H10"}}},
|
||
"@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",
|
||
"healthTakenBack": "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.",
|
||
|
||
"healthRead": "Read from other apps",
|
||
"healthReadHint": "Their workouts come into Train, from the apps you choose below",
|
||
"healthApps": "Apps",
|
||
"@healthApps": {"description": "Over the apps that wrote workouts to Health Connect, each with its switch."},
|
||
"healthAppsEmpty": "No app has written workouts to Health Connect yet.",
|
||
"workoutFromList": "from {app}",
|
||
"@workoutFromList": {"description": "In the list, after when an imported workout was: the app it came from.", "placeholders": {"app": {"type": "String", "example": "Gadgetbridge"}}},
|
||
"workoutFrom": "From {app}, through Health Connect",
|
||
"@workoutFrom": {"description": "On an imported workout's page.", "placeholders": {"app": {"type": "String", "example": "Gadgetbridge"}}},
|
||
"workoutBringTrack": "Bring in the track",
|
||
"@workoutBringTrack": {"description": "On an imported workout's page: asks Health Connect for its route."},
|
||
"workoutNoTrack": "Health Connect gave no track for it.",
|
||
|
||
"profileTitle": "Your body",
|
||
"profileHint": "What your band and your heart-rate zones work from",
|
||
"@profileHint": {"description": "Under Your body in the account sheet."},
|
||
"profileIntro": "Each figure is optional and sealed with your key, as your workouts are; your instance can't read them.",
|
||
"profileLocked": "Your profile is sealed with a key this device doesn't hold.",
|
||
"profileSex": "Sex",
|
||
"profileSexHint": "As Polar's formulas take it: the one your body's figures follow",
|
||
"profileSexFemale": "Female",
|
||
"profileSexMale": "Male",
|
||
"profileNotGiven": "Not given",
|
||
"profileBirthDate": "Birth date",
|
||
"profileHeight": "Height",
|
||
"profileHeightUnit": "cm",
|
||
"profileWeight": "Weight",
|
||
"profileWeightUnit": "kg",
|
||
"profileRestingHeartRate": "Resting heart rate",
|
||
"profileMaxHeartRate": "Highest heart rate",
|
||
"profileBpmUnit": "bpm",
|
||
"profileVo2Max": "VO2max",
|
||
"profileVo2MaxUnit": "ml/kg/min",
|
||
"profileTrainingBackground": "Training background",
|
||
"trainingOccasional": "Occasional",
|
||
"trainingRegular": "Regular",
|
||
"trainingFrequent": "Frequent",
|
||
"trainingHeavy": "Heavy",
|
||
"trainingSemiPro": "Semi-pro",
|
||
"trainingPro": "Pro",
|
||
"profileTypicalDay": "Typical day",
|
||
"typicalDaySitting": "Mostly sitting",
|
||
"typicalDayStanding": "Mostly standing",
|
||
"typicalDayMoving": "Mostly moving",
|
||
"profileSleepGoal": "Sleep goal",
|
||
"profileSave": "Save",
|
||
"profileSaved": "Saved",
|
||
"profileInvalid": "Check the figures marked.",
|
||
|
||
"profileNeeded": "Needed for your band",
|
||
"loopTitle": "Polar Loop",
|
||
"loopHint": "Your band: its setup, battery and clock",
|
||
"@loopHint": {"description": "Under Polar Loop in the account sheet."},
|
||
"loopNone": "Train sets up a Polar Loop and keeps it itself, without Polar Flow or a Polar account. A band used with Polar Flow needs a factory reset first.",
|
||
"loopSetUp": "Set up a Loop",
|
||
"loopSetUpAgain": "Set up again",
|
||
"loopLetGo": "Let the band go",
|
||
"loopLetGoTitle": "Let the band go?",
|
||
"loopLetGoText": "The band is reset to the factory's state, and what it holds that hasn't reached Train is lost. Afterwards it can be paired with another phone, or with Polar Flow.",
|
||
"loopLetGoConfirm": "Reset the band",
|
||
"loopConnected": "Connected",
|
||
"loopLastSeen": "Last seen {when}",
|
||
"@loopLastSeen": {"placeholders": {"when": {"type": "String", "example": "28 Oct 2026, 18:30"}}},
|
||
"loopNotInReach": "Not in reach",
|
||
"loopBattery": "Battery {level} %",
|
||
"@loopBattery": {"placeholders": {"level": {"type": "int"}}},
|
||
"loopCharging": "Battery {level} %, charging",
|
||
"@loopCharging": {"placeholders": {"level": {"type": "int"}}},
|
||
"loopFirmware": "Firmware {version}",
|
||
"@loopFirmware": {"placeholders": {"version": {"type": "String", "example": "1.2.3"}}},
|
||
"loopFirmwareCheck": "Check for a firmware update",
|
||
"loopFirmwareCurrent": "The band's firmware is up to date.",
|
||
"loopFirmwareOffered": "Firmware {version} available",
|
||
"@loopFirmwareOffered": {"placeholders": {"version": {"type": "String", "example": "2.1.0"}}},
|
||
"loopFirmwareViaPolar": "Fetched from Polar directly: Polar learns this phone's address (or its VPN's), with the band's firmware version and hardware code.",
|
||
"loopFirmwareViaInstance": "Fetched through your instance: Polar learns the instance's address, not this phone's, with the band's firmware version and hardware code.",
|
||
"loopFirmwareErases": "The update erases the band. Train first keeps what is on it, then sets it up again with your profile.",
|
||
"loopFirmwareUpdate": "Update",
|
||
"loopFirmwareUpdateTitle": "Update the band's firmware?",
|
||
"loopFirmwareUpdateText": "Train first keeps what is on the band, as the update erases it. The band restarts, which takes a few minutes, and Train then sets it up again with your profile. Keep it near the phone until then.",
|
||
"loopFirmwareStage": "{stage, select, reading{Keeping what is on the band…} fetching{Fetching the firmware…} preparing{Preparing the band…} writing{Writing the firmware…} finalizing{Finishing the update…} done{Written} restarting{The band restarts…} other{Updating…}}",
|
||
"@loopFirmwareStage": {"placeholders": {"stage": {"type": "String"}}},
|
||
"loopFirmwareStageHint": "Keep the band near the phone, and Train open.",
|
||
"loopFirmwareUpdated": "Firmware updated; the band is set up again.",
|
||
"loopFirmwareThroughInstance": "Firmware through your instance",
|
||
"loopFirmwareThroughInstanceHint": "Polar then learns the instance's address rather than this phone's. Off, the phone asks Polar directly.",
|
||
"loopProfileChanged": "Your body changed since the band was set up",
|
||
"loopProfileChangedHint": "Sending sets the band up again with your figures as they are now.",
|
||
"loopSend": "Send to the band",
|
||
"loopSent": "Sent to the band.",
|
||
"loopFailed": "The band didn't answer. Keep it close, and try again.",
|
||
"loopSearching": "Looking for Loops nearby",
|
||
"loopSearchingHint": "Keep the band close; tap it to wake it up.",
|
||
"loopRefused": "Train can't look for your band without nearby devices. Allow them in Android's settings.",
|
||
"loopUnnamed": "Polar Loop",
|
||
"loopSettingUp": "Setting up the band…",
|
||
"loopSettingUpHint": "Android may ask you to pair it.",
|
||
"loopSetUpDone": "The band is set up.",
|
||
"loopFormTitle": "For your band",
|
||
"loopFormIntro": "Your band needs these. They're kept in Your body, sealed with your key. For a resting or highest heart rate or a VO2max you haven't given, the band takes Polar's defaults, and Your body stays as it is.",
|
||
"loopFormSave": "Set up the band",
|
||
"homeWorkouts": "Workouts",
|
||
"homeDays": "Days",
|
||
"homePlans": "Plans",
|
||
"plansNew": "New plan",
|
||
"plansNewEmpty": "From nothing",
|
||
"plansEmptyTitle": "No plans yet",
|
||
"plansEmptyHint": "A plan's steps lead you through intervals as you record, with a tone, a vibration and a voice at each change. Start from a template, or from nothing.",
|
||
"planLocked": "A plan that doesn't open here",
|
||
"planTemplateFourByFour": "4×4 minutes",
|
||
"planTemplateTabata": "Tabata",
|
||
"planTemplateFourHundreds": "10×400 m",
|
||
"planTitle": "Plan",
|
||
"planNewTitle": "New plan",
|
||
"planName": "Name",
|
||
"planActivity": "For",
|
||
"planActivityAny": "Any activity",
|
||
"planOffTarget": "Tell me when I'm off target",
|
||
"planOffTargetHint": "A short cue at most every 30 seconds.",
|
||
"planSave": "Save",
|
||
"planNotSaved": "The plan wasn't saved.",
|
||
"planAddStep": "Add a step",
|
||
"planAddRepeat": "Add a repeat",
|
||
"planRepeat": "{count}×",
|
||
"@planRepeat": {"placeholders": {"count": {"type": "int"}}},
|
||
"planFewer": "Fewer rounds",
|
||
"planMore": "More rounds",
|
||
"planBlockMenu": "More",
|
||
"planMoveUp": "Move up",
|
||
"planMoveDown": "Move down",
|
||
"planRemove": "Remove",
|
||
"planDelete": "Delete",
|
||
"planDeleteTitle": "Delete this plan?",
|
||
"planDeleteMessage": "It's deleted on all your devices; workouts recorded with it keep their steps.",
|
||
"planDeleted": "Plan deleted",
|
||
"planSteps": "{count, plural, =1{1 step} other{{count} steps}}",
|
||
"@planSteps": {"placeholders": {"count": {"type": "int"}}},
|
||
"planSayRound": "{round} of {rounds}",
|
||
"@planSayRound": {"placeholders": {"round": {"type": "int"}, "rounds": {"type": "int"}}},
|
||
"planSayMinutes": "{count, plural, =1{1 minute} other{{count} minutes}}",
|
||
"@planSayMinutes": {"placeholders": {"count": {"type": "int"}}},
|
||
"planSaySeconds": "{count, plural, =1{1 second} other{{count} seconds}}",
|
||
"@planSaySeconds": {"placeholders": {"count": {"type": "int"}}},
|
||
"planSayMetres": "{count, plural, =1{1 metre} other{{count} metres}}",
|
||
"@planSayMetres": {"placeholders": {"count": {"type": "int"}}},
|
||
"planSayKilometres": "{km} kilometres",
|
||
"@planSayKilometres": {"placeholders": {"km": {"type": "String"}}},
|
||
"planSayUntilLap": "until you tap Lap",
|
||
"planSayPace": "{from} to {to} a kilometre",
|
||
"@planSayPace": {"placeholders": {"from": {"type": "String"}, "to": {"type": "String"}}},
|
||
"planSaySpeed": "{from} to {to} kilometres an hour",
|
||
"@planSaySpeed": {"placeholders": {"from": {"type": "String"}, "to": {"type": "String"}}},
|
||
"planSayHeartRate": "{from} to {to} beats a minute",
|
||
"@planSayHeartRate": {"placeholders": {"from": {"type": "String"}, "to": {"type": "String"}}},
|
||
"planSayZone": "zone {zone}",
|
||
"@planSayZone": {"placeholders": {"zone": {"type": "int"}}},
|
||
"planSaySplit": "{from} to {to} per 500 metres",
|
||
"@planSaySplit": {"placeholders": {"from": {"type": "String"}, "to": {"type": "String"}}},
|
||
"planSayWatts": "{from} to {to} watts",
|
||
"@planSayWatts": {"placeholders": {"from": {"type": "String"}, "to": {"type": "String"}}},
|
||
"planSayStrokeRate": "{from} to {to} strokes a minute",
|
||
"@planSayStrokeRate": {"placeholders": {"from": {"type": "String"}, "to": {"type": "String"}}},
|
||
"planSayHarder": "Push a little",
|
||
"planSayEasier": "Ease off a little",
|
||
"planSayDone": "Plan done",
|
||
"stepTitle": "Step",
|
||
"stepKind": "Kind",
|
||
"stepWarmUp": "Warm-up",
|
||
"stepWork": "Work",
|
||
"stepRecovery": "Recovery",
|
||
"stepCoolDown": "Cool-down",
|
||
"stepEnds": "Ends",
|
||
"stepEndTime": "After a time",
|
||
"stepEndDistance": "After a distance",
|
||
"stepEndLap": "With a lap tap",
|
||
"stepTimeLabel": "Time (min:s)",
|
||
"stepMetresLabel": "Metres",
|
||
"stepTarget": "Target",
|
||
"stepZone": "Zone",
|
||
"stepDone": "Done",
|
||
"stepMinutes": "{minutes} min",
|
||
"@stepMinutes": {"placeholders": {"minutes": {"type": "int"}}},
|
||
"stepSeconds": "{seconds} s",
|
||
"@stepSeconds": {"placeholders": {"seconds": {"type": "int"}}},
|
||
"stepMinutesSeconds": "{minutes} min {seconds} s",
|
||
"@stepMinutesSeconds": {"placeholders": {"minutes": {"type": "int"}, "seconds": {"type": "int"}}},
|
||
"stepMetres": "{metres} m",
|
||
"@stepMetres": {"placeholders": {"metres": {"type": "int"}}},
|
||
"stepKilometres": "{km} km",
|
||
"@stepKilometres": {"placeholders": {"km": {"type": "String"}}},
|
||
"stepUntilLap": "until a lap tap",
|
||
"targetNone": "None",
|
||
"targetFrom": "From",
|
||
"targetTo": "To",
|
||
"targetKindPace": "Pace (per km)",
|
||
"targetKindSpeed": "Speed (km/h)",
|
||
"targetKindHeartRate": "Heart rate (bpm)",
|
||
"targetKindHeartZone": "Heart-rate zone",
|
||
"targetKindSplit": "Split (per 500 m)",
|
||
"targetKindWatts": "Power (W)",
|
||
"targetKindStrokeRate": "Stroke rate (per min)",
|
||
"targetPace": "{from}–{to} per km",
|
||
"@targetPace": {"placeholders": {"from": {"type": "String"}, "to": {"type": "String"}}},
|
||
"targetSpeed": "{from}–{to} km/h",
|
||
"@targetSpeed": {"placeholders": {"from": {"type": "String"}, "to": {"type": "String"}}},
|
||
"targetHeartRate": "{from}–{to} bpm",
|
||
"@targetHeartRate": {"placeholders": {"from": {"type": "String"}, "to": {"type": "String"}}},
|
||
"targetZone": "Zone {zone}",
|
||
"@targetZone": {"placeholders": {"zone": {"type": "int"}}},
|
||
"targetSplit": "{from}–{to} per 500 m",
|
||
"@targetSplit": {"placeholders": {"from": {"type": "String"}, "to": {"type": "String"}}},
|
||
"targetWatts": "{from}–{to} W",
|
||
"@targetWatts": {"placeholders": {"from": {"type": "String"}, "to": {"type": "String"}}},
|
||
"targetStrokeRate": "{from}–{to} strokes/min",
|
||
"@targetStrokeRate": {"placeholders": {"from": {"type": "String"}, "to": {"type": "String"}}},
|
||
"daysEmptyTitle": "No days yet",
|
||
"daysEmptyHint": "The days and nights your Polar Loop counts show here.",
|
||
"daysSteps": "{steps, plural, =1{1 step} other{{steps} steps}}",
|
||
"@daysSteps": {"placeholders": {"steps": {"type": "int"}}},
|
||
"daysActive": "{time} active",
|
||
"@daysActive": {"placeholders": {"time": {"type": "String", "example": "1 h 20 min"}}},
|
||
"daysAsleep": "{time} asleep",
|
||
"@daysAsleep": {"placeholders": {"time": {"type": "String", "example": "7 h 10 min"}}},
|
||
"daysRecharge": "Recharge {level} of 6",
|
||
"@daysRecharge": {"placeholders": {"level": {"type": "int"}}},
|
||
"dayHoursMinutes": "{hours} h {minutes} min",
|
||
"@dayHoursMinutes": {"placeholders": {"hours": {"type": "int"}, "minutes": {"type": "int"}}},
|
||
"dayMinutes": "{minutes} min",
|
||
"@dayMinutes": {"placeholders": {"minutes": {"type": "int"}}},
|
||
"dayCalories": "{calories} kcal",
|
||
"@dayCalories": {"placeholders": {"calories": {"type": "int"}}},
|
||
"dayGoal": "{percent} % of the day's goal",
|
||
"@dayGoal": {"placeholders": {"percent": {"type": "int"}}},
|
||
"dayNothing": "The band has given nothing for this day yet.",
|
||
"dayTimes": "The day's time",
|
||
"dayTimeNonWear": "Not worn",
|
||
"dayTimeSleep": "Asleep",
|
||
"dayTimeSedentary": "Sitting still",
|
||
"dayTimeLight": "Light activity",
|
||
"dayTimeModerate": "Moderate activity",
|
||
"dayTimeVigorous": "Vigorous activity",
|
||
"dayHeartRate": "Heart rate",
|
||
"dayBpm": "{bpm} bpm",
|
||
"@dayBpm": {"placeholders": {"bpm": {"type": "int"}}},
|
||
"dayNight": "The night",
|
||
"dayNightSpan": "{from} – {to}",
|
||
"@dayNightSpan": {"placeholders": {"from": {"type": "String", "example": "23:15"}, "to": {"type": "String", "example": "07:05"}}},
|
||
"daySleepWake": "Awake",
|
||
"daySleepRem": "REM",
|
||
"daySleepLight": "Light",
|
||
"daySleepDeep": "Deep",
|
||
"dayRatingPoorly": "You slept poorly",
|
||
"dayRatingSomewhatPoorly": "You slept somewhat poorly",
|
||
"dayRatingNeither": "You slept neither poorly nor well",
|
||
"dayRatingSomewhatWell": "You slept somewhat well",
|
||
"dayRatingWell": "You slept well",
|
||
"dayRecharge": "Nightly Recharge",
|
||
"dayRechargeLevel": "Recovery {level} of 6",
|
||
"@dayRechargeLevel": {"placeholders": {"level": {"type": "int"}}},
|
||
"dayAnsStatus": "Autonomic nervous system {value}, from −10 to +10",
|
||
"@dayAnsStatus": {"placeholders": {"value": {"type": "String", "example": "+2.5"}}},
|
||
"dayNightHeart": "Heart rate {bpm} bpm, your usual {usual} bpm",
|
||
"@dayNightHeart": {"placeholders": {"bpm": {"type": "int"}, "usual": {"type": "int"}}},
|
||
"dayHrv": "Heart rate variability {ms} ms, your usual {usual} ms",
|
||
"@dayHrv": {"placeholders": {"ms": {"type": "int"}, "usual": {"type": "int"}}},
|
||
"dayBreathing": "Breathing {rate} a minute",
|
||
"@dayBreathing": {"placeholders": {"rate": {"type": "String", "example": "14.5"}}},
|
||
"daySkin": "Skin temperature",
|
||
"dayCelsius": "{value} °C",
|
||
"@dayCelsius": {"placeholders": {"value": {"type": "String", "example": "33.4"}}},
|
||
"daySkinDeviation": "{value} °C from your usual at night",
|
||
"@daySkinDeviation": {"placeholders": {"value": {"type": "String", "example": "−0.2"}}},
|
||
"homeRoutes": "Routes",
|
||
"routesNew": "New route",
|
||
"routesEmptyTitle": "No routes yet",
|
||
"routesEmptyHint": "Tap the map to set waypoints, and your instance plans the way between them on paths and roads, with its climb and surfaces.",
|
||
"routeLocked": "A route that doesn't open here",
|
||
"routeTitle": "Route",
|
||
"routeNewTitle": "New route",
|
||
"routeName": "Name",
|
||
"routeActivity": "For",
|
||
"routeActivityAny": "Any activity",
|
||
"routeProfile": "Planned for",
|
||
"routeProfileRun": "Running",
|
||
"routeProfileHike": "Hiking",
|
||
"routeProfileRoadBike": "Road bike",
|
||
"routeProfileTrekkingBike": "Trekking bike",
|
||
"routeProfileGravel": "Gravel bike",
|
||
"routeProfileMtb": "Mountain bike",
|
||
"routeTapHint": "Tap the map to add a waypoint, tap one to take it off. Hold one to drag it, or hold the line to pull out another.",
|
||
"routeWaypointRemove": "Take this waypoint off",
|
||
"@routeWaypointRemove": {"description": "The menu of a waypoint tapped on the planner's map (D59)."},
|
||
"routeUndo": "Take the last waypoint off",
|
||
"routeSearchHint": "Search for a place",
|
||
"@routeSearchHint": {"description": "The planner's search field over the map (D50)."},
|
||
"routeSearchClear": "Clear the search",
|
||
"routeSearchNothing": "Nothing found.",
|
||
"@routeSearchNothing": {"description": "Under the planner's search: the instance found no place."},
|
||
"routeSearchTooOften": "Too many searches for now; try again in a minute.",
|
||
"routeSearchUnreachable": "The search can't be reached now.",
|
||
"routePlanning": "Planning…",
|
||
"routeRefusedInvalid": "A waypoint too many, or one off the map.",
|
||
"routeRefusedTooOften": "Planned too often: try again in a minute.",
|
||
"routeRefusedNoRoute": "No way found there: a waypoint may be off the paths, or outside the region your instance plans in.",
|
||
"routeRefusedUnreachable": "Your instance can't be reached to plan the way.",
|
||
"routeNotOffered": "Your instance doesn't plan routes.",
|
||
"routeAscent": "{metres} m up",
|
||
"@routeAscent": {"placeholders": {"metres": {"type": "int"}}},
|
||
"routeDescent": "{metres} m down",
|
||
"@routeDescent": {"placeholders": {"metres": {"type": "int"}}},
|
||
"routeSummary": "{distance} · {ascent}",
|
||
"@routeSummary": {"description": "A route in the list: its distance and climb.", "placeholders": {"distance": {"type": "String", "example": "12.3 km"}, "ascent": {"type": "String", "example": "120 m up"}}},
|
||
"routesBringIn": "Bring in a GPX file",
|
||
"@routesBringIn": {"description": "In the Routes tab: a route brought in from a GPX file (ADR 0030, D45)."},
|
||
"routeBringInTitle": "Bring in {name}",
|
||
"@routeBringInTitle": {"placeholders": {"name": {"type": "String", "example": "Isar loop"}}},
|
||
"routeBringInSnap": "Plan it along the paths",
|
||
"routeBringInSnapHint": "Through its points, with the profile you choose; its turns told",
|
||
"routeBringInDrawn": "Keep it as drawn",
|
||
"routeBringInDrawnHint": "Its way as the file has it, no turns told",
|
||
"routeNotGpx": "This file holds no route Train can read",
|
||
"routeShareGpx": "Share as GPX",
|
||
"routeSaveGpx": "Save as GPX",
|
||
"routeOffline": "Keep the map offline",
|
||
"@routeOffline": {"description": "A switch on a saved route: its map kept on this device (ADR 0030, D45)."},
|
||
"routeOfflineOff": "Its map along the way, 2 km either side, on this device for when there's no network",
|
||
"routeOfflineLoading": "Keeping the map: {done} of {total} tiles",
|
||
"@routeOfflineLoading": {"placeholders": {"done": {"type": "int"}, "total": {"type": "int"}}},
|
||
"routeOfflineKept": "Kept on this device: {size} MB",
|
||
"@routeOfflineKept": {"placeholders": {"size": {"type": "String", "example": "12.4"}}},
|
||
"routeOfflineMissing": "{missing} of {total} tiles didn't come: asked for again when the app next opens online",
|
||
"@routeOfflineMissing": {"placeholders": {"missing": {"type": "int"}, "total": {"type": "int"}}},
|
||
"routeOfflineNoMap": "The map can't be reached now: try again online",
|
||
"routeOfflineSaveFirst": "Save the route to keep its map offline",
|
||
"routeKeptOffline": "Map kept offline",
|
||
"routeSurfaces": "Surfaces",
|
||
"surfacePaved": "Paved",
|
||
"surfaceCompacted": "Compacted",
|
||
"surfaceGravel": "Gravel",
|
||
"surfaceNatural": "Natural ground",
|
||
"surfaceUnknown": "Not known",
|
||
"routeSave": "Save",
|
||
"routeNotSaved": "The route wasn't saved.",
|
||
"routeDelete": "Delete",
|
||
"routeDeleteTitle": "Delete this route?",
|
||
"routeDeleteMessage": "It's deleted on all your devices.",
|
||
"routeDeleted": "Route deleted",
|
||
"turnStraight": "Go straight on",
|
||
"turnLeft": "Turn left",
|
||
"turnSlightLeft": "Bear left",
|
||
"turnSharpLeft": "Turn sharp left",
|
||
"turnRight": "Turn right",
|
||
"turnSlightRight": "Bear right",
|
||
"turnSharpRight": "Turn sharp right",
|
||
"turnKeepLeft": "Keep left",
|
||
"turnKeepRight": "Keep right",
|
||
"turnAround": "Turn around",
|
||
"turnRoundabout": "At the roundabout, take exit {exit}",
|
||
"@turnRoundabout": {"placeholders": {"exit": {"type": "int"}}},
|
||
"turnExitLeft": "Take the exit on the left",
|
||
"turnExitRight": "Take the exit on the right",
|
||
"routeSayIn": "In {metres} metres: {turn}",
|
||
"@routeSayIn": {"description": "Spoken before a turn while following a route.", "placeholders": {"metres": {"type": "int"}, "turn": {"type": "String", "example": "Turn left"}}},
|
||
"routeSayOff": "Off the route. It lies {metres} metres {direction}.",
|
||
"@routeSayOff": {"description": "Spoken off the route; the recorder puts the figures in.", "placeholders": {"metres": {"type": "String", "example": "80"}, "direction": {"type": "String", "example": "to the north-east"}}},
|
||
"routeSayOn": "Back on the route",
|
||
"routeSayArrived": "End of the route",
|
||
"directionNorth": "to the north",
|
||
"directionNorthEast": "to the north-east",
|
||
"directionEast": "to the east",
|
||
"directionSouthEast": "to the south-east",
|
||
"directionSouth": "to the south",
|
||
"directionSouthWest": "to the south-west",
|
||
"directionWest": "to the west",
|
||
"directionNorthWest": "to the north-west",
|
||
"recordRoute": "Route",
|
||
"recordNoRoute": "None",
|
||
"recordingNextTurn": "In {distance}",
|
||
"@recordingNextTurn": {"placeholders": {"distance": {"type": "String", "example": "320 m"}}},
|
||
"recordingOffRoute": "Off the route: {distance} {direction}",
|
||
"@recordingOffRoute": {"placeholders": {"distance": {"type": "String", "example": "80 m"}, "direction": {"type": "String", "example": "to the north-east"}}},
|
||
"recordingRouteEnd": "End of the route",
|
||
"recordingFollowRoute": "Following {name}",
|
||
"@recordingFollowRoute": {"placeholders": {"name": {"type": "String"}}},
|
||
"recordingMapHint": "Swipe for the map",
|
||
"recordingFiguresHint": "Swipe back for the figures",
|
||
"recordingNorthUp": "North up",
|
||
"recordingHeadingUp": "Heading up",
|
||
"musicTitle": "Music",
|
||
"@musicTitle": {"description": "The music screen's title, and its tile in the account sheet."},
|
||
"musicHint": "Jellyfin playlists to run to",
|
||
"@musicHint": {"description": "Under Music in the account sheet."},
|
||
"musicIntro": "Train plays music from your Jellyfin server, choosing tracks whose beat fits your steps. Your account and music stay on this phone.",
|
||
"musicServer": "Jellyfin server",
|
||
"@musicServer": {"description": "The label of the server's address."},
|
||
"musicConnect": "Connect",
|
||
"musicBadAddress": "Enter the server's address, such as jellyfin.example.org.",
|
||
"musicInClear": "Train connects to Jellyfin over https only: http would send the password unencrypted. Use the server's https address.",
|
||
"musicUnreachable": "The server can't be reached. Check the address and the connection.",
|
||
"musicNotJellyfin": "There is no Jellyfin server at this address.",
|
||
"musicRefused": "Jellyfin refused. Check the user name and password.",
|
||
"musicCodeExpired": "The code has expired.",
|
||
"musicFailed": "Jellyfin answered with an error. Try again later.",
|
||
"musicQuickConnect": "To sign in to {server}, enter this code in Jellyfin on another device, under Settings, Quick Connect.",
|
||
"@musicQuickConnect": {"placeholders": {"server": {"type": "String"}}},
|
||
"musicNewCode": "New code",
|
||
"musicBack": "Back",
|
||
"musicUsePassword": "Use a password",
|
||
"musicPasswordIntro": "Sign in to {server} with your Jellyfin user name and password.",
|
||
"@musicPasswordIntro": {"placeholders": {"server": {"type": "String"}}},
|
||
"musicUserName": "User name",
|
||
"musicPassword": "Password",
|
||
"musicSignIn": "Sign in",
|
||
"musicSignedInAs": "Signed in as {name}",
|
||
"@musicSignedInAs": {"placeholders": {"name": {"type": "String"}}},
|
||
"musicSignOut": "Sign out",
|
||
"musicPlaylists": "Playlists for running",
|
||
"musicPlaylistsHint": "Train chooses from the tracks of the playlists you mark, and keeps them on this phone.",
|
||
"musicNoPlaylists": "There are no music playlists on this server yet.",
|
||
"musicRetry": "Try again",
|
||
"musicTracks": "{count, plural, =1{1 track} other{{count} tracks}}",
|
||
"@musicTracks": {"placeholders": {"count": {"type": "int"}}},
|
||
"musicKept": "On this phone",
|
||
"musicKeptWaiting": "{done} of {total} tracks: the rest waits for Wi-Fi",
|
||
"@musicKeptWaiting": {"placeholders": {"done": {"type": "int"}, "total": {"type": "int"}}},
|
||
"musicKeptLoading": "Downloading: {done} of {total} tracks",
|
||
"@musicKeptLoading": {"placeholders": {"done": {"type": "int"}, "total": {"type": "int"}}},
|
||
"musicKeptDone": "{count} tracks, {size} MB, {tempo} with a tempo",
|
||
"@musicKeptDone": {"placeholders": {"count": {"type": "int"}, "size": {"type": "String", "example": "230.4"}, "tempo": {"type": "int"}}},
|
||
"musicKeptDelete": "Delete",
|
||
"musicKeptDeleteTitle": "Delete the music on this phone?",
|
||
"musicKeptDeleteText": "Every playlist is unmarked, and its tracks deleted from this phone. They stay on your Jellyfin server.",
|
||
"musicSmaller": "Smaller copies",
|
||
"musicSmallerHint": "Lossless files such as FLAC kept as Opus at 128 kbps, which your server makes. MP3 and AAC stay as they are.",
|
||
"recordMusic": "Music",
|
||
"recordMusicOn": "Music",
|
||
"@recordMusicOn": {"description": "The segment playing the kept tracks by cadence."},
|
||
"recordMetronome": "Metronome",
|
||
"recordMusicOff": "Off",
|
||
"recordAnnounce": "Announcements",
|
||
"recordAnnounceFoot": "Every kilometre: time, pace and heart rate",
|
||
"@recordAnnounceFoot": {"description": "The switch's hint on foot (D49)."},
|
||
"recordAnnounceBike": "Every 5 km: time, speed and heart rate",
|
||
"@recordAnnounceBike": {"description": "The switch's hint on a bike (D49)."},
|
||
"announceKilometres": "{count, plural, =1{1 kilometre} other{{count} kilometres}}",
|
||
"@announceKilometres": {"placeholders": {"count": {"type": "int"}}},
|
||
"announceHours": "{count, plural, =1{1 hour} other{{count} hours}}",
|
||
"@announceHours": {"placeholders": {"count": {"type": "int"}}},
|
||
"announceTime": "Time {time}",
|
||
"@announceTime": {"placeholders": {"time": {"type": "String"}}},
|
||
"announcePace": "Pace {pace} a kilometre",
|
||
"@announcePace": {"placeholders": {"pace": {"type": "String"}}},
|
||
"announceSpeed": "Speed {speed} kilometres an hour",
|
||
"@announceSpeed": {"placeholders": {"speed": {"type": "String"}}},
|
||
"announceHeartRate": "Heart rate {bpm}",
|
||
"@announceHeartRate": {"placeholders": {"bpm": {"type": "String"}}},
|
||
"workoutExport": "Export",
|
||
"workoutExportTitle": "Export the workout",
|
||
"workoutExportGpxHint": "The track, for maps and other apps",
|
||
"workoutExportTcxHint": "Laps, heart rate and cadence, for most training sites",
|
||
"workoutExportFitHint": "What Strava, Garmin and intervals.icu read best",
|
||
"recordSpeedSensor": "Speed and cadence sensor",
|
||
"recordNoSpeedSensor": "None chosen",
|
||
"recordPowerMeter": "Power meter",
|
||
"recordNoPowerMeter": "None chosen",
|
||
"speedSensorSheetTitle": "Speed and cadence sensor",
|
||
"speedSensorSearching": "Looking for speed and cadence sensors nearby…",
|
||
"speedSensorSearchingHint": "Turn the wheel or the crank to wake it. One another app holds can't be found: close that app first.",
|
||
"speedSensorUnnamed": "Unnamed sensor",
|
||
"speedSensorForget": "Forget sensor",
|
||
"speedSensorRefused": "Train needs nearby devices to find your sensor. You can allow it in the system's settings.",
|
||
"powerMeterSheetTitle": "Power meter",
|
||
"powerMeterSearching": "Looking for power meters nearby…",
|
||
"powerMeterSearchingHint": "Turn the crank to wake it. One another app holds can't be found: close that app first.",
|
||
"powerMeterUnnamed": "Unnamed power meter",
|
||
"powerMeterForget": "Forget power meter",
|
||
"powerMeterRefused": "Train needs nearby devices to find your power meter. You can allow it in the system's settings.",
|
||
"recordingCadence": "turns a minute",
|
||
"workoutPedalling": "Cadence",
|
||
"workoutAverageCadence": "average cadence",
|
||
"workoutNormalisedPower": "normalised power",
|
||
"workoutRpmValue": "{rpm} rpm",
|
||
"@workoutRpmValue": {"placeholders": {"rpm": {"type": "int"}}},
|
||
"recordWheel": "Wheel circumference",
|
||
"recordWheelMeasured": "{mm} mm, measured by GPS",
|
||
"@recordWheelMeasured": {"placeholders": {"mm": {"type": "int"}}},
|
||
"recordWheelTyped": "{mm} mm, as you typed it",
|
||
"@recordWheelTyped": {"placeholders": {"mm": {"type": "int"}}},
|
||
"recordWheelDefault": "{mm} mm until GPS has measured it on a ride of 2 km",
|
||
"@recordWheelDefault": {"placeholders": {"mm": {"type": "int"}}},
|
||
"recordWheelHint": "In millimetres, as the tyre says (700×25C: 2105); empty to have GPS measure it",
|
||
"recordWheelSave": "Save",
|
||
"shellTabHome": "Home",
|
||
"shellTabMaps": "Maps",
|
||
"shellTabRecord": "Record",
|
||
"shellTabGroups": "Groups",
|
||
"shellTabProfile": "Profile",
|
||
"groupsLaterTitle": "Groups come later",
|
||
"groupsLaterHint": "Training with others, in groups of your own, comes in a later version of Train.",
|
||
"settingsTitle": "Settings",
|
||
"settingsTraining": "Training",
|
||
"settingsVersion": "Version {version} (build {build})",
|
||
"@settingsVersion": {"placeholders": {"version": {"type": "String"}, "build": {"type": "String"}}},
|
||
"recordingBarStopped": "Stopped: save or discard it",
|
||
"recordingBarDistance": "{km} km",
|
||
"@recordingBarDistance": {"placeholders": {"km": {"type": "String"}}},
|
||
"homeWeekTitle": "This week",
|
||
"homeWeekTime": "Time",
|
||
"homeWeekDistance": "Distance",
|
||
"homeWeekWorkouts": "Workouts",
|
||
"recordPlansHeading": "Interval plans",
|
||
"profileWeeksTitle": "Last 12 weeks",
|
||
"profileWeekOf": "Week of {date}",
|
||
"@profileWeekOf": {"placeholders": {"date": {"type": "String"}}},
|
||
"profileWorkouts": "{count, plural, =1{1 workout} other{{count} workouts}}",
|
||
"@profileWorkouts": {"placeholders": {"count": {"type": "int"}}},
|
||
"profileYearEmpty": "No workouts this year yet.",
|
||
"bodyWeight": "{kg} kg",
|
||
"@bodyWeight": {"placeholders": {"kg": {"type": "String"}}},
|
||
"bodyResting": "resting {bpm} bpm",
|
||
"@bodyResting": {"placeholders": {"bpm": {"type": "int"}}},
|
||
"bodyMax": "max {bpm} bpm",
|
||
"@bodyMax": {"placeholders": {"bpm": {"type": "int"}}},
|
||
"homeToday": "Today"
|
||
}
|