Files
vac-optimizer/src/i18n/en.json
T

341 lines
14 KiB
JSON
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.
{
"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 <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",
"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"]
}