Files
HealthLog/messages/de.json
T
Marc-André Bombeck 5ea813e20c chore(release): v1.4.31
Operator-side assistant feature-flag matrix, /insights tab-strip blocking fix on mobile, and the GHCR-propagation-race Coolify auto-deploy fix. Full notes in CHANGELOG.
2026-05-16 14:19:57 +02:00

2823 lines
129 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"common": {
"save": "Speichern",
"cancel": "Abbrechen",
"delete": "Löschen",
"edit": "Bearbeiten",
"moreOptions": "Weitere Optionen",
"create": "Erstellen",
"close": "Schließen",
"loading": "Laden...",
"error": "Fehler",
"saved": "Gespeichert",
"no": "Nein",
"noData": "Keine Daten vorhanden",
"optional": "Optional",
"active": "Aktiv",
"inactive": "Inaktiv",
"enabled": "Aktiviert",
"disabled": "Deaktiviert",
"networkError": "Netzwerkfehler",
"unknownError": "Unbekannter Fehler",
"copied": "Kopiert!",
"or": "oder",
"unknown": "Unbekannt",
"add": "Hinzufügen",
"import": "Importieren",
"test": "Test",
"reset": "Zurücksetzen",
"copy": "Kopieren",
"copyDetails": "Details kopieren",
"retry": "Erneut versuchen",
"reportIssue": "Fehler melden",
"showPassword": "Passwort anzeigen",
"hidePassword": "Passwort verbergen"
},
"format": {
"dateShort": "{day}.{month}.{year}",
"timeShort": "{hour}:{minute}",
"dateTime": "{day}.{month}.{year} {hour}:{minute}"
},
"doctorReport": {
"title": "Gesundheitsbericht",
"subtitle": "HealthLog — Persönlicher Gesundheitsbericht",
"patient": "Patient",
"dateOfBirth": "Geburtsdatum",
"gender": "Geschlecht",
"genderMale": "Männlich",
"genderFemale": "Weiblich",
"genderOther": "Divers",
"height": "Körpergröße",
"period": "Berichtszeitraum",
"createdOn": "Erstellt am",
"vitalsTitle": "Vitalparameter — Übersicht",
"colParameter": "Parameter",
"colCurrent": "Aktuell",
"colAvgPeriod": "Ø Zeitraum",
"colMin": "Min",
"colMax": "Max",
"colN": "n",
"bpClassificationTitle": "Blutdruck — ESH-Klassifikation (2023)",
"avgBp": "Durchschnittlicher Blutdruck",
"classification": "Klassifikation",
"bmiTitle": "Body-Mass-Index (BMI)",
"bmiRow": "BMI: {bmi} kg/m² — Klassifikation: {class} (WHO)",
"complianceTitle": "Medikamenten-Compliance",
"glp1Title": "GLP-1-Therapie",
"glp1WeightSummary": "Gewicht im Berichtszeitraum: {start} kg → {end} kg ({delta} kg)",
"glp1CurrentDose": "Aktuelle Dosis: {value} {unit} (seit {since})",
"glp1Compliance": "Compliance: {taken} / {total} ({rate}%)",
"glp1SideEffectsTitle": "Erfasste Nebenwirkungen",
"colGlp1Date": "Datum",
"colGlp1Dose": "Dosis",
"colGlp1Note": "Notiz",
"colGlp1SideEffect": "Nebenwirkung",
"colMedication": "Medikament",
"colTaken": "Eingenommen",
"colSkipped": "Übersprungen",
"colMissed": "Verpasst",
"colTotal": "Gesamt",
"colComplianceRate": "Compliance-Rate",
"moodTitle": "Stimmungsverlauf",
"moodSummary": "Durchschnitt: {avg} / 5,0 · Einträge: {count} · Bereich: {min}–{max}",
"colMood": "Stimmung",
"colCount": "Anzahl",
"colShare": "Anteil",
"footerDisclaimer1": "Dieser Bericht wurde automatisch aus selbst erfassten Daten generiert und dient ausschließlich zur Unterstützung",
"footerDisclaimer2": "des Arzt-Patienten-Gesprächs. Er ersetzt keine ärztliche Diagnose. Korrelationen implizieren keine Kausalität.",
"footerSource": "Quelle: HealthLog | Zeitzone: Europe/Berlin | Erstellt: {timestamp}",
"typeWeight": "Körpergewicht",
"typeBpSys": "Systolischer Blutdruck",
"typeBpDia": "Diastolischer Blutdruck",
"typePulse": "Ruhepuls",
"typeBodyFat": "Körperfettanteil",
"typeSleep": "Schlafdauer",
"typeSteps": "Aktivität (Schritte)",
"typeTotalBodyWater": "Gesamtkörperwasser",
"typeBoneMass": "Knochenmasse",
"typeOxygenSaturation": "Sauerstoffsättigung",
"unitSteps": "Schritte",
"bmiUnderweight": "Untergewicht",
"bmiNormal": "Normalgewicht",
"bmiOverweight": "Übergewicht (Präadipositas)",
"bmiObeseGrade1": "Adipositas Grad I",
"bmiObeseGrade2": "Adipositas Grad II",
"bmiObeseGrade3": "Adipositas Grad III",
"bpOptimal": "Optimal",
"bpNormal": "Normal",
"bpHighNormal": "Hochnormal",
"bpHypertensionGrade1": "Hypertonie Grad 1",
"bpHypertensionGrade2": "Hypertonie Grad 2",
"bpHypertensionGrade3": "Hypertonie Grad 3",
"moodAwful": "Sehr schlecht",
"moodBad": "Schlecht",
"moodNeutral": "Neutral",
"moodGood": "Gut",
"moodGreat": "Sehr gut",
"typeGlucoseFasting": "Glukose (nüchtern)",
"typeGlucosePostprandial": "Glukose (postprandial)",
"typeGlucoseRandom": "Glukose (beliebig)",
"typeGlucoseBedtime": "Glukose (vor dem Schlafen)",
"glucoseClassificationTitle": "Blutzucker — Referenzbereiche (ADA 2024 / DDG)",
"glucoseRow": "{label}: Ø {avg} {unit} (Ziel {rangeMin}–{rangeMax}) — {class}",
"glucoseInTarget": "im Ziel",
"glucoseBelowTarget": "unter Ziel",
"glucoseAboveTarget": "über Ziel",
"practiceLabel": "Praxis",
"dialog": {
"title": "Arztbericht (PDF)",
"description": "Lege den Auswertungszeitraum fest und (optional) den Praxisnamen — beide erscheinen auf dem Deckblatt.",
"startLabel": "Von",
"endLabel": "Bis",
"practiceLabel": "Praxis / Klinik (optional)",
"practicePlaceholder": "z. B. Dr. Müller — Hausarztpraxis",
"preset90d": "Letzte 90 Tage",
"preset180d": "Letzte 6 Monate",
"preset365d": "Letzte 12 Monate",
"submit": "PDF erstellen",
"cancel": "Abbrechen",
"errorEndBeforeStart": "Das Ende-Datum darf nicht vor dem Start liegen.",
"errorRangeTooLong": "Der Auswertungszeitraum darf maximal 2 Jahre umfassen.",
"errorInvalidDate": "Bitte wähle ein gültiges Start- und Ende-Datum."
},
"sections": {
"title": "Inhalte auswählen",
"bp": "Blutdruck",
"weight": "Gewicht",
"pulse": "Ruhepuls",
"bmi": "Body-Mass-Index (BMI)",
"mood": "Stimmung",
"moodSensitive": "Sensibel — standardmäßig aus.",
"compliance": "Medikamenten-Compliance",
"sleep": "Schlafdauer",
"empty": "Für den gewählten Zeitraum liegen noch keine Daten vor. Der Bericht enthält dennoch das Deckblatt."
}
},
"errorBoundary": {
"title": "Da ist etwas schiefgelaufen",
"description": "Ein unerwarteter Fehler ist aufgetreten. Du kannst es erneut versuchen, die technischen Details kopieren oder einen Bug-Report öffnen."
},
"nav": {
"home": "Home",
"dashboard": "Dashboard",
"measurements": "Messungen",
"medications": "Medikamente",
"insights": "Insights",
"targets": "Zielwerte",
"achievements": "Erfolge",
"settings": "Einstellungen",
"bugreport": "Bugreport",
"admin": "Admin-Konsole",
"logout": "Abmelden",
"login": "Anmelden",
"notifications": "Benachrichtigungen",
"theme": "Darstellung",
"themeSystem": "System",
"themeDark": "Dunkel",
"themeLight": "Hell",
"collapseSidebar": "Einklappen",
"userMenu": "Benutzermenü",
"mood": "Stimmung",
"skipToContent": "Zum Inhalt springen",
"sidebar": "Sidebar",
"mainNavigation": "Hauptnavigation",
"mobileNavigation": "Mobile Navigation",
"loadingScreen": "Laden…",
"more": "Mehr",
"moreSheetTitle": "Mehr",
"moreSheetDescription": "Seiten, die nicht in die untere Leiste passen."
},
"auth": {
"login": "Anmelden",
"register": "Registrieren",
"username": "Benutzername",
"password": "Passwort",
"email": "E-Mail-Adresse",
"emailPlaceholder": "name@beispiel.de",
"emailOrUsername": "E-Mail-Adresse oder Benutzername",
"emailOrUsernamePlaceholder": "name@beispiel.de oder benutzername",
"loginWithPasskey": "Mit Passkey anmelden",
"loginWithPassword": "Mit Passwort anmelden",
"noAccount": "Noch kein Konto?",
"hasAccount": "Bereits ein Konto?",
"loginFailed": "Anmeldung fehlgeschlagen",
"registerFailed": "Registrierung fehlgeschlagen",
"createAccount": "Konto erstellen",
"newAccount": "Neues Konto erstellen",
"backToPasskey": "Zurück zu Passkey",
"passkeySetupLater": "Passkeys kannst du jederzeit in den Einstellungen einrichten.",
"passwordMinLength": "Min. 12 Zeichen",
"passwordTooShort": "Passwort muss mindestens {minLength} Zeichen lang sein.",
"privacyPolicy": "Datenschutzerklärung"
},
"dashboard": {
"title": "Dashboard",
"greeting": {
"morning": "Guten Morgen",
"day": "Hallo",
"evening": "Guten Abend"
},
"welcomeBack": "{greeting}, willkommen zurück.",
"welcomeBackWithName": "{greeting} {name}, willkommen zurück.",
"greetingSalutation": "Hallo, {name}",
"streakLabel": "Tage in Folge",
"weight": "Gewicht",
"bloodPressure": "Blutdruck",
"pulse": "Puls",
"bodyFat": "Körperfett",
"sleep": "Schlaf",
"steps": "Schritte",
"vo2Max": "VO₂ max",
"vo2MaxUnit": "mL/(kg·min)",
"bpInTarget": "BD im Zielbereich",
"weightShort": "Gewicht",
"bloodPressureSysShort": "BD (Sys)",
"bloodPressureDiaShort": "BD (Dia)",
"pulseShort": "Puls",
"bodyFatShort": "KF",
"moodShort": "Stimmung",
"sleepShort": "Schlaf",
"stepsShort": "Schritte",
"vo2MaxShort": "VO₂ max",
"bpInTargetShort": "BD-Ziel",
"medications": "Medikamente",
"quickAddMeasurement": "Messung erfassen",
"quickAddMood": "Stimmung erfassen",
"compliance7d": "Einnahmetreue (7 Tage)",
"mood": "Stimmung",
"customizeTitle": "Dashboard-Layout",
"layoutReset": "Auf Defaults zurücksetzen",
"layoutSaveSuccess": "Dashboard-Layout gespeichert",
"layoutSaveError": "Layout konnte nicht gespeichert werden",
"layoutResetSuccess": "Auf Standard-Layout zurückgesetzt",
"layoutUsingDefaults": "Standard-Layout aktiv",
"layoutCustomized": "Eigenes Layout aktiv",
"moveUp": "Nach oben",
"moveDown": "Nach unten",
"layoutTileColumn": "Kachel",
"layoutChartColumn": "Chart",
"emptyTitle": "Dein Dashboard ist leer",
"emptyDescription": "Erfasse den ersten Messwert oder Stimmungseintrag. Kacheln und Charts erscheinen automatisch, sobald Daten vorhanden sind.",
"emptyAddMeasurement": "Ersten Messwert erfassen"
},
"measurements": {
"title": "Messungen",
"subtitle": "Gewicht, Blutdruck, Puls und mehr",
"addMeasurement": "Hinzufügen",
"editMeasurement": "Messwert bearbeiten",
"type": "Typ",
"value": "Wert",
"date": "Datum",
"source": "Quelle",
"notes": "Notizen",
"typeWeight": "Gewicht",
"typeBloodPressure": "Blutdruck",
"typeBpSys": "Sys",
"typeBpDia": "Dia",
"typePulse": "Puls",
"typeBodyFat": "Körperfett",
"typeSleep": "Schlaf",
"typeSteps": "Schritte",
"typeBloodGlucose": "Blutzucker",
"typeTotalBodyWater": "Gesamtkörperwasser",
"typeBoneMass": "Knochenmasse",
"typeOxygenSaturation": "Sauerstoffsättigung",
"typeHeartRateVariability": "Herzfrequenzvariabilität",
"typeRestingHeartRate": "Ruheherzfrequenz",
"typeActiveEnergyBurned": "Aktive Energie",
"typeFlightsClimbed": "Treppen",
"typeWalkingRunningDistance": "Geh- und Laufstrecke",
"typeVo2Max": "VO₂max",
"typeBodyTemperature": "Körpertemperatur",
"typeFatFreeMass": "Fettfreie Masse",
"typeFatMass": "Fettmasse",
"typeMuscleMass": "Muskelmasse",
"typeSkinTemperature": "Hauttemperatur",
"typePulseWaveVelocity": "Pulswellengeschwindigkeit",
"typeVascularAge": "Gefäßalter",
"typeVisceralFat": "Viszerales Fett",
"typeAudioExposureEnv": "Lärmbelastung (Umgebung)",
"typeAudioExposureHeadphone": "Lärmbelastung (Kopfhörer)",
"typeTimeInDaylight": "Zeit im Tageslicht",
"typeWalkingSteadiness": "Gehstabilität",
"typeAudioExposureEvent": "Lautes-Hören-Ereignis",
"glucoseContext": "Kontext",
"glucoseContextFasting": "Nüchtern (≥8 h ohne Nahrung)",
"glucoseContextPostprandial": "Postprandial (2 h nach dem Essen)",
"glucoseContextRandom": "Beliebig / ohne Kontext",
"glucoseContextBedtime": "Vor dem Schlafen",
"unitHours": "Stunden",
"unitSteps": "Schritte",
"sourceManual": "Manuell",
"sourceWithings": "Withings",
"sourceImport": "Import",
"sourceAppleHealth": "Apple Health",
"systolicLabel": "Systolisch (mmHg)",
"diastolicLabel": "Diastolisch (mmHg)",
"pulseLabel": "Puls (bpm)",
"valueWithUnit": "Wert ({unit})",
"timestamp": "Zeitpunkt",
"notesPlaceholder": "z.B. nach dem Essen",
"formReset": "Formular zurücksetzen",
"saveError": "Fehler beim Speichern",
"duplicateTimestamp": "Zum gewählten Zeitpunkt existiert bereits ein Messwert dieses Typs.",
"deleteError": "Fehler beim Löschen",
"invalidValue": "Bitte einen gültigen Wert eingeben.",
"invalidTimestamp": "Bitte einen gültigen Zeitpunkt wählen.",
"loginRequired": "Bitte anmelden, um Messwerte zu sehen.",
"allTypes": "Alle Typen",
"filterByType": "Nach Typ filtern",
"measurementCount": "{count} Messwerte",
"emptyTitle": "Noch keine Messwerte",
"emptyDescription": "Erfasse Gewicht, Blutdruck, Puls oder andere Werte, um Trends zu erkennen.",
"emptyFilteredTitle": "Kein Messwert passt zum Filter",
"emptyFilteredDescription": "Wähle einen anderen Typ oder lösche den Filter, um alle Messwerte zu sehen.",
"emptyAddFirst": "Ersten Messwert erfassen",
"emptyResetFilter": "Alle Typen anzeigen",
"comment": "Kommentar",
"actions": "Aktionen",
"deleteConfirmTitle": "Messwert löschen?",
"deleteConfirmDescription": "Dieser Messwert wird unwiderruflich gelöscht.",
"pageInfo": "Seite {page} von {total}",
"previousPage": "Vorherige Seite",
"nextPage": "Nächste Seite"
},
"mood": {
"title": "Stimmung",
"subtitle": "Stimmungsverlauf und Einträge",
"addEntry": "Hinzufügen",
"editEntry": "Eintrag bearbeiten",
"moodLevel": "Stimmung",
"tags": "Tags",
"tagsPlaceholder": "z.B. Sport, Arbeit, Familie",
"tagsHelp": "Kommagetrennt eingeben",
"timestamp": "Zeitpunkt",
"date": "Datum",
"source": "Quelle",
"levelSuperGut": "Super gut",
"levelGut": "Gut",
"levelOkay": "Okay",
"levelSchlecht": "Schlecht",
"levelLausig": "Lausig",
"sourceMoodlog": "moodLog",
"allMoods": "Alle Stimmungen",
"entryCount": "{count} Einträge",
"emptyTitle": "Noch keine Stimmungseinträge",
"emptyDescription": "Erfasse, wie du dich heute fühlst, um Muster über die Zeit zu erkennen.",
"emptyFilteredTitle": "Kein Eintrag passt zum Filter",
"emptyFilteredDescription": "Wähle eine andere Stimmungsstufe oder lösche den Filter, um alle Einträge zu sehen.",
"emptyAddFirst": "Erste Stimmung erfassen",
"emptyResetFilter": "Alle Stimmungen anzeigen",
"actions": "Aktionen",
"formReset": "Formular zurücksetzen",
"saveError": "Fehler beim Speichern",
"deleteError": "Fehler beim Löschen",
"invalidTimestamp": "Bitte einen gültigen Zeitpunkt wählen.",
"deleteConfirmTitle": "Eintrag löschen?",
"deleteConfirmDescription": "Dieser Stimmungseintrag wird unwiderruflich gelöscht.",
"pageInfo": "Seite {page} von {total}",
"loginRequired": "Bitte anmelden, um Stimmungseinträge zu sehen."
},
"medications": {
"title": "Medikamente",
"subtitle": "Medikation, Zeitpläne & Einnahmen",
"loginRequired": "Bitte anmelden, um Medikamente zu verwalten.",
"addMedication": "Hinzufügen",
"editMedication": "Medikament bearbeiten",
"newMedication": "Neues Medikament",
"firstMedication": "Erstes Medikament anlegen",
"emptyTitle": "Noch keine Medikamente",
"emptyDescription": "Lege Medikamente, Dosierungen und Einnahmefenster an, um Compliance zu erfassen.",
"loadFailed": "Medikamente konnten nicht geladen werden",
"retryLoad": "Erneut laden",
"name": "Name",
"dose": "Dosis",
"scheduleFrom": "Von",
"scheduleTo": "Bis",
"scheduleLabel": "Bezeichnung",
"scheduleDays": "Tage",
"scheduleDaily": "Täglich",
"inactive": "Pausiert",
"intakeHistory": "Einnahme-Verlauf",
"deleteConfirm": "Medikament löschen?",
"compliance": "Einnahmetreue",
"importIntakes": "Einnahmen importieren",
"importDescription": "JSON-Array mit Einnahme-Daten einfügen. Erwartetes Format:",
"importUploadFile": "JSON-Datei hochladen",
"importPaste": "JSON hier einfügen...",
"importSelected": "Ausgewählt: {name}",
"importFileLoaded": "Datei \"{name}\" geladen",
"importInvalidJson": "Datei enthält kein gültiges JSON",
"importNoArray": "Kein Array gefunden",
"importResult": "{imported} Einnahmen importiert",
"importDuplicatesSkipped": "{count} Duplikate übersprungen",
"importInvalidSkipped": "{count} ungültige Einträge übersprungen",
"importFailed": "Import fehlgeschlagen",
"importInvalidFormat": "Ungültiges JSON-Format",
"apiEndpointTitle": "API-Endpoint: {name}",
"apiEndpointDescription": "Nutze diesen Endpoint, um Einnahmen per API zu erfassen (z.B. via iPhone-Kurzbefehl oder cron-Job).",
"apiEndpointActive": "API-Endpoint aktiv",
"apiEndpointActivated": "API-Endpoint aktiviert",
"apiEndpointDeactivated": "API-Endpoint deaktiviert",
"apiTokenCount": "Aktiv ({count} Token)",
"apiToken": "API-Token",
"apiTokenActiveHint": "Endpoint ist aktiv. Vorhandene Tokens bleiben gültig, können aber nicht erneut im Klartext angezeigt werden.",
"apiTokenActivateHint": "Aktiviere den Endpoint, um einen neuen Token zu erstellen.",
"apiTokenOnceHint": "Der Token wird nur bei der Erstellung einmal im Klartext angezeigt.",
"requestExample": "Request-Beispiel",
"statusLoadFailed": "Status konnte nicht geladen werden",
"changeFailed": "Ändern fehlgeschlagen",
"categoryBloodPressure": "Blutdrucksenker",
"categoryVitamin": "Vitamine",
"categoryThyroid": "Schilddrüse",
"categoryHormone": "Hormone",
"categorySupplement": "Nahrungsergänzung",
"categoryPainRelief": "Schmerzmittel",
"categoryAllergy": "Allergie",
"categoryDigestive": "Magen/Darm",
"categorySkin": "Hautpflege",
"categorySleepAid": "Schlafmittel",
"categoryOther": "Sonstiges",
"daysSun": "So",
"daysMon": "Mo",
"daysTue": "Di",
"daysWed": "Mi",
"daysThu": "Do",
"daysFri": "Fr",
"daysSat": "Sa",
"back": "Zurück",
"today": "Heute",
"yesterday": "Gestern",
"tomorrow": "Morgen",
"withoutNotification": "Ohne Benachrichtigung",
"pausedSince": "Pausiert seit",
"takeNow": "Jetzt einnehmen",
"overdue": "Überfällig",
"veryOverdue": "Stark überfällig",
"compliance7d": "7-Tage-Compliance",
"compliance30d": "30-Tage-Compliance",
"lastIntake": "Letzte Einnahme:",
"nextIntake": "Nächste Einnahme:",
"dayStreak": "Tage Serie",
"taken": "Genommen",
"skipped": "Übersprungen",
"weekdaySunday": "Sonntag",
"weekdayMonday": "Montag",
"weekdayTuesday": "Dienstag",
"weekdayWednesday": "Mittwoch",
"weekdayThursday": "Donnerstag",
"weekdayFriday": "Freitag",
"weekdaySaturday": "Samstag",
"weekdaySundayPlural": "Sonntags",
"weekdayMondayPlural": "Montags",
"weekdayTuesdayPlural": "Dienstags",
"weekdayWednesdayPlural": "Mittwochs",
"weekdayThursdayPlural": "Donnerstags",
"weekdayFridayPlural": "Freitags",
"weekdaySaturdayPlural": "Samstags",
"formType": "Typ",
"formDose": "Dosis",
"formUnit": "Einheit",
"formSchedule": "Zeitfenster",
"formTreatmentClass": "Behandlungsklasse",
"formTreatmentClassHelp": "Wähle „GLP-1-Injektion“ für wöchentliche Spritzen wie Mounjaro, Ozempic, Wegovy, Zepbound. Schaltet die Körperkarte und das GLP-1-Logbuch frei.",
"treatmentClassGeneric": "Standard-Medikament",
"treatmentClassGlp1": "GLP-1-Injektion",
"glp1WeeklyPresetTitle": "Einmal wöchentlich am …",
"glp1WeeklyPresetHelp": "Die meisten GLP-1-Rezeptoragonisten werden einmal pro Woche injiziert. Tippe einen Tag, um den Rhythmus zu setzen.",
"glp1WeeklyPresetSuggest": "Letzten gewählten Wochentag übernehmen",
"glp1DosesPerUnit": "Dosen pro Pen / Ampulle",
"glp1DosesPerUnitPlaceholder": "z. B. 4 für einen Mounjaro KwikPen",
"glp1DosesPerUnitHelp": "Optional — Mounjaro KwikPen = 4, Ozempic 0,25/0,5 mg = 4, Wegovy Einmal-Pen = 1. Leer lassen, wenn keine Dosis-pro-Pen-Verfolgung gewünscht ist.",
"glp1LastInjection": "Letzter Termin: {label}",
"glp1LastInjectionWithSite": "Letzter Termin: {label} · {site}",
"glp1NextInjectionDays": "Nächster Termin: {label} (in {days} Tagen)",
"glp1NextInjectionToday": "Nächster Termin: heute",
"glp1NextInjectionTomorrow": "Nächster Termin: morgen",
"glp1RotationLast": "Letzte Stelle: {site}",
"glp1RotationSuggested": "Empfohlen: {site}",
"glp1LogSideEffect": "Nebenwirkung loggen",
"sideEffects": {
"section": "Nebenwirkungen",
"addCta": "Erfassen",
"sheetTitle": "Nebenwirkung erfassen",
"categoryLabel": "Kategorie",
"entryLabel": "Symptom",
"severityLabel": "Schweregrad",
"severity": {
"mild": "Leicht",
"moderate": "Mittel",
"significant": "Deutlich",
"severe": "Stark",
"verySevere": "Sehr stark"
},
"notesLabel": "Notiz (optional)",
"notesPlaceholder": "Was du dir merken willst, max. 280 Zeichen",
"submitCta": "Speichern",
"cancelCta": "Abbrechen",
"emptyState": "Noch keine Nebenwirkungen erfasst. Tracking hilft dir und deiner Ärztin, Muster über die Zeit zu erkennen.",
"recentTitle": "Letzte 30 Tage",
"loading": "Wird geladen…",
"deleteCta": "Löschen",
"deleteConfirm": "Eintrag löschen?",
"errorSeverity": "Schweregrad muss zwischen 1 und 5 liegen",
"errorEntry": "Bitte ein Symptom auswählen",
"categories": {
"gi": "Magen-Darm",
"metabolic": "Stoffwechsel",
"injectionSite": "Injektionsstelle",
"cognitive": "Kognition",
"glp1Specific": "GLP-1 spezifisch"
},
"entries": {
"nausea": "Übelkeit",
"vomiting": "Erbrechen",
"diarrhea": "Durchfall",
"constipation": "Verstopfung",
"abdominalPain": "Bauchschmerzen",
"hypoglycemiaSymptoms": "Unterzucker-Symptome",
"dehydration": "Dehydratation",
"anorexia": "Appetitverlust",
"electrolyteFatigue": "Elektrolyt-Müdigkeit",
"injectionRedness": "Rötung Einstichstelle",
"injectionSwelling": "Schwellung Einstichstelle",
"injectionBruising": "Bluterguss Einstichstelle",
"injectionInduration": "Verhärtung Einstichstelle",
"brainFog": "Konzentrationsnebel",
"dizziness": "Schwindel",
"lowMood": "Gedrückte Stimmung",
"lowEnergy": "Energielosigkeit",
"earlySatiety": "Frühes Sättigungsgefühl",
"gastroparesisLike": "Verlangsamte Magenentleerung",
"dysgeusia": "Geschmacksveränderung",
"gallbladderDiscomfort": "Gallenblasen-Beschwerden"
}
},
"scheduling": {
"section": "Zeitplan",
"loading": "Lade Zeitplan-Daten",
"loadFailed": "Zeitplan-Daten konnten nicht geladen werden.",
"editCta": "Bearbeiten",
"reminders": {
"on": "Erinnerungen an",
"off": "Erinnerungen aus"
},
"cadenceViz": {
"title": "Letzte 30 Tage",
"ariaTimeline": "Dosis-Zeitstrahl der letzten 30 Tage",
"emptyState": "Im Zeitfenster sind keine Dosen geplant.",
"nextDoseLabel": "Nächste Dosis:",
"noNextDose": "Keine kommende Dosis geplant.",
"status": {
"taken": "Genommen",
"skipped": "Ausgelassen",
"missed": "Verpasst",
"upcoming": "Geplant"
}
},
"compliance": {
"title": "Adhärenz",
"noData": "Keine Daten",
"adherenceRate": "Adhärenz",
"currentStreak": "Aktuelle Serie",
"longestStreak": "Längste Serie",
"missedLast30": "Verpasst (30 T.)",
"unit": {
"days": "T.",
"doses": "Dosen"
},
"chips": {
"adherenceTooltip": "Anteil genommener Dosen im 30-Tage-Fenster (ausgelassene Dosen werden ausgenommen).",
"streakTooltip": "Aufeinanderfolgende Tage bis heute, an denen alle geplanten Dosen genommen oder bewusst ausgelassen wurden.",
"longestTooltip": "Längste durchgehende Serie im 30-Tage-Fenster.",
"missedTooltip": "Anzahl verpasster Dosen in den letzten 30 Tagen."
}
}
},
"titration": {
"section": "Titrationsstufen",
"loading": "Lade Titrationsdaten",
"loadFailed": "Titrationsdaten konnten nicht geladen werden.",
"drugLadderHeader": "Standard-Schema (EMA-Referenz)",
"typicalWeeksOnStep": "≥ {weeks} Wo. typisch",
"youAreHere": "Hier stehst du",
"nextStepCaption": "Nächste Stufe (typisch): {dose} mg nach ~{weeks} Wochen auf der aktuellen Stufe.",
"ceilingMessage": "Du bist auf der höchsten Standardstufe.",
"escalationDueHint": "Du bist seit {weeks} Wochen auf dieser Stufe; das Schema sieht eine Steigerung typischerweise nach ~{typical} Wochen vor.",
"currentStepDwell": "Seit {weeks} Wochen auf dieser Stufe",
"doseUnitMg": "mg",
"emptyState": "Noch keine Dosis-Historie. Erfasse eine Dosis, um deine Position im Schema zu sehen.",
"nonStandardDose": "Aktuelle Dosis liegt außerhalb des Standard-Schemas.",
"disclaimer": "EMA-Referenzwerte. Sprich mit deiner Ärztin oder deinem Arzt, bevor du Dosen änderst.",
"emaSourceCta": "EMA-Quelle",
"stepLabel": "Stufe {n}"
},
"injectionSiteBodyOutlineAriaLabel": "Körperumriss",
"injectionSitePickerAriaLabel": "Injektionsstelle auswählen",
"siteAbdomenLeft": "Bauch, unten links",
"siteAbdomenRight": "Bauch, unten rechts",
"siteAbdomenUpperLeft": "Bauch, oben links",
"siteAbdomenUpperRight": "Bauch, oben rechts",
"siteThighLeft": "Linker Oberschenkel",
"siteThighRight": "Rechter Oberschenkel",
"siteUpperArmLeft": "Linker Oberarm",
"siteUpperArmRight": "Rechter Oberarm",
"sideEffectTagsHelp": "Tippe einen Chip, um ihn zu den Mood-Tags hinzuzufügen.",
"sideEffectTagNausea": "Übelkeit",
"sideEffectTagConstipation": "Verstopfung",
"sideEffectTagDiarrhea": "Durchfall",
"sideEffectTagFatigue": "Müdigkeit",
"sideEffectTagAppetiteLoss": "Appetitlosigkeit",
"sideEffectTagHeartburn": "Sodbrennen",
"sideEffectTagHeadache": "Kopfschmerzen",
"newSchedule": "Neues Zeitfenster",
"removeSchedule": "Zeitfenster entfernen",
"advancedEditing": "Erweiterte Bearbeitung",
"advancedEditingHide": "Erweiterte Bearbeitung ausblenden",
"scheduleInterval": "Intervall",
"scheduleEveryWeek": "jede Woche",
"scheduleEveryNWeeks": "alle {n} Wochen",
"scheduleIntervalPrefix": "Intervall:",
"nextSchedulePrefix": "Nächstes Zeitfenster:",
"nextScheduleDaily": "täglich",
"importIntakesAction": "Einnahmen importieren",
"apiEndpointAction": "API-Endpunkt",
"pause": "Pausieren",
"activate": "Aktivieren",
"disableNotifications": "Benachrichtigungen deaktivieren",
"enableNotifications": "Benachrichtigungen aktivieren",
"purgeRecords": "Alle Aufzeichnungen löschen",
"formReset": "Formular zurücksetzen",
"createMedication": "Medikament anlegen",
"deleteConfirmDescription": "Das Medikament und die gesamte Einnahme-Historie werden unwiderruflich gelöscht.",
"purgeConfirmTitle": "Alle Aufzeichnungen löschen?",
"purgeConfirmDescription": "Alle Einnahme-Aufzeichnungen für dieses Medikament werden unwiderruflich gelöscht. Das Medikament selbst bleibt bestehen und startet ohne Verlaufsdaten.",
"saveError": "Fehler beim Speichern",
"deleteError": "Fehler beim Löschen",
"purgeError": "Fehler beim Löschen der Aufzeichnungen",
"invalidTimestamp": "Bitte einen gültigen Zeitpunkt wählen.",
"noIntakesYet": "Noch keine Einnahmen vorhanden",
"actions": "Aktionen",
"pageInfo": "Seite {page} von {total}",
"previousPage": "Vorherige Seite",
"nextPage": "Nächste Seite",
"loginRequiredIntakes": "Bitte anmelden, um Einnahmen zu sehen.",
"phaseConfig": "Erinnerungsphasen",
"phaseConfigDescription": "Konfiguriere die Zeitpunkte für Erinnerungen.",
"phaseGreen": "Grün",
"phaseYellow": "Gelb",
"phaseOrange": "Orange",
"phaseRed": "Rot",
"phaseMinutes": "Min",
"phasePercent": "%",
"phaseBeforeEnd": "vor Ende",
"phaseAfterEnd": "nach Ende",
"phaseResetDefaults": "Auf Defaults zurücksetzen",
"phaseSaved": "Erinnerungsphasen gespeichert",
"phaseReset": "Auf Defaults zurückgesetzt",
"sourceWeb": "Webseite",
"sourceApi": "Externe API",
"sourceReminder": "Telegram / Erinnerung",
"sourceImport": "CSV-Import",
"unitDrops": "Tropfen",
"unitTablets": "Tablette(n)",
"unitCapsules": "Kapsel(n)",
"unitPieces": "Stück",
"namePlaceholder": "z.B. Ibuprofen",
"dosePlaceholder": "z.B. 400",
"labelPlaceholder": "z.B. Morgens",
"defaultDose": "Standard",
"dayDeactivate": "{day} deaktivieren",
"dayActivate": "{day} aktivieren",
"glp1": {
"drug": {
"tirzepatide": {
"name": "Tirzepatid"
},
"semaglutide": {
"name": "Semaglutid"
},
"liraglutide": {
"name": "Liraglutid"
},
"dulaglutide": {
"name": "Dulaglutid"
},
"exenatide": {
"name": "Exenatid"
}
}
},
"researchMode": {
"dialog": {
"title": "Forschungsmodus aktivieren",
"intro": "Der Forschungsmodus ergänzt deine GLP-1-Medikamentenseite um eine geschätzte Wirkstoff-Verlaufskurve. Lies die Abgrenzung unten, bevor du den Modus einschaltest — die Kurve ist eine Lernhilfe, niemals eine Messung und nie ein medizinischer Rat.",
"whatItIsHeader": "Was das ist",
"whatItIs": "Eine Sägezahnkurve, die die Überlagerung deiner protokollierten Dosen über die Zeit simuliert. Grundlage ist das Ein-Kompartment-Modell nach Bateman mit Absorptions- und Halbwertszeit-Parametern aus den EMA-EPARs der zugelassenen GLP-1-Rezeptoragonisten. Die Y-Achse ist einheitenlos und ohne Beschriftung. Die Form, nicht der Zahlenwert, ist die Aussage der Kurve.",
"whatItIsntHeader": "Was das nicht ist",
"whatItIsnt": "Kein Blutspiegel. Keine Messung. Keine Vorhersage, wie dein Körper tatsächlich reagiert. Keine Grundlage für Dosierungs-, Zeitpunkt- oder Eskalationsentscheidungen. Für alles, was deine Therapie betrifft, sprich mit deiner verschreibenden Ärztin oder deinem Arzt.",
"whyEstimateHeader": "Warum es eine Schätzung ist",
"whyEstimate": "Populations-Pharmakokinetik beschreibt den typischen Patienten. Die individuelle Streuung ist groß — das Tirzepatid-Modell Schneck/Urva 2024 weist rund 22 % interindividuelle Variabilität bei der Absorption und rund 49 % beim Verteilungsvolumen aus. Eine Lehrbuchkurve kann weder dein Gewicht, deine Nierenfunktion, deine Injektionstechnik noch deine Zeitgenauigkeit abbilden. Lies die Kurve als Rhythmus deiner Dosierung, nicht als deinen Spiegel.",
"mdrBoundaryHeader": "Regulatorische Abgrenzung",
"mdrBoundary": "HealthLog stellt öffentliche regulatorische Daten und deine eigenen Einträge dar. Die App stellt keine Prognose, Diagnose, Behandlung oder Therapieempfehlung. Die EU-Verordnung 2017/745 (Medical Device Regulation, MDR) und das Leitfadenpapier MDCG 2021-24 ziehen die Grenze bei Software, die Daten für medizinische Zwecke interpretiert — diese Kurve bleibt klar auf der edukativen Seite dieser Linie. Wenn du das Gefühl hast, die Kurve dränge dich zu einer klinischen Entscheidung, schließe sie.",
"citationsHeader": "Quellen",
"citations": "EMA European Public Assessment Reports für Mounjaro, Ozempic, Wegovy, Saxenda, Trulicity, Byetta und Bydureon (Abschnitt 5.2). Schneck K, Urva S. Population pharmacokinetics of the GIP/GLP receptor agonist tirzepatide. CPT Pharmacometrics Syst Pharmacol 2024;13(3):494-503 (DOI 10.1002/psp4.13099).",
"versionLine": "Disclaimer-Version: {version}",
"acknowledgeCta": "Verstanden — aktivieren",
"cancelCta": "Abbrechen",
"successToast": "Forschungsmodus aktiviert. Die Wirkstoff-Verlaufskurve ist jetzt auf deiner GLP-1-Medikamentenseite sichtbar.",
"errorToast": "Forschungsmodus konnte nicht aktiviert werden. Bitte erneut versuchen.",
"staleVersionToast": "Der Disclaimer wurde aktualisiert, seit diese Seite geladen wurde. Lade die Seite neu, um die aktuelle Fassung zu lesen."
},
"chart": {
"title": "Geschätzter Wirkstoffverlauf",
"axisLabel": "Geschätzter Spiegel (relativ)",
"emptyState": "Noch keine Einnahmen erfasst.",
"emptyStateCta": "Trage eine Dosis ein, damit die geschätzte Verlaufskurve Gestalt annimmt.",
"estimateNote": "Edukative Schätzung aus EMA-publizierter Populations-Pharmakokinetik. Keine Messung.",
"gatedTitle": "Forschungsmodus ist aus",
"gatedBody": "Aktiviere den Forschungsmodus in den Einstellungen, um die geschätzte Wirkstoffkurve zu sehen. Die Kurve ist opt-in, weil sie eine Lernhilfe und keine klinische Messung ist.",
"gatedStaleTitle": "Disclaimer muss neu bestätigt werden",
"gatedStaleBody": "Der Disclaimer des Forschungsmodus wurde seit deiner letzten Bestätigung aktualisiert. Lies ihn in den Einstellungen erneut und bestätige, um die Kurve wieder einzublenden.",
"gatedCta": "Forschungsmodus in den Einstellungen öffnen",
"unknownDrug": "{name} ist nicht im EMA-zugelassenen GLP-1-Katalog enthalten. HealthLog kann dafür keine Populations-Pharmakokinetik-Kurve erzeugen."
}
}
},
"charts": {
"weight": "Gewicht",
"bloodPressure": "Blutdruck",
"pulse": "Puls",
"bodyFat": "Körperfett",
"sleep": "Schlaf",
"steps": "Schritte",
"noData": "Keine Daten im gewählten Zeitraum",
"bucketWeekly": "Wochendurchschnitt",
"bucketMonthly": "Monatsdurchschnitt",
"points7Label": "7 Pkt",
"points7Title": "Letzte 7 Messpunkte",
"points30Label": "30 Pkt",
"points30Title": "Letzte 30 Messpunkte",
"points90Label": "90 Pkt",
"points90Title": "Letzte 90 Messpunkte",
"pointsAllLabel": "Alle",
"pointsAllTitle": "Alle verfügbaren Messpunkte",
"systolic": "Systolisch",
"diastolic": "Diastolisch",
"bodyWater": "Körperwasser",
"boneMass": "Knochenmasse",
"spo2": "SpO₂",
"movingAverage7d": "7-Tage-Trend",
"avg7dShort": "7T",
"avg30dShort": "30T",
"trend7dShort": "7-Tage-Trend",
"trend": "Trend",
"perWeek": "/Woche",
"totalDelta": "Gesamt",
"colorGreen": "Grün:",
"colorOrange": "Orange:",
"colorRed": "Rot:",
"mood": "Stimmung",
"moodScore": "Stimmungswert",
"weekdays": {
"mon": "Mo",
"wed": "Mi",
"fri": "Fr",
"sun": "So"
},
"months": {
"jan": "Jan",
"feb": "Feb",
"mar": "Mär",
"apr": "Apr",
"may": "Mai",
"jun": "Jun",
"jul": "Jul",
"aug": "Aug",
"sep": "Sep",
"oct": "Okt",
"nov": "Nov",
"dec": "Dez"
},
"heatmapOnTime": "pünktlich",
"heatmapLate": "spät",
"heatmapVeryLate": "sehr spät",
"legendOnTime": "Pünktlich",
"legendLate": "Spät",
"legendVeryLate": "Sehr spät",
"legendMissed": "Verpasst",
"emptyStateTitle": "Erfasse mehr Messungen, um Trends zu sehen",
"emptyStateDescription": "Erfasse mindestens 3 Einträge, um die Trendlinie freizuschalten.",
"personalBaseline": "Dein Mittel",
"deltaVsBaseline": "{delta} vs. dein Mittel",
"deltaUnchanged": "entspricht deinem Mittel",
"deltaVsTarget": "{delta} vs. Ziel"
},
"chart": {
"overlay": {
"controls": {
"title": "Chart-Overlays",
"trendIndicator": "7-Tage-Trend",
"trendArrow": "Trend-Pfeil",
"targetRange": "Zielbereich",
"comparisonBaseline": "Vergleich",
"comparisonUnavailable": "Kein Vorzeitraum verfügbar",
"tooltip": {
"openSettings": "Chart-Overlay-Einstellungen"
}
}
}
},
"comparison": {
"toggleLabel": "Vergleichen mit",
"toggleHint": "Vergleicht den aktuellen Zeitraum mit dem Vorjahreszeitraum.",
"baseline": {
"none": "Aus",
"lastMonth": "Vormonat",
"lastYear": "Vorjahr"
},
"captionLastMonth": "vs. Vormonat",
"captionLastYear": "vs. Vorjahr",
"deltaVs": {
"lastMonth": "{delta} vs. Vormonat",
"lastYear": "{delta} vs. Vorjahr"
},
"tooltipPrior": "Vorperiode",
"unavailable": {
"lastMonth": "Vergleich nicht verfügbar — noch keine Daten aus dem Vormonat",
"lastYear": "Vergleich nicht verfügbar — noch keine Daten aus dem Vorjahr"
},
"notAvailableForCompliance": "Vergleich für Compliance nicht verfügbar"
},
"insights": {
"emptyTitle": "Noch nicht genug Daten",
"emptyDescription": "Insights erscheinen, sobald du ein paar Messwerte erfasst hast. Beginne mit Gewicht oder Blutdruck.",
"emptyAddMeasurement": "Messwert erfassen",
"bmiEmptyTitle": "Größe hinzufügen für BMI",
"bmiEmptyDescription": "Für den BMI wird deine Körpergröße benötigt. Hinterlege sie unter Einstellungen → Account.",
"bmiEmptyAction": "Account-Einstellungen öffnen",
"noAnalysisYet": "Noch keine Analyse vorhanden.",
"noProviderConfigured": "KI-Provider nicht konfiguriert.",
"startAnalysis": "Analyse starten",
"refreshAnalysis": "Analyse aktualisieren",
"keyTakeaway": "Das Wichtigste",
"findingsTitle": "Befunde",
"heroFindingPositive": "Wichtigster Befund",
"heroFindingNeutral": "Wichtigster Befund",
"heroFindingAttention": "Beachten",
"heroFindingWarning": "Wichtigster Alarm",
"correlationsTitle": "Zusammenhänge",
"briefingDisabledByOperator": "Das Tagesbriefing ist auf diesem Server derzeit nicht verfügbar.",
"statusDisabledByOperator": "Status-Karten sind auf diesem Server derzeit nicht verfügbar.",
"correlationsDisabledByOperator": "Korrelations-Erzählung ist auf diesem Server derzeit nicht verfügbar.",
"recommendationsTitle": "Empfehlungen",
"personalRecord": {
"badge": "PR",
"tooltip": "Persönlicher Rekord: {value} {unit} am {date}"
},
"recommendation": {
"source": "Quelle",
"viewSource": "Leitlinie in neuem Tab öffnen",
"rationale": "Warum diese Empfehlung",
"rationaleWindow": "Fenster",
"rationaleComparedTo": "Verglichen mit",
"rationaleDeviation": "Abweichung",
"rationaleExpand": "Begründung anzeigen",
"rationaleCollapse": "Begründung ausblenden",
"legacyPayloadCta": "Insights aktualisiert — Neugenerierung lädt die neuen Erklärfunktionen",
"feedbackHelpful": "Hilfreich",
"feedbackNotHelpful": "Nicht hilfreich",
"feedbackThanks": "Danke für dein Feedback",
"feedbackConfirmed": "Feedback gespeichert",
"feedbackAlreadyRated": "Bereits bewertet",
"confidence": "Vertrauen",
"confidenceAria": "Vertrauen: {value} von 100",
"confidenceHigh": "Hohes Vertrauen",
"confidenceMedium": "Mittleres Vertrauen",
"confidenceLow": "Geringes Vertrauen — wenige Datenpunkte",
"confidenceDraft": "Entwurf"
},
"dataFoundation": "Datengrundlage",
"dataGaps": "Datenlücken:",
"lastUpdated": "Zuletzt aktualisiert",
"confidenceHoch": "Hoch",
"confidenceMittel": "Mittel",
"confidenceGering": "Gering",
"loadError": "Auswertungen konnten nicht geladen werden",
"heroGenerated": "Erstellt {time}",
"heroPersonalBaseline": "Basierend auf deinen letzten 90 Tagen",
"heroRegenerate": "Neu generieren",
"heroRegenerating": "Wird generiert",
"regenerateAnalysis": "Analyse neu starten",
"regenerateSuccess": "Analyse wurde neu erstellt",
"heroFallbackSubtitle": "Täglicher Blick auf deine Trends — direkt aus den Zahlen, die du protokollierst.",
"heroGreetingMorning": "Guten Morgen",
"heroGreetingAfternoon": "Guten Tag",
"heroGreetingEvening": "Guten Abend",
"heroComingSoonTooltip": "Kommt bald",
"heroActionAskCoach": "Coach fragen",
"healthScore": {
"label": "Gesundheitsscore",
"progressAria": "Gesundheitsscore-Fortschritt",
"deltaVsLastWeek": "{delta} im Vergleich zur Vorwoche",
"deltaUnavailable": "Noch keine Historie — schau nächste Woche wieder vorbei.",
"componentBp": "Blutdruck",
"componentWeight": "Gewicht",
"componentMood": "Stimmung",
"componentCompliance": "Einnahmetreue",
"disclaimer": "Orientierungshilfe — keine ärztliche Bewertung.",
"deltaExplainer": {
"trigger": "Was bedeutet diese Veränderung?",
"title": "So wird die Veränderung berechnet",
"description": "Veränderung gegenüber letzter Woche: {delta}",
"body": "Der Score kombiniert Blutdruck, Gewicht, Stimmung und Einnahmetreue. Wir vergleichen den heutigen Stand mit demselben Zeitpunkt vor einer Woche. Erfasse eine frische Messung oder einen Stimmungs-Check, um den Wert nach oben zu schubsen."
},
"provenance": {
"toggle": "Zusammensetzung",
"weightLabel": "Anteil",
"mixedBanner": "Einige Komponenten kombinieren mehrere Quellen. Die Aufschlüsselung zeigt den aktuellsten Wert je Komponente.",
"footnote": "Anteile sind nach verfügbaren Daten neu skaliert.",
"asOfLabel": "Stand {date}",
"provisional": "Vorläufig — nur {count} von {total} Datenpunkten verfügbar",
"provisionalBadge": "Vorläufig",
"sourceAria": "Quelle: {source}",
"sources": {
"manual": "Manuell",
"withings": "Withings",
"appleHealth": "Apple Health",
"mixed": "Gemischt",
"none": "Keine Daten"
}
}
},
"suggestedPrompts": {
"label": "Frag mich",
"whyMonday": "Warum war der Blutdruck am Montag höher?",
"weightVsPulse": "Wie hat sich die Gewichtsabnahme auf meinen Puls ausgewirkt?",
"weekVsMonth": "Vergleich diese Woche mit letztem Monat",
"tellMyDoctor": "Was sollte ich meinem Arzt sagen?",
"medicationWorking": "Wirkt mein Medikament?"
},
"dailyBriefing": {
"title": "Tagesbriefing",
"keyFindingsTitle": "Wichtige Befunde",
"emptyTitle": "Noch kein Briefing",
"emptyDescription": "Erstelle das heutige Briefing, um eine Zusammenfassung deiner Trends zu bekommen.",
"emptyAction": "Briefing erstellen",
"loadingLabel": "Briefing wird zusammengestellt"
},
"therapyTimeline": {
"title": "GLP-1-Therapieverlauf",
"description": "Chronologische Liste: Dosis-Änderungen, Injektionen, Bestand und Nebenwirkungstage.",
"empty": "Keine GLP-1-Ereignisse in den letzten 90 Tagen.",
"doseTo": "Dosis auf",
"pens": "Pens",
"sideEffects": "Nebenwirkungen"
},
"trendsRow": {
"title": "Trends",
"subtitle": "Die letzten 30 Tage auf einen Blick"
},
"vo2Max": {
"statLatest": "Aktuell",
"statMin": "Min",
"statMax": "Max",
"empty": "Noch keine VO₂-Max-Daten — synchronisiere Apple Health, um diese Ansicht zu füllen."
},
"trendAnnotation": {
"emptyBp": "Mehr Daten nötig, um diesen Trend zu kommentieren.",
"emptyWeight": "Mehr Daten nötig, um diesen Trend zu kommentieren.",
"emptyMood": "Mehr Daten nötig, um diesen Trend zu kommentieren.",
"confidenceHigh": "Hohe Konfidenz",
"confidenceModerate": "Mittlere Konfidenz",
"confidenceLow": "Geringe Konfidenz"
},
"correlationRow": {
"title": "Zusammenhänge",
"subtitle": "Vorab definierte Hypothesen, gegated auf n ≥ 14 und p < 0,05",
"disclaimer": "Zusammenhänge sind beobachtend, nicht kausal — sprich mit deinem Arzt, wenn der Blutdruck hoch ist.",
"experimentCta": "7-Tage-Experiment starten",
"experimentTooltip": "Bald verfügbar",
"emptyTitle": "Mehr Daten nötig, um diesen Zusammenhang zu zeigen",
"sourceChip": "basierend auf {n} gepaarten Messungen · {window}",
"sourceWindowLast30": "letzte 30 Tage",
"confidenceHigh": "Hohe Konfidenz",
"confidenceModerate": "Mittlere Konfidenz",
"confidenceLow": "Geringe Konfidenz",
"card": {
"bpComplianceTitle": "BD × Medikamenten-Compliance",
"bpComplianceSubtitle": "Täglicher Systolischer gegen Compliance-%",
"moodPulseTitle": "Stimmung × Ruhepuls",
"moodPulseSubtitle": "Stimmung und Ruhepuls am selben Tag",
"weightWeekdayTitle": "Gewicht × Wochentag",
"weightWeekdaySubtitle": "Gewicht nach Wochentag gruppiert"
}
},
"coach": {
"refusalOutOfScope": "Ich kann nur bei den Gesundheitsdaten in deinem Log helfen — Messwerte, Medikamente, Stimmung, Trends. Fragen außerhalb dieses Themas beantworte ich nicht.",
"refusalInjection": "In deiner Nachricht stehen Anweisungen, die meine Vorgaben überschreiben sollen. Ich bin der HealthLog-Coach und fasse ausschließlich deine eigenen Gesundheitsdaten zusammen — formuliere deine Frage bitte in diesem Rahmen neu.",
"errorBudget": "Du hast das heutige Coach-Limit erreicht. Das Budget setzt sich um Mitternacht (UTC) zurück.",
"errorProvider": "Der Coach konnte gerade keinen KI-Anbieter erreichen. Bitte versuche es in einem Moment erneut.",
"tagline": "Persönlicher Gesundheitscoach, auf deine Daten gestützt.",
"newChat": "Neuer Chat",
"send": "Senden",
"thinking": "Denke nach…",
"composerPlaceholder": "Frag mich etwas zu deinen Daten…",
"composerHint": "Enter zum Senden, Umschalt+Enter für eine neue Zeile.",
"composerDisclaimer": "Coach-Antworten sind generiert. Klinische Entscheidungen gehören in die Hand deines Arztes.",
"voiceComingSoon": "Spracheingabe kommt mit der iOS-App in v1.5.",
"disabledByOperator": "Der Coach ist auf diesem Server derzeit nicht verfügbar.",
"threadEmpty": "Frag mich etwas zu deinen Trends, Medikamenten oder Messwerten, um zu starten.",
"historyTitle": "Unterhaltungen",
"historySearchPlaceholder": "Unterhaltungen durchsuchen…",
"historyEmpty": "Deine Unterhaltungen erscheinen hier. Stell eine Frage, um zu starten.",
"historyDeleteAria": "Unterhaltung löschen",
"historyDeleteConfirm": "Diese Unterhaltung löschen? Das lässt sich nicht rückgängig machen.",
"sourcesTitle": "Worauf ich zugreife",
"sourcesFresh": "Aktuell",
"sourcesStale": "Veraltet",
"sourcesFooter": "Der Coach liest nur Daten, die du verbunden hast.",
"evidenceLabel": "Worauf bezieht sich das?",
"metric": {
"bp": "Blutdruck",
"weight": "Gewicht",
"pulse": "Puls",
"mood": "Stimmung",
"compliance": "Einnahmetreue",
"general": "Allgemein",
"hrv": "HRV",
"sleep": "Schlaf",
"resting_hr": "Ruhepuls",
"steps": "Schritte",
"active_energy": "Aktive Energie",
"flights": "Stockwerke",
"distance": "Strecke",
"vo2_max": "VO₂ max",
"body_temp": "Körpertemperatur"
},
"window": {
"last7days": "letzte 7 Tage",
"last30days": "letzte 30 Tage",
"last90days": "letzte 90 Tage",
"lastYear": "Jahresrückblick",
"allTime": "gesamter Zeitraum"
},
"windowLabel": "Zeitraum",
"settingsAriaLabel": "Coach-Einstellungen",
"settingsTitle": "Coach-Einstellungen",
"settingsDescription": "Stell ein, wie der Coach mit dir spricht.",
"settingsToneLabel": "Tonfall",
"settingsToneWarm": "Warm",
"settingsToneNeutral": "Neutral",
"settingsToneConcise": "Knapp",
"settingsVerbosityLabel": "Antwortlänge",
"settingsVerbosityBrief": "Kurz",
"settingsVerbosityDefault": "Standard",
"settingsVerbosityDetailed": "Ausführlich",
"settingsExcludeLabel": "Metriken ausschließen",
"settingsExcludeHint": "Der Coach sieht keine Daten der ausgewählten Metriken.",
"settingsEvidenceLabel": "Belege standardmäßig zeigen",
"settingsEvidenceHint": "Die Belege-Box unter jeder Antwort automatisch öffnen.",
"settingsDefaultWindowLabel": "Standard-Analysezeitraum",
"settingsDefaultWindowHint": "Der Coach liest pro Chat diesen Zeitraum, sofern du im Drawer-Kopf nichts anderes auswählst.",
"settingsSave": "Speichern",
"settingsSaved": "Gespeichert.",
"settingsCancel": "Abbrechen",
"feedbackHelpful": "Hilfreich",
"feedbackUnhelpful": "Nicht ganz",
"feedbackThanks": "Danke für das Signal.",
"dailyLimitTitle": "Heute-Limit erreicht",
"dailyLimitBody": "Heute-Limit erreicht; Reset um 00:00 UTC.",
"providerRateLimitTitle": "Provider rate-limited",
"providerRateLimitBody": "Provider ist temporär überlastet; Reset in ~5 min."
},
"relativeJustNow": "gerade eben",
"relativeMinutesAgo": "vor {count} Minuten",
"relativeHoursAgo": "vor {count} Stunden",
"relativeDaysAgo": "vor {count} Tagen",
"navOverview": "Übersicht",
"navBloodPressure": "Blutdruck",
"navWeight": "Gewicht",
"navPulse": "Puls",
"navMood": "Stimmung",
"navMedication": "Medikamente",
"navBmi": "BMI",
"navSleep": "Schlaf",
"navAriaLabel": "Zu Abschnitt springen",
"subPage": {
"blutdruckDescription": "Dein systolisch-/diastolisch-Verlauf mit altersangepassten Zielbereichen und einer textbasierten KI-Einschätzung.",
"gewichtDescription": "Gewichtsverlauf gegen das aus deiner Größe abgeleitete gesunde Band, mit KI-Einschätzung.",
"pulsDescription": "Ruhepuls gegenüber dem persönlichen Karvonen-Zielband, mit KI-Einschätzung.",
"stimmungDescription": "Tägliche Stimmungswerte im Zeitverlauf mit einer textbasierten KI-Einschätzung.",
"stimmungEmptyTitle": "Erste Stimmung erfassen",
"stimmungEmptyDescription": "Stimmungs-Insights erscheinen, sobald du einige Einträge protokolliert hast. Tippe unten, um zu beginnen.",
"stimmungEmptyAction": "Stimmungs-Tagebuch öffnen",
"medikamenteDescription": "Einnahme-Kalender pro Medikament plus eine textbasierte KI-Einschätzung.",
"medikamenteEmptyTitle": "Erstes Medikament hinzufügen",
"medikamenteEmptyDescription": "Adhärenz-Insights brauchen mindestens ein erfasstes Medikament.",
"medikamenteEmptyAction": "Medikamente öffnen",
"therapyTimelineDescription": "Chronologisches GLP-1-Therapieprotokoll — Dosis-Änderungen, Injektionen, Bestand, Nebenwirkungen.",
"bmiDescription": "BMI aus deinem Gewicht und deiner Größe abgeleitet, mit KI-Einschätzung."
},
"sleep": {
"title": "Schlaf",
"description": "Phasen-Aufschlüsselung und nächtliche Dauer – gezogen aus Apple Health.",
"headlineTitle": "Durchschnitt pro Nacht",
"headlineCaption": "Gemittelt über {count} Nächte – {suffix}",
"headlineCaptionSuffix": "pro Nacht",
"compositionTitle": "Phasen-Verteilung",
"compositionSubtitle": "Letzte {nights} Nächte",
"compositionAriaLabel": "Schlafphasen-Verteilung über {nights} Nächte",
"stages": {
"deep": "Tief",
"rem": "REM",
"core": "Kern",
"asleep": "Schlafend",
"awake": "Wach",
"inBed": "Im Bett",
"unavailable": "Noch keine Phasen-Daten – Apple-Health-Sync für Schlafphasen folgt mit v1.5."
},
"empty": {
"title": "Noch keine Schlafdaten",
"description": "Apple-Health-Sync folgt mit v1.5 und füllt diese Ansicht automatisch.",
"action": "Geräte verwalten"
}
},
"correlations": "Korrelationen",
"medicationCompliance": "Medikamenten-Compliance",
"dayStreak": "{count} Tage Serie",
"compliance7d": "7-Tage-Compliance",
"compliance30d": "30-Tage-Compliance",
"taken": "genommen",
"skipped": "übersprungen",
"missed": "verpasst",
"generalStatusBadge": {
"good": "Gut",
"watch": "Beobachten",
"critical": "Kritisch"
},
"assessmentTitle": "Einschätzung",
"bloodPressureSectionTitle": "Blutdruck",
"weightSectionTitle": "Gewicht",
"pulseSectionTitle": "Puls",
"bmiSectionTitle": "BMI",
"complianceNoData": "Keine Compliance-Daten verfügbar",
"generate": "Neue Analyse erstellen",
"moodSectionTitle": "Stimmung",
"confidence": "Konfidenz",
"cached": "Gecacht",
"emptyState": {
"bloodPressure": {
"title": "Noch keine Blutdruckwerte",
"description": "Sobald du Blutdruck loggst, erscheinen hier Trend, Zielbereichs-Anteil und WHO-Klassifizierung.",
"cta": "Blutdruck loggen"
},
"weight": {
"title": "Noch keine Gewichtswerte",
"description": "Logge ein Gewicht, und Verlauf, gleitender Durchschnitt und Zielbereich erscheinen automatisch.",
"cta": "Gewicht loggen"
},
"pulse": {
"title": "Noch keine Pulswerte",
"description": "Logge einen Puls, dann erscheinen Ruhepuls, HRV und VO₂ max in dieser Ansicht.",
"cta": "Puls loggen"
},
"bmi": {
"title": "BMI noch nicht berechnet",
"description": "Sobald Größe und mindestens ein Gewichtswert vorliegen, erscheint hier der BMI-Verlauf samt WHO-Zonen.",
"cta": "Gewicht loggen"
},
"mood": {
"title": "Noch keine Stimmungseinträge",
"description": "Logge eine Stimmung, dann erscheinen Verlauf, Stabilitätsband und Korrelationen.",
"cta": "Stimmung loggen"
},
"medication": {
"title": "Noch keine Medikamente angelegt",
"description": "Lege ein Medikament an, dann erscheinen Einnahme-Compliance, Wirkstoffspiegel und Eskalations-Verlauf.",
"cta": "Medikament hinzufügen"
},
"sleep": {
"title": "Noch keine Schlafwerte",
"description": "Sobald Schlafdaten vorliegen (manuell oder via Withings / Apple Health), erscheint hier der nächtliche Stadien-Verlauf.",
"cta": "Withings verbinden"
}
}
},
"thresholds": {
"defaultLabel": "Default",
"autoModeLabel": "Auto",
"overrideModeLabel": "Überschrieben",
"resetAction": "Auf Default zurücksetzen",
"resetAllAction": "Alle auf Default zurücksetzen",
"minLabel": "Min",
"maxLabel": "Max",
"unitSuffix": "({unit})",
"outOfBoundsHint": "Erlaubter Bereich: {min}–{max} {unit}",
"overrideWarning": "Werte außerhalb der Leitlinien können zu ungesunden Zielen führen. Nur nach ärztlicher Rücksprache überschreiben.",
"saveSuccess": "Zielwerte aktualisiert",
"saveError": "Zielwerte konnten nicht gespeichert werden",
"resetSuccess": "Auf Default zurückgesetzt",
"sourceOverride": "Eigener Wert",
"metricWeight": "Gewicht",
"metricBpSys": "Blutdruck (systolisch)",
"metricBpDia": "Blutdruck (diastolisch)",
"metricPulse": "Ruhepuls",
"metricBodyFat": "Körperfett",
"metricSleep": "Schlafdauer",
"metricSteps": "Schritte/Tag",
"metricGlucoseFasting": "Glukose — nüchtern",
"metricGlucosePostprandial": "Glukose — postprandial",
"metricGlucoseRandom": "Glukose — beliebig",
"metricGlucoseBedtime": "Glukose — vor dem Schlafen",
"metricBodyWater": "Körperwasser",
"metricBoneMass": "Knochenmasse",
"metricOxygenSaturation": "Sauerstoffsättigung (SpO₂)",
"unsetExplanation": "Kein eigener Wert — berechneter Default aktiv."
},
"onboarding": {
"errorGeneric": "Beim Abschluss des Setups ist etwas schiefgelaufen. Bitte versuche es erneut.",
"tour": {
"stepOf": "Schritt {current} von {total}",
"next": "Weiter",
"back": "Zurück",
"skip": "Tour überspringen",
"done": "Verstanden",
"restart": "Tour neu starten",
"restartHint": "Zeige die Dashboard-Tour beim nächsten Aufruf erneut.",
"restartConfirmation": "Die Tour startet bei deinem nächsten Dashboard-Besuch erneut.",
"steps": {
"tileStrip": {
"title": "Deine Tageswerte",
"body": "Die Kachel-Leiste zeigt den letzten Wert und den 7-Tage-Trend für jede Metrik — Gewicht, Blutdruck, Puls, Stimmung. Was du nicht brauchst, blendest du in Einstellungen → Dashboard aus."
},
"quickAdd": {
"title": "In zwei Taps erfasst",
"body": "Über den Hinzufügen-Button kannst du Messungen oder Stimmungseinträge anlegen, ohne das Dashboard zu verlassen. Das Formular merkt sich deinen letzten Kontext und Tags."
},
"insights": {
"title": "KI-gestützte Einblicke",
"body": "Insights verwandelt deine Werte in eine klare Gesundheits-Zusammenfassung, mit Einordnung von Blutdruck, Gewicht und Stimmung. Eigener KI-Key oder Standard — du entscheidest."
},
"integrations": {
"title": "Geräte verbinden",
"body": "In den Einstellungen verbindest du Withings (Auto-Sync für Gewicht, Blutdruck, Puls), moodLog oder deinen KI-Provider. Alles bleibt optional und verschlüsselt."
},
"achievements": {
"title": "Streaks und Badges sammeln",
"body": "Die Achievements-Seite trackt tägliche Logging-Streaks, Blutdruck-Meilensteine und Konsistenz-Abzeichen. Ein kleiner Anreiz, dranzubleiben."
}
}
},
"shell": {
"back": "Zurück",
"skip": "Überspringen",
"next": "Weiter",
"step1of4": "Schritt 1 von 4",
"step2of4": "Schritt 2 von 4",
"step3of4": "Schritt 3 von 4",
"step4of4": "Schritt 4 von 4"
},
"goals": {
"title": "Was möchtest du erfassen?",
"body": "Wähle die Bereiche, die dir wichtig sind. Dashboard und Erinnerungen richten sich danach.",
"helpHint": "Ein bis drei Schwerpunkte funktionieren erfahrungsgemäß am besten – mehr geht aber jederzeit.",
"options": {
"weightManagement": "Gewicht im Griff",
"bpTracking": "Blutdruck",
"glucoseTracking": "Blutzucker",
"sleepImprovement": "Besser schlafen",
"medicationCompliance": "Medikamente",
"generalWellness": "Allgemeine Form"
}
},
"source": {
"title": "Quelle verbinden",
"body": "Werte automatisch übernehmen oder weiter manuell eintragen – deine Entscheidung.",
"recommended": "Empfohlen",
"manual": {
"title": "Manuelle Eingabe",
"body": "Werte direkt erfassen, wann es dir passt. Funktioniert auf jedem Gerät, kein Konto bei Dritten nötig."
},
"withings": {
"title": "Withings",
"body": "Waagen, Blutdruckmesser und Tracker von Withings synchronisieren automatisch.",
"cta": "Withings verbinden"
},
"appleHealth": {
"title": "Apple Health",
"body": "iPhone- und Apple-Watch-Daten werden über die HealthLog-iOS-App eingelesen.",
"badge": "Mit v1.5 (iOS)",
"disabledHint": "Verfügbar, sobald die iOS-App ausgeliefert ist."
}
},
"baseline": {
"title": "Kurz zu dir",
"body": "Vier optionale Angaben verbessern Zielwerte, BMI und Erinnerungen. Du kannst alles später in den Einstellungen anpassen.",
"displayNameLabel": "Anzeigename",
"displayNamePlaceholder": "Wie soll dich HealthLog ansprechen?",
"displayNameHint": "Erscheint im Dashboard-Gruß und in Berichten.",
"heightLabel": "Größe (cm)",
"genderLabel": "Geschlecht",
"genderNone": "Keine Angabe",
"genderMale": "Männlich",
"genderFemale": "Weiblich",
"dateOfBirthLabel": "Geburtsdatum",
"dateOfBirthHint": "Wird ausschließlich für altersbezogene Auswertungen genutzt.",
"saveCta": "Speichern und weiter"
},
"done": {
"title": "Alles bereit",
"body": "Willkommen an Bord. Dein Dashboard wartet.",
"returnCta": "Zum Dashboard"
},
"welcomeBack": {
"title": "Willkommen zurück",
"body": "Das Onboarding hast du bereits abgeschlossen. Möchtest du etwas anpassen, findest du alles in den Einstellungen.",
"cta": "Zum Dashboard"
}
},
"gettingStarted": {
"title": "Erste Schritte",
"subtitle": "Quick Wins, damit du das Beste aus HealthLog herausholst.",
"progress": "{done} von {total} erledigt",
"dismissAll": "Checkliste ausblenden",
"dismissTooltip": "Diesen Punkt ausblenden",
"items": {
"profileTitle": "Profil einrichten",
"profileDescription": "Größe, Geburtsdatum und Geschlecht schalten personalisierte Zielwerte frei.",
"profileCta": "Profil öffnen",
"measurementTitle": "Erste Messung anlegen",
"measurementDescription": "Eine Messung reicht, um deine erste Trend-Kachel zu zeichnen.",
"measurementCta": "Messung hinzufügen",
"medicationTitle": "Medikament hinzufügen",
"medicationDescription": "Verfolge Compliance und erhalte Erinnerungen genau dann, wenn du sie brauchst.",
"medicationCta": "Medikament hinzufügen",
"withingsTitle": "Withings verbinden (optional)",
"withingsDescription": "Synchronisiere Gewicht, Blutdruck und Puls automatisch aus deinen Withings-Geräten.",
"withingsCta": "Verbinden",
"notificationsTitle": "Benachrichtigungen einrichten",
"notificationsDescription": "Wähle, wie HealthLog dich erinnert — Telegram, ntfy oder Web Push.",
"notificationsCta": "Benachrichtigungen öffnen"
}
},
"trendHints": {
"title": "Erster Trend nach 5 Messungen",
"remainingOne": "Noch 1 Messung bis zum Trend.",
"remainingMany": "Noch {count} Messungen bis zum Trend."
},
"settings": {
"researchMode": {
"sectionTitle": "Forschungsmodus",
"subtitle": "Optionale Anzeige einer geschätzten GLP-1-Wirkstoffkurve auf Basis der von der EMA veröffentlichten Populations-Pharmakokinetik. Nur zur Anschauung — niemals eine Messung oder ein medizinischer Rat.",
"toggleLabel": "Geschätzte Wirkstoffkurve anzeigen",
"disabledStatus": "Deaktiviert. Die Wirkstoffkurve ist ausgeblendet.",
"enabledStaleStatus": "Der Disclaimer wurde aktualisiert. Bestätige unten erneut, um die Kurve wieder anzuzeigen.",
"acknowledgedOn": "Bestätigt am {date}.",
"rePromptTitle": "Disclaimer aktualisiert",
"rePromptBody": "Der Disclaimer des Forschungsmodus wurde seit deiner letzten Bestätigung aktualisiert. Lies ihn erneut und bestätige, damit die Kurve sichtbar bleibt.",
"rePromptCta": "Disclaimer erneut bestätigen",
"disableError": "Forschungsmodus konnte nicht deaktiviert werden. Bitte erneut versuchen."
},
"shell": {
"sectionsNav": "Einstellungs-Bereiche"
},
"sections": {
"account": {
"title": "Konto",
"description": "Profil, Passwort, Passkeys und deine Onboarding-Tour."
},
"integrations": {
"title": "Integrationen",
"description": "Withings, moodLog und weitere verbundene Dienste."
},
"notifications": {
"title": "Benachrichtigungen",
"description": "Zustellung pro Kanal und die Live-Übersicht der Kanalzuverlässigkeit für jeden konfigurierten Kanal."
},
"dashboard": {
"title": "Dashboard",
"description": "Kachel-Layout und Reihenfolge."
},
"thresholds": {
"title": "Persönliche Zielwerte",
"description": "Eigene Zielbereiche für jede Metrik."
},
"sources": {
"title": "Quellen",
"description": "Lege fest, welche Quelle führt, wenn mehrere am selben Tag dieselbe Metrik liefern.",
"cardTitle": "Quellen-Priorität pro Metrik",
"help": "Wenn mehrere Quellen denselben Wert am selben Tag liefern (z. B. Withings + Apple Health beide 1.200 Schritte), wird die oberste Quelle als kanonisch verwendet. Andere Quellen bleiben gespeichert für die Audit-Spur.",
"resetDefaults": "Auf Standard zurücksetzen",
"moveUp": "Nach oben",
"moveDown": "Nach unten",
"saveSuccess": "Quellen-Priorität gespeichert.",
"saveError": "Quellen-Priorität konnte nicht gespeichert werden.",
"resetSuccess": "Quellen-Priorität zurückgesetzt.",
"perMetricToggle": "Pro Metrik anpassen ({count})",
"perMetricHelp": "Metriken mit individueller Reihenfolge. Über diese Liste lässt sich eine einzelne Metrik mit einem Klick auf den Standard zurücksetzen, ohne die anderen anzufassen.",
"perMetricEmpty": "Keine individuellen Anpassungen — jede Metrik nutzt die globale Reihenfolge oben.",
"resetMetric": "Zurücksetzen",
"deviceTypeToggle": "Geräte-Typ-Reihenfolge ({count})",
"deviceTypeHelp": "Innerhalb einer Quelle entscheidet die Geräte-Typ-Reihenfolge. Wenn Apple Watch und iPhone beide Schritte aufzeichnen, zählt der höher gereihte Geräte-Typ.",
"deviceTypeDefault": "Standard-Geräte-Typ-Reihenfolge",
"resetDeviceTypes": "Geräte-Typen zurücksetzen",
"metrics": {
"steps": "Schritte",
"activeEnergy": "Aktive Energie",
"walkingRunningDistance": "Geh- + Laufdistanz",
"flightsClimbed": "Stockwerke",
"sleep": "Schlaf",
"weight": "Gewicht",
"bloodPressure": "Blutdruck",
"pulse": "Puls",
"bodyFat": "Körperfett",
"bodyTemperature": "Körpertemperatur",
"spo2": "Sauerstoffsättigung",
"hrv": "Herzfrequenz-Variabilität",
"restingHeartRate": "Ruhepuls",
"vo2Max": "VO2 max"
},
"sourceLabels": {
"WITHINGS": "Withings",
"APPLE_HEALTH": "Apple Health",
"MANUAL": "Manuelle Eingabe",
"IMPORT": "Import"
},
"deviceLabels": {
"watch": "Uhr",
"band": "Fitnessband",
"ring": "Ring",
"phone": "Smartphone",
"scale": "Waage",
"other": "Sonstige",
"unknown": "Unbekannt"
}
},
"ai": {
"title": "KI-Auswertungen",
"description": "Provider, Modell, API-Key."
},
"api": {
"title": "API & Tokens",
"description": "Bearer-Tokens für eigene Skripte und Apps — erfasse Messwerte oder Einnahmen von überall."
},
"advanced": {
"title": "Erweitert",
"description": "Opt-in-Schalter für den Forschungsmodus sowie der Notausgang zum unwiderruflichen Löschen aller Gesundheitsdaten."
},
"export": {
"title": "Export",
"description": "Lade deine Gesundheitsdaten als PDF, CSV oder vollständiges JSON-Backup herunter.",
"actions": {
"download": "Herunterladen"
},
"filters": {
"since": "Von",
"until": "Bis"
},
"cards": {
"doctorReport": {
"title": "Arztbericht",
"description": "Druckbares PDF für den Arzttermin — Vitalwerte, BMI, BD-Klassifikation, Medikamenten-Compliance, Stimmung.",
"action": "Konfigurieren & generieren"
},
"measurementsCsv": {
"title": "Messwerte",
"description": "Gewicht, Blutdruck, Puls, Glukose und alle weiteren Messungen als CSV-Datei."
},
"medicationsCsv": {
"title": "Medikamente",
"description": "Deine Medikamentenliste mit Dosierung, Zeitplan und (optional) der vollständigen Einnahmehistorie.",
"includeIntake": "Einnahmehistorie einschließen"
},
"moodCsv": {
"title": "Stimmung",
"description": "Tägliche Stimmungs-Einträge mit Score, Tags und Zeitstempeln."
},
"fullBackup": {
"title": "Voll-Backup",
"description": "Eine einzige JSON-Datei mit allen Daten — gleiches Format wie das wöchentliche Auto-Backup. Praktisch zum Selbst-Wiederherstellen via Admin-Upload."
}
}
},
"about": {
"title": "Über",
"description": "Version, Lizenz, Links."
},
"placeholder": {
"coming_soon": "Wird mit dem nächsten Release-Update hierher umziehen."
}
},
"profile": "Profil",
"language": "Sprache",
"languageDescription": "Wähle die Anzeigesprache der Anwendung.",
"username": "Benutzername",
"height": "Körpergröße (cm)",
"dateOfBirth": "Geburtsdatum",
"dateOfBirthHint": "Wird für die automatische Berechnung der Blutdruck-Zielwerte benötigt.",
"gender": "Geschlecht",
"genderNone": "Keine Angabe",
"genderMale": "Männlich",
"genderFemale": "Weiblich",
"genderHint": "Wird für geschlechtsspezifische Zielwerte verwendet.",
"timezone": "Zeitzone",
"timezoneHint": "Wird für Diagrammachsen, Erinnerungszeiten, Export-Zeitstempel und den Coach-Kontext verwendet. Gespeicherte Daten bleiben unverändert.",
"timezoneDetect": "Browser-Zeitzone übernehmen ({tz})",
"timezoneInvalid": "Keine gültige IANA-Zeitzone.",
"profileSaved": "Profil gespeichert",
"changePassword": "Passwort ändern",
"changePasswordDescription": "Ersetze dein aktuelles Passwort durch ein neues.",
"passwordReset": "Passwort-Reset",
"currentPassword": "Aktuelles Passwort",
"newPassword": "Neues Passwort",
"confirmNewPassword": "Neues Passwort bestätigen",
"passwordMismatch": "Neue Passwörter stimmen nicht überein",
"passwordUpdated": "Passwort erfolgreich geändert",
"passkeys": "Passkeys",
"registeredPasskeys": "Registrierte Passkeys",
"passkeysDescription": "Passkeys ermöglichen sicheres Anmelden ohne Passwort.",
"passkeyName": "Name",
"passkeyDevice": "Gerät",
"passkeyBackup": "Backup",
"passkeyCreated": "Erstellt",
"passkeyActions": "Aktionen",
"noPasskeys": "Keine Passkeys registriert.",
"addPasskey": "Passkey hinzufügen",
"passkeyAdded": "Passkey erfolgreich hinzugefügt!",
"passkeyOptionsError": "Konnte Passkey-Optionen nicht laden",
"passkeyRegistrationFailed": "Fehler bei Passkey-Registrierung",
"passkeyRegistrationCancelled": "Passkey-Registrierung abgebrochen",
"passkeyNotSupported": "Dein Browser oder Gerät unterstützt Passkeys noch nicht. Bitte einen anderen Browser oder ein anderes Gerät verwenden.",
"passkeyAlreadyRegistered": "Dieses Gerät ist bereits als Passkey für dein Konto registriert.",
"passkeySecurityBlocked": "Dein Browser hat die Passkey-Anfrage aus Sicherheitsgründen blockiert. Bitte auf einer vertrauenswürdigen HTTPS-URL erneut versuchen.",
"passkeyTimeout": "Die Passkey-Aufforderung ist abgelaufen. Bitte versuche es erneut.",
"passkeyUnknownError": "Passkey-Registrierung fehlgeschlagen: {message}",
"deletePasskey": "Passkey löschen?",
"deletePasskeyDescription": "Der Passkey wird unwiderruflich gelöscht.",
"singleDevice": "Einzelgerät",
"multiDevice": "Multi-Gerät",
"backedUp": "gesichert",
"telegram": "Telegram-Benachrichtigungen",
"telegramDescription": "Erhalte Erinnerungen bei vergessenen Medikamenten-Einnahmen per Telegram.",
"telegramSaved": "Telegram-Einstellungen gespeichert",
"botToken": "Bot-Token",
"chatId": "Chat-ID",
"enableNotifications": "Benachrichtigungen aktivieren",
"testMessage": "Test-Nachricht",
"testSent": "Test-Nachricht gesendet!",
"telegramStep1": "1. Erstelle einen Bot über @BotFather in Telegram und kopiere den Token.",
"telegramStep2": "2. Sende /start an deinen Bot, um den Chat zu aktivieren.",
"telegramStep3": "3. Finde deine Chat-ID über @userinfobot oder die Bot-API.",
"ntfy": "ntfy",
"ntfyDescription": "Benachrichtigungen über ntfy (self-hosted oder ntfy.sh).",
"ntfyEnable": "ntfy aktivieren",
"ntfyServer": "Server-URL",
"ntfyTopic": "Topic",
"ntfyAuthToken": "Auth-Token (optional)",
"ntfyAuthTokenHint": "Nur nötig bei privaten Topics mit Zugangsschutz.",
"webPush": "Browser-Push",
"webPushDescription": "Erhalte Benachrichtigungen direkt im Browser, auch wenn HealthLog nicht geöffnet ist.",
"webPushNotSupported": "Dein Browser unterstützt keine Push-Benachrichtigungen.",
"webPushDenied": "Push-Benachrichtigungen wurden blockiert. Erlaube sie in den Browser-Einstellungen.",
"webPushNotConfigured": "Web Push ist serverseitig nicht konfiguriert.",
"webPushSubscribe": "Push aktivieren",
"webPushUnsubscribe": "Push deaktivieren",
"webPushSubscribed": "Push-Benachrichtigungen aktiviert!",
"webPushUnsubscribed": "Push-Benachrichtigungen deaktiviert.",
"webPushSubscribeFailed": "Aktivierung fehlgeschlagen",
"webPushActive": "Aktiv",
"kiInsights": "KI-Insights (OpenAI)",
"kiInsightsDescription": "Optional: Hinterlege deinen OpenAI-Key für tägliche, automatische KI-Auswertungen in den Insights.",
"codexConnected": "ChatGPT erfolgreich verbunden! KI-Insights sind jetzt aktiv.",
"codexDisconnected": "ChatGPT-Verbindung getrennt.",
"codexConnectionFailed": "ChatGPT-Verbindung fehlgeschlagen. Bitte versuche es erneut.",
"rawData": "Rohdaten mitsenden",
"rawDataOnDescription": "Es werden aggregierte Kennzahlen plus anonymisierte Rohdaten der letzten 30 Tage gesendet. Dazu zählen einzelne Messpunkte je Bereich (z. B. Gewicht, Blutdruck, Puls) mit Zeitbezug, damit die KI zeitliche Muster, Ausreißer und Zusammenhänge zuverlässiger erkennen kann. Nicht übertragen werden Name, E-Mail oder direkte Kontodaten.",
"rawDataOffDescription": "Es werden nur zusammengefasste Werte gesendet (z. B. Durchschnitt, Trend, Minimum/Maximum). Keine einzelnen Messpunkte und keine exakten Zeitbezüge. Das ist datensparsamer, die KI kann dafür aber weniger fein auf Muster und kurzfristige Schwankungen eingehen.",
"rawDataWarning": "Rohdaten aktiv: Die KI erhält zusätzlich anonymisierte Messpunkte der letzten 30 Tage für eine präzisere Auswertung.",
"regenerateInsights": "Reports neu generieren",
"regenerateSuccess": "Reports wurden neu generiert",
"regenerateRateLimit": "Bitte warte — du hast das stündliche Limit für Analysen erreicht.",
"lastGeneratedAt": "Zuletzt generiert",
"ai": {
"chatgptConnectedBadge": "ChatGPT verbunden",
"adminAiActiveBadge": "Admin-KI aktiv",
"connectionExpiredBadge": "Verbindung abgelaufen",
"connectedSince": "Verbunden seit {when}.",
"deviceCodeHeading": "Verbindung auf chatgpt.com abschließen",
"deviceCodeStep1": "Öffne diesen Link auf einem beliebigen Gerät:",
"deviceCodeStep2": "Gib diesen Einmalcode ein:",
"deviceCodeStep3": "Bestätige die Verbindung — diese Seite aktualisiert sich automatisch.",
"deviceCodeCopy": "kopieren",
"deviceCodeWaiting": "Warte auf Bestätigung…",
"deviceCodeCancel": "Abbrechen",
"oauthNotConfigured": "ChatGPT-OAuth ist auf dieser Instanz nicht konfiguriert — nutze stattdessen einen eigenen API-Key unten.",
"modelLabel": "Modell",
"modelOptionDefault": "— Standard —",
"modelOptionCustom": "Eigenes…",
"customModelLabel": "Eigener Modellname",
"anthropicKeyLabel": "Anthropic API-Key",
"baseUrlLabel": "Base URL",
"localKeyLabel": "API-Key (optional)",
"savedPreview": "(gespeichert {preview})",
"savedShort": "(gespeichert)",
"saveCta": "Speichern",
"saved": "Gespeichert",
"saveFailed": "Speichern fehlgeschlagen",
"errorGeneric": "Fehler",
"providerChain": {
"types": {
"codex": "ChatGPT (Codex)",
"openai": "OpenAI (eigener Key)",
"anthropic": "Anthropic (Claude)",
"local": "Lokales Modell",
"admin-openai": "Admin-OpenAI"
},
"title": "Fallback-Kette",
"description": "Wenn der primäre Provider ausfällt, läuft HealthLog die Kette der Reihe nach durch. Reihenfolge per Pfeile ändern, Schalter deaktiviert einen Eintrag ohne ihn zu entfernen.",
"moveUp": "Nach oben",
"moveDown": "Nach unten",
"removeFromChain": "Aus Kette entfernen",
"addProvider": "Provider hinzufügen",
"addNoneAvailable": "Alle Provider sind bereits in der Kette",
"saveOrder": "Reihenfolge speichern",
"saved": "Kette gespeichert",
"saveFailed": "Speichern der Kette fehlgeschlagen",
"resetDefaults": "Zurücksetzen",
"resetConfirmTitle": "Kette auf Standard zurücksetzen?",
"resetConfirmBody": "Die Kette wird auf Codex → OpenAI → Anthropic → Lokal → Admin-OpenAI zurückgesetzt. Gespeicherte Zugangsdaten bleiben erhalten."
},
"activeProviderHeading": "Aktiver KI-Provider",
"activeProviderBody": "Wähle den Provider, der zuerst genutzt wird. Das Formular darunter konfiguriert ausschließlich den ausgewählten Provider; die Fallback-Kette unten regelt, was passiert, wenn er ausfällt.",
"activeProviderLabel": "Primärer Provider",
"providerConfigTitle": "Provider-Konfiguration",
"providerSelect": {
"codex": "ChatGPT-Account (Codex)",
"openai": "OpenAI (eigener API-Key)",
"anthropic": "Anthropic (Claude)",
"local": "Lokales Modell (OpenAI-kompatibel)",
"admin-openai": "Admin-OpenAI"
},
"openai": {
"modelSelect": "Modell",
"modelOptionCustom": "Eigener Slug…",
"modelCustomLabel": "Eigener Modell-Slug",
"modelCustomPlaceholder": "gpt-5",
"baseUrlLabel": "Base URL (erweitert)",
"baseUrlPlaceholder": "https://api.openai.com/v1",
"baseUrlHelp": "Nur überschreiben, wenn ein OpenAI-kompatibles Gateway genutzt wird. Für OpenAI selbst leer lassen.",
"showAdvanced": "Erweitert anzeigen",
"hideAdvanced": "Erweitert ausblenden",
"apiKey": "API-Key",
"apiKeyPlaceholder": "sk-…"
},
"codex": {
"statusConnected": "Verbunden",
"statusDisconnected": "Nicht verbunden",
"statusExpired": "Verbindung abgelaufen",
"connectButton": "Mit ChatGPT verbinden",
"disconnectButton": "Trennen",
"modelSlugLabel": "Modell-Slug",
"modelSlugBody": "Codex nutzt das Modell, auf das dein ChatGPT-Abo routet. Die Umgebungsvariable CODEX_MODEL kann das instanzweit überschreiben.",
"lastInsight": "Letzte Analyse: {when}"
},
"adminOpenai": {
"title": "Admin-OpenAI",
"body": "Vom Betreiber bereitgestellter OpenAI-Key. Wird als letzter Fallback genutzt, wenn kein persönlicher Provider konfiguriert ist. Hier ist nichts einzustellen — die Anzeige bedeutet, dass der Betreiber ihn eingerichtet hat.",
"notConfigured": "Der Betreiber hat keinen geteilten OpenAI-Key auf dieser Instanz konfiguriert."
},
"testProvider": "Aktiven Provider testen",
"testSuccess": "OK — {provider} ({model})",
"testFailedShort": "Test fehlgeschlagen: {message}"
},
"withings": "Withings",
"withingsDescription": "Verbinde deine Withings-Waage und Blutdruckmessgeräte.",
"withingsCredentials": "API-Zugangsdaten",
"withingsClientId": "Client-ID",
"withingsClientSecret": "Client-Secret",
"withingsCredentialsSaved": "Zugangsdaten gespeichert",
"withingsCredentialsSavedPlaceholder": "Gespeichert — neue eingeben zum Ersetzen",
"withingsCredentialsSavedPlaceholderSecret": "Gespeichert — neues eingeben zum Ersetzen",
"withingsSaveCredentials": "Zugangsdaten speichern",
"configured": "Konfiguriert",
"withingsSync": "Jetzt synchronisieren",
"withingsFullSync": "Alle Daten synchronisieren",
"withingsFullSyncTitle": "Vollsynchronisierung?",
"withingsFullSyncDescription": "Alle verfügbaren Withings-Daten werden vollständig synchronisiert. Das kann je nach Historie etwas dauern.",
"withingsSyncResult": "{count} Messwerte synchronisiert",
"withingsFullSyncResult": "{count} Messwerte vollständig synchronisiert",
"withingsSyncFailed": "Sync fehlgeschlagen",
"withingsSynchronize": "Synchronisieren",
"withingsDisconnect": "Trennen",
"withingsDisconnectTitle": "Withings-Verbindung trennen?",
"withingsDisconnectDescription": "Die Verbindung zu Withings wird getrennt. Bereits synchronisierte Daten bleiben erhalten.",
"withingsConnect": "Mit Withings verbinden",
"withingsNoCredentials": "Bitte zuerst die API-Zugangsdaten oben eingeben, um Withings zu verbinden.",
"integrations": {
"withings": {
"reconnect": {
"banner": {
"title": "Aktivitäts-Sync verfügbar",
"body": "Deine Withings-Verbindung wurde autorisiert, bevor der Aktivitäts-Sync hinzugefügt wurde. Verbinde einmal neu, um Schritte, aktive Energie, Geh- und Laufdistanz sowie Stockwerke aus deinen Withings-Geräten zu übernehmen.",
"action": "Withings neu verbinden"
}
}
}
},
"integrationPill": {
"connected": "Verbunden",
"errorReconnect": "Fehler — neu verbinden",
"notConnected": "Nicht verbunden",
"justNow": "gerade eben",
"minutesAgo": "vor {count} min",
"hoursAgo": "vor {count} Std.",
"daysAgo": "vor {count} T.",
"ariaLabel": "Integrationsstatus"
},
"apiTokens": "API-Tokens",
"apiTokensDescription": "Erstelle API-Tokens für die externe Medikamenten-Einnahme (z.B. Shortcuts, Automationen).",
"tokenNamePlaceholder": "Token-Name (z.B. iPhone Shortcut)",
"tokenCreated": "Token erstellt — kopiere ihn jetzt! Er wird nicht erneut angezeigt.",
"tokenRevoke": "Token widerrufen?",
"tokenRevokeDescription": "Der Token wird unwiderruflich deaktiviert. Anwendungen, die ihn nutzen, verlieren den Zugriff.",
"tokenRevoked": "Widerrufen",
"tokenExpired": "Abgelaufen",
"tokenActive": "Aktiv",
"activeTokensTitle": "Aktive Tokens",
"revokedTokensTitle": "Widerrufene Tokens ({count})",
"tokenTableName": "Name",
"tokenTablePermissions": "Berechtigungen",
"tokenTableStatus": "Status",
"tokenTableCreated": "Erstellt",
"tokenTableLastUsed": "Zuletzt genutzt",
"tokenTableActions": "Aktionen",
"noActiveTokens": "Keine aktiven Tokens vorhanden.",
"tokenNeverUsed": "Nie",
"apiEndpointsTitle": "API-Endpoints",
"apiEndpointsDescription": "Übersicht der derzeit verfügbaren externen Endpoint(s) für Token-basierte Eingaben.",
"apiEndpointMethod": "Methode",
"apiEndpointPath": "Pfad",
"apiEndpointAuth": "Authentifizierung",
"apiEndpointExample": "Body-Beispiel",
"collapse": "Einklappen",
"expand": "Ausklappen",
"dangerZone": "Alle Daten löschen",
"dangerZoneDescription": "Löscht alle deine Gesundheitsdaten und Integrationen. Dein Benutzerkonto bleibt erhalten.",
"dangerZoneConfirm": "Alle Daten löschen?",
"dangerZoneConfirmDescription": "Dieser Vorgang löscht alle deine Gesundheitsdaten und Integrationen unwiderruflich. Dein Benutzerkonto bleibt erhalten.",
"dangerZoneSuccess": "Alle persönlichen Daten wurden gelöscht",
"dangerZoneDeleteFailed": "Löschen fehlgeschlagen",
"finalDelete": "Endgültig löschen",
"saved": "Gespeichert",
"savingError": "Fehler beim Speichern",
"moodLogTitle": "moodLog",
"moodLogDescription": "Stimmungsdaten aus moodLog importieren",
"moodLogUrl": "moodLog URL",
"moodLogUrlPlaceholder": "https://mood.example.com",
"moodLogApiKey": "API-Key",
"moodLogApiKeyPlaceholder": "ml_...",
"moodLogWebhookSecret": "Webhook-Secret",
"moodLogWebhookSecretHelp": "Dieses Secret in moodLog als Webhook-Secret eintragen",
"moodLogSync": "Sync starten",
"moodLogFullSync": "Voll-Sync",
"moodLogFullSyncTitle": "Vollsynchronisierung?",
"moodLogFullSyncDescription": "Alle verfügbaren Stimmungsdaten werden vollständig synchronisiert.",
"moodLogDisconnect": "Trennen",
"moodLogDisconnectTitle": "moodLog trennen?",
"moodLogDisconnectDescription": "Die Verbindung wird getrennt und alle importierten Stimmungsdaten werden gelöscht.",
"moodLogEntries": "Einträge",
"moodLogSyncResult": "{count} Einträge synchronisiert",
"moodLogSyncFailed": "Sync fehlgeschlagen",
"moodLogSaved": "moodLog-Verbindung gespeichert",
"moodLogDisconnected": "moodLog getrennt",
"about": {
"version": "App-Version",
"gitSha": "Build",
"builtAt": "Erstellt {time}",
"license": "Lizenz",
"repository": "Quellcode",
"changelog": "Changelog",
"docs": "Dokumentation",
"linksHeading": "Quellen & Dokumentation",
"updatesHeading": "Updates",
"checkUpdates": "Jetzt prüfen",
"checking": "Prüfe…",
"lastChecked": "Zuletzt geprüft: {time}",
"lastCheckedNever": "Noch nicht geprüft",
"upToDate": "Du nutzt die aktuelle Version",
"newerAvailable": "Neue Version: {tag}",
"checkFailed": "Konnte GitHub nicht erreichen — versuche es später erneut"
},
"testConnection": {
"test": "Verbindung testen",
"testing": "Teste…",
"ok": "Verbunden (Latenz {latency} ms)",
"errors": {
"credentials_rejected": "Zugangsdaten abgelehnt — Token prüfen",
"rate_limited": "Vom Upstream rate-limitiert",
"timeout": "Request hat das Zeitlimit überschritten",
"upstream_error": "Upstream hat einen Fehler gemeldet",
"connection_failed": "Verbindung fehlgeschlagen",
"not_configured": "Nicht konfiguriert",
"url_not_public": "URL ist kein öffentlicher Endpunkt",
"url_invalid": "URL ist ungültig",
"redirected": "Endpunkt leitet weiter — URL prüfen",
"endpoint_not_found": "Endpunkt unter der URL nicht gefunden",
"credentials_unreadable": "Zugangsdaten nicht entschlüsselbar",
"upstream_invalid_json": "Upstream-Antwort ist kein JSON",
"vapid_not_configured": "Web Push nicht konfiguriert (VAPID-Keys fehlen)",
"rate_limited_self": "Zu viele Test-Anfragen",
"generic": "Test fehlgeschlagen"
}
},
"notificationStatus": {
"title": "Kanalzuverlässigkeit",
"description": "Live-Status jedes Benachrichtigungskanals — \"Automatisch deaktiviert\" bedeutet, HealthLog hat nach einem dauerhaften Fehler aufgehört, weiterzusenden.",
"emptyDescription": "Noch keine Kanäle konfiguriert. Lege unten einen Kanal an, um die Zustellung zu überwachen.",
"stateActive": "Aktiv",
"stateAutoDisabled": "Automatisch deaktiviert",
"stateSendingPaused": "Versand pausiert",
"stateManuallyDisabled": "Deaktiviert",
"lastSuccess": "Letzter erfolgreicher Versand",
"lastFailure": "Letzter Fehler",
"consecutiveFailures": "Fehler in Folge",
"disabledReason": "Grund",
"nextRetry": "Nächster Versuch",
"reEnable": "Wieder aktivieren",
"sendTest": "Test senden"
}
},
"admin": {
"title": "Administration",
"subtitle": "Systemstatus, Benutzer und Einstellungen",
"settingsSaveError": "Einstellungen konnten nicht gespeichert werden",
"systemStatus": "Systemstatus",
"database": "Datenbank",
"databaseConnected": "Verbunden",
"databaseError": "Fehler",
"startedAt": "Gestartet",
"users": "Benutzer",
"measurementsCount": "Messwerte",
"activeTokens": "Aktive API-Tokens",
"activeSessions": "Aktive Sessions",
"loadingStatus": "Lade Status...",
"systemStatusLoadError": "System-Status konnte nicht geladen werden.",
"systemStatusRetry": "Erneut versuchen",
"adminSettingsLoadError": "Admin-Einstellungen konnten nicht geladen werden. Schalter unten zeigen evtl. nicht den Live-Zustand — Seite neu laden.",
"hostMetrics": {
"title": "Host-Auslastung",
"load1": "Last (1m)",
"memUsedPercent": "Speicher",
"diskBusyPercent": "Disk-I/O",
"last2hours": "Letzte 2 Stunden",
"empty": "Erfassung läuft — Daten erscheinen in 1–2 Minuten.",
"loadError": "Host-Metriken konnten nicht geladen werden. Bitte die Seite neu laden."
},
"aiQuality": {
"title": "KI-Qualität",
"loading": "Feedback-Zusammenfassung wird geladen...",
"loadError": "KI-Qualitätszusammenfassung konnte nicht geladen werden. Bitte die Seite neu laden.",
"empty": "Noch kein Feedback. Der Aggregator läuft täglich um 04:00 — sobald Nutzer Empfehlungen bewerten, erscheinen hier die Hilfreich-Quoten.",
"windowLabel": "Letzte {days} Tage",
"generatedAtLabel": "Erstellt",
"colSeverity": "Schweregrad",
"colMetric": "Metrik",
"colProvider": "Provider",
"colPromptVersion": "Prompt",
"colHelpful": "Hilfreich",
"colNotHelpful": "Nicht hilfreich",
"colHelpfulRate": "Hilfreich-Quote"
},
"coachFeedback": {
"title": "Coach-Feedback",
"loading": "Coach-Feedback-Zusammenfassung wird geladen...",
"loadError": "Coach-Feedback-Zusammenfassung konnte nicht geladen werden. Bitte die Seite neu laden.",
"empty": "Noch kein Coach-Feedback. Der Aggregator läuft täglich um 04:00 — sobald Nutzer Coach-Antworten bewerten, erscheinen hier die Hilfreich-Quoten.",
"windowLabel": "Letzte {days} Tage",
"generatedAtLabel": "Erstellt",
"colPromptVersion": "Prompt-Version",
"colTone": "Tonfall",
"colVerbosity": "Ausführlichkeit",
"colHelpful": "Hilfreich",
"colNotHelpful": "Nicht hilfreich",
"colN": "n",
"colHelpfulRate": "Hilfreich-Quote"
},
"workerStatus": "Job-Worker",
"workerRunning": "Aktiv",
"workerStopped": "Gestoppt",
"lastReminderCheck": "Letzter Reminder-Check",
"appSettings": "Anwendungseinstellungen",
"registrationEnabled": "Registrierung erlauben",
"registrationEnabledDescription": "Wenn deaktiviert, können sich keine neuen Benutzer registrieren.",
"defaultLanguage": "Standard-Sprache",
"defaultLanguageDescription": "Wird für neue Benutzer und als Fallback verwendet.",
"defaultUserTimezone": "Standard-Zeitzone für neue Konten",
"defaultUserTimezoneDescription": "Wird für neue Konten ohne erkannte Browser-Zeitzone verwendet. Bestehende Benutzer sind nicht betroffen.",
"defaultUserTimezoneFallback": "Europe/Berlin (Standard)",
"servicesGlobal": "Dienste (global)",
"servicesGlobalDescription": "Deaktivierte Dienste stehen keinem Benutzer zur Verfügung.",
"telegramGlobal": "Telegram-Benachrichtigungen erlauben.",
"ntfyGlobal": "ntfy-Benachrichtigungen erlauben.",
"webPushGlobal": "Browser-Push-Benachrichtigungen erlauben.",
"integrationWebPush": "Web Push",
"integrationBugReport": "Bug-Reports",
"offlineGeoLabel": "Geodaten",
"offlineGeoEnabled": "Offline (GeoLite2)",
"offlineGeoFallback": "Fallback (ipwho.is) — MAXMIND_LICENSE_KEY in CI setzen",
"apiGlobal": "API-Endpunkte und API-Tokens erlauben.",
"umamiTitle": "Umami",
"umamiDescription": "Web-Analyse mit Umami",
"glitchtipTitle": "GlitchTip",
"glitchtipDescription": "Fehler-Tracking mit GlitchTip",
"webPushVapidTitle": "Web Push VAPID",
"umamiEnabled": "Umami-Tracking aktivieren.",
"umamiScriptUrl": "Umami Script-URL",
"umamiScriptUrlPlaceholder": "https://analytics.example.com/script.js",
"umamiWebsiteId": "Umami Website-ID",
"umamiWebsiteIdPlaceholder": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"glitchtipEnabled": "GlitchTip Fehler-Tracking aktivieren.",
"glitchtipDsn": "GlitchTip DSN",
"glitchtipDsnPlaceholder": "https://<public-key>@glitchtip.example.com/<project-id>",
"glitchtipEnvironment": "GlitchTip Environment",
"glitchtipEnvironmentPlaceholder": "production",
"webPushVapidDescription": "Konfiguriere VAPID-Schlüssel und Subject direkt hier, damit Browser-Push ohne ENV-Variablen funktioniert.",
"webPushVapidPublicKey": "VAPID Public Key",
"webPushVapidPublicKeyPlaceholder": "BElx... (Base64URL)",
"webPushVapidPrivateKey": "VAPID Private Key",
"webPushVapidPrivateKeyPlaceholder": "Optional: neuen Private Key eintragen",
"webPushVapidSubject": "VAPID Subject",
"webPushVapidSubjectPlaceholder": "mailto:deine-adresse@example.com",
"configured": "Konfiguriert",
"monitoringTestSuccess": "Testevent wurde gesendet",
"monitoringTestFailed": "Monitoring-Test fehlgeschlagen",
"bugReportGithub": "Bugreport (GitHub Issues)",
"bugReportGithubDescription": "Hinterlege GitHub-Issue-Token und Repository für eingehende Bugreports.",
"bugReportEnabledLabel": "Bug-Reports aktiviert",
"bugReportEnabledDescription": "Wenn deaktiviert, ist der Report-Button im Frontend nicht mehr sichtbar — Token und Repository bleiben gespeichert.",
"assistant": {
"title": "Assistenz-Oberflächen",
"description": "Jeder Toggle versteckt eine modellgestützte Oberfläche app-weit, ohne die Provider-Konfiguration zu entfernen. Der Hauptschalter erzwingt jede Unter-Option aus.",
"master": {
"title": "Assistent aktiv",
"description": "Hauptschalter für jede modellgestützte Oberfläche. Wenn aus, sind alle Unter-Optionen unten zwangsweise aus."
},
"coach": {
"title": "Coach",
"description": "Chat-Drawer, Launch-Button und die mobile FAB auf jeder Insights-Seite."
},
"briefing": {
"title": "Tagesbriefing",
"description": "Briefing-Karte, Hero-Erzähltext, Empfehlungen und der Regenerieren-Knopf."
},
"insightStatus": {
"title": "Status-Karten",
"description": "Pro-Metrik-Status-Karten auf jeder /insights-Unterseite."
},
"correlations": {
"title": "Korrelationen",
"description": "Erzähl-Kachel zur Korrelation auf der Insights-Übersicht."
},
"healthScoreExplainer": {
"title": "Health-Score-Erklärer",
"description": "Das ?-Symbol neben der Health-Score-Differenz. Die Zahl bleibt unabhängig davon sichtbar."
}
},
"bugReportRepo": "Repository",
"bugReportRepoPlaceholder": "owner/repo",
"bugReportToken": "Issue-Token",
"bugReportTokenPlaceholder": "ghp_...",
"userManagement": "Benutzerverwaltung",
"userName": "Name",
"userEmail": "E-Mail",
"userRole": "Rolle",
"userPasskeys": "Passkeys",
"userCreated": "Erstellt",
"userActions": "Aktionen",
"editUser": "Benutzer bearbeiten",
"editUserTitle": "Benutzer bearbeiten: {name}",
"demoteToUser": "Zu User degradieren",
"promoteToAdmin": "Zum Admin befördern",
"toUser": "Zum Benutzer",
"toAdmin": "Zum Admin",
"ownRoleUnchangeable": "Eigene Rolle nicht änderbar",
"resetPassword": "Passwort zurücksetzen",
"resetPasswordTitle": "Passwort zurücksetzen: {name}",
"newPassword": "Neues Passwort",
"newPasswordPlaceholder": "Mindestens 12 Zeichen",
"passwordReset": "Passwort wurde zurückgesetzt",
"reset": "Zurücksetzen",
"loadingUsers": "Lade Benutzer...",
"apiTokens": "API-Tokens",
"tokenUser": "Benutzer",
"tokenName": "Name",
"tokenPermissions": "Berechtigungen",
"tokenPermissionAll": "Alle",
"tokenPermissionAllTooltip": "Wildcard-Berechtigung — dieses Token kann jede API-Route ansprechen.",
"tokenStatus": "Status",
"tokenLastUsed": "Zuletzt benutzt",
"tokenCreated": "Erstellt",
"tokenNeverUsed": "Nie",
"tokensEmptyTitle": "Noch keine API-Tokens",
"tokensEmptyDescription": "Tokens werden bei der Anmeldung nativer Clients oder über Einstellungen → Account ausgestellt.",
"loginOverview": "Anmeldeübersicht",
"allAuthEvents": "Alle Auth-Ereignisse",
"failedOnly": "Nur fehlgeschlagene",
"loginEmptyDescription": "Anmeldungen, Abmeldungen und Passkey-Änderungen erscheinen hier.",
"loginEmptyFailedTitle": "Keine fehlgeschlagenen Anmeldungen",
"loginEmptyFailedDescription": "Das ist der sichere Zustand. Wechsle zu „Alle Auth-Ereignisse“, um erfolgreiche Anmeldungen zu sehen.",
"loginEmptyResetFilter": "Alle Ereignisse anzeigen",
"showingEntries": "Zeigt {count} von {total} Auth-Einträgen",
"status": "Status",
"action": "Aktion",
"ip": "IP",
"location": "Standort",
"timestamp": "Zeitpunkt",
"provider": "Anbieter",
"providerPassword": "Passwort",
"providerPasskey": "Passkey",
"providerApiToken": "API-Token",
"providerWithings": "Withings",
"providerUnknown": "Unbekannt",
"outcome": "Ergebnis",
"outcomeSuccess": "Erfolgreich",
"outcomeFailed": "Fehlgeschlagen",
"auditDetails": "Details",
"deleteAllData": "Alle Daten global löschen",
"deleteAllDescription": "Löscht alle Mess-, Medikamenten-, Integrations- und Protokoll-Daten aller Benutzer. Benutzerkonten bleiben bestehen.",
"deleteAllConfirm": "Alle Daten wirklich löschen?",
"deleteAllConfirmDescription": "Dieser Vorgang löscht alle Messwerte, Medikamente, Einnahmen, API-Tokens, Withings-Verbindungen, offene Authentifizierungs-Challenges, Benachrichtigungskanäle (Telegram, ntfy, Web Push), Push-Abonnements und in der Warteschlange befindliche Telegram-Nachrichtenlöschungen aller Benutzer unwiderruflich. Benutzerkonten, das Audit-Log und eingereichtes Feedback bleiben erhalten, damit der Löschvorgang nachvollziehbar bleibt und Bug-Reports weiter triagierbar sind.",
"deleteButton": "Alle Daten löschen",
"finalDelete": "Endgültig löschen",
"deletedResult": "Gelöscht: {measurements} Messwerte, {medications} Medikamente, {intakeEvents} Einnahmen, {apiTokens} API-Tokens, {withingsConnections} Withings-Verbindungen, {authChallenges} Auth-Challenges, {notificationChannels} Benachrichtigungskanäle, {pushSubscriptions} Push-Abonnements, {telegramScheduledDeletions} eingeplante Telegram-Löschungen. Feedback bleibt erhalten.",
"authRegister": "Registrierung",
"authLogin": "Anmeldung",
"authLoginPasskey": "Passkey-Anmeldung",
"authLoginPassword": "Passwort-Anmeldung",
"authLoginFailed": "Fehlgeschlagen",
"authLogout": "Abmeldung",
"authPasskeyRegister": "Passkey hinzugefügt",
"authPasskeyDelete": "Passkey gelöscht",
"authTokenAutoissueNative": "Native-Client-Token ausgestellt",
"authTokenRefresh": "Token erneuert",
"authTokenRevoke": "Token widerrufen",
"medicationReminders": "Medikamentenerinnerungen",
"medicationRemindersDescription": "Schwellenwerte für die Farbübergänge der Erinnerungs-Badges auf den Medikamentenkarten.",
"reminderLateMinutes": "Spät-Schwellenwert (Minuten)",
"reminderLateMinutesDescription": "Minuten nach Fenster-Ende bis der Badge von Gelb auf Orange wechselt.",
"reminderMissedMinutes": "Verpasst-Schwellenwert (Minuten)",
"reminderMissedMinutesDescription": "Minuten nach Fenster-Ende bis die Einnahme als verpasst gilt.",
"notificationTestSend": "Test senden",
"notificationTestSuccess": "Test-Notification wurde gesendet",
"notificationTestFailed": "Test-Notification konnte nicht gesendet werden",
"reminderCheckRun": "Reminder-Check ausführen",
"reminderCheckSuccess": "Reminder-Check abgeschlossen",
"reminderCheckFailed": "Reminder-Check konnte nicht ausgeführt werden",
"reminderCheckResults": "Ergebnisse",
"reminderCheckNotifOn": "Benachrichtigungen an",
"reminderCheckNotifOff": "Benachrichtigungen aus",
"reminderCheckEventsToday": "Heutige Events",
"reminderCheckNotifSent": "Gesendet",
"feedback": {
"tabOpen": "Offen",
"tabAcknowledged": "Bestätigt",
"tabResolved": "Erledigt",
"tabArchived": "Archiviert",
"subject": "Betreff",
"category": "Kategorie",
"user": "Benutzer",
"createdAt": "Eingegangen",
"actions": "Aktionen",
"details": "Details",
"emptyTitle": "Alles erledigt",
"emptyDescription": "Kein Nutzer-Feedback in diesem Status. Bug-Reports, Fragen und Feature-Wünsche erscheinen hier.",
"loading": "Lade Feedback...",
"anonymous": "anonym",
"categoryBug": "Bug",
"categoryFeature": "Feature",
"categoryQuestion": "Frage",
"categoryOther": "Sonstiges",
"metadataHeading": "Metadaten",
"metaUrl": "URL",
"metaLocale": "Sprache",
"metaUserAgent": "User-Agent",
"metaAppVersion": "App-Version",
"screenshotHeading": "Screenshot",
"adminNote": "Admin-Notiz",
"adminNotePlaceholder": "Interne Notiz (nicht für Benutzer sichtbar)",
"saveNote": "Notiz speichern",
"noteSaved": "Notiz gespeichert",
"actionAcknowledge": "Bestätigen",
"actionResolve": "Erledigen",
"actionArchive": "Archivieren",
"actionPublishGithub": "Auf GitHub veröffentlichen",
"publishedToGithub": "Auf GitHub veröffentlicht",
"viewIssue": "Issue ansehen",
"publishSuccess": "Issue erstellt",
"publishFailed": "GitHub-Veröffentlichung fehlgeschlagen",
"updateFailed": "Aktualisierung fehlgeschlagen",
"archiveConfirm": "Diesen Feedback-Eintrag archivieren?",
"submittedBy": "Eingereicht von"
},
"shell": {
"overview": "Übersicht",
"sectionsNav": "Admin-Bereiche"
},
"overview": {
"welcomeTitle": "Willkommen, {name}",
"welcomeSubtitle": "Du bist als Administrator angemeldet. Wähle einen Bereich, um HealthLog zu verwalten.",
"snapshotTitle": "System-Snapshot",
"snapshotVersion": "Version",
"snapshotDatabase": "Datenbank",
"snapshotWorker": "Worker",
"snapshotStarted": "Gestartet",
"snapshotBuildSha": "Build-SHA",
"snapshotBuiltAt": "Gebaut am",
"snapshotOfflineGeo": "Geodaten",
"snapshotOfflineGeoOn": "Offline (GeoLite2)",
"snapshotOfflineGeoOff": "Fallback (ipwho.is)",
"snapshotLoadError": "System-Snapshot konnte nicht geladen werden.",
"snapshotLoading": "Snapshot wird geladen...",
"auditTitle": "Letzte Aktivitäten",
"auditEmpty": "Keine aktuellen Audit-Einträge.",
"auditLoadError": "Letzte Aktivitäten konnten nicht geladen werden.",
"auditLoading": "Aktivitäten werden geladen...",
"auditViewAll": "Alle anzeigen"
},
"section": {
"system-status": {
"title": "Systemstatus",
"subtitle": "Worker, Datenbank und Integrationen im Überblick."
},
"general": {
"title": "Allgemein",
"subtitle": "Registrierung, Standardsprache und weitere globale Schalter."
},
"services": {
"title": "Dienste",
"subtitle": "Benachrichtigungskanäle und Integrationen systemweit aktivieren oder deaktivieren."
},
"integrations": {
"title": "Integrationen",
"subtitle": "Umami, GlitchTip, Web Push und Bug-Reports konfigurieren."
},
"ai-quality": {
"title": "KI-Qualität",
"subtitle": "Hilfreichkeit nach Schweregrad und Provider — Nutzer-Feedback der letzten 30 Tage."
},
"assistant": {
"title": "Assistenz-Oberflächen",
"subtitle": "Jede modellgestützte Oberfläche separat ein- oder ausschalten, ohne die Provider-Konfiguration zu entfernen."
},
"coach-feedback": {
"title": "Coach-Feedback",
"subtitle": "Hilfreich-Quote pro Coach-Prompt-Version, Tonfall und Ausführlichkeit der letzten 30 Tage."
},
"feedback": {
"title": "Feedback",
"subtitle": "Feedback, Bug-Reports und Feature-Wünsche der Nutzer sichten."
},
"reminders": {
"title": "Erinnerungen",
"subtitle": "Schwellwerte für Medikamentenerinnerungen anpassen."
},
"users": {
"title": "Benutzer",
"subtitle": "Konten, Rollen und aktive Sitzungen verwalten.",
"filter": {
"all": "Alle",
"admin": "Admins",
"user": "Nutzer"
},
"forceLogout": "Abmeldung erzwingen",
"forceLogoutConfirmTitle": "{name} abmelden?",
"forceLogoutConfirmBody": "Alle aktiven Sitzungen dieses Benutzers werden widerrufen. Auf allen Geräten ist eine erneute Anmeldung erforderlich.",
"forceLogoutSuccess": "{name} aus {count} Sitzung(en) abgemeldet",
"forceLogoutFailed": "Abmeldung fehlgeschlagen",
"cannotLogoutSelf": "Eigene Sitzungen können nicht beendet werden",
"emptyTitle": "Keine Nutzer in dieser Ansicht",
"emptyDescription": "Es gibt keine Nutzer, die zum aktuellen Filter passen.",
"emptyResetFilter": "Alle Nutzer anzeigen"
},
"api-tokens": {
"title": "API-Tokens",
"subtitle": "Aktive Bearer-Tokens für native Clients und Integrationen."
},
"login-overview": {
"title": "Login-Übersicht",
"subtitle": "Audit-Spur für Authentifizierungs- und Admin-Ereignisse."
},
"auditLog": {
"filterActor": "Akteur (Benutzer-ID oder -Name)",
"filterAction": "Aktion",
"filterActionAll": "Alle Aktionen",
"filterTarget": "Ziel (ID oder Pfad)",
"filterDate": "Zeitraum",
"range24h": "Letzte 24 Stunden",
"range7d": "Letzte 7 Tage",
"range30d": "Letzte 30 Tage",
"rangeAll": "Gesamter Zeitraum",
"perPage": "Pro Seite",
"prev": "Zurück",
"next": "Weiter",
"pageOf": "Seite {page} von {total}",
"export": "CSV exportieren",
"empty": "Keine Audit-Einträge passen zu den aktuellen Filtern."
},
"app-logs": {
"title": "App-Logs",
"subtitle": "Letzte strukturierte Wide-Events dieses Prozesses anzeigen.",
"processNote": "Es werden nur App-Prozess-Logs angezeigt — Worker-Logs landen in Loki, sofern die Integration konfiguriert ist. Der Puffer ist flüchtig und auf 500 Einträge begrenzt.",
"filterTraceId": "Trace-ID",
"filterAction": "Aktion enthält…",
"filterLevel": "Level",
"levelAll": "Alle Level",
"filterRange": "Zeitfenster",
"range15m": "Letzte 15 Minuten",
"range1h": "Letzte Stunde",
"range6h": "Letzte 6 Stunden",
"rangeAll": "Gesamter Puffer",
"colLevel": "Level",
"colTimestamp": "Zeitstempel",
"colAction": "Aktion",
"colDuration": "Dauer",
"colTraceId": "Trace",
"showing": "{count} von bis zu {bufferMax} gepufferten Events angezeigt",
"empty": "Puffer ist leer",
"emptyDescription": "Es passen noch keine Events zu den Filtern. Nach etwas Traffic auf Aktualisieren tippen.",
"refresh": "Aktualisieren",
"eventDetails": "Event-Details",
"closeDetails": "Details schließen"
},
"backups": {
"title": "Backups",
"subtitle": "Wöchentliche Daten-Snapshots pro Nutzer in PostgreSQL.",
"description": "Jeder Nutzer hat einen rollierenden Snapshot pro Backup-Typ. Größen zeigen den verschlüsselten Blob — die Inhalte sind hier nicht herunterladbar.",
"runNow": "Jetzt sichern",
"runEnqueued": "Backup-Job eingeplant",
"runFailed": "Backup konnte nicht eingeplant werden",
"loading": "Backups werden geladen...",
"loadError": "Backups konnten nicht geladen werden.",
"emptyTitle": "Noch keine Backups",
"emptyDescription": "Backups laufen automatisch jeden Sonntag um 03:00 Uhr — oder erstelle jetzt einen ersten Snapshot.",
"colUser": "Nutzer",
"colType": "Typ",
"typeWeeklyAuto": "Wöchentlich (auto)",
"typeManual": "Manuell",
"colSize": "Größe",
"colCreatedAt": "Letzter Snapshot",
"colActions": "Aktionen",
"retentionLabel": "Aufbewahrung: {days} Tage",
"download": "Herunterladen",
"downloadAria": "Backup für {username} herunterladen",
"downloadFailed": "Download fehlgeschlagen",
"downloadStarted": "Download gestartet",
"uploadTitle": "Backup hochladen",
"uploadDescription": "Eine Backup-Datei validieren und als manuellen Snapshot speichern. Das Wiederherstellen ist ein separater Schritt.",
"uploadButton": "Datei hochladen",
"uploadHelp": "JSON-Datei passend zum aktuellen Backup-Schema. Max. 10 MB.",
"uploadSuccess": "Backup hochgeladen ({count} Datensätze)",
"uploadFailed": "Upload fehlgeschlagen",
"restore": "Wiederherstellen",
"restoreAria": "Backup für {username} wiederherstellen",
"restoreTitle": "Aus Backup wiederherstellen",
"restoreDescription": "Dies ersetzt ALLE aktuellen Daten von {username} mit dem Snapshot von {when}. Vorhandene Messungen, Medikamente, Einnahmen, Stimmungseinträge, Benachrichtigungs-Kanäle, Push-Abos und Telegram-Lösch-Aufträge werden entfernt.",
"restorePromptLabel": "Tippe RESTORE zum Fortfahren",
"restoreConfirm": "Jetzt wiederherstellen",
"restoreInProgress": "Wiederherstellung läuft...",
"restoreSuccess": "Wiederherstellung abgeschlossen",
"restoreFailed": "Wiederherstellung fehlgeschlagen",
"docsLink": "Dokumentation"
},
"danger-zone": {
"title": "Gefahrenzone",
"subtitle": "Destruktive systemweite Operationen."
}
},
"carrier": "Anbieter",
"carrierUnknown": "Unbekannter Anbieter"
},
"achievements": {
"title": "Erfolge",
"subtitle": "Sammle Erfolge, indem du regelmäßig misst und deine Medikamente nimmst.",
"loginRequired": "Bitte anmelden, um Erfolge zu sehen.",
"points": "Punkte",
"unlocked": "Freigeschaltet",
"nextGoal": "Nächstes Ziel",
"allCompleted": "Alle Erfolge freigeschaltet!",
"completed": "Abgeschlossen",
"goalReached": "Ziel erreicht",
"remainingUnlocks": "Noch {count} freischaltbar",
"noneUnlockedYet": "Noch keine Erfolge freigeschaltet.",
"pointsValue": "{points} Punkte",
"metricCount": "{count}",
"metricDays": "{count} Tage",
"metricPercent": "{count}%",
"badges": {
"intakeTotal1": {
"title": "Erste Einnahme",
"description": "Dokumentiere dein erstes eingenommenes Medikament."
},
"intakeTotal10": {
"title": "Einnahme-Starter",
"description": "Dokumentiere 10 eingenommene Medikamente."
},
"intakeTotal50": {
"title": "Einnahme-Routine",
"description": "Dokumentiere 50 eingenommene Medikamente."
},
"intakeTotal150": {
"title": "Einnahme-Profi",
"description": "Dokumentiere 150 eingenommene Medikamente."
},
"intakeTotal300": {
"title": "Einnahme-Legende",
"description": "Dokumentiere 300 eingenommene Medikamente."
},
"overIntake1": {
"title": "Doppelt genommen",
"description": "Nimm mindestens einmal mehr ein als vorgesehen."
},
"skippedIntake1": {
"title": "Pause eingelegt",
"description": "Überspringe mindestens eine geplante Einnahme."
},
"passkeyCreated1": {
"title": "Passkey gesetzt",
"description": "Erstelle deinen ersten Passkey."
},
"passkeyLogin1": {
"title": "Passkey genutzt",
"description": "Melde dich mindestens einmal per Passkey an."
},
"passwordLogin1": {
"title": "Oldschool",
"description": "Melde dich mindestens einmal mit Username und Passwort an."
},
"bugReport1": {
"title": "Fehlerjäger",
"description": "Reiche einen Bugreport ein."
},
"loginStreak7": {
"title": "Login-Serie 7T",
"description": "Logge dich an 7 Tagen in Folge ein."
},
"loginStreak30": {
"title": "Login-Serie 30T",
"description": "Logge dich an 30 Tagen in Folge ein."
},
"onTimePerfect1": {
"title": "Zeitfenster 1T",
"description": "Nimm an einem Tag alle Medikamente im Zeitfenster ein."
},
"compliance801": {
"title": "Treue 80% · 1T",
"description": "Erreiche an einem Tag eine 30-Tage-Einnahmetreue von mindestens 80%."
},
"bmiGreen1": {
"title": "BMI im Grün · 1T",
"description": "Halte deinen BMI an einem Tag im Normalbereich."
},
"bpGreen1": {
"title": "Blutdruck im Grün · 1T",
"description": "Halte deinen Blutdruck an einem Tag im Normalbereich."
},
"pulseGreen1": {
"title": "Puls im Grün · 1T",
"description": "Halte deinen Ruhepuls an einem Tag im Normalbereich."
},
"onTimePerfect7": {
"title": "Zeitfenster 7T",
"description": "Nimm 7 Tage in Folge alle Medikamente im Zeitfenster ein."
},
"compliance807": {
"title": "Treue 80% · 7T",
"description": "Erreiche 7 Tage in Folge eine 30-Tage-Einnahmetreue von mindestens 80%."
},
"bmiGreen7": {
"title": "BMI im Grün · 7T",
"description": "Halte deinen BMI 7 Tage in Folge im Normalbereich."
},
"bpGreen7": {
"title": "Blutdruck im Grün · 7T",
"description": "Halte deinen Blutdruck 7 Tage in Folge im Normalbereich."
},
"pulseGreen7": {
"title": "Puls im Grün · 7T",
"description": "Halte deinen Ruhepuls 7 Tage in Folge im Normalbereich."
},
"onTimePerfect30": {
"title": "Zeitfenster 30T",
"description": "Nimm 30 Tage in Folge alle Medikamente im Zeitfenster ein."
},
"compliance8030": {
"title": "Treue 80% · 30T",
"description": "Erreiche 30 Tage in Folge eine 30-Tage-Einnahmetreue von mindestens 80%."
},
"bmiGreen30": {
"title": "BMI im Grün · 30T",
"description": "Halte deinen BMI 30 Tage in Folge im Normalbereich."
},
"bpGreen30": {
"title": "Blutdruck im Grün · 30T",
"description": "Halte deinen Blutdruck 30 Tage in Folge im Normalbereich."
},
"pulseGreen30": {
"title": "Puls im Grün · 30T",
"description": "Halte deinen Ruhepuls 30 Tage in Folge im Normalbereich."
},
"onTimePerfect180": {
"title": "Zeitfenster 180T",
"description": "Nimm 180 Tage in Folge alle Medikamente im Zeitfenster ein."
},
"compliance80180": {
"title": "Treue 80% · 180T",
"description": "Erreiche 180 Tage in Folge eine 30-Tage-Einnahmetreue von mindestens 80%."
},
"bmiGreen180": {
"title": "BMI im Grün · 180T",
"description": "Halte deinen BMI 180 Tage in Folge im Normalbereich."
},
"bpGreen180": {
"title": "Blutdruck im Grün · 180T",
"description": "Halte deinen Blutdruck 180 Tage in Folge im Normalbereich."
},
"pulseGreen180": {
"title": "Puls im Grün · 180T",
"description": "Halte deinen Ruhepuls 180 Tage in Folge im Normalbereich."
},
"onTimePerfect360": {
"title": "Zeitfenster 360T",
"description": "Nimm 360 Tage in Folge alle Medikamente im Zeitfenster ein."
},
"compliance80360": {
"title": "Treue 80% · 360T",
"description": "Erreiche 360 Tage in Folge eine 30-Tage-Einnahmetreue von mindestens 80%."
},
"bmiGreen360": {
"title": "BMI im Grün · 360T",
"description": "Halte deinen BMI 360 Tage in Folge im Normalbereich."
},
"bpGreen360": {
"title": "Blutdruck im Grün · 360T",
"description": "Halte deinen Blutdruck 360 Tage in Folge im Normalbereich."
},
"pulseGreen360": {
"title": "Puls im Grün · 360T",
"description": "Halte deinen Ruhepuls 360 Tage in Folge im Normalbereich."
},
"moodFirst": {
"title": "Erste Stimmung",
"description": "Erfasse deinen ersten Stimmungseintrag."
},
"moodStreak7": {
"title": "Stimmungstagebuch 7T",
"description": "Trage an 7 aufeinanderfolgenden Tagen eine Stimmung ein."
},
"moodStreak30": {
"title": "Stimmungstagebuch 30T",
"description": "Trage an 30 aufeinanderfolgenden Tagen eine Stimmung ein."
},
"moodUp7": {
"title": "Hellere Woche",
"description": "Dein 7-Tage-Stimmungsmittel hat sich gegenüber der Vorwoche um mindestens 1,0 Punkt verbessert."
},
"weightFirst": {
"title": "Erstes Gewicht",
"description": "Erfasse deine erste Gewichtsmessung."
},
"weight50": {
"title": "Fünfzig Wiegungen",
"description": "Erfasse 50 Gewichtsmessungen."
},
"weight200": {
"title": "200 Wiegungen",
"description": "Erfasse 200 Gewichtsmessungen."
},
"bpFirst": {
"title": "Erster Blutdruck",
"description": "Erfasse deine erste Blutdruckmessung."
},
"bp50": {
"title": "Fünfzig Blutdruckmessungen",
"description": "Erfasse 50 Blutdruckmessungen."
},
"bp200": {
"title": "200 Blutdruckmessungen",
"description": "Erfasse 200 Blutdruckmessungen."
},
"pulseFirst": {
"title": "Erster Puls",
"description": "Erfasse deine erste Pulsmessung."
},
"consistentMonth": {
"title": "Konsequenter Monat",
"description": "Trage in einem Kalendermonat an mindestens 25 verschiedenen Tagen Daten ein."
},
"entryStreak7": {
"title": "Tracking-Serie 7T",
"description": "Trage an 7 aufeinanderfolgenden Tagen mindestens einen Eintrag ein."
},
"entryStreak30": {
"title": "Tracking-Serie 30T",
"description": "Trage an 30 aufeinanderfolgenden Tagen mindestens einen Eintrag ein."
},
"weekendWarrior": {
"title": "Wochenend-Tracker",
"description": "Trage an 4 aufeinanderfolgenden Samstag-Sonntag-Wochenenden Daten ein."
},
"hiddenNightOwl": {
"title": "Nachteule",
"description": "Du hast einen Eintrag zwischen 02:00 und 04:00 Uhr morgens erfasst."
},
"hiddenEarlyBird": {
"title": "Frühaufsteher",
"description": "Du hast einen Eintrag zwischen 04:00 und 06:00 Uhr morgens erfasst."
},
"hiddenLeapDay": {
"title": "Schalttag-Legende",
"description": "Du hast einen Eintrag am 29. Februar erfasst."
},
"hiddenDoctorPdf": {
"title": "Hausbesuch",
"description": "Du hast erstmals einen Arzt-Report als PDF exportiert."
},
"hiddenLocaleFlip": {
"title": "Polyglott",
"description": "Du hast die App-Sprache mindestens einmal gewechselt."
},
"hiddenBugBuddy": {
"title": "Bug-Kumpel",
"description": "Mindestens 5 Bugreports eingereicht — das Projekt liebt dich."
}
},
"nextProgressLabel": "Fortschritt bis Freischaltung",
"completedOn": "Abgeschlossen am {date}",
"locked": "Gesperrt",
"criterionHint": "{current} / {target}",
"progressPercent": "{percent}%",
"categories": {
"medication": "Medikation",
"vitals": "Vitalwerte",
"mood": "Stimmung",
"security": "Konto & Sicherheit",
"engagement": "Engagement",
"hidden": "Versteckt"
},
"hiddenCard": {
"title": "Versteckter Erfolg",
"description": "Tracke fleißig weiter — vielleicht stolperst du darüber.",
"ariaLabel": "Versteckter, gesperrter Erfolg"
},
"hiddenUnlockToast": {
"title": "Du hast einen versteckten Erfolg freigeschaltet!"
},
"dashboardCard": {
"title": "Zuletzt freigeschaltet",
"viewAll": "Alle anzeigen",
"empty": "Noch keine Erfolge — trage weiter ein, um deinen ersten freizuschalten."
}
},
"bugreport": {
"title": "Bugreport",
"subtitle": "Sende eine Fehlermeldung, einen Feature-Wunsch oder eine Frage. Der Server-Administrator sieht deine Einreichung.",
"loginRequired": "Bitte anmelden, um einen Bug zu melden.",
"bugTitle": "Titel",
"description": "Beschreibung",
"submit": "Senden",
"success": "Vielen Dank! Dein Bug Report wurde erfolgreich übermittelt.",
"errorCreating": "Fehler beim Erstellen",
"category": "Art",
"categoryBug": "Fehlermeldung",
"categoryFeature": "Feature-Wunsch",
"categoryQuestion": "Frage",
"categoryOther": "Sonstiges Feedback",
"bugTitlePlaceholder": "Kurze Zusammenfassung (optional)",
"githubEscalationNote": "Dein Feedback wird lokal gespeichert. Wenn der Administrator die GitHub-Integration aktiviert, kann es auf Wunsch als öffentliches Issue veröffentlicht werden.",
"internalOnlyNote": "Dein Feedback wird lokal gespeichert und ist nur für den Administrator dieses Servers sichtbar.",
"disabledTitle": "Bug-Reports sind deaktiviert",
"disabledBody": "Der Administrator hat Bug-Reports auf diesem Server deaktiviert."
},
"notifications": {
"title": "Benachrichtigungen",
"eventColumn": "Ereignis",
"subtitle": "Wähle aus, welche Benachrichtigungen du über welchen Kanal erhalten möchtest.",
"loadError": "Benachrichtigungseinstellungen konnten nicht geladen werden.",
"noChannels": "Konfiguriere zuerst einen Benachrichtigungskanal in den Einstellungen.",
"goToSettings": "Zu den Einstellungen",
"channelDisabled": "Deaktiviert",
"admin": {
"deployFailedTitle": "Bereitstellung fehlgeschlagen: {application}",
"deployFailedBody": "Bei der Bereitstellung von {application} (#{deployment}) ist ein Fehler aufgetreten: {error}. Logs ansehen: {logsUrl}",
"testNotificationTitle": "HealthLog Test-Benachrichtigung",
"testNotificationBody": "Diese Test-Benachrichtigung wurde vom Admin-Panel ausgelöst. Wenn du sie siehst, funktioniert der Kanal.",
"reminderCheckMissedTitle": "Erinnerung verpasst: {medication}",
"reminderCheckMissedBody": "{medication} ({dose}) im Zeitfenster {window} wurde nicht geloggt.",
"reminderCheckOverdueTitle": "Einnahme überfällig: {medication}",
"reminderCheckOverdueBody": "{medication} ({dose}) im Zeitfenster {window} ist seit {minutes} Minuten überfällig.",
"offlineGeoUnavailableTitle": "Offline-Geodatenbanken nicht geladen",
"offlineGeoUnavailableBody": "HealthLog löst Login-Standorte aktuell über den Online-Fallback ipwho.is auf. Um die Offline-Datenbanken GeoLite2-City und GeoLite2-ASN zu aktivieren, setze MAXMIND_LICENSE_KEY in den GitHub-Actions-Secrets unter {secretsUrl} und deploye neu. Bis dahin bleibt die Carrier-Spalte in der Login-Übersicht leer."
},
"user": {
"telegramTestBody": "HealthLog: Verbindung hergestellt. Telegram-Benachrichtigungen sind aktiv."
}
},
"i18n": {
"maintainershipBanner": {
"notice": "Diese Sprachversion ist maschinell übersetzt, inklusive der sicherheitskritischen Coach-Anweisungen. Eine automatische Drift-Prüfung läuft in CI; Coach-Regressionen bitte auf GitHub melden.",
"cta": "Auf GitHub melden",
"dismiss": "Schließen"
}
},
"targets": {
"title": "Zielwerte",
"introText": "Deine aktuellen Werte im Vergleich zu empfohlenen Zielbereichen. Quellen der Leitlinien sind auf jeder Karte verlinkt.",
"bmi": "BMI",
"average30d": "30-Tage-Schnitt:",
"consistency": {
"ariaLabel": "Letzte 7 Tage, im-Zielbereich-Status pro Tag",
"daysInRange": "{count} von {total} im Bereich",
"daysLogged": "{count} von {total} erfasst",
"dotInRange": "im Bereich",
"dotNearRange": "nahe am Bereich",
"dotOutOfRange": "außerhalb",
"dotNotLogged": "nicht erfasst",
"insufficientData": "Noch zu wenige Daten — bitte weiter erfassen.",
"relativeDay": {
"today": "heute",
"yesterday": "gestern",
"twoDaysAgo": "vor 2 Tagen",
"threeDaysAgo": "vor 3 Tagen",
"fourDaysAgo": "vor 4 Tagen",
"fiveDaysAgo": "vor 5 Tagen",
"sixDaysAgo": "vor 6 Tagen"
}
},
"card": {
"lastMet": "Zuletzt im Ziel: {when}",
"streak": "{count} Tage in Folge"
},
"relativeDay": {
"today": "heute",
"yesterday": "gestern",
"daysAgo": "vor {count} Tagen"
},
"summary": {
"weekTitle": "{met} von {total} Zielwerten diese Woche erreicht",
"weekTitleAll": "Alle {total} Zielwerte diese Woche erreicht",
"streakHighlight": "{count} Tage in Folge: {metric}"
},
"coach": {
"cta": "Coach fragen"
},
"edit": {
"openLabel": "Zielbereich für {metric} bearbeiten",
"title": "Zielbereich bearbeiten — {metric}",
"description": "Passt den Zielbereich an, der in Charts, Insights und im Arztbericht verwendet wird. Werte in {unit}.",
"derivedHint": "Diese Karte wird aus anderen Metriken abgeleitet. Bearbeite stattdessen die zugrundeliegenden Ziele (z. B. Blutdruck oder Gewicht).",
"minLabel": "Min",
"maxLabel": "Max",
"systolicMin": "Systolisch min",
"systolicMax": "Systolisch max",
"diastolicMin": "Diastolisch min",
"diastolicMax": "Diastolisch max",
"boundsHint": "Erlaubter Bereich: {min}–{max} {unit}",
"resetToDefault": "Auf Standard zurücksetzen",
"saveSuccess": "Zielbereich aktualisiert",
"saveError": "Zielbereich konnte nicht gespeichert werden",
"resetSuccess": "Zielbereich auf Standard zurückgesetzt"
},
"mood": {
"stability": {
"stable": "stabil",
"variable": "schwankend",
"highlyVariable": "sehr schwankend"
}
},
"currentValue": "Aktuell: {value} {unit}",
"targetRangeValue": "Zielbereich: {min}–{max} {unit}",
"sourceLabel": "Quelle: {source}",
"inTarget": "Im Zielbereich",
"aboveTarget": "{delta} {unit} über Zielbereich",
"belowTarget": "{delta} {unit} unter Zielbereich",
"diastolic": "Diastolisch",
"noMeasurementYet": "Noch keine Messungen",
"noMeasurementData": "Keine Messdaten verfügbar. Füge Messwerte hinzu, um deine Ziele zu sehen.",
"profileIncomplete": "Profil unvollständig",
"profileIncompleteHeight": "Trage deine Körpergröße im Profil ein, um BMI-Ziele zu aktivieren.",
"profileIncompleteAge": "Trage dein Geburtsdatum im Profil ein, um altersspezifische Ziele zu aktivieren.",
"profileIncompleteHeightAge": "Trage Körpergröße und Geburtsdatum im Profil ein, um personalisierte Ziele zu sehen.",
"compliancePerMedication": "Einnahmetreue pro Medikament",
"glucoseFasting": "Glukose — nüchtern",
"glucosePostprandial": "Glukose — postprandial",
"glucoseRandom": "Glukose — beliebig",
"glucoseBedtime": "Glukose — vor dem Schlafen",
"loadError": "Zielwerte konnten nicht geladen werden",
"label": {
"WEIGHT": "Gewicht",
"BLOOD_PRESSURE": "Blutdruck",
"BLOOD_PRESSURE_IN_TARGET": "Blutdruck im Zielbereich",
"PULSE": "Ruhepuls",
"SLEEP_DURATION": "Schlafdauer",
"BMI": "BMI",
"BODY_FAT": "Körperfett",
"ACTIVITY_STEPS": "Schritte/Tag",
"MEDICATION_COMPLIANCE": "Einnahmetreue",
"MOOD_SCORE": "Stimmung",
"MOOD_STABILITY": "Stimmungsstabilität"
},
"status": {
"underweight": "Untergewicht",
"normal": "Normal",
"overweight": "Übergewicht",
"obesityGrade1": "Adipositas Grad I",
"obesityGrade2": "Adipositas Grad II",
"obesityGrade3": "Adipositas Grad III",
"optimal": "Optimal",
"highNormal": "Hochnormal",
"hypertensionGrade1": "Hypertonie Grad 1",
"hypertensionGrade2": "Hypertonie Grad 2",
"hypertensionGrade3": "Hypertonie Grad 3",
"bradycardia": "Bradykardie",
"elevated": "Erhöht",
"tachycardia": "Tachykardie",
"significantlyLow": "Deutlich niedrig",
"slightlyLow": "Leicht niedrig",
"onTarget": "Im Zielbereich",
"slightlyElevated": "Leicht erhöht",
"significantlyElevated": "Deutlich erhöht",
"farTooShort": "Viel zu kurz",
"tooShort": "Zu kurz",
"slightlyLong": "Leicht zu lang",
"farTooLong": "Viel zu lang",
"belowEssential": "Unter essenziell",
"essential": "Essenziell",
"athletic": "Athletisch",
"fitness": "Fitness",
"acceptable": "Akzeptabel",
"obese": "Adipös",
"veryLow": "Sehr niedrig",
"lowActive": "Wenig aktiv",
"moderatelyActive": "Mäßig aktiv",
"active": "Aktiv",
"veryActive": "Sehr aktiv",
"good": "Gut",
"moderate": "Moderat",
"low": "Niedrig",
"high": "Hoch",
"veryGood": "Sehr gut",
"veryStable": "Sehr stabil",
"stable": "Stabil",
"fluctuating": "Schwankend"
}
},
"passwordStrength": {
"veryWeak": "Sehr schwach",
"weak": "Schwach",
"acceptable": "Akzeptabel",
"strong": "Stark",
"veryStrong": "Sehr stark",
"tooShort": "Zu kurz",
"characters": "Zeichen",
"minLength": "Mindestens {count} Zeichen erforderlich."
},
"telegram": {
"errorInvalidAction": "Ungültige Aktion.",
"errorMedicationNotFound": "Medikament nicht gefunden.",
"errorMedicationInactive": "Medikament nicht gefunden oder inaktiv.",
"errorUnknownAction": "Unbekannte Aktion.",
"snoozeOneHour": "1 Stunde",
"snoozeThreeHours": "3 Stunden",
"snoozedFor": "{name} für {duration} zurückgestellt.",
"skipped": "{name} übersprungen.",
"alreadyRecorded": "{name} war bereits erfasst.",
"recordedAsTaken": "{name} als eingenommen erfasst.",
"confirmed": "{name} bestätigt.",
"genericConfirmed": "Bestätigt.",
"cancelled": "Abgebrochen.",
"noActiveMedications": "Keine aktiven Medikamente gefunden.",
"whichMedication": "<b>Welches Medikament eingenommen?</b>",
"cancelButton": "Abbrechen",
"askMedicationName": "Bitte Medikament angeben, z.B. <b>genommen Ramipril</b>.",
"medicationNotFoundExact": "Medikament nicht gefunden. Bitte Namen exakt wie in HealthLog senden.",
"helpHeader": "<b>Verfügbare Befehle:</b>",
"helpBody": "/help — Diese Hilfe anzeigen\n/add — Einnahme erfassen\n/start — Bot starten\n\n<b>Textbefehle:</b>\ngenommen &lt;Name&gt; — Einnahme bestätigen\n\n<b>Über die Buttons in Erinnerungen:</b>\n• Genommen — Einnahme bestätigen\n• 🕐 1h / 🕐 3h — Erinnerung verschieben\n• ⏭ Überspringen — Einnahme überspringen\n• ✓ Bestätigen — Verpasste Einnahme bestätigen"
},
"medicationReminders": {
"phaseGreenTitle": "🟢 Erinnerung: {medName}",
"phaseGreenMessage": "🟢 Erinnerung:\n<b>{medName}</b> ({doseInfo}, {timeWindow})\nZeitfenster endet in {minutes} Min.",
"phaseYellowTitle": "🟡 Bald fällig: {medName}",
"phaseYellowMessage": "🟡 Bald fällig:\n<b>{medName}</b> ({doseInfo}, {timeWindow})\nNoch {minutes} Min. Zeit.",
"phaseOrangeTitle": "🟠 Überfällig: {medName}",
"phaseOrangeMessage": "🟠 Überfällig:\n<b>{medName}</b> ({doseInfo}, {timeWindow})\nSeit {minutes} Min. überfällig.",
"phaseRedTitle": "🔴 Verpasst: {medName}",
"phaseRedMessage": "🔴 Verpasst:\n<b>{medName}</b> ({doseInfo}, {timeWindow})\nAls verpasst markiert.",
"buttonTaken": "Genommen",
"buttonConfirm": "✓ Bestätigen",
"buttonSnoozeOneHour": "🕐 1h",
"buttonSnoozeThreeHours": "🕐 3h",
"buttonSkip": "⏭ Überspringen"
}
}