From 3e6a33df35605be53ecbaa9868efa6136a23e450 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Bombeck?= Date: Tue, 20 Oct 2026 10:10:57 +0200 Subject: [PATCH] fix(i18n): one sentence each for the read-failure lines The ended-session and spent-budget lines each ran to two sentences; the action sits on the button, so each is one sentence now. The sign-in label's key is common.signIn, matching what it says. The French strings added in this release use vous like the rest of the bundle, and the Korean sleep-score gap labels take the polite form the bundle uses. --- messages/de.json | 6 +++--- messages/en.json | 6 +++--- messages/es.json | 6 +++--- messages/fr.json | 8 ++++---- messages/it.json | 6 +++--- messages/ko.json | 10 +++++----- messages/nl.json | 6 +++--- messages/pl.json | 6 +++--- .../ui/__tests__/query-error-primitives.test.tsx | 4 ++-- src/hooks/use-read-failure.ts | 2 +- 10 files changed, 30 insertions(+), 30 deletions(-) diff --git a/messages/de.json b/messages/de.json index 72b690df6..187a3672f 100644 --- a/messages/de.json +++ b/messages/de.json @@ -55,9 +55,9 @@ "errorIdLabel": "Fehler-ID", "errorIdCopy": "Fehler-ID kopieren", "errorIdCopied": "Fehler-ID kopiert", - "readThrottled": "Gerade zu viele Anfragen. Versuch es später noch einmal.", - "sessionEnded": "Deine Sitzung ist abgelaufen. Melde dich erneut an, um weiterzumachen.", - "signInAgain": "Anmelden" + "readThrottled": "Gerade gibt es zu viele Anfragen, versuch es später noch einmal.", + "sessionEnded": "Deine Sitzung ist abgelaufen, melde dich erneut an, um weiterzumachen.", + "signIn": "Anmelden" }, "apiErrors": { "measurement": { diff --git a/messages/en.json b/messages/en.json index da940b4e7..7600036d3 100644 --- a/messages/en.json +++ b/messages/en.json @@ -55,9 +55,9 @@ "errorIdLabel": "Error ID", "errorIdCopy": "Copy error ID", "errorIdCopied": "Error ID copied", - "readThrottled": "Too many requests just now. Try again later.", - "sessionEnded": "Your session has ended. Sign in again to continue.", - "signInAgain": "Sign in" + "readThrottled": "There are too many requests just now, so try again later.", + "sessionEnded": "Your session has ended, so sign in again to continue.", + "signIn": "Sign in" }, "apiErrors": { "measurement": { diff --git a/messages/es.json b/messages/es.json index aeab27a15..d07564803 100644 --- a/messages/es.json +++ b/messages/es.json @@ -55,9 +55,9 @@ "errorIdLabel": "ID de error", "errorIdCopy": "Copiar ID de error", "errorIdCopied": "ID de error copiado", - "readThrottled": "Demasiadas solicitudes ahora mismo. Vuelve a intentarlo más tarde.", - "sessionEnded": "Tu sesión ha caducado. Inicia sesión de nuevo para continuar.", - "signInAgain": "Iniciar sesión" + "readThrottled": "Hay demasiadas solicitudes ahora mismo, así que vuelve a intentarlo más tarde.", + "sessionEnded": "Tu sesión ha caducado, así que inicia sesión de nuevo para continuar.", + "signIn": "Iniciar sesión" }, "apiErrors": { "measurement": { diff --git a/messages/fr.json b/messages/fr.json index 92a8ae59b..67c935a0a 100644 --- a/messages/fr.json +++ b/messages/fr.json @@ -55,9 +55,9 @@ "errorIdLabel": "ID d'erreur", "errorIdCopy": "Copier l'ID d'erreur", "errorIdCopied": "ID d'erreur copié", - "readThrottled": "Trop de requêtes pour le moment. Réessaie plus tard.", - "sessionEnded": "Ta session a expiré. Reconnecte-toi pour continuer.", - "signInAgain": "Se connecter" + "readThrottled": "Il y a trop de requêtes pour le moment, réessayez plus tard.", + "sessionEnded": "Votre session a expiré, reconnectez-vous pour continuer.", + "signIn": "Se connecter" }, "apiErrors": { "measurement": { @@ -4667,7 +4667,7 @@ "scoreCrossLink": "Voir le score de récupération composite", "emptyTitle": "Pas encore de données de récupération", "empty": "Cette page se remplit avec les valeurs de récupération, d'effort et de charge de WHOOP ou Polar et avec le niveau de résilience d'Oura.", - "emptyOuraPermission": "Le niveau de résilience d'Oura demande l'accès aux données de santé cardiaque : reconnecte Oura une fois dans Intégrations et autorise-le.", + "emptyOuraPermission": "Le niveau de résilience d'Oura demande l'accès aux données de santé cardiaque : reconnectez Oura une fois dans Intégrations et autorisez-le.", "emptyOuraNoResilience": "Oura est connecté, et son niveau de résilience apparaîtra ici dès qu'Oura en fournira un.", "emptyAction": "Ouvrir les intégrations", "block": { diff --git a/messages/it.json b/messages/it.json index 4ca892e15..6e43c3354 100644 --- a/messages/it.json +++ b/messages/it.json @@ -55,9 +55,9 @@ "errorIdLabel": "ID errore", "errorIdCopy": "Copia ID errore", "errorIdCopied": "ID errore copiato", - "readThrottled": "Troppe richieste in questo momento. Riprova più tardi.", - "sessionEnded": "La tua sessione è scaduta. Accedi di nuovo per continuare.", - "signInAgain": "Accedi" + "readThrottled": "Ci sono troppe richieste in questo momento, quindi riprova più tardi.", + "sessionEnded": "La tua sessione è scaduta, quindi accedi di nuovo per continuare.", + "signIn": "Accedi" }, "apiErrors": { "measurement": { diff --git a/messages/ko.json b/messages/ko.json index 7d8c1316b..7f23511b6 100644 --- a/messages/ko.json +++ b/messages/ko.json @@ -55,9 +55,9 @@ "errorIdLabel": "오류 ID", "errorIdCopy": "오류 ID 복사", "errorIdCopied": "오류 ID 복사됨", - "readThrottled": "지금은 요청이 너무 많아요. 나중에 다시 시도해 주세요.", - "sessionEnded": "세션이 만료되었어요. 계속하려면 다시 로그인해 주세요.", - "signInAgain": "로그인" + "readThrottled": "지금은 요청이 너무 많으니 나중에 다시 시도해 주세요.", + "sessionEnded": "세션이 만료되었으니 계속하려면 다시 로그인해 주세요.", + "signIn": "로그인" }, "apiErrors": { "measurement": { @@ -4397,8 +4397,8 @@ "composition": "구성" }, "gap": { - "fewNights": "아직 밤이 부족함 ({count}/{needed})", - "noMainSleep": "최근 하루는 낮잠만 있음" + "fewNights": "아직 밤이 부족해요 ({needed}일 중 {count}일)", + "noMainSleep": "최근 하루는 낮잠만 있었어요" } }, "READINESS": { diff --git a/messages/nl.json b/messages/nl.json index 8028f2dc4..ae766ad06 100644 --- a/messages/nl.json +++ b/messages/nl.json @@ -55,9 +55,9 @@ "errorIdLabel": "Fout-ID", "errorIdCopy": "Fout-ID kopiëren", "errorIdCopied": "Fout-ID gekopieerd", - "readThrottled": "Er zijn net te veel verzoeken. Probeer het later opnieuw.", - "sessionEnded": "Je sessie is verlopen. Meld je opnieuw aan om verder te gaan.", - "signInAgain": "Aanmelden" + "readThrottled": "Er zijn net te veel verzoeken, dus probeer het later opnieuw.", + "sessionEnded": "Je sessie is verlopen, dus meld je opnieuw aan om verder te gaan.", + "signIn": "Aanmelden" }, "apiErrors": { "measurement": { diff --git a/messages/pl.json b/messages/pl.json index 3aa3bd00e..265fabc95 100644 --- a/messages/pl.json +++ b/messages/pl.json @@ -55,9 +55,9 @@ "errorIdLabel": "ID błędu", "errorIdCopy": "Kopiuj ID błędu", "errorIdCopied": "Skopiowano ID błędu", - "readThrottled": "Zbyt wiele zapytań w tej chwili. Spróbuj ponownie później.", - "sessionEnded": "Twoja sesja wygasła. Zaloguj się ponownie, aby kontynuować.", - "signInAgain": "Zaloguj się" + "readThrottled": "W tej chwili jest zbyt wiele zapytań, więc spróbuj ponownie później.", + "sessionEnded": "Twoja sesja wygasła, więc zaloguj się ponownie, aby kontynuować.", + "signIn": "Zaloguj się" }, "apiErrors": { "measurement": { diff --git a/src/components/ui/__tests__/query-error-primitives.test.tsx b/src/components/ui/__tests__/query-error-primitives.test.tsx index bd70c4a46..4a63fe044 100644 --- a/src/components/ui/__tests__/query-error-primitives.test.tsx +++ b/src/components/ui/__tests__/query-error-primitives.test.tsx @@ -91,7 +91,7 @@ describe.each([ it("says a spent budget without offering a retry", () => { const html = render(new ApiError("Too many", 429)); - expect(html).toContain("Too many requests just now."); + expect(html).toContain("There are too many requests just now"); expect(html).not.toContain("retry"); expect(html).not.toContain("Could not load"); expect(html).not.toContain("Something on our side."); @@ -100,7 +100,7 @@ describe.each([ it("offers sign-in for an ended session, never a blank", () => { const html = render(new ApiError("Unauthorized", 401)); expect(html).not.toBe(""); - expect(html).toContain("Your session has ended."); + expect(html).toContain("Your session has ended"); expect(html).toContain('data-slot="query-error-sign-in"'); expect(html).not.toContain("retry"); }); diff --git a/src/hooks/use-read-failure.ts b/src/hooks/use-read-failure.ts index 57800b410..e07a73dd4 100644 --- a/src/hooks/use-read-failure.ts +++ b/src/hooks/use-read-failure.ts @@ -45,7 +45,7 @@ export function useReadFailure( kind: "unauthenticated", message: t("common.sessionEnded"), action: { - label: t("common.signInAgain"), + label: t("common.signIn"), onClick: () => window.location.assign(signInHref()), kind: "signIn", },