Give a new account a first run, and drop to three tabs

Registering used to land you on a bare form asking for a child, with no hint
what came next. A short wizard now walks through the child, whether you are
planning alone or together, and where the day balances come from: fetched from
Försäkringskassan, entered by hand, or skipped — and if skipped, the figures
carry a badge saying they are estimates until real ones arrive.

Fetching is the first option rather than a hidden one, so the scraper is on by
default and the script that used to force it on no longer needs to.

Planning and Tips lose their tabs. Authoring moved to the calendar and the
figures moved to the overview, so both pages were only a second way to reach
what is already on screen; their routes now redirect rather than dead-end. The
dead translations went with them.

Dates also follow the chosen language now instead of always formatting as
Swedish.
This commit is contained in:
2026-09-17 22:05:54 +02:00
parent 064bcc2b3a
commit a4fce16dd1
40 changed files with 1060 additions and 4986 deletions
+9 -75
View File
@@ -1,56 +1,18 @@
// `plan.*` (the standalone Plan tab) and most `planResults.*` keys were
// retired with the Plan/Tips tabs (leave is now authored on the calendar and
// Översikt carries the headline figures — see PLANNING_ENGINE_SPEC.md's
// superseding note). What's left here is the subset `planResults.*`
// `PlanFold.tsx` (the read-only plan-proposal fold on Översikt) and
// `frontend/src/utils/rejectionMessages.ts` still render, plus
// `planningModeSelector.*` (`PlanningModeSelector.tsx`, used by both
// Settings and Onboarding).
export const plan = {
'plan.addAtLeastOneWish': 'Lägg till minst ett önskemål ovan för att föreslå en plan.',
'plan.addWishError': 'Kunde inte lägga till önskemål',
'plan.calculating': 'Beräknar...',
'plan.intro': 'Beskriv hur du vill vara ledig — till exempel 6 veckor varje sommar och 4 veckor varje jul — och föreslå en plan som visar exakt vilka dagar som redan är lediga, vilka som kostar en semesterdag och vilka som kostar en föräldrapenningdag.',
'plan.loading': 'Laddar planering...',
'plan.proposeButton': 'Föreslå plan',
'plan.removeWishError': 'Kunde inte ta bort önskemål',
'plan.title': 'Planering',
'plan.updateWishError': 'Kunde inte spara önskemål',
'plan.wishesTitle': 'Dina önskemål',
'planResults.age4ProjectionsIntro': 'Så här ser det ut vid 4-årsdagen om just detta förslag tillämpas, inklusive kommande års återkommande önskemål. Din sparade plan (under Översikt) kan visa ett annat resultat.',
'planResults.age4ProjectionsTitle': 'Vid barnets 4-årsdag, om detta förslag tillämpas',
'planResults.applyButton': 'Använd plan',
'planResults.applySavedPrefix': 'Planen har sparats!',
'planResults.applyingButton': 'Sparar...',
'planResults.balancesTitle': 'Kvarvarande saldon efter planen',
'planResults.cancelButton': 'Avbryt',
'planResults.collisionDateHeader': 'Datum',
'planResults.collisionExistingHeader': 'Befintlig typ',
'planResults.collisionProposedHeader': 'Föreslagen typ',
'planResults.confirmOverwriteButton': 'Ja, ersätt de befintliga dagarna',
'planResults.confirmOverwriteIntro': 'Följande dagar är redan planerade och kommer att ersättas:',
'planResults.confirmOverwriteTitle': 'Konflikt med befintliga dagar',
'planResults.createdClause': '{count} nya {dayWord} skapades',
'planResults.daySingular': 'dag',
'planResults.dayTypeFree': 'fria dagar (helg/röd dag)',
'planResults.dayTypeLagsta': 'FP-dagar (lägstanivå)',
'planResults.dayTypeSjukpenning': 'FP-dagar (sjukpenningnivå)',
'planResults.dayTypeVacation': 'semesterdagar',
'planResults.daysPlural': 'dagar',
'planResults.detailTitle': 'Ledigheter i detalj',
'planResults.dubbeldagarLeftHeader': 'Dubbeldagar kvar',
'planResults.expiringAtB4Header': 'Förfaller',
'planResults.explanationDetailFree': '{free_days} helt fria dagar (helg/röd dag)',
'planResults.explanationDetailLagsta': '{lagsta_days} föräldrapenningdagar (lägstanivå)',
'planResults.explanationDetailSjukpenning': '{sjukpenning_days} föräldrapenningdagar (sjukpenningnivå)',
'planResults.explanationDetailVacationAndFp': 'du behåller lönen {vacation_days} dagar och sparar {fp_days} FP-dagar',
'planResults.explanationDetailVacationOnly': '{vacation_days} semesterdagar',
'planResults.explanationShortfallSuffix': ' ({shortfall_days} dagar saknas)',
'planResults.explanationSummary': '{wish_name} {year} — {weeks_wished} veckor önskade, {weeks_funded} veckor finansierade',
'planResults.fourthBirthdayHeader': '4-årsdag',
'planResults.freeDaySingular': 'fri dag',
'planResults.freeDaysPlural': 'fria dagar',
'planResults.fullyFunded': 'Fullt finansierad',
'planResults.funded': 'finansierade',
'planResults.lagstaLeftHeader': 'Lägstanivådagar kvar',
'planResults.leavesHeader': 'Ledigheter',
'planResults.noWindowsInHorizon': 'Inga fönster inom planeringshorisonten.',
'planResults.parentHeader': 'Förälder',
'planResults.parentalDaysTitle': 'Föräldrapenningdagar',
'planResults.previewBanner': 'Detta är ett förslag — inget sparas automatiskt. Du kan justera dina önskemål ovan och föreslå en ny plan så många gånger du vill.',
'planResults.projectedLeftHeader': 'Beräknat kvar',
'planResults.rejectionCollisionsNeedReplace': '{count} dag(ar) är redan planerade på annat sätt; skicka replace=true för att skriva över',
'planResults.rejectionConflictingDuplicate': 'Motstridiga dubbletter för {date} (barn {child_id}, förälder {parent_name}) i samma omgång',
'planResults.rejectionDubbeldagBatchQuotaExceeded': 'Omgången skulle resultera i {projected_total} dubbeldagar, max är {max_dubbeldagar}',
@@ -61,23 +23,7 @@ export const plan = {
'planResults.rejectionInsufficientVacationBalance': '{parent_name} skulle behöva {needed} fler semesterdag(ar) {year}, men endast {remaining} finns kvar',
'planResults.rejectionInvalidDayType': 'Dag {index} ({date}): ogiltig dagtyp "{day_type}"',
'planResults.rejectionOutsideEligibleWindow': '{date}: utanför barnets tillåtna period ({birth_date} – {hard_expiry})',
'planResults.rejectionsClause': '. Avslag: {rejections}',
'planResults.remedyCarryVacationForward': '{spare_total} semesterdagar från tidigare år kan sparas framåt',
'planResults.remedyLowerPriorityWish': 'Sänk {wish_name} från {from_weeks} till {to_weeks} veckor frigör {freed_days} dagar',
'planResults.remedyReducePreschoolReserve': 'Minska förskolans planeringsdagar ({reserved} reserverade) frigör {reserved} dagar',
'planResults.remedyShiftWindowIntoFreeDays': 'Flytta {wish_name} närmare en helg frigör {shift_gain} dagar',
'planResults.replacedClause': ', {count} {dayWord} ersattes',
'planResults.savableAfterB4Header': 'Kan sparas',
'planResults.shortfallCouldNotBeFunded': '{days} {dayWord} kunde inte finansieras.',
'planResults.shortfallLabel': 'Underskott:',
'planResults.sjukpenningLeftHeader': 'Sjukpenningdagar kvar',
'planResults.skippedFreeClause': ', {count} {dayWord} hoppades över',
'planResults.skippedIdenticalClause': ', {count} {dayWord} hoppades över (redan likadana)',
'planResults.strategyDubbeldag': 'Dubbeldagar — båda föräldrarna hemma samtidigt',
'planResults.strategyParentSwap': 'Föräldrarna växlar av varandra',
'planResults.strategyPrefix': 'Strategi:',
'planResults.strategySolo': 'En förälder hemma',
'planResults.strategyUnplaced': 'Kunde inte placeras — ingen ledig plats hittades',
'planResults.surplusAdviceBodyFrontLoadEarlyYears': '{parent_name} har ett stort överskott ({days_involved} FP-dagar) — ta ut fler dagar nu medan barnet är litet och ni ändå är hemma, istället för att sprida ut dem tunt fram till 4-årsdagen.',
'planResults.surplusAdviceBodyShiftMixToFp': '{parent_name} kan byta {days_involved} semesterdagar mot föräldrapenningdagar under planen — FP-dagarna går annars förlorade vid 4-årsdagen, medan semestern inte gör det.',
'planResults.surplusAdviceBodyUseLessVacation': '{parent_name} kan ta ut {days_involved} färre semesterdagar ({years_text}) utan att gå under lägsta uttaget ({min_vacation_days_per_year} dagar/år) — spara dem istället för att täcka FP-dagar som annars går förlorade.',
@@ -91,22 +37,10 @@ export const plan = {
'planResults.totalAvailableHeader': 'Totalt tillgängliga',
'planResults.unknownParent': 'Okänd förälder',
'planResults.usedHeader': 'Använda',
'planResults.vacationAssumedBadge': 'Antaget',
'planResults.vacationAssumedPrompt': 'Inget värde är registrerat för detta år — 25 dagar (lagstadgat) har antagits. Bekräfta eller ändra i Inställningar.',
'planResults.vacationDaysTitle': 'Semesterdagar',
'planResults.warningBodyDaysLostAtAge4': '{parent_name} riskerar att förlora {expiring_days} dagar vid barnets 4-årsdag ({fourth_birthday}) om inte fler dagar tas ut innan dess.',
'planResults.warningBodySgiRisk': '{parent_name} riskerar SGI-skyddet veckan som börjar {week_start} ({days_planned} dagar planerade, minst {min_days_per_week} krävs).',
'planResults.warningBodyVacationExpiring': '{parent_name} har {saved_days_in} sparade semesterdagar från {year} som riskerar att gå förlorade.',
'planResults.warningDaysLostAtAge4': 'Dagar som riskerar att gå förlorade vid 4 år',
'planResults.warningSgiRisk': 'Risk för SGI-skydd',
'planResults.warningVacationExpiring': 'Semesterdagar som riskerar att gå förlorade',
'planResults.warningsTitle': 'Varningar',
'planResults.weekSingular': 'vecka',
'planResults.weeksUnit': 'veckor',
'planResults.wished': 'önskade',
'planResults.yearHeader': 'År',
'planResults.yearOverviewTitle': 'Översikt över åren',
'planningModeSelector.couple': 'Jag och min partner',
'planningModeSelector.legend': 'Planerar du själv eller tillsammans med en partner?',
'planningModeSelector.solo': 'Bara jag',
} as const
} as const