fix(i18n): future tense for the Topics preview, settled German wording

The Topics preview describes what it will add, the workout-route detail
says off for new accounts, and German reads 'Zurück zu den Modulen',
'Unter Module ändern', 'Unter Anordnung öffnen' and 'Erfassung' for
the Tracking group. Strings that name the Insights area call it
Insights; generic uses of Auswertung stay.
This commit is contained in:
Marc-André Bombeck committed 2026-10-21 22:01:50 +02:00
1 parent ac149460ba
commit f428b14ce9
10 files changed
+91 -25

No files matched your search

+29
View File
@@ -0,0 +1,29 @@
/**
* Copy that promises something not yet shipped says so.
*
* The Topics preview switch exists before its pages do, so its description is
* in the future tense in every locale's source (English) and in German; and
* the workout-route switch is off for new accounts, which is what its detail
* says rather than "off by default": an account that already held tracks at
* the upgrade started with it on (migration 0434).
*/
import { describe, expect, it } from "vitest";
import en from "../../messages/en.json";
import de from "../../messages/de.json";
describe("settings copy tense", () => {
it("describes the Topics preview as something it will add", () => {
expect(en.settings.preview.topics.description).toMatch(/^Will add /);
expect(de.settings.preview.topics.description).toMatch(/sobald/);
});
it("says workout routes are off for new accounts", () => {
expect(en.settings.privacy.workoutRoutes.detail).toMatch(
/^Off for new accounts\./,
);
expect(de.settings.privacy.workoutRoutes.detail).toMatch(
/^Für neue Konten aus\./,
);
});
});
@@ -53,3 +53,40 @@ describe("German Settings glossary", () => {
expect(offenders).toEqual([]);
});
});
describe("German wording settled in v1.44", () => {
const at = (path: string): string =>
path
.split(".")
.reduce<unknown>(
(node, key) => (node as Record<string, unknown> | undefined)?.[key],
de,
) as string;
it("names the Tracking group with a German word", () => {
expect(at("settings.shell.groups.tracking")).toBe("Erfassung");
});
it("points to another Settings page with 'Unter …' and returns to the Modules", () => {
expect(at("settings.sections.modules.backToHub")).toBe(
"Zurück zu den Modulen",
);
expect(at("settings.moduleState.change")).toBe("Unter Module ändern");
expect(at("settings.sections.modules.pages.openArrangement")).toBe(
"Unter Anordnung öffnen",
);
expect(at("settings.sections.modules.manageIn")).toMatch(/^Unter /);
});
it("calls the Insights area Insights where a string names it", () => {
for (const key of [
"measurements.openMetricInsights",
"medications.category.custom.bpGateNote",
"admin.aiQuality.title",
"recordSharing.invite.accessManageDetail",
]) {
expect(at(key), key).not.toMatch(/Auswertung/);
expect(at(key), key).toMatch(/Insights/);
}
});
});