{
"locale": "fr-FR",
"app": {
"title": "vac-optimizer",
"description": "Faites plus de place aux vacances.",
"skipToPlan": "Aller à votre planning"
},
"userInput": {
"title": "Configurez vos congés",
"description": "Ajoutez chaque solde de congés et sa période de validité.",
"addVacationDay": "Ajouter un solde de congés",
"calculate": "Calculer le planning",
"remainingDaysWarning": "{count} jour{plural} de vacances non placé{plural}:",
"remainingDaysManualPlace": "Veuillez les placer manuellement.",
"deleteEntry": "Supprimer l’entrée",
"chooseDate": "Expire le",
"availableDate": "Disponible à partir du",
"days": "Jours",
"type": "Type de congé",
"daySuffix": "jour",
"daysSuffix": "jours",
"expires": "exp.",
"remainingClassification": {
"unavoidableExpiry": "Expiration inévitable",
"atRisk": "À risque",
"deferred": "Différé"
},
"remainingReason": {
"unavoidableExpiry": "expiré avant l’horizon",
"atRisk": "expire pendant l’horizon",
"deferred": "disponible après l’horizon"
}
},
"dayTypes": {
"weekend": "Weekend",
"closedDay": "Jour Férié",
"rtt": "RTT",
"cp": "Congé Payé",
"other": "Autre",
"today": "Aujourd'hui",
"any": "N'importe"
},
"settings": {
"title": "Paramètres du calendrier",
"description": "Configurez vos paramètres de calendrier ici.",
"showWeekNumbers": "Afficher les numéros de semaine",
"close": "Fermer",
"selectLanguage": "Langue"
},
"rules": {
"title": "Règles de planification",
"subtitle": "Gérer les règles d'optimisation",
"active": "actives",
"moveRuleUp": "Monter la règle",
"moveRuleDown": "Descendre la règle",
"dragRule": "Glisser pour réordonner",
"ruleMoved": "{name} : position {position} sur {count}.",
"priorityInfo": "Les règles du haut sont prioritaires. Réorganisez-les avec la poignée ou les flèches.",
"ifThenTemplate": "Si un jour férié tombe un {day}, placer {placeDays} jour(s) {placeType} {placement} et obtenir {rewardDays} jour(s) {rewardType} en bonus.",
"timeWindowTemplate": "Placer {placeDays} jour(s) {placeType} entre le {startDate} et le {endDate}.",
"editRule": "Modifier la règle",
"deleteRule": "Supprimer la règle",
"addRule": "Ajouter une règle",
"place": "Placer",
"ruleName": "Nom de la règle",
"holidayFalls": "Jour férié tombe un",
"days": "Jours",
"type": "Type",
"position": "Position",
"getBonus": "Obtenir en bonus",
"force": "Force de la règle",
"obligation": "Obligation",
"preference": "Préférence",
"startDate": "Date de début",
"endDate": "Date de fin",
"cancel": "Annuler",
"save": "Enregistrer",
"add": "Ajouter",
"addRuleButton": "Ajouter",
"newIfThenRule": "Nouvelle Règle \"Si ... Alors\"",
"newTimeWindowRule": "Nouvelle Période Imposée",
"defaultNewRuleName": "Nouvelle Règle",
"defaultNewPeriodName": "Nouvelle Période",
"daysOfWeek": {
"1": "Lundi",
"2": "Mardi",
"3": "Mercredi",
"4": "Jeudi",
"5": "Vendredi",
"6": "Samedi",
"0": "Dimanche"
},
"placement": {
"before": "Avant",
"after": "Après",
"around": "Autour",
"auto": "Auto (Meilleur choix)"
}
},
"planning": {
"title": "Votre année optimisée",
"daysPlaced": "Jours de congé placés",
"daysGained": "Jours non travaillés gagnés",
"longestWorkSequence": "Plus longue période travaillée",
"legend": "Légende du calendrier",
"invalidInput": "Les données de planification sont invalides.",
"conflict": "Les obligations ne peuvent pas être satisfaites ensemble.",
"incomplete": "Le calcul s’est arrêté avant la fin des critères de qualité.",
"error": "Le planificateur a rencontré une erreur inattendue.",
"complete": "Plan calculé.",
"whyPlacement": "Comprendre vos jours de congé",
"placementNavigation": "Navigation entre les explications des placements",
"placement": "Jour de congé",
"placements": "placements",
"decision": "Décision",
"of": "sur",
"first": "Premier placement",
"previous": "Placement précédent",
"next": "Placement suivant",
"last": "Dernier placement",
"remaining": "Jours non utilisés dans le planning final",
"balanceRemaining": "restants",
"counterfactual": "Dates alternatives",
"counterfactualLoading": "Analyse de chaque date de l’horizon…",
"counterfactualReady": "Les dates alternatives sont prêtes.",
"counterfactualError": "Les dates alternatives n’ont pas pu être calculées.",
"retryCounterfactual": "Relancer l’analyse des dates",
"historicalEligibilityLoading": "Vérification des dates utilisables pour ce congé…",
"historicalEligibilityReady": "L’éligibilité historique des dates est prête.",
"historicalEligibilityError": "L’éligibilité historique des dates n’a pas pu être vérifiée.",
"retryHistoricalEligibility": "Revérifier l’éligibilité historique",
"eligible": "Éligible",
"ineligible": "Inéligible",
"historical": "Statut de la recherche originale",
"reason": "Raison",
"explanationError": "L’explication n’a pas pu être produite.",
"conflictDetails": "Pourquoi aucun plan ne satisfait les obligations",
"conflictingRules": "Règles en conflit",
"bottleneck": "Goulot d’étranglement",
"incompleteDetails": "Étapes terminées avant l’arrêt du calcul",
"incumbentExplanation": "Cette explication concerne le meilleur plan valide trouvé ; les étapes de qualité suivantes ne sont pas terminées.",
"completedStages": "Étapes terminées",
"uncompletedStages": "Étapes interrompues ou non démarrées",
"none": "Aucun",
"currentPlacement": "Placement expliqué actuellement",
"explainedPeriod": "Période de repos expliquée",
"outsideHorizon": "Date de contexte hors de l’horizon de planification",
"traceTitle": "Avancé : trace des décisions originales",
"traceLoading": "Le plan est prêt ; sa trace de décision est encore en cours de chargement…",
"traceReady": "Le plan est prêt et sa trace de décision est chargée.",
"traceUnavailable": "Aucune trace de décision n’est disponible pour ce résultat.",
"phases": "Phases de la trace",
"firstPhase": "Première phase",
"previousPhase": "Phase précédente",
"nextPhase": "Phase suivante",
"lastPhase": "Dernière phase",
"decisions": "Décisions atomiques",
"firstDecision": "Première décision",
"previousDecision": "Décision précédente",
"nextDecision": "Décision suivante",
"lastDecision": "Dernière décision",
"replay": "État de la décision",
"before": "Avant",
"after": "Après",
"finalPlan": "Plan final",
"dates": "Dates",
"candidates": "Candidats",
"previousCandidates": "Page de candidats précédente",
"nextCandidates": "Page de candidats suivante",
"page": "Page",
"compareAlternatives": "Comparer ce candidat sur tout l’horizon",
"deltas": "Changements d’état",
"activations": "activations acquises",
"noDecisions": "Cette phase n’a enregistré aucune décision atomique.",
"traceStatuses": {
"chosen": "Choisi",
"evaluated-rejected": "Évalué et rejeté",
"pruned": "Élagué",
"not-examined": "Non examiné",
"ineligible": "Inéligible"
},
"tracePhaseStatuses": {
"completed": "Terminée",
"interrupted": "Interrompue",
"not-run": "Non exécutée"
},
"traceChanges": {
"added": "Ajouté par cette décision",
"moved-from": "Déplacé depuis cette date",
"moved-to": "Déplacé vers cette date",
"removed": "Retiré par cette décision",
"shared": "Partagé par cette décision",
"unchanged": "Inchangé par cette décision"
},
"calendarHelp": "Sélectionnez un jour de congé pour voir son apport au planning.",
"explanationHelp": "Découvrez votre pause et ce que chaque jour change.",
"traceHelp": "Explorez le calcul, décision par décision.",
"technicalDetails": "Détails du calcul",
"compareDates": "Comparer d’autres dates",
"stopComparing": "Fermer la comparaison",
"replayNotice": "Vous consultez une étape du calcul.",
"explanation": {
"breakTitle": "Votre pause",
"leaveDays": "jours de congé posés",
"freeDays": "jours de week-end et fériés",
"daysOff": "jours de repos consécutifs",
"wholeBreak": "Ces totaux concernent toute la pause, y compris le jour sélectionné.",
"leaveUsed": "Cette date utilise 1 jour du solde « {balance} ».",
"expires": "Solde à utiliser au plus tard le",
"linkedRules": "Règles liées :",
"atRiskContribution": "Protège des congés à risque d’expiration.",
"impact": "Ce que ce jour change",
"impactHelp": "Comparez tout le planning avec et sans ce jour de congé. Les autres dates restent identiques ; seuls les totaux qui changent sont affichés.",
"criterion": "Sur tout le planning",
"withoutDay": "Sans ce jour",
"withDay": "Avec ce jour",
"noChange": "Ces totaux sont identiques. Les règles et les derniers critères de départage (expiration du solde, puis date) peuvent encore influencer le choix.",
"priorityHelp": "Les critères sont classés par priorité. La première différence prime sur les suivantes.",
"tryDate": "Essayer une autre date",
"plannedDate": "Date actuellement prévue :",
"currentPlan": "Planning actuel",
"alternative": "Avec cette date",
"sameDate": "C’est la date prévue. Choisissez une autre date ci-dessus pour voir la différence.",
"moveHelp": "Essayez de déplacer ce jour. Les autres dates de congé restent identiques.",
"traceHelp": "Testez ce candidat par rapport à l’état précédant sa décision d’origine.",
"beforeDecision": "Avant cette décision",
"withCandidate": "Avec ce candidat",
"comparisonUnavailable": "La comparaison pour la date initiale est indisponible ; la différence ne peut donc pas être affichée.",
"objectives": {
"obligation-validity": {
"label": "Obligations non satisfaites",
"help": "Nombre de règles obligatoires non respectées. Un plan valide en compte zéro."
},
"unplaced-at-risk": {
"label": "Congés risquant d’expirer sans être utilisés",
"help": "Jours non posés expirant pendant la période planifiée. Moins, c’est mieux."
},
"preference": {
"label": "Préférence : {rule}",
"help": "Jours ou occurrences complètes, selon la règle. Plus, c’est mieux."
},
"holiday-week-value": {
"label": "Priorité des semaines avec jours fériés (points)",
"help": "Score pondéré : un férié le mercredi vaut 3, mardi/jeudi 2, lundi/vendredi 1. Plus, c’est mieux."
},
"non-working-day-gain": {
"label": "Jours de week-end et fériés dans vos pauses",
"help": "Jours de repos sans utiliser de congé. Plus, c’est mieux."
},
"longest-work-sequence": {
"label": "Maximum de jours travaillés entre congés",
"help": "Week-ends et jours fériés exclus. Moins, c’est mieux."
},
"short-sequence-deficit": {
"label": "Pénalité pour les courtes reprises du travail",
"help": "Chaque reprise de 1 à 4 jours travaillés entre congés ajoute les jours manquants pour atteindre 5. Moins, c’est mieux."
},
"supporting-placements": {
"label": "Jours utilisés sur des soldes expirant plus tard",
"help": "Congés qui pourraient être conservés au-delà de la période planifiée. Moins, c’est mieux."
},
"balance-expiry": {
"label": "Soldes expirant le plus tôt d’abord",
"help": "Départage lorsque les totaux précédents sont égaux."
},
"placement-date": {
"label": "Dates les plus proches d’abord",
"help": "Dernier départage lorsque tous les autres critères sont égaux."
}
},
"stages": {
"validation": "Vérifier les soldes et les règles",
"obligations": "Respecter les règles obligatoires",
"at-risk": "Utiliser les congés avant leur expiration",
"expiry": "Privilégier les soldes expirant bientôt",
"dates": "Privilégier les dates les plus proches"
},
"unavailable": {
"non-working": "C’est déjà un jour de repos (week-end ou jour férié). Aucun congé à poser.",
"occupied": "Un autre congé est déjà prévu ici. Choisissez un jour travaillé libre.",
"unavailable": "Ce solde de congés ne peut pas être utilisé à cette date.",
"expired": "Cette date dépasse la date d’expiration du solde.",
"type-incompatible": "Ce type de congé ne peut pas être utilisé à cette date.",
"rule-invalid": "Utiliser cette date ne respecterait pas une règle du planning."
},
"preferenceHelp": {
"time_window": "Jours de congé dans cette période souhaitée. Plus, c’est mieux.",
"if_then": "Occurrences complètes de cette règle. Plus, c’est mieux."
}
},
"details": {
"intro": "La colonne de gauche montre le planning sans ce jour de congé. Celle de droite montre le planning actuel.",
"balance": "Solde de congés",
"available": "Disponible à partir du",
"expires": "Expire le",
"criteria": "Les priorités du calcul",
"criteriaHelp": "Lisez de haut en bas : la première différence est prioritaire. Sélectionnez un critère pour comprendre son calcul.",
"traceImpactTitle": "Effet de cette branche sur le plan complet",
"traceImpactHelp": "Ces valeurs comparent l’état complet avant et après cette branche. Elles montrent son effet, pas pourquoi le calcul l’a choisie.",
"traceStageTitle": "Comparaison réelle à cette étape",
"traceStageHelp": "Ces valeurs brutes ont été comparées lors de cette décision ; la première différence explique le statut de la possibilité. Le tableau du plan complet ci-dessous montre l’effet de ce choix.",
"firstDifference": "Première différence",
"higher": "Plus, c’est mieux",
"lower": "Moins, c’est mieux",
"tieBreaks": "Si les totaux ci-dessus sont égaux",
"audit": "Données brutes · débogage",
"auditHelp": "Valeurs, identifiants et contributions d’origine de ce calcul.",
"supporting": "Ce jour utilise des congés qui pourraient être conservés au-delà de la période planifiée pour améliorer vos pauses.",
"remainingReasons": {
"at-risk": "Ces jours non utilisés expirent pendant la période planifiée.",
"deferred": "Ces jours non utilisés peuvent être conservés au-delà de la période planifiée.",
"unavoidable-expiry": "Ces jours ont expiré avant le début de la période planifiée."
}
},
"comparison": {
"title": "Comparer les dates",
"candidate": "Date du candidat",
"preview": "Simulation uniquement. Votre planning reste inchangé.",
"nearby": "Dates proches disponibles",
"noAlternatives": "Aucune autre date ne permet de poser ce jour. Vous pouvez vérifier une date pour comprendre pourquoi.",
"chooseDate": "Choisissez une date ci-dessus pour voir ce qui changerait.",
"dateRange": "Période planifiée :",
"invalidDate": "Choisissez une date valide dans la période indiquée ci-dessus.",
"changes": "Ce qui changerait",
"available": "Date disponible",
"unavailable": "Cette date ne peut pas être utilisée",
"backToPlan": "Revenir à mon planning",
"backToTrace": "Revenir au calcul"
}
},
"benchmark": {
"title": "Benchmark du planificateur de congés",
"instructions": "Lancez les cinq scénarios fixes et copiez le rapport obtenu.",
"run": "Lancer le benchmark",
"running": "En cours…",
"copy": "Copier le rapport"
},
"loading": "Calcul en cours...",
"weekdaysShort": ["L", "M", "M", "J", "V", "S", "D"]
}