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": "es-ES",
"app": {
"title": "vac-optimizer",
"description": "¡Optimice sus días de vacaciones según los días festivos y los fines de semana!"
"description": "Más espacio para descansar.",
"skipToPlan": "Ir a tu plan"
},
"userInput": {
"title": "Configura tus vacaciones",
@@ -52,7 +53,9 @@
"active": "activas",
"moveRuleUp": "Subir regla",
"moveRuleDown": "Bajar regla",
"priorityInfo": "El orden de las reglas define su prioridad de ejecución (de arriba a abajo). Arrastre y suelte para reorganizar.",
"dragRule": "Arrastrar para reordenar",
"ruleMoved": "{name}: posición {position} de {count}.",
"priorityInfo": "Las reglas de arriba tienen prioridad. Reordénalas con el tirador o las flechas.",
"ifThenTemplate": "Si un día festivo cae en <strong>{day}</strong>, colocar <strong>{placeDays}</strong> día(s) <strong>{placeType}</strong> <strong>{placement}</strong> y obtener <strong>{rewardDays}</strong> día(s) <strong>{rewardType}</strong> de bonificación.",
"timeWindowTemplate": "Colocar <strong>{placeDays}</strong> día(s) <strong>{placeType}</strong> entre el <strong>{startDate}</strong> y el <strong>{endDate}</strong>.",
"editRule": "Editar regla",
@@ -105,9 +108,9 @@
"incomplete": "El cálculo se detuvo antes de completar todas las etapas de calidad.",
"error": "El planificador encontró un error inesperado.",
"complete": "Plan calculado.",
"whyPlacement": "Por qué esta asignación",
"whyPlacement": "Entender tus días de permiso",
"placementNavigation": "Navegación por las explicaciones de las asignaciones",
"placement": "Asignación",
"placement": "Día de permiso",
"placements": "asignaciones",
"decision": "Decisión",
"of": "de",
@@ -115,28 +118,8 @@
"previous": "Asignación anterior",
"next": "Asignación siguiente",
"last": "Última asignación",
"balance": "Derecho",
"rules": "Reglas",
"noRules": "Sin regla",
"supporting": "Asignación de apoyo",
"yes": "Sí",
"no": "No",
"remaining": "Derecho restante tras la asignación",
"timeOffPeriod": "Período de descanso",
"firstDecisive": "Primer objetivo decisivo",
"contributions": "Contribuciones",
"objectiveVector": "Vector completo de objetivos",
"finalMetrics": "Métricas del plan final",
"unplacedAtRisk": "Vacaciones en riesgo sin asignar",
"holidayWeekValue": "Valor de semanas con festivos",
"shortSequenceDeficit": "Déficit de secuencias cortas de trabajo",
"supportingPlacements": "Asignaciones de apoyo",
"preferenceSatisfaction": "Satisfacción de preferencias",
"removedRestoredComparison": "Asignación eliminada y restaurada",
"fullComparison": "Vectores de objetivos completos antes y después",
"comparisonHelp": "Compara el plan final sin esta asignación y después de restaurarla.",
"remaining": "Días sin usar en el plan final",
"counterfactual": "Fechas alternativas",
"hypothetical": "Solo hipotético: el plan optimizado no cambia. Selecciona una fecha del horizonte para inspeccionarla.",
"counterfactualLoading": "Analizando cada fecha del horizonte…",
"counterfactualReady": "Las fechas alternativas están listas.",
"counterfactualError": "No se pudieron calcular las fechas alternativas.",
@@ -178,7 +161,6 @@
"nextCandidates": "Página de candidatos siguiente",
"page": "Página",
"compareAlternatives": "Comparar este candidato en todo el horizonte",
"tieBreak": "Desempate",
"deltas": "Cambios de estado",
"activations": "activaciones obtenidas",
"noDecisions": "Esta fase no registró ninguna decisión atómica.",
@@ -201,6 +183,132 @@
"removed": "Eliminado por esta decisión",
"shared": "Compartido por esta decisión",
"unchanged": "Sin cambios por esta decisión"
},
"calendarHelp": "Selecciona un día de permiso para ver su aportación al plan.",
"explanationHelp": "Consulta tu descanso y qué cambia con cada día.",
"traceHelp": "Explora el cálculo, decisión a decisión.",
"technicalDetails": "Detalles del cálculo",
"compareDates": "Comparar otras fechas",
"stopComparing": "Cerrar comparación",
"replayNotice": "Estás viendo un paso del cálculo.",
"explanation": {
"breakTitle": "Tu descanso",
"leaveDays": "días de permiso usados",
"freeDays": "días de fin de semana y festivos",
"daysOff": "días libres seguidos",
"wholeBreak": "Estos totales corresponden a todo el descanso, incluido el día seleccionado.",
"leaveUsed": "Esta fecha usa 1 día del saldo «{balance}».",
"expires": "Usa este saldo hasta el",
"linkedRules": "Reglas vinculadas:",
"impact": "Qué cambia con este día",
"impactHelp": "Compara todo el plan con y sin este día de permiso. Las demás fechas no cambian; solo se muestran los totales que varían.",
"criterion": "En todo tu plan",
"withoutDay": "Sin este día",
"withDay": "Con este día",
"noChange": "Estos totales son iguales. Las reglas y los últimos criterios de desempate (vencimiento del saldo y después fecha) aún pueden influir en la elección.",
"priorityHelp": "Los criterios se muestran por prioridad. La primera diferencia prevalece sobre las siguientes.",
"tryDate": "Probar otra fecha",
"plannedDate": "Fecha prevista actualmente:",
"currentPlan": "Plan actual",
"alternative": "Con esta fecha",
"sameDate": "Esta es la fecha prevista. Elige otra fecha arriba para ver la diferencia.",
"moveHelp": "Prueba a mover este día. Las demás fechas de permiso no cambian.",
"traceHelp": "Compara este candidato con el estado anterior a su decisión original.",
"beforeDecision": "Antes de esta decisión",
"withCandidate": "Con este candidato",
"comparisonUnavailable": "La comparación de la fecha original no está disponible, por lo que no se puede mostrar el cambio.",
"objectives": {
"unplaced-at-risk": {
"label": "Días sin usar que podrían vencer",
"help": "Días sin planificar que vencen durante el período. Menos es mejor."
},
"preference": {
"label": "Preferencia: {rule}",
"help": "Días o coincidencias completas, según la regla. Más es mejor."
},
"holiday-week-value": {
"label": "Prioridad de semanas con festivos (puntos)",
"help": "Puntuación ponderada: festivos en miércoles valen 3, martes/jueves 2 y lunes/viernes 1. Más es mejor."
},
"non-working-day-gain": {
"label": "Fines de semana y festivos en tus descansos",
"help": "Días libres sin gastar permisos. Más es mejor."
},
"longest-work-sequence": {
"label": "Máximo de días laborables entre permisos",
"help": "No se cuentan fines de semana ni festivos. Menos es mejor."
},
"short-sequence-deficit": {
"label": "Penalización por tramos cortos de trabajo",
"help": "Cada tramo de 1–4 días laborables entre permisos suma los días que faltan para llegar a 5. Menos es mejor."
},
"supporting-placements": {
"label": "Días usados de saldos que vencen más tarde",
"help": "Permisos que podrían guardarse más allá de este período. Menos es mejor."
},
"balance-expiry": {
"label": "Primero los permisos que vencen antes",
"help": "Desempate cuando los totales anteriores son iguales."
},
"placement-date": {
"label": "Primero las fechas más tempranas",
"help": "Último desempate cuando los demás criterios son iguales."
}
},
"stages": {
"validation": "Comprobar saldos y reglas",
"obligations": "Cumplir las reglas obligatorias",
"at-risk": "Usar los permisos antes de que venzan",
"expiry": "Preferir los permisos que vencen antes",
"dates": "Preferir las fechas más tempranas"
},
"unavailable": {
"non-working": "Ya es un día libre (fin de semana o festivo). No hace falta pedir permiso.",
"occupied": "Ya hay otro permiso previsto aquí. Elige un día laborable disponible.",
"unavailable": "Este saldo de permisos no se puede usar en esta fecha.",
"expired": "Esta fecha es posterior al vencimiento del saldo.",
"type-incompatible": "Este tipo de permiso no se puede usar en esta fecha.",
"rule-invalid": "Usar esta fecha incumpliría una regla del plan."
},
"preferenceHelp": {
"time_window": "Días de permiso dentro del período preferido. Más es mejor.",
"if_then": "Coincidencias completas de esta regla. Más es mejor."
}
},
"details": {
"intro": "La columna izquierda muestra el plan sin este día de permiso. La derecha muestra el plan actual.",
"balance": "Saldo de permisos",
"available": "Disponible desde",
"expires": "Vence el",
"criteria": "Las prioridades del cálculo",
"criteriaHelp": "Lee de arriba abajo: la primera diferencia tiene prioridad. Selecciona un criterio para ver cómo se calcula.",
"firstDifference": "Primera diferencia",
"higher": "Más es mejor",
"lower": "Menos es mejor",
"tieBreaks": "Si los totales anteriores son iguales",
"audit": "Datos sin procesar · depuración",
"auditHelp": "Valores, identificadores y contribuciones originales de este cálculo.",
"supporting": "Este día usa permisos que podrían guardarse más allá del período planificado para mejorar tus descansos.",
"remainingReasons": {
"at-risk": "Estos días sin usar vencen durante el período planificado.",
"deferred": "Estos días sin usar pueden guardarse más allá del período planificado.",
"unavoidable-expiry": "Estos días vencieron antes del inicio del período planificado."
}
},
"comparison": {
"title": "Comparar fechas",
"candidate": "Fecha del candidato",
"preview": "Solo una vista previa. Tu plan no cambia.",
"nearby": "Fechas cercanas disponibles",
"noAlternatives": "No hay otra fecha disponible para este día de permiso. Puedes comprobar una fecha para ver el motivo.",
"chooseDate": "Elige una fecha arriba para ver qué cambiaría.",
"dateRange": "Período planificado:",
"invalidDate": "Elige una fecha válida dentro del período indicado arriba.",
"changes": "Qué cambiaría",
"available": "Fecha disponible",
"unavailable": "Esta fecha no se puede usar",
"backToPlan": "Volver a mi plan",
"backToTrace": "Volver al cálculo"
}
},
"benchmark": {