{ "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"] }