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:
@@ -0,0 +1,117 @@
|
||||
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 den här planen tas ut som föreslaget — livet kan förstås bli annorlunda.',
|
||||
'planResults.age4ProjectionsTitle': 'Vid barnets 4-årsdag, om planen genomförs',
|
||||
'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_personal_data_uuid}) i samma omgång',
|
||||
'planResults.rejectionDubbeldagBatchQuotaExceeded': 'Omgången skulle resultera i {projected_total} dubbeldagar, max är {max_dubbeldagar}',
|
||||
'planResults.rejectionDubbeldagInvalid': 'Dubbeldag för {date} kunde inte godkännas',
|
||||
'planResults.rejectionDubbeldagQuotaReached': 'Kvoten för dubbeldagar ({max_dubbeldagar} dagar) är redan nådd',
|
||||
'planResults.rejectionDubbeldagWindowExceeded': 'Dubbeldagar är endast tillåtna inom barnets första {months_limit} månader (senast {deadline})',
|
||||
'planResults.rejectionInsufficientBalance': 'Omgången behöver {needed} fler "{tier}"-dagar 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.',
|
||||
'planResults.surplusAdviceBodyWishMoreLeave': '{parent_name} har råd med ytterligare {weeks} veckor ledigt ({days_involved} FP-dagar går annars förlorade vid barnets 4-årsdag) — lägg till en vecka på sommaren eller ett höstlov.',
|
||||
'planResults.surplusAdviceFrontLoadEarlyYears': 'Ta ut mer ledighet medan barnet är litet',
|
||||
'planResults.surplusAdviceIntro': 'Planen lämnar dagar outnyttjade som annars går förlorade vid barnets 4-årsdag. Några förslag:',
|
||||
'planResults.surplusAdviceShiftMixToFp': 'Använd föräldradagar istället för semester',
|
||||
'planResults.surplusAdviceTitle': 'Ni har outnyttjade dagar',
|
||||
'planResults.surplusAdviceUseLessVacation': 'Spara färre semesterdagar',
|
||||
'planResults.surplusAdviceWishMoreLeave': 'Önska mer ledighet',
|
||||
'planResults.totalAvailableHeader': 'Totalt tillgängliga',
|
||||
'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',
|
||||
'planningGoalSelector.balanced': 'Balanserad',
|
||||
'planningGoalSelector.balancedHelp': 'En avvägning mellan tid hemma och inkomst.',
|
||||
'planningGoalSelector.legend': 'Planeringsmål',
|
||||
'planningGoalSelector.maxMoney': 'Mest pengar',
|
||||
'planningGoalSelector.maxMoneyHelp': 'Skydda din inkomst, t.ex. genom att lägga semester runt helger och röda dagar.',
|
||||
'planningGoalSelector.maxTime': 'Mest tid hemma',
|
||||
'planningGoalSelector.maxTimeHelp': 'Spara dagar och förläng din totala lediga tid, med lägre inkomst nu.',
|
||||
'planningModeSelector.couple': 'Jag och min partner',
|
||||
'planningModeSelector.legend': 'Planerar du själv eller tillsammans med en partner?',
|
||||
'planningModeSelector.solo': 'Bara jag',
|
||||
} as const
|
||||
Reference in New Issue
Block a user