diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index 43872bb2a..744868aaf 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -183,6 +183,10 @@ "@devicesOuraProtocolTimeout": { "description": "Snackbar: Oura-Sync fehlgeschlagen — Protokoll-Timeout / unvollständige Antwort." }, + "devicesOuraWriteRefused": "Ein Befehl konnte nicht an den Ring gesendet werden. Bitte synchronisiere erneut.", + "@devicesOuraWriteRefused": { + "description": "Snackbar: Oura-Sync fehlgeschlagen — die Verbindung hat einen Befehl abgelehnt." + }, "devicesOuraCheckpointUnconfirmed": "Die Synchronisation konnte nicht abgeschlossen werden. Bitte synchronisiere erneut.", "devicesSyncingTheRing": "Ring wird synchronisiert…", "devicesSynced": "Synchronisiert.", @@ -1375,7 +1379,7 @@ "healthCatMovementLoad": "Bewegung & Belastung", "healthCatBodyWear": "Körper & Tragezeit", "healthBlurbRestingHr": "Der niedrigste anhaltende Puls der Nacht", - "healthBlurbHrv": "Mittlerer RMSSD über die 5-Minuten-Fenster der Nacht", + "healthBlurbHrv": "RMSSD der Schlag-zu-Schlag-Intervalle im Schlaf", "healthBlurbHrvCv": "SDNN als Anteil des mittleren Schlagintervalls, innerhalb einer Nacht", "healthBlurbLfHf": "Wie sich die Herzschlag-Variabilität auf die Frequenzbereiche verteilt", "healthBlurbDip": "Wie stark deine Herzfrequenz im Schlaf sinkt", diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 2e949e79d..e8c2ddc83 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -780,6 +780,10 @@ "@devicesOuraProtocolTimeout": { "description": "Snackbar: Oura sync failed — protocol timeout / incomplete answer." }, + "devicesOuraWriteRefused": "Could not send a command to the ring. Please try syncing again.", + "@devicesOuraWriteRefused": { + "description": "Snackbar: Oura sync failed — the link refused a command write." + }, "devicesOuraCheckpointUnconfirmed": "The sync could not be completed. Please try syncing again.", "@devicesOuraCheckpointUnconfirmed": { "description": "Snackbar: Oura sync failed — a batch checkpoint was not confirmed in time." @@ -6803,7 +6807,7 @@ "@healthBlurbRestingHr": { "description": "Explore catalogue one-line description for resting heart rate" }, - "healthBlurbHrv": "Mean RMSSD across the night's 5-minute windows", + "healthBlurbHrv": "RMSSD of beat-to-beat intervals during sleep", "@healthBlurbHrv": { "description": "Explore catalogue one-line description for HRV: the nightly mean of the RMSSDs of the sleep session's 5-minute windows" }, diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb index fe84b4c9d..cb9af1212 100644 --- a/lib/l10n/app_es.arb +++ b/lib/l10n/app_es.arb @@ -177,6 +177,10 @@ "@devicesOuraProtocolTimeout": { "description": "Aviso: la sincronización de Oura falló — tiempo de espera agotado / respuesta incompleta." }, + "devicesOuraWriteRefused": "No se pudo enviar un comando al anillo. Vuelve a sincronizar.", + "@devicesOuraWriteRefused": { + "description": "Aviso: la sincronización de Oura falló — la conexión rechazó un comando." + }, "devicesOuraCheckpointUnconfirmed": "No se pudo completar la sincronización. Vuelve a sincronizar.", "devicesSyncingTheRing": "Sincronizando el anillo…", "devicesSynced": "Sincronizado.", @@ -1331,7 +1335,7 @@ "healthCatMovementLoad": "Movimiento y carga", "healthCatBodyWear": "Cuerpo y uso", "healthBlurbRestingHr": "El ritmo sostenido más bajo de la noche", - "healthBlurbHrv": "RMSSD medio de las ventanas de 5 minutos de la noche", + "healthBlurbHrv": "RMSSD de los intervalos latido a latido durante el sueño", "healthBlurbHrvCv": "SDNN como fracción del intervalo medio entre latidos, dentro de una noche", "healthBlurbLfHf": "Dónde se concentra la potencia del ritmo cardíaco entre frecuencias", "healthBlurbDip": "Cuánto baja tu frecuencia cardíaca mientras duermes", diff --git a/lib/l10n/app_fr.arb b/lib/l10n/app_fr.arb index d95de114d..6b2495e1e 100644 --- a/lib/l10n/app_fr.arb +++ b/lib/l10n/app_fr.arb @@ -177,6 +177,10 @@ "@devicesOuraProtocolTimeout": { "description": "Snackbar : échec de la synchronisation Oura — délai dépassé / réponse incomplète." }, + "devicesOuraWriteRefused": "Impossible d'envoyer une commande à la bague. Resynchronisez.", + "@devicesOuraWriteRefused": { + "description": "Snackbar : échec de la synchronisation Oura — la liaison a refusé une commande." + }, "devicesOuraCheckpointUnconfirmed": "La synchronisation n'a pas pu être terminée. Resynchronisez.", "devicesSyncingTheRing": "Synchronisation de la bague…", "devicesSynced": "Synchronisé.", @@ -1331,7 +1335,7 @@ "healthCatMovementLoad": "Mouvement et charge", "healthCatBodyWear": "Corps et port", "healthBlurbRestingHr": "Le rythme soutenu le plus bas de la nuit", - "healthBlurbHrv": "RMSSD moyen sur les fenêtres de 5 minutes de la nuit", + "healthBlurbHrv": "RMSSD des intervalles battement à battement pendant le sommeil", "healthBlurbHrvCv": "SDNN en proportion de l'intervalle moyen entre battements, sur une nuit", "healthBlurbLfHf": "Où se situe la puissance du rythme cardiaque selon les fréquences", "healthBlurbDip": "De combien votre fréquence cardiaque baisse pendant votre sommeil", diff --git a/lib/l10n/app_hi.arb b/lib/l10n/app_hi.arb index 837a029df..b852c0b80 100644 --- a/lib/l10n/app_hi.arb +++ b/lib/l10n/app_hi.arb @@ -177,6 +177,10 @@ "@devicesOuraProtocolTimeout": { "description": "स्नैकबार: Oura सिंक विफल — प्रोटोकॉल टाइमआउट / अपूर्ण उत्तर।" }, + "devicesOuraWriteRefused": "रिंग को कमांड नहीं भेजा जा सका। कृपया फिर से सिंक करें।", + "@devicesOuraWriteRefused": { + "description": "स्नैकबार: Oura सिंक विफल — लिंक ने कमांड लिखना अस्वीकार किया।" + }, "devicesOuraCheckpointUnconfirmed": "सिंक पूर्ण नहीं हो पाई। कृपया फिर से सिंक करें।", "devicesSyncingTheRing": "रिंग सिंक हो रही है…", "devicesSynced": "सिंक हो गया।", @@ -1331,7 +1335,7 @@ "healthCatMovementLoad": "गतिविधि और भार", "healthCatBodyWear": "शरीर और पहनावा", "healthBlurbRestingHr": "रात की सबसे कम स्थिर दर", - "healthBlurbHrv": "रात की 5-मिनट की खिड़कियों पर औसत RMSSD", + "healthBlurbHrv": "नींद के दौरान धड़कन-दर-धड़कन अंतराल का RMSSD", "healthBlurbHrvCv": "एक रात के भीतर, औसत धड़कन-अंतराल के अनुपात में SDNN", "healthBlurbLfHf": "धड़कन-समय की ऊर्जा विभिन्न आवृत्तियों में कहाँ है", "healthBlurbDip": "सोते समय आपकी हृदय गति कितनी गिरती है", diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index e8621b898..46c33f878 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -177,6 +177,10 @@ "@devicesOuraProtocolTimeout": { "description": "快讯条:Oura 同步失败 — 协议超时 / 回应不完整。" }, + "devicesOuraWriteRefused": "无法向戒指发送指令。请重新同步。", + "@devicesOuraWriteRefused": { + "description": "快讯条:Oura 同步失败 — 连接拒绝了指令写入。" + }, "devicesOuraCheckpointUnconfirmed": "同步无法完成。请重新同步。", "devicesSyncingTheRing": "正在同步戒指…", "devicesSynced": "已同步。", @@ -1331,7 +1335,7 @@ "healthCatMovementLoad": "运动与负荷", "healthCatBodyWear": "身体与佩戴", "healthBlurbRestingHr": "整夜持续保持的最低心率", - "healthBlurbHrv": "整晚各 5 分钟窗口 RMSSD 的平均值", + "healthBlurbHrv": "睡眠期间逐搏间期的 RMSSD", "healthBlurbHrvCv": "单晚内 SDNN 占平均心跳间期的比例", "healthBlurbLfHf": "心跳间期功率在各频段的分布", "healthBlurbDip": "睡眠期间心率下降的幅度", diff --git a/lib/ui2/profile/devices.dart b/lib/ui2/profile/devices.dart index d8a7b1cac..b711395c1 100644 --- a/lib/ui2/profile/devices.dart +++ b/lib/ui2/profile/devices.dart @@ -2030,10 +2030,12 @@ Future _syncRing(BuildContext c, String? family) async { (l?.devicesOuraProtocolTimeout ?? 'The ring stopped answering mid-sync. Please try syncing ' 'again.'), + // A refused write does not say WHY (range, another app, transport), + // so the message claims only that the command was not sent. OuraSyncCategory.writeRefused => - (l?.devicesCouldNotReachRing ?? - 'Could not reach the ring. It has to be nearby, and not ' - 'connected to another app.'), + (l?.devicesOuraWriteRefused ?? + 'Could not send a command to the ring. Please try syncing ' + 'again.'), _ => (l?.devicesCouldNotReachRing ?? 'Could not reach the ring. It has to be nearby, and not ' 'connected to another app.'), diff --git a/lib/ui2/screens/health_screen.dart b/lib/ui2/screens/health_screen.dart index a722d0e5b..1391190b7 100644 --- a/lib/ui2/screens/health_screen.dart +++ b/lib/ui2/screens/health_screen.dart @@ -357,7 +357,7 @@ class _Cat { const _catalogue = <_Cat>[ _Cat('Heart & rhythm', [ _CatRow('resting_hr', 'rhr', 'The lowest sustained rate of the night'), - _CatRow('hrv', 'rmssd', 'Mean RMSSD across the night\'s 5-minute windows'), + _CatRow('hrv', 'rmssd', 'RMSSD of beat-to-beat intervals during sleep'), _CatRow('hrv_cv', 'hrv_cv', 'SDNN as a share of the average beat interval, within one night'), _CatRow('lf_hf', 'lf_hf', 'Where beat-timing power sits across frequencies'), diff --git a/lib/ui2/screens/metric_detail.dart b/lib/ui2/screens/metric_detail.dart index e464aff5e..e5274e47e 100644 --- a/lib/ui2/screens/metric_detail.dart +++ b/lib/ui2/screens/metric_detail.dart @@ -121,7 +121,9 @@ const _specs = { 'median, are dropped first. On a night whose beat timing looks noisy, ' 'only windows that pass the jitter check on their own, or that sit on ' 'a steady breathing line, count; a window, or a night, whose beats ' - 'add up to more time than passed is left out. ' + 'add up to more time than passed is left out. Older nights whose raw ' + 'beats are gone keep the value an earlier version of this method gave ' + 'them. ' 'Pulse-derived, so this is PRV: real and trendable, but not ECG HRV.', citation: 'Task Force 1996 · 20% local-median ectopic filter, after Malik', requires: {InputSignal.rrIntervals},