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
+62
View File
@@ -0,0 +1,62 @@
export const calendar = {
'calendar.advanceMonthAria': '{month} - click to advance month',
'calendar.advanceYearAria': '{year} - click to advance year',
'calendar.deleteError': 'Failed to delete the planned day',
'calendar.legendDoubleDay': 'Double day',
'calendar.legendIncomeBased': 'Income-based rate (sjukpenningnivå)',
'calendar.legendKlamdag': 'Bridge day',
'calendar.legendMinimumRate': 'Minimum rate (lägstanivå)',
'calendar.legendOverride': 'Exception (working/day off)',
'calendar.legendRedDay': 'Public holiday',
'calendar.legendTitle': 'Legend',
'calendar.legendVacation': 'Vacation',
'calendar.loading': 'Loading calendar...',
'calendar.nextMonthAria': 'Next month',
'calendar.overrideError': 'Failed to update the exception',
'calendar.overrideModeActiveLabel': 'Stop editing days',
'calendar.overrideModeHint': 'Click a day to mark it as a working day or a day off. Click a marked day again to reset it.',
'calendar.overrideModeLabel': 'Mark working/day off',
'calendar.partner': 'Partner',
'calendar.prevMonthAria': 'Previous month',
'calendar.saveError': 'Failed to save the planned days',
'calendar.weekdayFri': 'Fri',
'calendar.weekdayMon': 'Mon',
'calendar.weekdaySat': 'Sat',
'calendar.weekdaySun': 'Sun',
'calendar.weekdayThu': 'Thu',
'calendar.weekdayTue': 'Tue',
'calendar.weekdayWed': 'Wed',
'calendar.you': 'You',
'calendarDay.ariaWithEvents': '{date} with {count} event(s)',
'calendarDay.klamdagAria': 'bridge day',
'calendarDay.overrideFreeAria': 'marked as a day off (exception)',
'calendarDay.overrideWorkingAria': 'marked as a working day (exception)',
'calendarEvent.dismissAria': 'Dismiss {leaveType}',
'plannedDayModal.cancelButton': 'Cancel',
'plannedDayModal.closeAria': 'Close',
'plannedDayModal.confirmDelete': 'Are you sure you want to delete this planned day?',
'plannedDayModal.deleteButton': 'Delete',
'plannedDayModal.deleteError': 'Failed to delete planned day',
'plannedDayModal.deletingButton': 'Deleting…',
'plannedDayModal.doubleDayHint': 'Double days do not apply to vacation',
'plannedDayModal.doubleDayLabel': 'Double day (both parents taking leave)',
'plannedDayModal.editTitle': 'Edit Planned Day',
'plannedDayModal.lagstaOption': 'Lägstanivå (minimum-rate, 90-day tier)',
'plannedDayModal.leaveTypeLabel': 'Leave Type',
'plannedDayModal.newTitle': 'Plan a Day',
'plannedDayModal.parentLabel': 'Parent',
'plannedDayModal.rangeTitle': 'Plan {count} days',
'plannedDayModal.saveButton': 'Save',
'plannedDayModal.saveError': 'Failed to save planned day',
'plannedDayModal.savingButton': 'Saving…',
'plannedDayModal.sjukpenningOption': 'Sjukpenningnivå (income-based, 390-day tier)',
'plannedDayModal.vacationOption': 'Vacation',
'redDaysList.effectiveFree': 'Off',
'redDaysList.effectiveWorking': 'Working day',
'redDaysList.emptyYear': 'No public holidays or exceptions this year.',
'redDaysList.loading': 'Loading public holidays...',
'redDaysList.nextWindow': 'Next 4 years',
'redDaysList.overrideFree': 'Exception: day off',
'redDaysList.overrideWorking': 'Exception: working day',
'redDaysList.prevWindow': 'Previous 4 years',
} as const