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
+31
View File
@@ -0,0 +1,31 @@
export const tips = {
'tip.aria': 'Tips: {title}',
'tip.balanceBetweenParents.body': '{leading_parent} har tagit ut {gap_days} fler dagar än {lagging_parent}. Fundera på att jämna ut fördelningen.',
'tip.balanceBetweenParents.title': 'Obalans mellan föräldrarna',
'tip.dismissAria': 'Avfärda: {title}',
'tip.lagstaNivaCoverage.body': '{parent_name} har bara {sjukpenning_left} dagar kvar på sjukpenningnivå men {lagsta_left} dagar kvar på lägstanivå.',
'tip.lagstaNivaCoverage.title': 'Täck upp med lägstanivå',
'tip.longBreakParentSwap.body': '{parent_name} täcker mindre än hälften av "{break_name}" ({start_date}–{end_date}). Låt {other_parent_name} ta en del av perioden.',
'tip.longBreakParentSwap.title': 'Överväg att växla av varandra',
'tip.preserveForAge4.body': '{parent_name} riskerar att förlora {expiring_days} dagar när barnet fyller 4 år ({fourth_birthday}). Endast 96 dagar kan sparas efter det.',
'tip.preserveForAge4.title': 'Dagar riskerar att gå förlorade vid 4 års ålder',
'tip.reserveForPreschoolPlanningDays.body': '{parent_name} har {days_left} dagar kvar, vilket knappt räcker för förskolans {buffer_days} planeringsdagar. Reservera dagar i god tid.',
'tip.reserveForPreschoolPlanningDays.title': 'Reservera dagar för förskolans planeringsdagar',
'tip.sgiMinimumAfterAge1.body': '{parent_name} planerar färre än {min_days_per_week} föräldrapenningdagar per vecka den kommande månaden, vilket kan påverka SGI-skyddet.',
'tip.sgiMinimumAfterAge1.title': 'Risk för SGI-skydd',
'tip.skipFpFirst12Months.body': '{parent_name} har föräldrapenning planerad innan barnet fyller 1 år. Med målet "mest tid hemma" kan det löna sig att spara dagarna till senare.',
'tip.skipFpFirst12Months.title': 'Spara föräldrapenning första året',
'tip.stretchTimeAtHome.body': '{parent_name} planerar {weekly_intensity} dagar per vecka den kommande månaden, vilket lämnar {projected_left} dagar kvar vid 4 års ålder.',
'tip.stretchTimeAtHome.title': 'Sträck ut tiden hemma',
'tip.useDubbeldagarStrategically.body': 'Ni har båda föräldrapenning planerad {date} men den är inte markerad som dubbeldag.',
'tip.useDubbeldagarStrategically.title': 'Använd en dubbeldag',
'tip.useVacationBeforeExpiry.body': '{parent_name} har {saved_days} sparade semesterdagar från {year} som riskerar att gå förlorade om de inte används.',
'tip.useVacationBeforeExpiry.title': 'Semesterdagar riskerar att gå förlorade',
'tip.wrapRedDaysWithVacation.body': '{parent_name} har föräldrapenning planerad nära en klämperiod ({cluster_start}–{cluster_end}). En semesterdag runt de röda dagarna kan ge en längre sammanhängande ledighet.',
'tip.wrapRedDaysWithVacation.title': 'Utnyttja röda dagar',
'tip.wrapWeekendWithVacation.body': '{parent_name} har föräldrapenning planerad fredagen {friday} och måndagen {monday}. En semesterdag mellan dem ger en längre ledighet.',
'tip.wrapWeekendWithVacation.title': 'Utnyttja helgen',
'tips.empty': 'Inga tips än. Bra jobbat med planeringen av din föräldraledighet!',
'tips.loading': 'Laddar tips...',
'tips.title': 'Optimeringstips',
} as const