refactor: every count in the web app is said by one plural(), with the viewer's thousands separator; a source guard names any hand-written copy (M505 #5642)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-11 16:18:04 -04:00
co-authored by Claude Opus 5.5
parent af2d4f9859
commit 9e24b2b4fc
34 changed files with 144 additions and 75 deletions
+4 -3
View File
@@ -1,4 +1,5 @@
<script lang="ts">
import { plural } from '#lib/utils/plural.js';
import { onMount } from 'svelte';
import { MonitorSmartphone, TriangleAlert } from 'lucide-svelte';
import {
@@ -55,7 +56,7 @@
busy = true;
try {
const n = await revokeOtherSessions();
pushToast(n === 1 ? 'Signed out 1 other device.' : `Signed out ${n} other devices.`);
pushToast(`Signed out ${plural(n, 'other device', 'other devices')}.`);
confirmingLogoutOthers = false;
await load();
} catch {
@@ -101,7 +102,7 @@
if (mins < 1) return 'just now';
if (mins < 60) return `${mins} min ago`;
const hours = Math.round(mins / 60);
if (hours < 24) return hours === 1 ? '1 hour ago' : `${hours} hours ago`;
if (hours < 24) return `${plural(hours, 'hour', 'hours')} ago`;
const days = Math.round(hours / 24);
if (days < 30) return days === 1 ? 'yesterday' : `${days} days ago`;
return new Date(iso).toLocaleDateString();
@@ -192,7 +193,7 @@
{#if confirmingLogoutOthers}
<div class="flex flex-wrap items-center gap-2">
<span class="text-sm text-text-secondary">
Sign out {others === 1 ? '1 other device' : `${others} other devices`}? You'll stay
Sign out {plural(others, 'other device', 'other devices')}? You'll stay
signed in here.
</span>
<button