// Base catalog — the source of truth for this app's UI strings. Every key here // MUST be mirrored in `de.ts`; `defineLocale()` enforces that parity // at build time, so a missing translation fails typecheck rather than silently // falling back. import { defineCatalog } from '@voltro/i18n' export default defineCatalog({ // Browser tab title — locale-aware via the page's `meta({ locale })`. 'meta.editor.title': 'Collaborative editor', // ---- Layout shell (pages/layout.tsx) ---- 'nav.editor': 'Editor', 'nav.tagline': 'local-first · CRDT · reactive', 'lang.label': 'Language', // ---- Editor page (pages/page.tsx) ---- 'editor.heading': 'Collaborative editor', 'editor.intro': 'Open this page in two browser tabs and type in both. Edits converge — no last-write-wins loser — because the api merges every update into the shared crdtText() body server-side, then broadcasts it back live.', 'editor.status.tenant': 'Tenant {tenant} · revision {revision}', 'editor.status.saving': ' · syncing…', 'editor.status.loading': ' · loading…', 'editor.error': 'subscription error — is the api running? {error}', 'editor.empty.heading': 'No document yet', 'editor.empty.body': 'Create one to start editing collaboratively.', 'editor.create': 'Create document', 'editor.creating': 'Creating…', 'editor.docLabel': 'Editing {title}', 'editor.placeholder': 'Start typing — every keystroke syncs and merges.', 'editor.hint': 'Tip: open a second tab and type at the same time. Both edits survive.', } as const)