{ "locale": "en-GB", "app": { "title": "vac-optimizer", "description": "Make more room for time off.", "skipToPlan": "Skip to your plan" }, "userInput": { "title": "Configure your leave", "description": "Add each leave balance and its validity period.", "addVacationDay": "Add leave balance", "calculate": "Calculate plan", "remainingDaysWarning": "{count} vacation day{plural} not placed:", "remainingDaysManualPlace": "Please place them manually.", "deleteEntry": "Delete entry", "chooseDate": "Expires on", "availableDate": "Available from", "days": "Days", "type": "Leave type", "daySuffix": "day", "daysSuffix": "days", "expires": "exp.", "remainingClassification": { "unavoidableExpiry": "Unavoidable expiry", "atRisk": "At risk", "deferred": "Deferred" }, "remainingReason": { "unavoidableExpiry": "expired before the horizon", "atRisk": "expires within the horizon", "deferred": "available after the horizon" } }, "dayTypes": { "weekend": "Weekend", "closedDay": "Public Holiday", "rtt": "RTT", "cp": "Paid Leave", "other": "Other", "today": "Today", "any": "Any" }, "settings": { "title": "Calendar Settings", "description": "Configure your calendar settings here.", "showWeekNumbers": "Show week numbers", "close": "Close", "selectLanguage": "Language" }, "rules": { "title": "Planning rules", "subtitle": "Manage optimization rules", "active": "active", "moveRuleUp": "Move rule up", "moveRuleDown": "Move rule down", "dragRule": "Drag to reorder", "ruleMoved": "{name}: position {position} of {count}.", "priorityInfo": "Rules at the top have higher priority. Reorder with the handle or arrow buttons.", "ifThenTemplate": "If a holiday falls on a {day}, place {placeDays} day(s) {placeType} {placement} and get {rewardDays} day(s) {rewardType} as a bonus.", "timeWindowTemplate": "Place {placeDays} day(s) {placeType} between {startDate} and {endDate}.", "editRule": "Edit rule", "deleteRule": "Delete rule", "addRule": "Add a rule", "place": "Place", "ruleName": "Rule name", "holidayFalls": "Holiday falls on a", "days": "Days", "type": "Type", "position": "Position", "getBonus": "Get as bonus", "force": "Rule force", "obligation": "Obligation", "preference": "Preference", "startDate": "Start date", "endDate": "End date", "cancel": "Cancel", "save": "Save", "add": "Add", "addRuleButton": "Add Rule", "newIfThenRule": "New \"If ... Then\" Rule", "newTimeWindowRule": "New Imposed Period", "defaultNewRuleName": "New Rule", "defaultNewPeriodName": "New Period", "daysOfWeek": { "1": "Monday", "2": "Tuesday", "3": "Wednesday", "4": "Thursday", "5": "Friday", "6": "Saturday", "0": "Sunday" }, "placement": { "before": "Before", "after": "After", "around": "Around", "auto": "Auto (Best choice)" } }, "planning": { "title": "Your optimized year", "daysPlaced": "Leave days placed", "daysGained": "Non-working days gained", "longestWorkSequence": "Longest work sequence", "legend": "Calendar legend", "invalidInput": "The planning input is invalid.", "conflict": "The obligations cannot be satisfied together.", "incomplete": "Calculation stopped before all quality stages completed.", "error": "The planner encountered an unexpected error.", "complete": "Plan calculated.", "whyPlacement": "Understand your leave days", "placementNavigation": "Placement explanation navigation", "placement": "Leave day", "placements": "placements", "decision": "Decision", "of": "of", "first": "First placement", "previous": "Previous placement", "next": "Next placement", "last": "Last placement", "remaining": "Unused days in the final plan", "balanceRemaining": "remaining", "counterfactual": "Date alternatives", "counterfactualLoading": "Analyzing every date in the horizon…", "counterfactualReady": "Date alternatives are ready.", "counterfactualError": "Date alternatives could not be calculated.", "retryCounterfactual": "Retry date analysis", "historicalEligibilityLoading": "Checking which dates this leave could use…", "historicalEligibilityReady": "Original date eligibility is ready.", "historicalEligibilityError": "Original date eligibility could not be checked.", "retryHistoricalEligibility": "Retry date eligibility check", "eligible": "Eligible", "ineligible": "Ineligible", "historical": "Original search status", "reason": "Reason", "explanationError": "The explanation could not be produced.", "conflictDetails": "Why no plan can satisfy the obligations", "conflictingRules": "Conflicting rules", "bottleneck": "Bottleneck", "incompleteDetails": "What completed before calculation stopped", "incumbentExplanation": "This explains the best valid incumbent; later quality stages did not complete.", "completedStages": "Completed stages", "uncompletedStages": "Interrupted or unstarted stages", "none": "None", "currentPlacement": "Current explained placement", "explainedPeriod": "Explained time-off period", "outsideHorizon": "Context date outside the planning horizon", "traceTitle": "Advanced: original decision trace", "traceLoading": "The plan is ready; its decision trace is still loading…", "traceReady": "The plan is ready and its decision trace has loaded.", "traceUnavailable": "No decision trace is available for this result.", "phases": "Trace phases", "firstPhase": "First phase", "previousPhase": "Previous phase", "nextPhase": "Next phase", "lastPhase": "Last phase", "decisions": "Atomic decisions", "firstDecision": "First decision", "previousDecision": "Previous decision", "nextDecision": "Next decision", "lastDecision": "Last decision", "replay": "Decision state", "before": "Before", "after": "After", "finalPlan": "Final plan", "dates": "Dates", "candidates": "Candidates", "previousCandidates": "Previous candidate page", "nextCandidates": "Next candidate page", "page": "Page", "compareAlternatives": "Compare this candidate across the horizon", "deltas": "State changes", "activations": "earned activations", "noDecisions": "This phase recorded no atomic decision.", "traceStatuses": { "chosen": "Chosen", "evaluated-rejected": "Evaluated and rejected", "pruned": "Pruned", "not-examined": "Not examined", "ineligible": "Ineligible" }, "tracePhaseStatuses": { "completed": "Completed", "interrupted": "Interrupted", "not-run": "Not run" }, "traceChanges": { "added": "Added by this decision", "moved-from": "Moved from this date", "moved-to": "Moved to this date", "removed": "Removed by this decision", "shared": "Shared by this decision", "unchanged": "Unchanged by this decision" }, "calendarHelp": "Select a leave day to see its contribution to your plan.", "explanationHelp": "See the break you get and what each day changes.", "traceHelp": "Explore the calculation, decision by decision.", "technicalDetails": "Calculation details", "compareDates": "Compare other dates", "stopComparing": "Close date comparison", "replayNotice": "You are viewing a calculation step.", "explanation": { "breakTitle": "Your break", "leaveDays": "leave days used", "freeDays": "weekend & holiday days", "daysOff": "days off in a row", "wholeBreak": "These totals cover the whole break, including the selected day.", "leaveUsed": "This date uses 1 day from {balance}.", "expires": "Use this balance by", "linkedRules": "Linked rules:", "atRiskContribution": "Protects leave at risk of expiry.", "impact": "What this day changes", "impactHelp": "Compare the whole plan with and without this day of leave. All other leave dates stay the same; only changed totals are shown.", "criterion": "Across your plan", "withoutDay": "Without this day", "withDay": "With this day", "noChange": "These totals are unchanged. Rules and the final tie-breakers (balance expiry, then date) can still affect the choice.", "priorityHelp": "Criteria are listed in priority order. The first difference takes precedence over later ones.", "tryDate": "Try another date", "plannedDate": "Currently planned for:", "currentPlan": "Current plan", "alternative": "With this date", "sameDate": "This is the planned date. Choose another date above to see the difference.", "moveHelp": "Try moving this one day. All other leave dates stay the same.", "traceHelp": "Test this candidate against the state before its original decision.", "beforeDecision": "Before this decision", "withCandidate": "With this candidate", "comparisonUnavailable": "The comparison for the original date is unavailable, so the change cannot be shown.", "objectives": { "obligation-validity": { "label": "Unmet obligations", "help": "Number of required obligations left unsatisfied. A valid plan has zero." }, "unplaced-at-risk": { "label": "Leave left at risk of expiry", "help": "Unused days expiring within the planning period. Fewer is better." }, "preference": { "label": "Preference: {rule}", "help": "Days or complete rule matches, depending on the rule. More is better." }, "holiday-week-value": { "label": "Holiday-week priority (points)", "help": "Weighted score: Wednesday holidays count 3, Tuesday/Thursday 2, Monday/Friday 1. Higher is better." }, "non-working-day-gain": { "label": "Weekend & holiday days in your breaks", "help": "Days off that use no leave. More is better." }, "longest-work-sequence": { "label": "Most working days between leave days", "help": "Weekends and public holidays are not counted. Fewer is better." }, "short-sequence-deficit": { "label": "Penalty for short work gaps", "help": "Each gap of 1–4 working days between leave days adds the days missing to reach 5. Lower is better." }, "supporting-placements": { "label": "Days used from later-expiring balances", "help": "Leave that could be saved beyond this planning period. Fewer is better." }, "balance-expiry": { "label": "Earlier-expiring leave first", "help": "Tie-breaker when the totals above are equal." }, "placement-date": { "label": "Earlier dates first", "help": "Final tie-breaker when all other criteria are equal." } }, "stages": { "validation": "Check balances and rules", "obligations": "Meet required rules", "at-risk": "Use leave before it expires", "expiry": "Prefer earlier-expiring leave", "dates": "Prefer earlier dates" }, "unavailable": { "non-working": "This is already a day off (weekend or public holiday). No leave is needed.", "occupied": "Another leave day is already planned here. Choose a free working day.", "unavailable": "This leave balance cannot be used on this date.", "expired": "This date is after the leave balance expires.", "type-incompatible": "This leave type cannot be used on this date.", "rule-invalid": "Using this date would break a planning rule." }, "preferenceHelp": { "time_window": "Leave days in this preferred period. More is better.", "if_then": "Complete matches for this rule. More is better." } }, "details": { "intro": "The left column shows the plan without this leave day. The right shows the current plan.", "balance": "Leave balance", "available": "Available from", "expires": "Expires on", "criteria": "The planner’s priorities", "criteriaHelp": "Read from top to bottom: the first difference takes priority. Select a criterion to see how it is calculated.", "traceImpactTitle": "Full-plan effect of this branch", "traceImpactHelp": "These values compare the complete state before and after this branch. They show its impact; they do not explain why the planner chose it.", "traceStageTitle": "Actual stage comparison", "traceStageHelp": "These raw values were compared at this decision; the first difference explains the candidate’s status. The full-plan table below shows the effect after this choice.", "firstDifference": "First difference", "higher": "Higher is better", "lower": "Lower is better", "tieBreaks": "If the totals above are equal", "audit": "Raw data · for debugging", "auditHelp": "Original values, identifiers and contributions from this calculation.", "supporting": "This day uses leave that could be saved beyond the planning period to improve your breaks.", "remainingReasons": { "at-risk": "These unused days expire during the planning period.", "deferred": "These unused days can be saved beyond the planning period.", "unavoidable-expiry": "These days expired before the planning period began." } }, "comparison": { "title": "Compare dates", "candidate": "Candidate date", "preview": "Preview only. Your plan stays unchanged.", "nearby": "Nearby available dates", "noAlternatives": "No other date can use this leave day. You can still check a date to see why.", "chooseDate": "Choose a date above to see what would change.", "dateRange": "Planning period:", "invalidDate": "Choose a valid date within the planning period shown above.", "changes": "What would change", "available": "Available date", "unavailable": "This date can’t be used", "backToPlan": "Back to my plan", "backToTrace": "Back to the calculation" } }, "benchmark": { "title": "Leave planner benchmark", "instructions": "Run the five fixed scenarios and copy the resulting report.", "run": "Run benchmark", "running": "Running…", "copy": "Copy report" }, "loading": "Calculating...", "weekdaysShort": ["M", "T", "W", "T", "F", "S", "S"] }