i18n: unify action verbs, user noun, adherence term, loading voice, and ellipsis

Sweep the DE bundle onto one word per concept: Nutzer (was Benutzer),
Hinzufügen for add actions (was Anlegen), Therapietreue (was Adhärenz/
Compliance), Medikamente in the medications subtitle. Standardise the
loading voice to the passive form and normalise every ellipsis to a
single Unicode glyph with no leading space. EN follows where its own
wording drifted; token placeholders keep their literal continuation.
This commit is contained in:
Marc-André Bombeck committed 2026-07-01 23:44:54 +02:00
1 parent a88c90fbfe
commit c5ac74d91e
2 files changed
+76 -76

No files matched your search

+58 -58
View File
@@ -8,11 +8,11 @@
"moreOptions": "Weitere Optionen",
"create": "Erstellen",
"close": "Schließen",
"loading": "Laden...",
"loading": "Laden…",
"loadFailed": "Konnte nicht geladen werden",
"error": "Fehler",
"saved": "Gespeichert",
"pullToRefresh": "Wird aktualisiert …",
"pullToRefresh": "Wird aktualisiert…",
"no": "Nein",
"noData": "Keine Daten vorhanden",
"optional": "Optional",
@@ -220,7 +220,7 @@
"themeDark": "Dunkel",
"themeLight": "Hell",
"collapseSidebar": "Einklappen",
"userMenu": "Benutzermenü",
"userMenu": "Nutzermenü",
"accountSettings": "Kontoeinstellungen",
"mood": "Stimmung",
"coach": "Coach",
@@ -252,11 +252,11 @@
"auth": {
"login": "Anmelden",
"register": "Registrieren",
"username": "Benutzername",
"username": "Nutzername",
"password": "Passwort",
"email": "E-Mail-Adresse",
"emailPlaceholder": "name@beispiel.de",
"emailOrUsername": "E-Mail-Adresse oder Benutzername",
"emailOrUsername": "E-Mail-Adresse oder Nutzername",
"emailOrUsernamePlaceholder": "name@beispiel.de oder benutzername",
"loginWithPasskey": "Mit Passkey anmelden",
"loginWithPassword": "Mit Passwort anmelden",
@@ -306,7 +306,7 @@
"hero": {
"scoreLabel": "Health Score",
"scoreProvisional": "Noch nicht genug Daten",
"scoreComputing": "Score wird berechnet …",
"scoreComputing": "Score wird berechnet…",
"doses": {
"summary": "{taken} von {scheduled} Dosen genommen",
"nextAt": "Nächste um {time}",
@@ -378,7 +378,7 @@
"saveError": "Einnahme konnte nicht gespeichert werden.",
"emptyTitle": "Noch keine Medikamente angelegt",
"emptyDescription": "Lege zuerst ein Medikament mit Zeitfenster an, damit du die Einnahme protokollieren kannst.",
"emptyCta": "Medikament anlegen"
"emptyCta": "Medikament hinzufügen"
},
"quickEntryDiscard": {
"title": "Eintrag verwerfen?",
@@ -772,10 +772,10 @@
},
"medications": {
"title": "Medikamente",
"subtitle": "Medikation, Zeitpläne & Einnahmen",
"subtitle": "Medikamente, Zeitpläne & Einnahmen",
"loginRequired": "Bitte anmelden, um Medikamente zu verwalten.",
"addMedication": "Hinzufügen",
"firstMedication": "Erstes Medikament anlegen",
"firstMedication": "Erstes Medikament hinzufügen",
"addChoice": {
"logIntake": "Einnahme erfassen",
"newMedication": "Neues Medikament"
@@ -817,7 +817,7 @@
"importIntakes": "Einnahmen importieren",
"importDescription": "JSON-Array mit Einnahme-Daten einfügen. Erwartetes Format:",
"importUploadFile": "JSON-Datei hochladen",
"importPaste": "JSON hier einfügen...",
"importPaste": "JSON hier einfügen…",
"importSelected": "Ausgewählt: {name}",
"importFileLoaded": "Datei \"{name}\" geladen",
"importInvalidJson": "Datei enthält kein gültiges JSON",
@@ -949,7 +949,7 @@
"description": "Beschreibe das Medikament in eigenen Worten — das Formular wird automatisch vorausgefüllt.",
"placeholder": "z. B. Mounjaro 5 mg wöchentlich am Mittwochmorgen ab nächstem Montag",
"submit": "Extrahieren",
"submitBusy": "Wird verarbeitet …",
"submitBusy": "Wird verarbeitet…",
"cancel": "Abbrechen",
"examples": {
"label": "Eines dieser Beispiele übernehmen",
@@ -1412,7 +1412,7 @@
}
},
"verlauf": {
"loading": "Verlauf wird geladen …",
"loading": "Verlauf wird geladen…",
"loadError": "Verlauf konnte nicht geladen werden.",
"empty": "Noch keine Einnahmen in diesem Zeitraum.",
"summaryEmpty": "Noch keine auswertbaren Dosen.",
@@ -1682,7 +1682,7 @@
"zeitplan": {
"title": "Zeitplan",
"timesTitle": "Einnahmezeiten",
"timesNote": "Passe die Uhrzeiten und das Zeitfenster jeder Dosis an. Die Häufigkeit (täglich, wöchentlich …) änderst du im Editor unter Erweitert.",
"timesNote": "Passe die Uhrzeiten und das Zeitfenster jeder Dosis an. Die Häufigkeit (täglich, wöchentlich…) änderst du im Editor unter Erweitert.",
"scheduleLabel": "Zeitplan {index}",
"fullEditNote": "Häufigkeit, Wirkstoffklasse und Kursfenster bearbeitest du im Editor unter Erweitert → Lebenszyklus.",
"graceEcho": "Erinnerungsfenster: {minutes} Minuten",
@@ -2152,7 +2152,7 @@
"send": "Senden",
"stop": "Stopp",
"thinking": "Denke nach…",
"composerPlaceholder": "Frag mich etwas …",
"composerPlaceholder": "Frag mich etwas…",
"nudgeBubbleLabel": "Neue Nachricht vom Coach — Chat öffnen",
"fabLabel": "Coach öffnen",
"readAloud": "Vorlesen",
@@ -2393,7 +2393,7 @@
"hrv": "Was sagt mir meine Herzfrequenzvariabilität zuletzt über Erholung und Stress?",
"sleep": "Geh mit mir meinen letzten Schlaf durch — Dauer, Regelmäßigkeit und was sich zu ändern lohnt.",
"mood": "Welche Muster siehst du in meiner Stimmung über die letzten Wochen?",
"medications": "Wie sieht meine Medikamentenadhärenz aus, und passt sie dazu, wie ich mich gefühlt habe?",
"medications": "Wie sieht meine Therapietreue aus, und passt sie dazu, wie ich mich gefühlt habe?",
"steps": "Wie aktiv war ich zuletzt gemessen an meinen Schritten, und wie ist das im Vergleich zu einem gesunden Richtwert?",
"activeEnergy": "Was sagt mein Aktivenergie-Verlauf über mein Aktivitätsniveau zuletzt?",
"cardioFitness": "Was bedeutet mein Cardio-Fitness-Verlauf (VO₂max), und wie bewege ich ihn in die richtige Richtung?",
@@ -2406,7 +2406,7 @@
"healthScore": "Warum liegt mein Gesundheits-Score bei {score} von 100, und was würde ihn am stärksten bewegen?",
"periodWeek": "Geh mit mir durch, wie meine letzte Woche über meine Gesundheitswerte hinweg lief — was sticht heraus?",
"periodMonth": "Geh mit mir durch, wie mein letzter Monat über meine Gesundheitswerte hinweg lief — was sticht heraus?",
"correlationBpCompliance": "Wie hängt meine Medikamentenadhärenz mit meinem Blutdruck zusammen? Geh mit mir durch, was dieser Zusammenhang für mich bedeutet.",
"correlationBpCompliance": "Wie hängt meine Therapietreue mit meinem Blutdruck zusammen? Geh mit mir durch, was dieser Zusammenhang für mich bedeutet.",
"correlationMoodPulse": "Gibt es einen echten Zusammenhang zwischen meiner Stimmung und meinem Puls? Hilf mir, diesen Zusammenhang zu lesen.",
"correlationWeightWeekday": "Folgt mein Gewicht einem Wochenmuster? Was sagt mir dieser Wochentags-Zusammenhang?",
"recommendation": "Erzähl mir mehr zu dieser Empfehlung: \"{text}\" — warum trifft sie auf mich zu, und was sollte ich tun?"
@@ -2534,7 +2534,7 @@
"stimmungEmptyAction": "Stimmungs-Tagebuch öffnen",
"medikamenteDescription": "Einnahme-Kalender pro Medikament plus eine textbasierte Einschätzung.",
"medikamenteEmptyTitle": "Erstes Medikament hinzufügen",
"medikamenteEmptyDescription": "Adhärenz-Insights brauchen mindestens ein erfasstes Medikament.",
"medikamenteEmptyDescription": "Therapietreue-Insights brauchen mindestens ein erfasstes Medikament.",
"medikamenteEmptyAction": "Medikamente öffnen",
"bmiDescription": "BMI aus deinem Gewicht und deiner Größe abgeleitet, mit Einschätzung.",
"target": {
@@ -3820,7 +3820,7 @@
},
"medications": {
"title": "Medikamente & Einnahmen",
"body": "Medikamente verwaltet Zeitpläne, Einnahmen, Bestand und Titration. Versteckt: wiederkehrende Pläne (RRULE/rollierend) und Bestandswarnungen. Deine Einnahmequote speist die Compliance-Säule im Dashboard und den Kontext der KI."
"body": "Medikamente verwaltet Zeitpläne, Einnahmen, Bestand und Titration. Versteckt: wiederkehrende Pläne (RRULE/rollierend) und Bestandswarnungen. Deine Einnahmequote speist die Therapietreue-Säule im Dashboard und den Kontext der KI."
},
"labs": {
"title": "Laborwerte",
@@ -3832,7 +3832,7 @@
},
"vorsorge": {
"title": "Vorsorge",
"body": "Vorsorge erinnert an Untersuchungen und Impfungen mit eigenem Intervall. Tipp: „Erledigt“ kann direkt eine Messung oder ein Laborergebnis anlegen. Fällige Vorsorgen erscheinen als Reminder und im Arztbericht."
"body": "Vorsorge erinnert an Untersuchungen und Impfungen mit eigenem Intervall. Tipp: „Erledigt“ kann direkt eine Messung oder ein Laborergebnis hinzufügen. Fällige Vorsorgen erscheinen als Reminder und im Arztbericht."
},
"cycle": {
"title": "Zyklus",
@@ -3994,7 +3994,7 @@
"profileTitle": "Profil einrichten",
"profileDescription": "Größe, Geburtsdatum und Geschlecht schalten personalisierte Zielwerte frei.",
"profileCta": "Profil öffnen",
"measurementTitle": "Erste Messung anlegen",
"measurementTitle": "Erste Messung hinzufügen",
"measurementDescription": "Ein Messpunkt reicht, um die Kachel zu aktivieren — der Trend zeichnet sich ab dem 5. Eintrag.",
"measurementCta": "Messung hinzufügen",
"medicationTitle": "Medikament hinzufügen",
@@ -4421,7 +4421,7 @@
"saved": "Datumsformat gespeichert.",
"saveError": "Speichern des Datumsformats fehlgeschlagen."
},
"username": "Benutzername",
"username": "Nutzername",
"height": "Körpergröße (cm)",
"dateOfBirth": "Geburtsdatum",
"dateOfBirthHint": "Wird für die automatische Berechnung der Blutdruck-Zielwerte benötigt.",
@@ -4673,7 +4673,7 @@
"aboutMe": {
"title": "Über mich",
"description": "Persönlicher Kontext, den Coach und Tagesbriefing zusätzlich zu deinen Daten lesen.",
"placeholder": "Z. B. Schichtarbeit, vegetarische Ernährung, Knieverletzung, Training für einen Halbmarathon …",
"placeholder": "Z. B. Schichtarbeit, vegetarische Ernährung, Knieverletzung, Training für einen Halbmarathon…",
"charCount": "{used} / {max} Zeichen",
"clear": "Leeren",
"save": "Speichern",
@@ -4685,11 +4685,11 @@
"profileHint": "Alter und Geschlecht stammen aus deinem Profil und werden automatisch mitgegeben.",
"freeTextLabel": "Über mich (Freitext)",
"conditionsLabel": "Chronische Erkrankungen",
"conditionsPlaceholder": "Z. B. Bluthochdruck, Typ-2-Diabetes …",
"conditionsPlaceholder": "Z. B. Bluthochdruck, Typ-2-Diabetes…",
"allergiesLabel": "Allergien & Unverträglichkeiten",
"allergiesPlaceholder": "Z. B. Laktoseintoleranz, Penicillin-Allergie …",
"allergiesPlaceholder": "Z. B. Laktoseintoleranz, Penicillin-Allergie…",
"focusLabel": "Worauf soll der Coach achten?",
"focusPlaceholder": "Z. B. behalte meinen Blutdruck im Blick, motiviere mich zu mehr Bewegung …",
"focusPlaceholder": "Z. B. behalte meinen Blutdruck im Blick, motiviere mich zu mehr Bewegung…",
"completeness": "{answered} von {total} beantwortet",
"questionsTitle": "Der Coach hat Rückfragen",
"questionsOpenCoach": "Im Coach beantworten",
@@ -4892,9 +4892,9 @@
"expand": "Ausklappen",
"dangerZone": "Alle Daten löschen",
"dangerZoneTitle": "Gefahrenzone",
"dangerZoneDescription": "Löscht alle deine Gesundheitsdaten und Integrationen. Dein Benutzerkonto bleibt erhalten.",
"dangerZoneDescription": "Löscht alle deine Gesundheitsdaten und Integrationen. Dein Nutzerkonto bleibt erhalten.",
"dangerZoneConfirm": "Alle Daten löschen?",
"dangerZoneConfirmDescription": "Dieser Vorgang löscht alle deine Gesundheitsdaten und Integrationen unwiderruflich. Dein Benutzerkonto bleibt erhalten.",
"dangerZoneConfirmDescription": "Dieser Vorgang löscht alle deine Gesundheitsdaten und Integrationen unwiderruflich. Dein Nutzerkonto bleibt erhalten.",
"dangerZoneSuccess": "Alle persönlichen Daten wurden gelöscht",
"dangerZoneDeleteFailed": "Löschen fehlgeschlagen",
"finalDelete": "Endgültig löschen",
@@ -5343,7 +5343,7 @@
},
"admin": {
"title": "Administration",
"subtitle": "Systemstatus, Benutzer und Einstellungen",
"subtitle": "Systemstatus, Nutzer und Einstellungen",
"settingsSaveError": "Einstellungen konnten nicht gespeichert werden",
"systemStatus": "Systemstatus",
"systemStatusDescription": "Laufzeitdaten der Instanz: Datenbank, Worker und Bestandszähler.",
@@ -5351,11 +5351,11 @@
"databaseConnected": "Verbunden",
"databaseError": "Fehler",
"startedAt": "Gestartet",
"users": "Benutzer",
"users": "Nutzer",
"measurementsCount": "Messwerte",
"activeTokens": "Aktive API-Tokens",
"activeSessions": "Aktive Sessions",
"loadingStatus": "Lade Status...",
"loadingStatus": "Status wird geladen…",
"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.",
@@ -5387,7 +5387,7 @@
},
"aiQuality": {
"title": "Auswertungs-Qualität",
"loading": "Feedback-Zusammenfassung wird geladen...",
"loading": "Feedback-Zusammenfassung wird geladen…",
"loadError": "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",
@@ -5402,7 +5402,7 @@
},
"coachFeedback": {
"title": "Coach-Feedback",
"loading": "Coach-Feedback-Zusammenfassung wird geladen...",
"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",
@@ -5422,14 +5422,14 @@
"appSettings": "Anwendungseinstellungen",
"appSettingsDescription": "Globale Standardwerte für Registrierung, Sprache und Zeitzone neuer Konten.",
"registrationEnabled": "Registrierung erlauben",
"registrationEnabledDescription": "Wenn deaktiviert, können sich keine neuen Benutzer registrieren.",
"registrationEnabledDescription": "Wenn deaktiviert, können sich keine neuen Nutzer registrieren.",
"defaultLanguage": "Standard-Sprache",
"defaultLanguageDescription": "Wird für neue Benutzer und als Fallback verwendet.",
"defaultLanguageDescription": "Wird für neue Nutzer 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.",
"defaultUserTimezoneDescription": "Wird für neue Konten ohne erkannte Browser-Zeitzone verwendet. Bestehende Nutzer sind nicht betroffen.",
"defaultUserTimezoneFallback": "Europe/Berlin (Standard)",
"servicesGlobal": "Dienste (global)",
"servicesGlobalDescription": "Deaktivierte Dienste stehen keinem Benutzer zur Verfügung.",
"servicesGlobalDescription": "Deaktivierte Dienste stehen keinem Nutzer zur Verfügung.",
"telegramGlobal": "Telegram-Benachrichtigungen erlauben.",
"ntfyGlobal": "ntfy-Benachrichtigungen erlauben.",
"webPushGlobal": "Browser-Push-Benachrichtigungen erlauben.",
@@ -5553,7 +5553,7 @@
"revokedToast": "Einladung widerrufen.",
"revokeError": "Einladung konnte nicht widerrufen werden."
},
"userManagement": "Benutzerverwaltung",
"userManagement": "Nutzerverwaltung",
"userManagementDescription": "Konten verwalten: Rollen, Passwort-Resets und erzwungene Abmeldungen.",
"userName": "Name",
"userEmail": "E-Mail",
@@ -5561,11 +5561,11 @@
"userPasskeys": "Passkeys",
"userCreated": "Erstellt",
"userActions": "Aktionen",
"editUser": "Benutzer bearbeiten",
"editUserTitle": "Benutzer bearbeiten: {name}",
"editUser": "Nutzer bearbeiten",
"editUserTitle": "Nutzer bearbeiten: {name}",
"demoteToUser": "Zu User degradieren",
"promoteToAdmin": "Zum Admin befördern",
"toUser": "Zum Benutzer",
"toUser": "Zum Nutzer",
"toAdmin": "Zum Admin",
"ownRoleUnchangeable": "Eigene Rolle nicht änderbar",
"resetPassword": "Passwort zurücksetzen",
@@ -5574,10 +5574,10 @@
"newPasswordPlaceholder": "Mindestens 12 Zeichen",
"passwordReset": "Passwort wurde zurückgesetzt",
"reset": "Zurücksetzen",
"loadingUsers": "Lade Benutzer...",
"loadingUsers": "Nutzer werden geladen…",
"apiTokens": "API-Tokens",
"apiTokensDescription": "Alle aktiven und widerrufenen API-Tokens über alle Konten hinweg.",
"tokenUser": "Benutzer",
"tokenUser": "Nutzer",
"tokenName": "Name",
"tokenPermissions": "Berechtigungen",
"tokenPermissionAll": "Alle",
@@ -5613,9 +5613,9 @@
"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.",
"deleteAllDescription": "Löscht alle Mess-, Medikamenten-, Integrations- und Protokoll-Daten aller Nutzer. Nutzerkonten 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.",
"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 Nutzer unwiderruflich. Nutzerkonten, 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",
"deleteAllPromptLabel": "Tippe {token} zum Fortfahren",
"finalDelete": "Endgültig löschen",
@@ -5681,11 +5681,11 @@
"versionTileUpdateAvailable": "Update verfügbar: {tag}",
"versionTileUpToDate": "Aktuell",
"snapshotLoadError": "System-Snapshot konnte nicht geladen werden.",
"snapshotLoading": "Snapshot wird geladen...",
"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...",
"auditLoading": "Aktivitäten werden geladen…",
"auditViewAll": "Alle anzeigen"
},
"section": {
@@ -5714,7 +5714,7 @@
"subtitle": "Schwellwerte für Medikamentenerinnerungen anpassen."
},
"users": {
"title": "Benutzer",
"title": "Nutzer",
"subtitle": "Konten, Rollen und aktive Sitzungen verwalten.",
"filter": {
"all": "Alle",
@@ -5723,7 +5723,7 @@
},
"forceLogout": "Abmeldung erzwingen",
"forceLogoutConfirmTitle": "{name} abmelden?",
"forceLogoutConfirmBody": "Alle aktiven Sitzungen dieses Benutzers werden widerrufen. Auf allen Geräten ist eine erneute Anmeldung erforderlich.",
"forceLogoutConfirmBody": "Alle aktiven Sitzungen dieses Nutzers 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",
@@ -5744,7 +5744,7 @@
"subtitle": "Audit-Spur für Authentifizierungs- und Admin-Ereignisse."
},
"auditLog": {
"filterActor": "Akteur (Benutzer-ID oder -Name)",
"filterActor": "Akteur (Nutzer-ID oder -Name)",
"filterAction": "Aktion",
"filterActionAll": "Alle Aktionen",
"filterTarget": "Ziel (ID oder Pfad)",
@@ -5792,7 +5792,7 @@
"runNow": "Jetzt sichern",
"runEnqueued": "Backup-Job eingeplant",
"runFailed": "Backup konnte nicht eingeplant werden",
"loading": "Backups werden geladen...",
"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.",
@@ -5820,7 +5820,7 @@
"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...",
"restoreInProgress": "Wiederherstellung läuft…",
"restoreSuccess": "Wiederherstellung abgeschlossen",
"restoreFailed": "Wiederherstellung fehlgeschlagen",
"docsLink": "Dokumentation"
@@ -5840,7 +5840,7 @@
"encryption": {
"title": "Verschlüsselung",
"subtitle": "Verschlüsselungsabdeckung und Schlüsselrotations-Status für ruhende Daten.",
"loading": "Verschlüsselungsstatus wird geladen...",
"loading": "Verschlüsselungsstatus wird geladen…",
"loadError": "Verschlüsselungsstatus konnte nicht geladen werden.",
"coverageTitle": "Abdeckung",
"coverageDescription": "Wie viele verschlüsselte Zeilen unter welcher Schlüssel-ID liegen. Es werden nur Schlüssel-IDs und Anzahlen gezeigt — niemals Schlüsselmaterial.",
@@ -7068,7 +7068,7 @@
"saveError": "Wert konnte nicht gespeichert werden",
"biomarker": "Biomarker",
"biomarkerPlaceholder": "Biomarker auswählen",
"defineNew": "+ Neuen Biomarker anlegen",
"defineNew": "+ Neuen Biomarker hinzufügen",
"noBiomarkersHint": "Lege zuerst einen Biomarker an, um einen Wert zu erfassen.",
"pickBiomarkerError": "Bitte zuerst einen Biomarker auswählen.",
"resultType": "Ergebnistyp",
@@ -7114,9 +7114,9 @@
"biomarker": {
"manageTitle": "Biomarker",
"managerDescription": "Marker einmal definieren — Einheit und Bereich gelten für jede Messung.",
"define": "Anlegen",
"defineFirst": "Ersten Biomarker anlegen",
"defineTitle": "Biomarker anlegen",
"define": "Hinzufügen",
"defineFirst": "Ersten Biomarker hinzufügen",
"defineTitle": "Biomarker hinzufügen",
"defineDescription": "Name, Einheit und Referenzbereich einmalig festlegen. Beim Erfassen wählst du nur den Marker.",
"editTitle": "Biomarker bearbeiten",
"edit": "Bearbeiten",
@@ -7332,7 +7332,7 @@
},
"medications": {
"label": "Medikamente",
"description": "Pläne, Einnahmen und Compliance."
"description": "Pläne, Einnahmen und Therapietreue."
},
"illness": {
"label": "Krankheitstagebuch",
@@ -7893,7 +7893,7 @@
"review": {
"title": "Erkannte Angaben prüfen",
"confirm": "Bestätigte Angaben speichern",
"confirming": "Wird gespeichert …",
"confirming": "Wird gespeichert…",
"needsReview": "Prüfung nötig",
"approve": "Übernehmen",
"reject": "Ablehnen",
+18 -18
View File
@@ -8,7 +8,7 @@
"moreOptions": "More options",
"create": "Create",
"close": "Close",
"loading": "Loading...",
"loading": "Loading…",
"loadFailed": "Could not load",
"error": "Error",
"saved": "Saved",
@@ -306,7 +306,7 @@
"hero": {
"scoreLabel": "Health Score",
"scoreProvisional": "Not enough data yet",
"scoreComputing": "Calculating score …",
"scoreComputing": "Calculating score…",
"doses": {
"summary": "{taken} of {scheduled} doses taken",
"nextAt": "Next at {time}",
@@ -817,7 +817,7 @@
"importIntakes": "Import intakes",
"importDescription": "Paste a JSON array with intake data. Expected format:",
"importUploadFile": "Upload JSON file",
"importPaste": "Paste JSON here...",
"importPaste": "Paste JSON here…",
"importSelected": "Selected: {name}",
"importFileLoaded": "File \"{name}\" loaded",
"importInvalidJson": "File does not contain valid JSON",
@@ -1412,7 +1412,7 @@
}
},
"verlauf": {
"loading": "Loading history …",
"loading": "Loading history…",
"loadError": "Could not load the history.",
"empty": "No intakes in this period yet.",
"summaryEmpty": "No doses to score yet.",
@@ -1682,7 +1682,7 @@
"zeitplan": {
"title": "Schedule",
"timesTitle": "Dose times",
"timesNote": "Adjust each dose's time and on-time window. The frequency (daily, weekly …) is edited in the editor under Advanced.",
"timesNote": "Adjust each dose's time and on-time window. The frequency (daily, weekly…) is edited in the editor under Advanced.",
"scheduleLabel": "Schedule {index}",
"fullEditNote": "Frequency, treatment class and course window are edited in the editor under Advanced → Lifecycle.",
"graceEcho": "Reminder window: {minutes} minutes",
@@ -2152,7 +2152,7 @@
"send": "Send",
"stop": "Stop",
"thinking": "Thinking…",
"composerPlaceholder": "Ask me anything …",
"composerPlaceholder": "Ask me anything…",
"nudgeBubbleLabel": "New message from the Coach — open chat",
"fabLabel": "Open the Coach",
"readAloud": "Read aloud",
@@ -2534,7 +2534,7 @@
"stimmungEmptyAction": "Open mood journal",
"medikamenteDescription": "Per-medication adherence calendars and a written assessment.",
"medikamenteEmptyTitle": "Add your first medication",
"medikamenteEmptyDescription": "Compliance insights need at least one tracked medication.",
"medikamenteEmptyDescription": "Adherence insights need at least one tracked medication.",
"medikamenteEmptyAction": "Open medications",
"bmiDescription": "BMI derived from your weight and height, with a written assessment.",
"target": {
@@ -3820,7 +3820,7 @@
},
"medications": {
"title": "Medications & intakes",
"body": "Medications manages schedules, intakes, stock, and titration. Hidden: recurring plans (RRULE/rolling) and low-stock warnings. Your intake rate feeds the compliance pillar on the dashboard and the AI’s context."
"body": "Medications manages schedules, intakes, stock, and titration. Hidden: recurring plans (RRULE/rolling) and low-stock warnings. Your intake rate feeds the adherence pillar on the dashboard and the AI’s context."
},
"labs": {
"title": "Lab values",
@@ -5355,7 +5355,7 @@
"measurementsCount": "Measurements",
"activeTokens": "Active API Tokens",
"activeSessions": "Active Sessions",
"loadingStatus": "Loading status...",
"loadingStatus": "Loading status…",
"systemStatusLoadError": "Failed to load system status.",
"systemStatusRetry": "Retry",
"adminSettingsLoadError": "Failed to load admin settings. Toggles below may not reflect the live state — refresh the page.",
@@ -5387,7 +5387,7 @@
},
"aiQuality": {
"title": "Insights Quality",
"loading": "Loading feedback summary...",
"loading": "Loading feedback summary…",
"loadError": "Failed to load Insights quality summary. Try refreshing the page.",
"empty": "No feedback yet. The aggregator runs daily at 04:00 — once users start rating recommendations, helpful-rate bands appear here.",
"windowLabel": "Last {days} days",
@@ -5402,7 +5402,7 @@
},
"coachFeedback": {
"title": "Coach Feedback",
"loading": "Loading Coach feedback summary...",
"loading": "Loading Coach feedback summary…",
"loadError": "Failed to load Coach feedback summary. Try refreshing the page.",
"empty": "No Coach feedback yet. The aggregator runs daily at 04:00 — once users rate Coach replies, helpful-rate bands appear here.",
"windowLabel": "Last {days} days",
@@ -5574,7 +5574,7 @@
"newPasswordPlaceholder": "At least 12 characters",
"passwordReset": "Password has been reset",
"reset": "Reset",
"loadingUsers": "Loading users...",
"loadingUsers": "Loading users…",
"apiTokens": "API Tokens",
"apiTokensDescription": "All active and revoked API tokens across all accounts.",
"tokenUser": "User",
@@ -5681,11 +5681,11 @@
"versionTileUpdateAvailable": "Update available: {tag}",
"versionTileUpToDate": "Up to date",
"snapshotLoadError": "Failed to load system snapshot.",
"snapshotLoading": "Loading snapshot...",
"snapshotLoading": "Loading snapshot…",
"auditTitle": "Recent activity",
"auditEmpty": "No recent audit entries.",
"auditLoadError": "Failed to load recent activity.",
"auditLoading": "Loading activity...",
"auditLoading": "Loading activity…",
"auditViewAll": "View all"
},
"section": {
@@ -5792,7 +5792,7 @@
"runNow": "Backup now",
"runEnqueued": "Backup job enqueued",
"runFailed": "Failed to enqueue backup",
"loading": "Loading backups...",
"loading": "Loading backups…",
"loadError": "Failed to load backups.",
"emptyTitle": "No backups yet",
"emptyDescription": "Backups run automatically every Sunday at 03:00 — or trigger one now to create the first snapshot.",
@@ -5820,7 +5820,7 @@
"restoreDescription": "This will replace ALL current data for {username} with the snapshot from {when}. Existing measurements, medications, intake events, mood entries, notification channels, push subscriptions and queued Telegram deletions will be deleted.",
"restorePromptLabel": "Type RESTORE to continue",
"restoreConfirm": "Restore now",
"restoreInProgress": "Restoring...",
"restoreInProgress": "Restoring…",
"restoreSuccess": "Restore complete",
"restoreFailed": "Restore failed",
"docsLink": "Documentation"
@@ -5840,7 +5840,7 @@
"encryption": {
"title": "Encryption",
"subtitle": "Encryption coverage and key-rotation status for data at rest.",
"loading": "Loading encryption status...",
"loading": "Loading encryption status…",
"loadError": "Failed to load encryption status.",
"coverageTitle": "Coverage",
"coverageDescription": "How many encrypted rows sit under each key id. Only key ids and counts are shown — never key material.",
@@ -7332,7 +7332,7 @@
},
"medications": {
"label": "Medications",
"description": "Schedules, intakes, and compliance."
"description": "Schedules, intakes, and adherence."
},
"illness": {
"label": "Illness journal",