{
"locale": "es-ES",
"bookedDays": {
"enter": "Editar días ya reservados",
"booked": "Ya reservado",
"help": "Elija CP, RTT, Otro o Borrar y haga clic o arrastre entre fechas, incluso de varios meses. Suelte para guardar; Escape cancela. Cada día que ya tenga el tipo elegido se borra; los demás reciben ese tipo. Se omiten fines de semana y festivos. El rayado indica los días ya reservados, que se aplican en el próximo cálculo.",
"fixed": "Entrada fija del usuario, sin descontar el saldo restante ni decisión de optimización.",
"removed": "Declaración eliminada",
"erase": "Borrar",
"rangeSaved": "Días ya reservados guardados: {count} ({type}).",
"rangeRemoved": "Declaraciones eliminadas: {count}."
},
"app": {
"title": "vac-optimizer",
"description": "Más espacio para descansar.",
"skipToPlan": "Ir a tu plan"
},
"userInput": {
"title": "Configura tus vacaciones",
"description": "Añade cada saldo de vacaciones y su periodo de validez.",
"addVacationDay": "Añadir saldo de vacaciones",
"calculate": "Calcular plan",
"durationEstimate": "Espera aproximada: {range} {unit}",
"durationUnits": {
"seconds": "s",
"minutes": "min"
},
"remainingDaysWarning": "{count} día{plural} de permiso restante{plural}:",
"deleteEntry": "Eliminar entrada",
"chooseDate": "Caduca el",
"availableDate": "Disponible desde",
"days": "Días",
"type": "Tipo de permiso",
"daySuffix": "día",
"daysSuffix": "días",
"expires": "exp.",
"remainingWhy": "Ver por qué",
"remainingValidity": "Utilizable del {available} al {expiry}.",
"remainingHorizon": "Plan calculado del {start} al {end}.",
"remainingEarnedFrom": "Permiso obtenido gracias a la regla «{rule}».",
"remainingHistoryHelp": "Estas fechas se examinaron realmente durante el cálculo. Los valores comparan cada intento con su estado inicial; el plan final puede ser diferente.",
"remainingNoEvaluations": "No se registró ningún intento atribuible a este saldo. Su categoría de caducidad por sí sola no explica por qué sigue sin utilizarse.",
"remainingSuggestions": {
"available-after-horizon": "Puedes ampliar el período planificado más allá de su fecha de disponibilidad y volver a calcular.",
"no-working-date": "Comprueba el período planificado y las fechas de validez de este saldo.",
"all-dates-occupied": "Puedes ampliar el período si la validez lo permite, o ajustar los días ya reservados y tus reglas, y volver a calcular.",
"preserved": "No es necesario hacer nada. Para solicitar su uso, añade una regla dentro de su período de validez y vuelve a calcular.",
"calculation-incomplete": "Repite el cálculo si quieres que termine la planificación."
},
"remainingCandidateReasons": {
"quality-no-improvement": "Esta opción no se seleccionó en esta fase del cálculo.",
"quality-protected-objective": "Esta opción empeoraría una prioridad que debe conservarse.",
"quality-outperformed": "El cálculo encontró después una opción mejor clasificada.",
"earned-entitlement-order": "Esta opción no respeta las fechas de disponibilidad de los permisos obtenidos.",
"unknown": "El motivo preciso de este intento no está disponible."
}
},
"dayTypes": {
"weekend": "Fin de semana",
"closedDay": "Día festivo",
"rtt": "RTT",
"cp": "Vacaciones pagadas",
"other": "Otro",
"today": "Hoy",
"any": "Cualquier"
},
"settings": {
"title": "Ajustes",
"description": "Los cambios se guardan automáticamente.",
"showWeekNumbers": "Mostrar números de semana",
"close": "Cerrar",
"selectLanguage": "Idioma",
"selectTheme": "Tema",
"themeOptions": {
"system": "Sistema",
"light": "Claro",
"dark": "Oscuro"
},
"systemAppearance": "Apariencia actual del sistema",
"planningHorizon": "Horizonte de planificación",
"planningStart": "Fecha de inicio (incluida)",
"lastPlanningDate": "Última fecha de planificación (incluida)",
"planningDatesHelp": "Elige cualquier fecha, incluso pasada. El calendario se actualiza al seleccionar Calcular plan.",
"invalidDate": "Introduce dos fechas válidas.",
"horizonOrder": "La última fecha de planificación debe ser igual o posterior a la fecha de inicio.",
"invalidHorizon": "Corrige las fechas de planificación en Ajustes antes de calcular."
},
"rules": {
"title": "Reglas de planificación",
"subtitle": "Gestionar reglas de optimización",
"active": "activas",
"moveRuleUp": "Subir regla",
"moveRuleDown": "Bajar regla",
"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 {day}, colocar {placeDays} día(s) {placeType} {placement} y obtener {rewardDays} día(s) {rewardType} de bonificación.",
"timeWindowTemplate": "Colocar {placeDays} día(s) {placeType} entre el {startDate} y el {endDate}.",
"editRule": "Editar regla",
"deleteRule": "Eliminar regla",
"addRule": "Añadir una regla",
"place": "Colocar",
"ruleName": "Nombre de la regla",
"holidayFalls": "Día festivo cae en",
"days": "Días",
"type": "Tipo",
"position": "Posición",
"getBonus": "Obtener en bonificación",
"force": "Fuerza de la regla",
"obligation": "Obligación",
"preference": "Preferencia",
"startDate": "Fecha de inicio",
"endDate": "Fecha de fin",
"cancel": "Cancelar",
"save": "Guardar",
"add": "Añadir",
"addRuleButton": "Añadir",
"newIfThenRule": "Nueva regla \"Si ... Entonces\"",
"newTimeWindowRule": "Nuevo período impuesto",
"defaultNewRuleName": "Nueva regla",
"defaultNewPeriodName": "Nuevo período",
"daysOfWeek": {
"1": "Lunes",
"2": "Martes",
"3": "Miércoles",
"4": "Jueves",
"5": "Viernes",
"6": "Sábado",
"0": "Domingo"
},
"placement": {
"before": "Antes",
"after": "Después",
"around": "Alrededor",
"auto": "Auto (Mejor opción)"
}
},
"planning": {
"calculationDate": "Fecha del cálculo",
"futureEntitlement": "Derecho futuro generado",
"includedEntitlement": "Derecho ya incluido en los saldos declarados",
"title": "Tu año optimizado",
"daysPlaced": "Días de vacaciones asignados",
"daysGained": "Días no laborables ganados",
"longestWorkSequence": "Período de trabajo más largo",
"legend": "Leyenda del calendario",
"invalidInput": "Los datos de planificación no son válidos.",
"conflict": "Las obligaciones no se pueden satisfacer juntas.",
"incomplete": "El cálculo se detuvo antes de completar todas las etapas de calidad.",
"cancel": "Cancelar",
"cancelling": "Cancelando…",
"cancelled": "Cálculo cancelado",
"cancelledPartial": "Cálculo cancelado — plan parcial",
"error": "El planificador encontró un error inesperado.",
"complete": "Plan calculado.",
"whyPlacement": "Entender tus días de permiso",
"placementNavigation": "Navegación por las explicaciones de las asignaciones",
"placement": "Día de permiso",
"placements": "asignaciones",
"decision": "Decisión",
"of": "de",
"first": "Primera asignación",
"previous": "Asignación anterior",
"next": "Asignación siguiente",
"last": "Última asignación",
"remaining": "Días sin usar en el plan final",
"balanceRemaining": "restantes",
"counterfactual": "Fechas alternativas",
"counterfactualLoading": "Analizando cada fecha del horizonte…",
"counterfactualReady": "Las fechas alternativas están listas.",
"counterfactualError": "No se pudieron calcular las fechas alternativas.",
"retryCounterfactual": "Reintentar el análisis de fechas",
"historicalEligibilityLoading": "Comprobando qué fechas podía usar este permiso…",
"historicalEligibilityReady": "La elegibilidad histórica de las fechas está lista.",
"historicalEligibilityError": "No se pudo comprobar la elegibilidad histórica de las fechas.",
"retryHistoricalEligibility": "Reintentar la comprobación de elegibilidad",
"eligible": "Válida",
"ineligible": "No válida",
"historical": "Estado de la búsqueda original",
"reason": "Motivo",
"explanationError": "No se pudo generar la explicación.",
"conflictDetails": "Por qué ningún plan satisface las obligaciones",
"conflictingRules": "Reglas en conflicto",
"bottleneck": "Cuello de botella",
"incompleteDetails": "Lo completado antes de detener el cálculo",
"incumbentExplanation": "Esto explica el mejor plan válido encontrado; las etapas de calidad posteriores no se completaron.",
"completedStages": "Etapas completadas",
"uncompletedStages": "Etapas interrumpidas o no iniciadas",
"none": "Ninguno",
"currentPlacement": "Asignación explicada actualmente",
"explainedPeriod": "Período de descanso explicado",
"outsideHorizon": "Fecha de contexto fuera del horizonte de planificación",
"traceTitle": "Avanzado: traza de decisiones original",
"traceLoading": "El plan está listo; su traza de decisiones aún se está cargando…",
"traceReady": "El plan está listo y se ha cargado su traza de decisiones.",
"traceUnavailable": "No hay una traza de decisiones disponible para este resultado.",
"phases": "Fases de la traza",
"firstPhase": "Primera fase",
"previousPhase": "Fase anterior",
"nextPhase": "Fase siguiente",
"lastPhase": "Última fase",
"decisions": "Decisiones atómicas",
"firstDecision": "Primera decisión",
"previousDecision": "Decisión anterior",
"nextDecision": "Decisión siguiente",
"lastDecision": "Última decisión",
"replay": "Estado de la decisión",
"before": "Antes",
"after": "Después",
"finalPlan": "Plan final",
"dates": "Fechas",
"candidates": "Candidatos",
"previousCandidates": "Página de candidatos anterior",
"nextCandidates": "Página de candidatos siguiente",
"page": "Página",
"compareAlternatives": "Comparar este candidato en todo el horizonte",
"deltas": "Cambios de estado",
"activations": "activaciones obtenidas",
"noDecisions": "Esta fase no registró ninguna decisión atómica.",
"traceStatuses": {
"chosen": "Elegido",
"evaluated-rejected": "Evaluado y rechazado",
"pruned": "Podado",
"not-examined": "No examinado",
"ineligible": "No válido"
},
"tracePhaseStatuses": {
"completed": "Completada",
"interrupted": "Interrumpida",
"not-run": "No ejecutada"
},
"traceChanges": {
"added": "Añadido por esta decisión",
"moved-from": "Movido desde esta fecha",
"moved-to": "Movido a esta fecha",
"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:",
"atRiskContribution": "Protege permisos que podrían vencer.",
"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": {
"obligation-validity": {
"label": "Obligaciones sin cumplir",
"help": "Número de reglas obligatorias incumplidas. Un plan válido tiene cero."
},
"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.",
"traceImpactTitle": "Efecto de esta rama en el plan completo",
"traceImpactHelp": "Estos valores comparan el estado completo antes y después de esta rama. Muestran su efecto, no por qué el planificador la eligió.",
"traceStageTitle": "Comparación real en esta etapa",
"traceStageHelp": "Estos valores brutos se compararon en esta decisión; la primera diferencia explica el estado de la opción. La tabla del plan completo muestra el efecto de esta elección.",
"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": {
"unavoidable-expiry": "Caducó el {expiry}, antes del inicio del plan el {start}. No puede colocarse en este período.",
"available-after-horizon": "Disponible solo a partir del {available}, después de la última fecha del plan, el {end}.",
"no-working-date": "Ningún día laborable está dentro del período planificado y entre sus fechas de disponibilidad y caducidad.",
"all-dates-occupied": "Todos los días laborables en los que puede utilizarse este saldo ya están ocupados por permisos planificados o días ya reservados.",
"preserved": "Guardado para más adelante: caduca después del período planificado y el cálculo no seleccionó ninguna colocación adicional según tus prioridades.",
"calculation-incomplete": "El cálculo se interrumpió antes de terminar la planificación. Su falta de uso no es una decisión definitiva.",
"not-established": "Este cálculo no determinó un motivo preciso para dejarlo sin utilizar."
}
},
"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": {
"title": "Prueba del planificador de vacaciones",
"instructions": "Ejecuta los cinco escenarios fijos y copia el informe resultante.",
"run": "Ejecutar prueba",
"running": "En curso…",
"copy": "Copiar informe"
},
"loading": "Calculando...",
"weekdaysShort": ["L", "M", "M", "J", "V", "S", "D"]
}