Write English navigation and insights chip labels in sentence case

Settings, admin and main navigation read "Data & privacy", "Export &
import", "Health score", "API & tokens", "MCP connector", "System
status", "Danger zone" and "Admin console", and the insights metric
chips drop their title case ("Blood pressure", "Body fat" and the rest),
matching the labels around them. The other locales already followed
their own conventions; the API page title is translated where it had
been left in English.
This commit is contained in:
Marc-André Bombeck committed 2026-10-08 20:53:18 +02:00
1 parent 0fd1168fd9
commit 8ff35231f8
9 files changed
+49 -49

No files matched your search

@@ -50,7 +50,7 @@ describe("<InsightsTabStrip> — availability gating (v1.4.27 F19)", () => {
// only Overview, then pills light up as data arrives.
const html = render(<InsightsTabStrip />);
expect(html).toContain(">Overview<");
expect(html).not.toContain(">Blood Pressure<");
expect(html).not.toContain(">Blood pressure<");
expect(html).not.toContain(">Weight<");
expect(html).not.toContain(">Pulse<");
expect(html).not.toContain(">Mood<");
@@ -75,7 +75,7 @@ describe("<InsightsTabStrip> — availability gating (v1.4.27 F19)", () => {
expect(html).toContain(">Weight<");
expect(html).toContain('data-group="body"');
// Pills without data drop.
expect(html).not.toContain(">Blood Pressure<");
expect(html).not.toContain(">Blood pressure<");
expect(html).not.toContain(">Mood<");
expect(html).not.toContain(">Medication<");
expect(html).not.toContain(">Sleep<");
@@ -234,7 +234,7 @@ describe("<InsightsTabStrip> — vitals group collapse (v1.4.34 IW-D)", () => {
it("preserves the pinned flat pills inline", () => {
const html = render(<InsightsTabStrip availability={fullAvailability} />);
// Pinned pills must still be reachable directly.
expect(html).toContain(">Blood Pressure<");
expect(html).toContain(">Blood pressure<");
expect(html).toContain(">Weight<");
expect(html).toContain(">Sleep<");
expect(html).toContain(">Mood<");
@@ -361,7 +361,7 @@ describe("<InsightsTabStrip> — saved-layout visibility gate (v1.15.14 W2)", ()
visibleTileIds={visibleTileIds}
/>,
);
expect(html).not.toContain(">Blood Pressure<");
expect(html).not.toContain(">Blood pressure<");
expect(html).toContain(">Weight<");
});
@@ -63,7 +63,7 @@ describe("<ExportSection> — SSR smoke", () => {
</SettingsSectionFrame>,
);
// v1.15.7 — the section was relabelled "Export & Import" (issue #281).
expect(html).toContain("Export &amp; Import");
expect(html).toContain("Export &amp; import");
// Raw key never leaks past i18n.
expect(html).not.toContain("settings.sections.export.");
});
@@ -258,7 +258,7 @@ describe("settings sections — SSR smoke", () => {
it("<ApiSection> renders endpoints + tokens cards", () => {
const html = renderFramed("api", <ApiSection />);
expect(html).toContain("API &amp; Tokens");
expect(html).toContain("API &amp; tokens");
});
it("<AdvancedSection> renders the danger-zone card only (export moved to /settings/export)", () => {
@@ -451,7 +451,7 @@ describe("<SettingsShell>", () => {
expect(html).not.toContain('href="/settings/sharing"');
// The ampersand is HTML-escaped by React SSR — assert on the encoded
// form so we don't accidentally match a parser that double-escapes.
expect(html).toContain("API &amp; Tokens");
expect(html).toContain("API &amp; tokens");
// v1.18.0 (S5) — the health record is its own top-level entry.
expect(html).toContain('href="/settings/gesundheitsakte"');
expect(html).toContain("Health record");
@@ -494,7 +494,7 @@ describe("<SettingsShell>", () => {
// v1.18.6 (W9) — the AI section is named "KI-Anbieter" in German: the
// page is about the provider / BYOK, not an "Auswertung".
expect(html).toContain("KI-Anbieter");
// API & Tokens is identical in both locales (proper noun + ampersand)
// German keeps the noun capitalised: "API & Tokens".
expect(html).toContain("API &amp; Tokens");
expect(html).toContain("Erweitert");
// "Über diese App" (About) is back as the last in-shell nav entry