UI improvments

This commit is contained in:
nessar committed 2026-10-02 15:05:30 +02:00
1 parent c9dbe82b79
commit 0ce33cc9d6
106 files changed
+72934 -1675

No files matched your search

+134 -26
View File
@@ -2,7 +2,8 @@
"locale": "fr-FR",
"app": {
"title": "vac-optimizer",
"description": "Optimisez vos jours de vacances en fonction des jours fériés et des week-ends !"
"description": "Faites plus de place aux vacances.",
"skipToPlan": "Aller à votre planning"
},
"userInput": {
"title": "Configurez vos congés",
@@ -52,7 +53,9 @@
"active": "actives",
"moveRuleUp": "Monter la règle",
"moveRuleDown": "Descendre la règle",
"priorityInfo": "L'ordre des règles définit leur priorité d'exécution (de haut en bas). Glissez-déposez pour réorganiser.",
"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",
@@ -105,9 +108,9 @@
"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": "Pourquoi ce placement",
"whyPlacement": "Comprendre vos jours de congé",
"placementNavigation": "Navigation entre les explications des placements",
"placement": "Placement",
"placement": "Jour de congé",
"placements": "placements",
"decision": "Décision",
"of": "sur",
@@ -115,28 +118,8 @@
"previous": "Placement précédent",
"next": "Placement suivant",
"last": "Dernier placement",
"balance": "Droit",
"rules": "Règles",
"noRules": "Aucune règle",
"supporting": "Placement de soutien",
"yes": "Oui",
"no": "Non",
"remaining": "Droit restant après placement",
"timeOffPeriod": "Période de repos",
"firstDecisive": "Premier objectif décisif",
"contributions": "Contributions",
"objectiveVector": "Vecteur d’objectifs complet",
"finalMetrics": "Métriques du plan final",
"unplacedAtRisk": "Congés à risque non placés",
"holidayWeekValue": "Valeur des semaines fériées",
"shortSequenceDeficit": "Déficit des courtes séquences travaillées",
"supportingPlacements": "Placements de soutien",
"preferenceSatisfaction": "Satisfaction des préférences",
"removedRestoredComparison": "Placement retiré puis rétabli",
"fullComparison": "Vecteurs d’objectifs complets avant et après",
"comparisonHelp": "Comparaison du plan final sans ce placement puis après son rétablissement.",
"remaining": "Jours non utilisés dans le planning final",
"counterfactual": "Dates alternatives",
"hypothetical": "Hypothèse uniquement : le plan optimisé ne change pas. Sélectionnez une date de l’horizon pour l’inspecter.",
"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.",
@@ -178,7 +161,6 @@
"nextCandidates": "Page de candidats suivante",
"page": "Page",
"compareAlternatives": "Comparer ce candidat sur tout l’horizon",
"tieBreak": "Critère de départage",
"deltas": "Changements d’état",
"activations": "activations acquises",
"noDecisions": "Cette phase n’a enregistré aucune décision atomique.",
@@ -201,6 +183,132 @@
"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 :",
"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": {
"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.",
"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": {