341 lines
15 KiB
JSON
341 lines
15 KiB
JSON
{
|
||
"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 <strong>{day}</strong>, placer <strong>{placeDays}</strong> jour(s) <strong>{placeType}</strong> <strong>{placement}</strong> et obtenir <strong>{rewardDays}</strong> jour(s) <strong>{rewardType}</strong> en bonus.",
|
||
"timeWindowTemplate": "Placer <strong>{placeDays}</strong> jour(s) <strong>{placeType}</strong> entre le <strong>{startDate}</strong> et le <strong>{endDate}</strong>.",
|
||
"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"]
|
||
}
|