feat(train): the body's figures in a sealed, synced profile (ADR 0030, D33, D34)

A person's profile, one row per person (its ID derived from theirs),
sealed like a workout: sex, birth date, height, weight, resting and
maximum heart rate, VO2max, training background, typical day and sleep
goal, each optional. "Your body" in the account sheet edits it; the
Loop's setup is to reuse its form. The migration only adds the synced
table `profile`, deleted with the person's sync space.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-28 18:02:04 +01:00
commit de6fe5c15a
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -153,5 +153,40 @@
"workoutFromList": "von {app}",
"workoutFrom": "Von {app}, über Health Connect",
"workoutBringTrack": "Strecke holen",
"workoutNoTrack": "Health Connect hat keine Strecke dazu gegeben."
"workoutNoTrack": "Health Connect hat keine Strecke dazu gegeben.",
"profileTitle": "Dein Körper",
"profileHint": "Woraus dein Armband und deine Herzfrequenzzonen rechnen",
"profileIntro": "Jede Angabe ist freiwillig und mit deinem Schlüssel versiegelt, wie deine Trainings; deine Instanz kann sie nicht lesen.",
"profileLocked": "Dein Profil ist mit einem Schlüssel versiegelt, den dieses Gerät nicht hat.",
"profileSex": "Geschlecht",
"profileSexHint": "Wie Polars Formeln es nehmen: das, dem die Werte deines Körpers folgen",
"profileSexFemale": "Weiblich",
"profileSexMale": "Männlich",
"profileNotGiven": "Keine Angabe",
"profileBirthDate": "Geburtsdatum",
"profileHeight": "Größe",
"profileHeightUnit": "cm",
"profileWeight": "Gewicht",
"profileWeightUnit": "kg",
"profileRestingHeartRate": "Ruhepuls",
"profileMaxHeartRate": "Höchste Herzfrequenz",
"profileBpmUnit": "S/min",
"profileVo2Max": "VO2max",
"profileVo2MaxUnit": "ml/kg/min",
"profileTrainingBackground": "Trainingshintergrund",
"trainingOccasional": "Gelegentlich",
"trainingRegular": "Regelmäßig",
"trainingFrequent": "Häufig",
"trainingHeavy": "Intensiv",
"trainingSemiPro": "Halbprofi",
"trainingPro": "Profi",
"profileTypicalDay": "Typischer Tag",
"typicalDaySitting": "Meist sitzend",
"typicalDayStanding": "Meist stehend",
"typicalDayMoving": "Meist in Bewegung",
"profileSleepGoal": "Schlafziel",
"profileSave": "Speichern",
"profileSaved": "Gespeichert",
"profileInvalid": "Prüfe die markierten Angaben."
}