Copy polish: one pause dash, du-imperative errors, bare-question confirms, tokened micro-text

The German bundle's 109 spaced en-dash pauses join the em-dash norm (the
two date-range placeholders stay ranges); the three straight-quote
stragglers and three mixed-quote strings take German quotes; the eleven
Bitte-Infinitiv validation errors speak du-imperative like the rest of
the app; the two wirklich confirms become bare questions; the
notification-status description trades its semicolon telegram style for
two sentences in every locale; the Withings setup action shortens to the
sibling single word. Twelve arbitrary text-[10px]/[11px] sites move onto
the text-2xs/text-xs tokens; chart tooltips and the vendor calendar stay
as they are.
This commit is contained in:
Marc-André Bombeck committed 2026-08-14 10:08:49 +02:00
1 parent 09fbac3a33
commit d33be187e6
17 files changed
+145 -145

No files matched your search

+4 -4
View File
@@ -1732,7 +1732,7 @@ export function HealthChart({
<h2 className="text-sm font-semibold">{title}</h2>
)}
{activeBucket !== "day" && (
<span className="bg-muted/40 text-muted-foreground hidden rounded-md px-1.5 py-0.5 text-[10px] font-medium tracking-wide uppercase sm:inline-flex">
<span className="bg-muted/40 text-muted-foreground text-2xs hidden rounded-md px-1.5 py-0.5 font-medium tracking-wide uppercase sm:inline-flex">
{t(
activeBucket === "week"
? "charts.bucketWeekly"
@@ -1749,7 +1749,7 @@ export function HealthChart({
v1.4.19 A2 — hidden on mobile to free up the title row. */}
{effectiveCompareBaseline !== "none" && hasComparisonData && (
<span
className="text-dose-accent bg-dose-accent/10 hidden rounded-md border border-current/30 px-1.5 py-0.5 text-[10px] font-medium tracking-wide uppercase sm:inline-flex"
className="text-dose-accent bg-dose-accent/10 text-2xs hidden rounded-md border border-current/30 px-1.5 py-0.5 font-medium tracking-wide uppercase sm:inline-flex"
data-slot="chart-compare-caption"
>
{t(
@@ -1761,7 +1761,7 @@ export function HealthChart({
)}
{effectiveCompareBaseline !== "none" && !hasComparisonData && (
<span
className="text-muted-foreground bg-muted/40 hidden rounded-md px-1.5 py-0.5 text-[10px] font-medium tracking-wide sm:inline-flex"
className="text-muted-foreground bg-muted/40 text-2xs hidden rounded-md px-1.5 py-0.5 font-medium tracking-wide sm:inline-flex"
data-slot="chart-compare-unavailable"
>
{t(
@@ -1825,7 +1825,7 @@ export function HealthChart({
)}
{mini && (
<div className="text-muted-foreground mb-1 text-[10px] font-medium tracking-wider uppercase">
<div className="text-muted-foreground text-2xs mb-1 font-medium tracking-wider uppercase">
{title}
</div>
)}
@@ -416,7 +416,7 @@ export function MedicationComplianceChart({
{showTrendChip && trend && TrendIcon ? (
<span
className={cn(
"bg-muted/40 inline-flex items-center gap-1 rounded-md px-1.5 py-0.5 text-[10px] font-medium tracking-wide uppercase",
"bg-muted/40 text-2xs inline-flex items-center gap-1 rounded-md px-1.5 py-0.5 font-medium tracking-wide uppercase",
trendColor,
)}
data-slot="medication-trend-chip"
+3 -3
View File
@@ -1018,7 +1018,7 @@ export function MoodChart({
data-slot="chart-mini"
className="bg-card border-border rounded-md border p-2"
>
<div className="text-muted-foreground mb-1 text-[10px] font-medium tracking-wider uppercase">
<div className="text-muted-foreground text-2xs mb-1 font-medium tracking-wider uppercase">
{displayTitle}
</div>
{chartBody}
@@ -1049,7 +1049,7 @@ export function MoodChart({
v1.4.19 A2 — hidden on mobile to free up the title row. */}
{effectiveCompareBaseline !== "none" && hasComparisonData && (
<span
className="text-dose-accent bg-dose-accent/10 hidden rounded-md border border-current/30 px-1.5 py-0.5 text-[10px] font-medium tracking-wide uppercase sm:inline-flex"
className="text-dose-accent bg-dose-accent/10 text-2xs hidden rounded-md border border-current/30 px-1.5 py-0.5 font-medium tracking-wide uppercase sm:inline-flex"
data-slot="chart-compare-caption"
>
{t(
@@ -1061,7 +1061,7 @@ export function MoodChart({
)}
{effectiveCompareBaseline !== "none" && !hasComparisonData && (
<span
className="text-muted-foreground bg-muted/40 hidden rounded-md px-1.5 py-0.5 text-[10px] font-medium tracking-wide sm:inline-flex"
className="text-muted-foreground bg-muted/40 text-2xs hidden rounded-md px-1.5 py-0.5 font-medium tracking-wide sm:inline-flex"
data-slot="chart-compare-unavailable"
>
{t(
@@ -29,7 +29,7 @@ export function MessageTokenFooter({ tokens, model }: MessageTokenFooterProps) {
return (
<p
data-slot="coach-token-footer"
className="text-muted-foreground text-[11px] tabular-nums"
className="text-muted-foreground text-xs tabular-nums"
>
{label}
</p>
@@ -174,7 +174,7 @@ export function CoverageMeter({
data-slot="coverage-meter-label"
className={cn(
"text-muted-foreground tabular-nums",
size === "md" ? "text-xs" : "text-[11px]",
size === "md" ? "text-xs" : "text-2xs",
)}
>
{axisLabel ??
@@ -231,7 +231,7 @@ function ContributorRow({ contributor }: { contributor: AnatomyContributor }) {
</span>
<span
data-slot="anatomy-contributor-value"
className="text-muted-foreground text-[11px] tabular-nums"
className="text-muted-foreground text-xs tabular-nums"
>
{present
? t("insights.derived.anatomy.contributorValue", {
@@ -116,7 +116,7 @@ function MoodCorrelationCard({
// below the title on <sm (see the sm:hidden twin under the
// header); only the compact badge stays pinned right.
<div className="flex min-w-0 items-center gap-1.5">
<Badge variant="outline" className="text-[10px]">
<Badge variant="outline" className="text-2xs">
{t(STRENGTH_KEY[data.result.strength])}
</Badge>
{/* v1.12.4 (C4) — the "{n} paired days · r" line sat under the
@@ -173,7 +173,7 @@ describe("<InjectionSitePicker>", () => {
);
expect(html).toContain(
'aria-label="Bauch, unten links – empfohlene nächste Stelle"',
'aria-label="Bauch, unten links — empfohlene nächste Stelle"',
);
expect(html).toContain('aria-label="Bauch, unten rechts"');
expect(html).toContain('aria-label="Bauch, oben links"');
+1 -1
View File
@@ -384,7 +384,7 @@ export function MoodForm({ onSuccess, onCancel, footerSlot }: MoodFormProps) {
className="h-7 w-7 sm:h-8 sm:w-8"
aria-hidden="true"
/>
<span className="text-[10px] leading-tight sm:text-xs">
<span className="text-2xs leading-tight sm:text-xs">
{t(level.labelKey)}
</span>
</button>
+1 -1
View File
@@ -1064,7 +1064,7 @@ export function MoodList({ onAddFirst }: MoodListProps = {}) {
<span className="text-lg font-semibold tabular-nums">
{MOOD_SCORES[level]}
</span>
<span className="text-[10px] leading-tight sm:text-xs">
<span className="text-2xs leading-tight sm:text-xs">
{t(MOOD_LABEL_KEYS[level])}
</span>
</button>
@@ -72,7 +72,7 @@ describe("<SourceCardGrid> Withings card", () => {
expect(html).toContain('data-testid="source-card-withings-setup"');
expect(html).toContain('href="/settings/integrations#withings"');
expect(html).not.toContain('href="/api/withings/connect"');
expect(html).toContain("Set up in Settings");
expect(html).toContain("Set up</a>");
});
it("also redirects to Settings when the status envelope hasn't loaded yet", () => {