{ "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": "Elige el período de planificación y 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.", "remainingValidity": "Utilizable del {available} al {expiry}.", "remainingHorizon": "Plan calculado del {start} al {end}.", "remainingEarnedFrom": "Permiso obtenido gracias a la regla «{rule}».", "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." } }, "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": "Período 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 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)" }, "optimization": { "newRule": "Nueva regla de Optimización", "defaultName": "Prevención de pérdidas", "elementsLabel": "Elementos del plan", "conditionsLabel": "Condiciones (deben cumplirse todas)", "measureLabel": "Medida", "aggregationLabel": "Agregación", "directionLabel": "Dirección", "thresholdLabel": "Umbral de preferencia en días laborables", "thresholdSummary": "umbral de preferencia: {count} días laborables", "summary": "{direction} {aggregation}: {measure} — {elements}{conditions}.", "invalidConfiguration": "Elija elementos, condiciones, medidas y agregaciones compatibles, con un umbral entero positivo cuando sea necesario.", "nameRequired": "Introduzca un nombre para la regla.", "elements": { "leave-balances": "Saldos de vacaciones", "public-holiday-weeks": "Semanas con festivos", "time-off-periods": "Períodos sin trabajo", "work-sequences": "Secuencias de trabajo", "leave-placements": "Vacaciones colocadas" }, "conditions": { "at-risk": "En riesgo de caducar", "complete": "Completas", "internal": "Internas", "non-empty": "No vacías", "supporting": "De apoyo" }, "measures": { "unplaced-quantity": "Cantidad no colocada", "public-holiday-week-value": "Valor de las semanas festivas", "non-working-day-gain": "Ganancia de días sin trabajo", "work-sequence-length": "Longitud de las secuencias de trabajo", "work-sequence-deficit": "Déficit de las secuencias de trabajo", "placement-count": "Número de colocaciones" }, "aggregations": { "sum": "Suma", "count": "Cantidad", "maximum": "Máximo" }, "directions": { "minimize": "Minimizar", "maximize": "Maximizar" } } }, "planning": { "statistics": { "open": "Estadísticas", "title": "Estadísticas del plan", "leaveDays": "Nuevos días de permiso", "averageWorkSequence": "Secuencia de trabajo media", "averageTimeOffPeriod": "Período de descanso medio", "longestTimeOffPeriod": "Período de descanso más largo", "weekendConnectedHolidays": "Festivos conectados con un fin de semana", "workingDays": "días laborables", "calendarDays": "días naturales", "partialPlan": "Plan parcial", "help": "Estadísticas del plan calculado. Los días ya reservados definen los períodos de descanso y trabajo sin consumir de nuevo los saldos restantes.", "earnedLeave": "Permisos adquiridos antes de su uso", "leaveDaysUnit": "días", "earnedLeaveByRule": "Permisos adquiridos por regla" }, "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…", "progress": { "stages": { "preparation": "Preparando el calendario", "validation": "Comprobando tus datos", "obligations": "Cumpliendo las obligaciones", "expiry": "Usando primero los saldos que vencen antes", "dates": "Fijando las fechas definitivas" }, "rule": "Aplicando «{rule}»", "remaining": "Quedan unos {value} {unit}", "overrun": "Está tardando más de lo previsto" }, "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", "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", "eligible": "Válida", "ineligible": "No válida", "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", "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.", "technicalDetails": "Detalles del cálculo", "compareDates": "Comparar otras fechas", "stopComparing": "Cerrar comparación", "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": "Las obligaciones se resuelven conjuntamente. Las preferencias activas se comparan en el orden de sus reglas. Solo esas reglas añaden vacaciones; la caducidad y luego las fechas resuelven los empates.", "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.", "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." }, "optimization": { "label": "{rule}: {summary}", "help": "Esta preferencia de optimización evalúa su configuración guardada. Las preferencias activas siguen el orden mostrado; las anteriores tienen prioridad." } }, "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.", "invalid-optimization-configuration": "Elija elementos, condiciones, medidas y agregaciones compatibles, con un umbral entero positivo cuando sea necesario.", "unsupported-optimization-configuration": "Esta regla combina elementos del plan y medidas incompatibles." }, "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": { "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.", "active-priorities": "El cálculo conservó este saldo sin utilizar según tus reglas activas. Cambia las reglas o su orden para solicitar otro plan.", "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", "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" } }, "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"] }