UI improvments

This commit is contained in:
nessar committed 2026-10-02 15:05:30 +02:00
1 parent c9dbe82b79
commit 0ce33cc9d6
106 files changed
+72934 -1675

No files matched your search

+134 -26
View File
@@ -2,7 +2,8 @@
"locale": "en-GB",
"app": {
"title": "vac-optimizer",
"description": "Optimize your vacation days based on holidays and weekends!"
"description": "Make more room for time off.",
"skipToPlan": "Skip to your plan"
},
"userInput": {
"title": "Configure your leave",
@@ -52,7 +53,9 @@
"active": "active",
"moveRuleUp": "Move rule up",
"moveRuleDown": "Move rule down",
"priorityInfo": "The order of rules defines their execution priority (from top to bottom). Drag and drop to reorder.",
"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 <strong>{day}</strong>, place <strong>{placeDays}</strong> day(s) <strong>{placeType}</strong> <strong>{placement}</strong> and get <strong>{rewardDays}</strong> day(s) <strong>{rewardType}</strong> as a bonus.",
"timeWindowTemplate": "Place <strong>{placeDays}</strong> day(s) <strong>{placeType}</strong> between <strong>{startDate}</strong> and <strong>{endDate}</strong>.",
"editRule": "Edit rule",
@@ -105,9 +108,9 @@
"incomplete": "Calculation stopped before all quality stages completed.",
"error": "The planner encountered an unexpected error.",
"complete": "Plan calculated.",
"whyPlacement": "Why this placement",
"whyPlacement": "Understand your leave days",
"placementNavigation": "Placement explanation navigation",
"placement": "Placement",
"placement": "Leave day",
"placements": "placements",
"decision": "Decision",
"of": "of",
@@ -115,28 +118,8 @@
"previous": "Previous placement",
"next": "Next placement",
"last": "Last placement",
"balance": "Entitlement",
"rules": "Rules",
"noRules": "No rule",
"supporting": "Supporting placement",
"yes": "Yes",
"no": "No",
"remaining": "Remaining entitlement after placement",
"timeOffPeriod": "Time-off period",
"firstDecisive": "First decisive objective",
"contributions": "Contributions",
"objectiveVector": "Full objective vector",
"finalMetrics": "Final plan metrics",
"unplacedAtRisk": "Unplaced at-risk leave",
"holidayWeekValue": "Public-holiday week value",
"shortSequenceDeficit": "Short work-sequence deficit",
"supportingPlacements": "Supporting placements",
"preferenceSatisfaction": "Preference satisfaction",
"removedRestoredComparison": "Placement removed and restored",
"fullComparison": "Full before-and-after objective vectors",
"comparisonHelp": "This compares the final plan without this placement with the final plan after restoring it.",
"remaining": "Unused days in the final plan",
"counterfactual": "Date alternatives",
"hypothetical": "Hypothetical only: the optimized plan is unchanged. Select any date in the horizon to inspect it.",
"counterfactualLoading": "Analyzing every date in the horizon…",
"counterfactualReady": "Date alternatives are ready.",
"counterfactualError": "Date alternatives could not be calculated.",
@@ -178,7 +161,6 @@
"nextCandidates": "Next candidate page",
"page": "Page",
"compareAlternatives": "Compare this candidate across the horizon",
"tieBreak": "Tie-break",
"deltas": "State changes",
"activations": "earned activations",
"noDecisions": "This phase recorded no atomic decision.",
@@ -201,6 +183,132 @@
"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:",
"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": {
"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.",
"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": {