Files
F-r-ldraledigplannerare/frontend/src/i18n/sv/calendar.ts
T
jacobh2 9c67558877 Tell the user when vacation days move between periods
reallocate_vacation_by_value swaps vacation onto higher-value dates 1-for-1
with parental-leave days. Add an Easter period with no vacation left and the
planner quietly takes vacation off the summer period, puts foraldrapenning
there, and spends it on the Easter klamdagar. Nothing said so.

sync_plan already emitted the evidence -- paired 'retyped' changes -- but
PlanChange.kind's 'retyped' existed only as a type declaration, rendered
nowhere, with no copy in either locale.

findVacationSwaps pairs a vacation -> FP retype with an FP -> vacation retype
for the same parent, aggregating multiple pairs into one group and ignoring
any retype that is not a genuine two-sided swap. summarizeVacationSwaps names
the periods via the existing resolveWishName, so a preset wish is
re-translated rather than shown raw, and falls back to dates when no single
wish resolves -- never a uuid. It joins the existing Calendar sync toast
rather than adding a second toast system.

Frontend 1356 tests, coverage 98.22 / 94.95 / 92.31 / 98.22, above all gates.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YZaX6xbuMEMXuyKA1fq2Mm
2026-09-21 07:22:05 +02:00

179 lines
11 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
export const calendar = {
'calendar.selectMonthAria': 'Välj månad',
'calendar.selectYearAria': 'Välj år',
'calendar.deleteError': 'Det gick inte att ta bort den planerade dagen',
'calendar.nextMonthAria': 'Nästa månad',
'calendar.partner': 'Partner',
'calendar.pinnedDayAllFreeError':
'Ingen av de valda dagarna kan sparas som den typen — lediga dagar (helg/röd dag) kan aldrig bli semester, och föräldrapenning på dem kräver att inställningen i Inställningar är påslagen.',
'calendar.prevMonthAria': 'Föregående månad',
'calendar.saveError': 'Det gick inte att spara de planerade dagarna',
'calendar.today': 'Idag',
'calendar.weekdayFri': 'Fre',
'calendar.weekdayMon': 'Mån',
'calendar.weekdaySat': 'Lör',
'calendar.weekdaySun': 'Sön',
'calendar.weekdayThu': 'Tor',
'calendar.weekdayTue': 'Tis',
'calendar.weekdayWed': 'Ons',
'calendar.you': 'Du',
'calendarDay.excludedAria': 'borttagen dag – planeraren hoppar över den',
'calendarDay.klamdagAria': 'klämdag',
'calendarDay.overrideFreeAria': 'markerad som ledig dag (undantag)',
'calendarDay.overrideWorkingAria': 'markerad som arbetsdag (undantag)',
'calendarDay.pinnedAria': 'låst av dig – planeraren ändrar inte denna dag',
'calendarDay.sundayAria': 'söndag',
'calendarEvent.dismissAria': 'Avfärda {leaveType}',
'plannedDayModal.cancelButton': 'Avbryt',
'plannedDayModal.closeAria': 'Stäng',
'plannedDayModal.confirmDelete': 'Är du säker på att du vill ta bort den här planerade dagen?',
'plannedDayModal.deleteButton': 'Ta bort',
'plannedDayModal.deleteConfirmButton': 'Ja, ta bort',
'plannedDayModal.deleteError': 'Det gick inte att ta bort den planerade dagen',
'plannedDayModal.deletingButton': 'Tar bort…',
'plannedDayModal.doubleDayHint': 'Dubbeldagar gäller inte för semester',
'plannedDayModal.doubleDayLabel': 'Dubbeldag (båda föräldrarna tar ut ledighet)',
'plannedDayModal.editTitle': 'Redigera planerad dag',
'plannedDayModal.lagstaOption': 'Lägstanivå (90-nivån)',
'plannedDayModal.leaveTypeLabel': 'Typ av ledighet',
'plannedDayModal.newTitle': 'Planera en dag',
'plannedDayModal.parentLabel': 'Förälder',
'plannedDayModal.pinnedNotice': 'Den här dagen är låst av dig — planeraren ändrar den inte automatiskt.',
'plannedDayModal.pinExcludesFromSyncNotice':
'Att låsa en dag utesluter den från planerarens automatiska omplanering.',
'plannedDayModal.freeDaysStayOffNotice':
'Lediga dagar (helg/röd dag) i urvalet lämnas lediga — semester går aldrig att lägga dit, och föräldrapenning kräver att "Ta ut föräldrapenning på röda dagar" är påslaget i Inställningar.',
'plannedDayModal.excludedNotice': 'Du har tagit bort den här dagen för {parent}.',
'plannedDayModal.restoreExcludedButton': 'Lägg tillbaka dagen',
'plannedDayModal.rangeTitle': 'Planera {count} dagar',
'plannedDayModal.parentModeLabel': 'Vem gäller det?',
'plannedDayModal.wantsDubbeldagLabel': 'Tillåt dubbeldagar',
'plannedDayModal.wantsDubbeldagHint':
'Båda föräldrarna är lediga samma dag och tar var sin egen föräldrapenningdag (ingen semesterdag går åt) — gäller bara de första 15 månaderna och max 60 dagar per barn, delat mellan er.',
'plannedDayModal.wantsDubbeldagRequiresBothHint': 'Kräver att båda föräldrarna är valda ovan.',
'plannedDayModal.showAdvanced': 'Avancerat: välj typ och förälder manuellt',
'plannedDayModal.hideAdvanced': 'Dölj avancerat',
'plannedDayModal.saveButton': 'Spara',
'plannedDayModal.saveError': 'Det gick inte att spara den planerade dagen',
'plannedDayModal.savingButton': 'Sparar…',
'plannedDayModal.sjukpenningOption': 'Sjukpenningnivå (390-nivån)',
'plannedDayModal.vacationOption': 'Semester',
'plannedDayModal.autoOption': 'Låt planeraren välja',
'redDaysList.effectiveFree': 'Ledig',
'redDaysList.effectiveWorking': 'Arbetsdag',
'redDaysList.emptyYear': 'Inga röda dagar eller undantag detta år.',
'redDaysList.loading': 'Laddar röda dagar...',
'redDaysList.nextWindow': 'Nästa 4 år',
'redDaysList.overrideFree': 'Undantag: ledig dag',
'redDaysList.overrideWorking': 'Undantag: arbetsdag',
'redDaysList.prevWindow': 'Föregående 4 år',
'redDaysList.toggleError': 'Det gick inte att uppdatera dagen. Försök igen.',
'redDaysList.toggleToFreeAria': 'Markera {date} som ledig dag',
'redDaysList.toggleToWorkingAria': 'Markera {date} som arbetsdag',
// §Task7 — the calendar becomes the plan: drag-select, period popover,
// preset rail, and the sync toast/undo.
'calendar.periodCreateError': 'Det gick inte att skapa perioden',
'calendar.syncError': 'Det gick inte att synka planen',
'calendar.syncingLabel': 'Synkroniserar…',
'calendar.toastChangedDays': '{name}: {count} {count|dag|dagar} ändrades',
'calendar.toastGenericPeriod': 'Perioden',
'calendar.toastShortfallNone':
'{name} ({start}–{end}): inget av de {weeksWished} {weeksWished|önskad vecka|önskade veckor} kunde finansieras — {shortfallDays} {shortfallDays|dag|dagar} saknas',
'calendar.toastShortfallPartial':
'{name} ({start}–{end}): endast {weeksFunded} av {weeksWished} veckor finansierades — {shortfallDays} {shortfallDays|dag|dagar} saknas',
'calendar.toastShortfallNoneDays':
'{name} ({start}–{end}): inget av de {daysWished} {daysWished|önskad dag|önskade dagar} kunde finansieras — {shortfallDays} {shortfallDays|dag|dagar} saknas',
'calendar.toastShortfallPartialDays':
'{name} ({start}–{end}): endast {daysFunded} av {daysWished} dagar finansierades — {shortfallDays} {shortfallDays|dag|dagar} saknas',
'calendar.toastRedDayShift':
'{name}: flyttad till {start} – {end} för att fånga {days} extra {days|ledig dag|lediga dagar}',
// Reallocation pass — `reallocate_vacation_by_value` swaps vacation onto
// better dates 1-for-1 with föräldrapenning. `{from}`/`{to}` already carry
// the period name plus its dates (e.g. "Sommar (20 jun, 21 jun)"), or the
// dates alone when no single period can be named — see vacationSwaps.ts.
'calendar.toastVacationSwap':
'{count} {count|semesterdag|semesterdagar} flyttades från {from} till {to} — ersattes med föräldrapenning',
'calendar.undoButton': 'Ångra',
'calendar.undoError': 'Det gick inte att ångra ändringen',
'calendar.dismissToastAria': 'Stäng meddelandet',
// The "?" beside the month title — replaces the legend that used to sit
// under the grid. One line per mark the calendar draws.
'calendar.helpAria': 'Förklaring av kalenderns markeringar',
'calendar.helpTitle': 'Dagar',
'calendar.helpBandsTitle': 'Perioder',
'calendar.helpRedDay': 'Röd dag (R) — helgdag eller söndag',
'calendar.helpKlamdag': 'Klämdag (K)',
'calendar.helpSaturday': 'Lördag',
'calendar.helpToday': 'Idag',
'calendar.helpOverride': 'Undantag — markerad som arbetsdag eller ledig dag',
'calendar.helpExcluded': 'Borttagen dag — planeraren hoppar över den',
'calendar.helpVacation': 'Semester',
'calendar.helpSjukpenning': 'Sjukpenningnivå',
'calendar.helpLagsta': 'Lägstanivå',
'calendar.helpSelf': 'Din ledighet',
'calendar.helpPartner': 'Partnerns ledighet',
'calendar.helpDubbeldag': 'Dubbeldag — båda föräldrarna samma dag',
'calendar.helpPinned': 'Låst av dig — planeraren ändrar inte dagen',
'calendar.railHeading': 'Lägg till ledighet',
'calendar.railHint': 'Klicka för att lägga till — kalendern hoppar till där den passar bäst.',
'calendar.presetAddAria': 'Lägg till {name}',
'calendar.presetChipsLabel': 'Lägg till ledighet',
'calendar.presetWeeksShort': '{count} v',
'calendar.periodAdHocTitle': 'Period',
'calendar.periodAdHocNotice': 'Den här perioden är inte kopplad till en sparad önskan.',
'calendar.periodNameLabel': 'Namn',
'calendar.periodNameAria': 'Periodens namn',
'calendar.periodStartLabel': 'Startdatum',
'calendar.periodEndLabel': 'Slutdatum',
'calendar.periodRepeatLabel': 'Upprepning',
'calendar.periodRepeatNever': 'Aldrig',
'calendar.periodRepeatYearly': 'Varje år',
'calendar.periodLastYearLabel': 'Sista året',
// Per-år vs hela serien. En återkommande period sparas som en rad per år,
// så "bara det här året" går att uppfylla på riktigt numera — påsken
// flyttar sig, och då ska ett år kunna flyttas utan att dra med sig
// resten. Se backend/app/entities/leave_wish.py.
'calendar.periodEditScopeLabel': 'Spara ändringen för',
'calendar.periodEditScopeYear': 'Bara det här året',
'calendar.periodEditScopeSeries': 'Alla år',
'calendar.periodEditScopeHint':
'Alla år flyttar övriga år lika mycket och behåller veckodagarna.',
'calendar.periodLastYearNeedsSeriesHint': 'Välj "Alla år" för att ändra sista året.',
'calendar.periodSaveButton': 'Spara period',
'calendar.periodSavingButton': 'Sparar…',
'calendar.periodDeletingButton': 'Tar bort…',
'calendar.periodDeleteConfirmButton': 'Ja, ta bort',
'calendar.periodDeleteAdHocButton': 'Ta bort dessa dagar',
'calendar.periodCancelButton': 'Avbryt',
'calendar.periodCloseAria': 'Stäng',
'calendar.periodDeleteMenuButton': 'Ta bort…',
// todo.md #9 — three-way remove: this day / this period (this year) / this
// period every year.
'calendar.periodDeleteDayButton': 'Den här dagen',
'calendar.periodDeleteYearButton': 'Den här perioden',
'calendar.periodDeleteAllYearsButton': 'Den här perioden, varje år',
// "Den här dagen" gäller numera även planerarens egna dagar: borttagningen
// sparas som en `PlannedDayExclusion` och överlever varje ny synk.
'calendar.periodDeleteDayHint':
'Bara den dagen tas bort. Resten av perioden ligger kvar, och planeraren lägger inte tillbaka dagen.',
'calendar.periodDeleteAllYearsDisabledHint': 'Den här perioden är inte kopplad till en återkommande plan.',
'calendar.periodDeleteConfirmDay': 'Är du säker på att du vill ta bort den här dagen?',
// Namnger både datumet och föräldern: en dag tas bort för EN förälder, och
// partnerns dag samma datum ligger kvar (se PlannedDayExclusionService).
'calendar.periodDeleteConfirmDayNamed':
'Ta bort {date} för {parent}? Dagen stannar borta tills du återställer den.',
'calendar.toastDayExcluded': '{date} togs bort för {parent}',
'calendar.toastDayRestored': '{date} lades tillbaka för {parent}',
'calendar.periodDeleteConfirmYear': 'Är du säker på att du vill ta bort den här perioden (bara det här året)?',
'calendar.periodDeleteConfirmAllYears': 'Är du säker på att du vill ta bort perioden — alla år?',
'calendar.wantsDubbeldagLabel': 'Tillåt dubbeldagar',
'calendar.wantsDubbeldagHint':
'Båda föräldrarna är lediga samma dag och tar var sin egen föräldrapenningdag (ingen semesterdag går åt) — gäller bara de första 15 månaderna och max 60 dagar per barn, delat mellan er.',
'calendar.wantsDubbeldagRequiresBothHint': 'Kräver att perioden gäller båda föräldrarna.',
} as const