From 163aa73e01ca0654fbe877bf23edea047b98ba95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Bombeck?= Date: Wed, 29 Jul 2026 15:08:50 +0200 Subject: [PATCH] feat(i18n): reconcile English German and Spanish copy --- messages/de.json | 26 ++++++++++++++++++-------- messages/en.json | 26 ++++++++++++++++++-------- messages/es.json | 26 ++++++++++++++++++-------- 3 files changed, 54 insertions(+), 24 deletions(-) diff --git a/messages/de.json b/messages/de.json index 476cf6693..93e0985b2 100644 --- a/messages/de.json +++ b/messages/de.json @@ -2252,16 +2252,12 @@ "heroActionAskCoach": "Coach fragen", "healthScore": { "label": "Gesundheitsscore", - "algorithmChanged": "Der Score nutzt jetzt veröffentlichte kardiometabolische Referenzbereiche; Gewicht ist nicht mehr enthalten, weil das frühere Ziel aus der Körpergröße statt aus einem selbst gesetzten Ziel abgeleitet wurde, tägliche Stimmungsschwankungen und Medikamententreue sind Handlungen statt Gesundheitszustände, und für Ruhepuls und HRV gibt es keinen allgemeinen Zielwert. Der Gewichtsfortschritt bleibt unten als persönlicher Kontext sichtbar, die anderen Signale bleiben auf ihren eigenen Karten, und eine neue Zahl bedeutet keine Veränderung deiner Gesundheit.", - "dismissAlgorithmChanged": "Hinweis zur Score-Methode schließen", "band": { "green": "Im Referenzbereich", "yellow": "Einige Bereiche brauchen Aufmerksamkeit", "red": "Mindestens ein Bereich liegt außerhalb des Referenzbereichs" }, - "method": "Gleich gewichteter Mittelwert der geeigneten Bereiche. Der niedrigste Bereich bestimmt die Gesamtstufe.", "insufficient": "{count} geeignete Bereiche. Der Score benötigt mindestens drei, darunter einen gemessenen physiologischen Bereich.", - "composition": "Einbezogen: {pillars}", "bandSetter": "Gesamtstufe bestimmt durch {pillar}", "versionAndNoise": "Methodenversion {version}. Schwelle für den Wochenvergleich: {noise} Punkte.", "methodVersion": "Methodenversion {version}.", @@ -4614,6 +4610,7 @@ "rowsImported": "Bisher {count} Einträge importiert", "doneSummary": "Fertig — {imported} von {read} Datensätzen importiert, {skipped} klinische Datensätze übersprungen.", "doneNothing": "Aus diesem Archiv wurde nichts importiert: 0 von {read} Datensätzen sind angekommen.", + "ecgResult": "EKGs: {discovered} gefunden, {imported} importiert, {updated} aktualisiert, {skipped} übersprungen, {failed} fehlgeschlagen. Fehler bei EKGs verwerfen keine unterstützten Datensätze, die aus export.xml importiert wurden.", "estimateWarning": "Kumulative Summen für {count} Tag(e) wurden anhand der größten Exportquelle geschätzt. Native Apple-Health-Statistiken bleiben maßgeblich.", "phase": { "queued": "In Warteschlange…", @@ -4930,6 +4927,21 @@ "passwordUpdated": "Passwort erfolgreich geändert", "passkeys": "Passkeys", "passkeysDescription": "Passkeys ermöglichen sicheres Anmelden ohne Passwort.", + "passkeyReauth": { + "title": "Bestätige deine Identität", + "description": "Bestätige vor dem Hinzufügen eines neuen Passkeys eine vorhandene Anmeldemethode.", + "methodLabel": "Bestätigungsmethode", + "methods": { + "password": "Passwort", + "totp": "Authenticator-Code", + "passkey": "Passkey", + "webauthn": "Sicherheitsschlüssel" + }, + "currentPassword": "Aktuelles Passwort", + "authenticatorCode": "Authenticator-Code", + "authenticatorPlaceholder": "Sechsstelliger Authenticator-Code", + "verifyAndAdd": "Bestätigen und hinzufügen" + }, "passkeyName": "Name", "noPasskeys": "Keine Passkeys registriert.", "addPasskey": "Passkey hinzufügen", @@ -5622,8 +5634,8 @@ "nightscoutTokenOptional": "Optional bei einer öffentlichen Seite", "nightscoutTokenSavedPlaceholder": "Gespeichert — neuen Token eingeben zum Ersetzen", "nightscoutTokenHelp": "Füge einen Zugriffstoken aus deinen Nightscout-Admin-Tools ein. Leer lassen, wenn deine Seite öffentlich lesbar ist.", - "nightscoutPrivateHost": "Diese Seite läuft in einem privaten Netzwerk", - "nightscoutPrivateHostHelp": "Nur aktivieren, wenn deine Nightscout-Instanz unter einer LAN-, VPN- oder Tailscale-Adresse läuft. Aus bei öffentlichen Seiten.", + "nightscoutPrivateOperatorTitle": "Der Zugriff auf ein privates Nightscout benötigt die Freigabe der Serveradministration.", + "nightscoutPrivateOperatorDescription": "Bitte die Serveradministration, genau diesen Nightscout-Ursprung freizugeben.", "nightscoutConnect": "Verbinden", "nightscoutUpdate": "Änderungen speichern", "nightscoutConnected": "Nightscout verbunden.", @@ -8581,7 +8593,6 @@ "notRecorded": "Nicht erfasst", "unreadable": "Gespeicherter Wert konnte nicht gelesen werden", "save": "Speichern", - "correct": "Korrigieren", "savedToast": "Lebensstil-Kontext gespeichert", "saveError": "Lebensstil-Kontext konnte nicht gespeichert werden", "loadError": "Lebensstil-Kontext konnte nicht geladen werden", @@ -8823,7 +8834,6 @@ "withheld": "Eine Zusammenfassung wurde erstellt, hat die Sicherheitsprüfung aber nicht bestanden und wird deshalb nicht angezeigt. Du kannst es erneut versuchen oder das Dokument selbst lesen.", "unavailable": "Für dieses Dokument konnte keine Zusammenfassung erstellt werden.", "generate": "Zusammenfassung erstellen", - "regenerate": "Neu erstellen", "generating": "Wird erstellt…" }, "loadError": "Dieses Dokument konnte nicht geladen werden.", diff --git a/messages/en.json b/messages/en.json index 4117dd4d1..1fc7e5c02 100644 --- a/messages/en.json +++ b/messages/en.json @@ -2252,16 +2252,12 @@ "heroActionAskCoach": "Ask the coach", "healthScore": { "label": "Health Score", - "algorithmChanged": "The score now uses published cardiometabolic reference ranges; weight left because its old target came from height, daily mood variability and medication adherence are actions rather than health states, and resting heart rate and HRV have no universal target. Weight progress remains below as personal context, the other signals remain on their own cards, and a new number does not mean your health changed.", - "dismissAlgorithmChanged": "Dismiss score method note", "band": { "green": "In the reference range", "yellow": "Some pillars need attention", "red": "One or more pillars are outside the reference range" }, - "method": "Equal-weight average of eligible pillars. The lowest pillar sets the overall band.", "insufficient": "{count} eligible pillars. The score needs at least three, including a measured physiological pillar.", - "composition": "Included: {pillars}", "bandSetter": "Overall band set by {pillar}", "versionAndNoise": "Method version {version}. Weekly comparison floor: {noise} points.", "methodVersion": "Method version {version}.", @@ -4614,6 +4610,7 @@ "rowsImported": "{count} rows imported so far", "doneSummary": "Done — {imported} of {read} records imported, {skipped} clinical records skipped.", "doneNothing": "Nothing was imported from that archive: 0 of {read} records landed.", + "ecgResult": "ECGs: {discovered} discovered, {imported} imported, {updated} updated, {skipped} skipped, {failed} failed. ECG failures do not discard supported records imported from export.xml.", "estimateWarning": "Cumulative totals for {count} day(s) were estimated from the largest export source. Native Apple Health statistics remain authoritative.", "phase": { "queued": "Queued…", @@ -4930,6 +4927,21 @@ "passwordUpdated": "Password updated successfully", "passkeys": "Passkeys", "passkeysDescription": "Passkeys allow secure login without a password.", + "passkeyReauth": { + "title": "Confirm it's you", + "description": "Verify an existing sign-in method before adding a new passkey.", + "methodLabel": "Verification method", + "methods": { + "password": "Password", + "totp": "Authenticator code", + "passkey": "Passkey", + "webauthn": "Security key" + }, + "currentPassword": "Current password", + "authenticatorCode": "Authenticator code", + "authenticatorPlaceholder": "6-digit authenticator code", + "verifyAndAdd": "Verify and add" + }, "passkeyName": "Name", "noPasskeys": "No passkeys registered.", "addPasskey": "Add passkey", @@ -5622,8 +5634,8 @@ "nightscoutTokenOptional": "Optional for a public site", "nightscoutTokenSavedPlaceholder": "Saved — enter a new token to replace it", "nightscoutTokenHelp": "Paste an access token from your Nightscout admin tools. Leave empty if your site is publicly readable.", - "nightscoutPrivateHost": "This site runs on a private network", - "nightscoutPrivateHostHelp": "Enable only if your Nightscout instance is on a LAN, VPN, or Tailscale address. Off for public sites.", + "nightscoutPrivateOperatorTitle": "Private Nightscout access requires server approval.", + "nightscoutPrivateOperatorDescription": "Ask your server administrator to approve this exact Nightscout origin.", "nightscoutConnect": "Connect", "nightscoutUpdate": "Save changes", "nightscoutConnected": "Nightscout connected.", @@ -8581,7 +8593,6 @@ "notRecorded": "Not recorded", "unreadable": "Stored value could not be read", "save": "Save", - "correct": "Correct", "savedToast": "Lifestyle context saved", "saveError": "Could not save lifestyle context", "loadError": "Could not load lifestyle context", @@ -8823,7 +8834,6 @@ "withheld": "A summary was generated but did not pass the safety check, so it is not shown. You can try again, or read the document itself.", "unavailable": "No summary could be generated for this document.", "generate": "Generate summary", - "regenerate": "Generate again", "generating": "Generating…" }, "loadError": "Couldn't load this document.", diff --git a/messages/es.json b/messages/es.json index 4acb00944..815332031 100644 --- a/messages/es.json +++ b/messages/es.json @@ -2252,16 +2252,12 @@ "heroActionAskCoach": "Preguntar al coach", "healthScore": { "label": "Puntuación de salud", - "algorithmChanged": "La puntuación ahora usa intervalos de referencia cardiometabólicos publicados; el peso ya no se incluye porque el objetivo anterior se derivaba de la estatura en vez de un objetivo personal, la variabilidad diaria del ánimo y la adherencia a la medicación son acciones y no estados de salud, y no existe un objetivo universal para la frecuencia cardiaca en reposo ni la VFC. El progreso de peso sigue apareciendo abajo como contexto personal, las demás señales conservan sus propias tarjetas y una cifra nueva no significa que tu salud haya cambiado.", - "dismissAlgorithmChanged": "Cerrar la nota sobre el método", "band": { "green": "Dentro del intervalo de referencia", "yellow": "Algunos pilares requieren atención", "red": "Uno o más pilares están fuera del intervalo de referencia" }, - "method": "Media con el mismo peso para los pilares aptos. El pilar más bajo determina la categoría general.", "insufficient": "{count} pilares aptos. La puntuación necesita al menos tres, incluido un pilar fisiológico medido.", - "composition": "Incluidos: {pillars}", "bandSetter": "Categoría general determinada por {pillar}", "versionAndNoise": "Versión del método {version}. Umbral de comparación semanal: {noise} puntos.", "methodVersion": "Versión del método {version}.", @@ -4614,6 +4610,7 @@ "rowsImported": "{count} filas importadas hasta ahora", "doneSummary": "Listo: {imported} de {read} registros importados, {skipped} registros clínicos omitidos.", "doneNothing": "No se importó nada de ese archivo: llegaron 0 de {read} registros.", + "ecgResult": "ECG: {discovered} detectados, {imported} importados, {updated} actualizados, {skipped} omitidos y {failed} fallidos. Los errores de ECG no descartan los registros compatibles importados desde export.xml.", "estimateWarning": "Los totales acumulados de {count} día(s) se estimaron a partir de la mayor fuente de la exportación. Las estadísticas nativas de Apple Health siguen siendo la referencia.", "phase": { "queued": "En cola…", @@ -4930,6 +4927,21 @@ "passwordUpdated": "Contraseña actualizada correctamente", "passkeys": "Passkeys", "passkeysDescription": "Las claves de acceso permiten iniciar sesión de forma segura sin contraseña.", + "passkeyReauth": { + "title": "Confirma tu identidad", + "description": "Verifica un método de inicio de sesión existente antes de añadir una nueva clave de acceso.", + "methodLabel": "Método de verificación", + "methods": { + "password": "Contraseña", + "totp": "Código del autenticador", + "passkey": "Clave de acceso", + "webauthn": "Llave de seguridad" + }, + "currentPassword": "Contraseña actual", + "authenticatorCode": "Código del autenticador", + "authenticatorPlaceholder": "Código de seis dígitos del autenticador", + "verifyAndAdd": "Verificar y añadir" + }, "passkeyName": "Nombre", "noPasskeys": "No hay claves de acceso registradas.", "addPasskey": "Añadir clave de acceso", @@ -5622,8 +5634,8 @@ "nightscoutTokenOptional": "Opcional para un sitio público", "nightscoutTokenSavedPlaceholder": "Guardado: introduce un token nuevo para reemplazarlo", "nightscoutTokenHelp": "Pega un token de acceso de las herramientas de administración de Nightscout. Déjalo vacío si tu sitio es de lectura pública.", - "nightscoutPrivateHost": "Este sitio funciona en una red privada", - "nightscoutPrivateHostHelp": "Actívalo solo si tu instancia de Nightscout está en una dirección LAN, VPN o Tailscale. Desactivado para sitios públicos.", + "nightscoutPrivateOperatorTitle": "El acceso privado a Nightscout requiere la aprobación del administrador del servidor.", + "nightscoutPrivateOperatorDescription": "Pide al administrador del servidor que apruebe exactamente este origen de Nightscout.", "nightscoutConnect": "Conectar", "nightscoutUpdate": "Guardar cambios", "nightscoutConnected": "Nightscout conectado.", @@ -8581,7 +8593,6 @@ "notRecorded": "No registrado", "unreadable": "No se pudo leer el valor guardado", "save": "Guardar", - "correct": "Corregir", "savedToast": "Contexto del estilo de vida guardado", "saveError": "No se pudo guardar el contexto del estilo de vida", "loadError": "No se pudo cargar el contexto del estilo de vida", @@ -8823,7 +8834,6 @@ "withheld": "Se generó un resumen, pero no superó la comprobación de seguridad, así que no se muestra. Puedes intentarlo de nuevo o leer el documento.", "unavailable": "No se pudo generar ningún resumen para este documento.", "generate": "Generar resumen", - "regenerate": "Volver a generar", "generating": "Generando…" }, "loadError": "No se pudo cargar este documento.",