diff --git a/messages/de.json b/messages/de.json
index 905b13f71..2baa2f32e 100644
--- a/messages/de.json
+++ b/messages/de.json
@@ -7173,7 +7173,11 @@
"failed": "Das hat nicht geklappt. Prüfe deine Eingabe und versuche es noch einmal."
},
"passwordTitle": "Passwort",
- "tokenNameLabel": "Token-Name"
+ "tokenNameLabel": "Token-Name",
+ "displayCard": {
+ "title": "Darstellung",
+ "description": "Sprache, Einheiten und Formate, gespeichert, sobald du sie änderst."
+ }
},
"admin": {
"title": "Administration",
diff --git a/messages/en.json b/messages/en.json
index 158470039..3f2d82afa 100644
--- a/messages/en.json
+++ b/messages/en.json
@@ -7173,7 +7173,11 @@
"failed": "That did not work. Check what you entered and try again."
},
"passwordTitle": "Password",
- "tokenNameLabel": "Token name"
+ "tokenNameLabel": "Token name",
+ "displayCard": {
+ "title": "Display",
+ "description": "Language, units and formats, saved as soon as you change them."
+ }
},
"admin": {
"title": "Administration",
diff --git a/messages/es.json b/messages/es.json
index c1041cb78..be3c7baf3 100644
--- a/messages/es.json
+++ b/messages/es.json
@@ -7173,7 +7173,11 @@
"failed": "No ha funcionado. Revisa lo que has introducido e inténtalo de nuevo."
},
"passwordTitle": "Contraseña",
- "tokenNameLabel": "Nombre del token"
+ "tokenNameLabel": "Nombre del token",
+ "displayCard": {
+ "title": "Visualización",
+ "description": "Idioma, unidades y formatos; se guardan en cuanto los cambias."
+ }
},
"admin": {
"title": "Administration",
diff --git a/messages/fr.json b/messages/fr.json
index c9d7eb79f..b6cf1a77b 100644
--- a/messages/fr.json
+++ b/messages/fr.json
@@ -7173,7 +7173,11 @@
"failed": "Cela n'a pas fonctionné. Vérifiez votre saisie et réessayez."
},
"passwordTitle": "Mot de passe",
- "tokenNameLabel": "Nom du jeton"
+ "tokenNameLabel": "Nom du jeton",
+ "displayCard": {
+ "title": "Affichage",
+ "description": "Langue, unités et formats, enregistrés dès que vous les modifiez."
+ }
},
"admin": {
"title": "Administration",
diff --git a/messages/it.json b/messages/it.json
index d7d68ce9d..d3a70449a 100644
--- a/messages/it.json
+++ b/messages/it.json
@@ -7173,7 +7173,11 @@
"failed": "Non ha funzionato. Controlla quanto inserito e riprova."
},
"passwordTitle": "Password",
- "tokenNameLabel": "Nome del token"
+ "tokenNameLabel": "Nome del token",
+ "displayCard": {
+ "title": "Visualizzazione",
+ "description": "Lingua, unità e formati, salvati appena li modifichi."
+ }
},
"admin": {
"title": "Administration",
diff --git a/messages/ko.json b/messages/ko.json
index cbf9cbc05..8c101e880 100644
--- a/messages/ko.json
+++ b/messages/ko.json
@@ -7173,7 +7173,11 @@
"failed": "확인하지 못했습니다. 입력한 내용을 확인하고 다시 시도하세요."
},
"passwordTitle": "비밀번호",
- "tokenNameLabel": "토큰 이름"
+ "tokenNameLabel": "토큰 이름",
+ "displayCard": {
+ "title": "표시",
+ "description": "언어, 단위, 형식은 바꾸는 즉시 저장돼요."
+ }
},
"admin": {
"title": "관리자",
diff --git a/messages/pl.json b/messages/pl.json
index f682b317e..d78363ee2 100644
--- a/messages/pl.json
+++ b/messages/pl.json
@@ -7173,7 +7173,11 @@
"failed": "To się nie udało. Sprawdź wprowadzone dane i spróbuj ponownie."
},
"passwordTitle": "Hasło",
- "tokenNameLabel": "Nazwa tokena"
+ "tokenNameLabel": "Nazwa tokena",
+ "displayCard": {
+ "title": "Wyświetlanie",
+ "description": "Język, jednostki i formaty zapisywane od razu po zmianie."
+ }
},
"admin": {
"title": "Administracja",
diff --git a/src/components/settings/account-section/__tests__/display-preferences-card.test.tsx b/src/components/settings/account-section/__tests__/display-preferences-card.test.tsx
new file mode 100644
index 000000000..c9e9a88a2
--- /dev/null
+++ b/src/components/settings/account-section/__tests__/display-preferences-card.test.tsx
@@ -0,0 +1,53 @@
+/**
+ * Settings → Account: the controls that save on change (language, units,
+ * glucose unit, hour and date format) sit in their own card with no save
+ * button, apart from the profile form whose Save does not cover them.
+ */
+import { readFileSync } from "node:fs";
+import { join } from "node:path";
+import { renderToStaticMarkup } from "react-dom/server";
+import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
+import { describe, expect, it } from "vitest";
+
+import { I18nProvider } from "@/lib/i18n/context";
+import { DisplayPreferencesCard } from "../index";
+
+function render(): string {
+ const client = new QueryClient({
+ defaultOptions: { queries: { retry: 0, enabled: false } },
+ });
+ return renderToStaticMarkup(
+