Split i18n catalogues into per-domain modules

sv.ts/en.ts were single 602-line files that every feature had to edit,
making concurrent work on unrelated screens collide constantly. Split
both into per-domain modules (common, auth, calendar, dashboard,
settings, plan, wishEditor, tips) composed by an index that preserves
the existing `import { sv } from './sv'` specifier, so no consumer
changes.

Typing still catches drift in both directions: each en module is checked
against TranslationKey, and the composed catalogue must satisfy
Record<TranslationKey, string>.

All 433 keys and their values are byte-identical to the originals,
verified by diffing the parsed catalogues against the pre-split files.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RXMhc9nT6sNz1SL4j8dznL
This commit is contained in:
2026-09-14 18:54:27 +02:00
parent 7f031f2087
commit bd996245ba
20 changed files with 1017 additions and 1204 deletions
+23
View File
@@ -0,0 +1,23 @@
export const common = {
'app.name': 'Föräldraledigplannerare',
'common.cancel': 'Cancel',
'common.close': 'Close',
'common.delete': 'Delete',
'common.deleting': 'Deleting…',
'common.loadingEllipsis': 'Loading…',
'common.save': 'Save',
'common.saving': 'Saving…',
'footer.copyright': '© {year} Föräldraledigplannerare. All rights reserved.',
'leaveType.lagsta': 'Lägstanivå (minimum rate)',
'leaveType.sjukpenning': 'Sjukpenningnivå (income-based)',
'leaveType.unknown': 'Unknown',
'leaveType.vacation': 'Vacation',
'nav.calendar': 'Calendar',
'nav.logout': 'Log out',
'nav.logoutAria': 'Log out',
'nav.overview': 'Overview',
'nav.plan': 'Plan',
'nav.selectChildAria': 'Select child',
'nav.settings': 'Settings',
'nav.tips': 'Tips',
} as const