@cat-factory/app 0.47.9 → 0.47.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2324,5 +2324,552 @@
2324
2324
  "gatedCommit": "Commit sous condition",
2325
2325
  "footer": "Une condition exécute une vérification préalable programmatique et ne lance le {helper} qu'en cas d'échec ; une vérification verte avance sans rien lancer."
2326
2326
  }
2327
+ },
2328
+ "requirements": {
2329
+ "title": "Revue des exigences",
2330
+ "iteration": "Itération {current} / {max}",
2331
+ "intro": "Un relecteur IA a inspecté les exigences collectées de cet {level} — sa description ainsi que les PRD et tickets liés — et a soulevé les observations ci-dessous. {answer} celles qui sont pertinentes et {dismiss} les autres, puis incorporez-les ; le relecteur relit jusqu'à ce que les exigences soient claires.",
2332
+ "levelFallback": "élément",
2333
+ "answerVerb": "Répondez à",
2334
+ "dismissVerb": "écartez",
2335
+ "empty": "Pas encore de revue. Le relecteur s'exécute automatiquement comme première étape au démarrage du pipeline de cette tâche.",
2336
+ "loadingReview": "Chargement de la revue…",
2337
+ "reviewing": "Revue des exigences…",
2338
+ "settled": "Les exigences sont arrêtées. Le document ci-dessous est celui qu'utilise chaque étape d'agent en aval.",
2339
+ "exceeded": {
2340
+ "heading": "Limite de {max} itérations atteinte avec des observations encore ouvertes.",
2341
+ "detail": "Faites une dernière ronde de revue, passez à la phase suivante avec les dernières exigences incorporées malgré tout, ou arrêtez et réinitialisez la tâche pour pouvoir retravailler les exigences et les resoumettre."
2342
+ },
2343
+ "working": {
2344
+ "incorporating": "Incorporation de vos réponses dans un document d'exigences… Vous pouvez fermer ceci — nous vous préviendrons uniquement si plus d'informations sont nécessaires.",
2345
+ "reReviewing": "Nouvelle revue des exigences mises à jour… Vous pouvez fermer ceci — nous vous préviendrons uniquement si plus d'informations sont nécessaires."
2346
+ },
2347
+ "severity": {
2348
+ "high": "élevée",
2349
+ "medium": "moyenne",
2350
+ "low": "faible"
2351
+ },
2352
+ "category": {
2353
+ "gap": "lacune",
2354
+ "clarification": "clarification",
2355
+ "assumption": "hypothèse",
2356
+ "risk": "risque",
2357
+ "question": "question"
2358
+ },
2359
+ "itemStatus": {
2360
+ "open": "ouvert",
2361
+ "answered": "répondu",
2362
+ "resolved": "résolu",
2363
+ "dismissed": "écarté",
2364
+ "recommend_requested": "recommandation demandée"
2365
+ },
2366
+ "answerLabel": "Réponse",
2367
+ "answerPlaceholder": "Répondez à cette observation…",
2368
+ "dismissIrrelevant": "Écarter comme non pertinent",
2369
+ "markedForRecommendation": "Marqué pour recommandation",
2370
+ "recommendSomething": "Recommander quelque chose",
2371
+ "recommendationRequested": "Recommandation demandée — consultez la suggestion ci-dessous.",
2372
+ "reopen": "Rouvrir",
2373
+ "recommendedAnswers": "Réponses recommandées",
2374
+ "recommendationProgress": "{ready} / {total} prêtes",
2375
+ "generatingSuggestion": "Génération d'une suggestion étayée…",
2376
+ "currentStandard": "Standard actuel : {title}",
2377
+ "accept": "Accepter",
2378
+ "reject": "Rejeter",
2379
+ "reRequestPlaceholder": "Demander une autre recommandation…",
2380
+ "reRequest": "Redemander",
2381
+ "finalRequirements": "Exigences finales",
2382
+ "incorporatedDraft": "Exigences incorporées (brouillon)",
2383
+ "stats": {
2384
+ "findings": "Observations",
2385
+ "open": "Ouvertes",
2386
+ "answered": "Répondues",
2387
+ "model": "Modèle"
2388
+ },
2389
+ "actions": {
2390
+ "proceedNothing": "Continuer (rien à incorporer)",
2391
+ "incorporateAnswers": "Incorporer les réponses",
2392
+ "requestRecommendations": "Demander {count} recommandation | Demander {count} recommandations",
2393
+ "reReview": "Ça me va — relire",
2394
+ "reReviewing": "Nouvelle revue…",
2395
+ "redoIncorporation": "Refaire l'incorporation",
2396
+ "redoWithDirection": "Refaire avec cette indication"
2397
+ },
2398
+ "help": {
2399
+ "canProceed": "Toutes les observations sont écartées — passez à la phase suivante sans retravailler.",
2400
+ "canIncorporate": "Regroupe vos réponses dans un document au format standard, puis le relit automatiquement.",
2401
+ "answerAll": "Répondez à chaque observation ou écartez-la pour continuer.",
2402
+ "merged": "La nouvelle revue exécute le relecteur sur ce document. Si la fusion ne vous convient pas, refaites-la plutôt avec un commentaire."
2403
+ },
2404
+ "redoPlaceholder": "Que devrait faire la fusion différemment ?",
2405
+ "settledFooter": "Exigences arrêtées — le pipeline continue avec le document à gauche.",
2406
+ "toast": {
2407
+ "preparingRecommendations": "Préparation de {count} recommandation en arrière-plan | Préparation de {count} recommandations en arrière-plan",
2408
+ "preparingRecommendationsDescription": "Vos réponses sont enregistrées — fermez si vous le souhaitez ; nous vous préviendrons quand elles seront prêtes.",
2409
+ "recommendationsReady": "{count} recommandation prête | {count} recommandations prêtes",
2410
+ "incorporating": "Incorporation de vos réponses en arrière-plan",
2411
+ "incorporatingDescription": "Vous êtes de retour sur le tableau — nous vous préviendrons uniquement si plus d'informations sont nécessaires.",
2412
+ "reviewerSatisfied": "Le relecteur est satisfait — poursuite du pipeline",
2413
+ "iterationLimitReached": "Limite d'itérations atteinte — choisissez comment continuer",
2414
+ "newFindings": "aucune nouvelle observation à traiter | {count} nouvelle observation à traiter | {count} nouvelles observations à traiter",
2415
+ "proceeding": "Passage à la phase suivante",
2416
+ "taskReset": "Tâche réinitialisée — modifiez les exigences et resoumettez",
2417
+ "extraRoundGranted": "Une ronde de revue supplémentaire accordée"
2418
+ },
2419
+ "errors": {
2420
+ "saveAnswer": "Impossible d'enregistrer la réponse",
2421
+ "updateFinding": "Impossible de mettre à jour l'observation",
2422
+ "requestRecommendations": "Impossible de demander les recommandations",
2423
+ "acceptRecommendation": "Impossible d'accepter la recommandation",
2424
+ "rejectRecommendation": "Impossible de rejeter la recommandation",
2425
+ "reRequestRecommendation": "Impossible de redemander la recommandation",
2426
+ "incorporate": "Impossible d'incorporer les réponses",
2427
+ "reReview": "Impossible de relire les exigences",
2428
+ "proceed": "Impossible de continuer",
2429
+ "resolveReview": "Impossible de résoudre la revue"
2430
+ }
2431
+ },
2432
+ "clarity": {
2433
+ "title": "Tri du rapport de bogue",
2434
+ "iteration": "Itération {current} / {max}",
2435
+ "intro": "Un relecteur IA a trié le rapport de bogue de cet {level} selon sa corrigeabilité, sa description ainsi que tout contexte lié, et a soulevé les questions ci-dessous. {answer} celles qui sont pertinentes et {dismiss} celles qui ne le sont pas, puis intégrez-les ; le relecteur relit jusqu'à ce que le rapport de bogue soit assez clair pour être corrigé.",
2436
+ "itemFallback": "élément",
2437
+ "introAnswer": "Répondez à",
2438
+ "introDismiss": "écartez",
2439
+ "empty": "Pas encore de relecture. Le relecteur s'exécute automatiquement comme première étape au démarrage du pipeline de cette tâche.",
2440
+ "loadingReview": "Chargement de la relecture…",
2441
+ "triaging": "Tri du rapport de bogue…",
2442
+ "converged": "Le rapport de bogue est clarifié. Le rapport ci-dessous est ce qu'utilise chaque étape d'agent en aval.",
2443
+ "capHeading": "Limite de {max} itérations atteinte avec des constats encore ouverts.",
2444
+ "capDetail": "Faites une ronde de relecture supplémentaire, passez à la phase suivante avec le dernier rapport de bogue clarifié malgré tout, ou arrêtez et réinitialisez la tâche pour retravailler le rapport de bogue et le resoumettre.",
2445
+ "incorporatingStage": "Intégration de vos réponses dans un rapport de bogue clarifié… Vous pouvez fermer ceci, nous vous avertirons seulement si plus d'informations sont nécessaires.",
2446
+ "reReviewingStage": "Nouvelle relecture du rapport de bogue mis à jour… Vous pouvez fermer ceci, nous vous avertirons seulement si plus d'informations sont nécessaires.",
2447
+ "answerLabel": "Réponse",
2448
+ "answerPlaceholder": "Répondez à ce constat…",
2449
+ "refineAnswerPlaceholder": "Affinez votre réponse…",
2450
+ "saveAnswer": "Enregistrer la réponse",
2451
+ "dismissIrrelevant": "Écarter comme non pertinent",
2452
+ "reopen": "Rouvrir",
2453
+ "docHeading": "Rapport de bogue clarifié",
2454
+ "docHeadingDraft": "Rapport de bogue clarifié (brouillon)",
2455
+ "rail": {
2456
+ "findings": "Constats",
2457
+ "open": "Ouverts",
2458
+ "answered": "Répondus",
2459
+ "model": "Modèle"
2460
+ },
2461
+ "proceedNothing": "Continuer (rien à intégrer)",
2462
+ "incorporateAnswers": "Intégrer les réponses",
2463
+ "hint": {
2464
+ "proceed": "Tous les constats sont écartés, passez à la phase suivante sans retravailler.",
2465
+ "incorporate": "Replie vos réponses dans un seul rapport de bogue clarifié, puis le relit automatiquement.",
2466
+ "answerAll": "Répondez à chaque constat ou écartez-le pour continuer."
2467
+ },
2468
+ "reReviewing": "Nouvelle relecture…",
2469
+ "looksGoodReReview": "Ça me va — relire",
2470
+ "redoIncorporation": "Refaire l'intégration",
2471
+ "redoPlaceholder": "Que devrait faire la fusion différemment ?",
2472
+ "redoWithDirection": "Refaire avec cette consigne",
2473
+ "redoHint": "La nouvelle relecture exécute le relecteur sur ce rapport. Si la façon dont il a été fusionné ne vous convient pas, refaites-le plutôt avec un commentaire.",
2474
+ "incorporatedFooter": "Rapport de bogue clarifié, le pipeline continue avec le rapport de gauche.",
2475
+ "severity": {
2476
+ "low": "faible",
2477
+ "medium": "moyenne",
2478
+ "high": "élevée"
2479
+ },
2480
+ "category": {
2481
+ "gap": "lacune",
2482
+ "clarification": "clarification",
2483
+ "assumption": "hypothèse",
2484
+ "risk": "risque",
2485
+ "question": "question"
2486
+ },
2487
+ "itemStatus": {
2488
+ "open": "ouvert",
2489
+ "answered": "répondu",
2490
+ "resolved": "résolu",
2491
+ "dismissed": "écarté",
2492
+ "recommend_requested": "recommandation demandée"
2493
+ },
2494
+ "toast": {
2495
+ "clarifyingTitle": "Clarification du rapport de bogue en arrière-plan",
2496
+ "clarifyingDescription": "Vous êtes de retour sur le tableau, nous vous avertirons seulement si plus d'informations sont nécessaires.",
2497
+ "reReviewSatisfied": "Le relecteur est satisfait — poursuite du pipeline",
2498
+ "reReviewExceeded": "Limite d'itérations atteinte — choisissez comment procéder",
2499
+ "reReviewNewFindings": "aucun nouveau constat auquel réagir | un nouveau constat auquel réagir | {count} nouveaux constats auxquels réagir",
2500
+ "proceeding": "Passage à la phase suivante",
2501
+ "taskReset": "Tâche réinitialisée — modifiez le rapport de bogue et resoumettez-le",
2502
+ "extraRoundGranted": "Une ronde de relecture supplémentaire accordée"
2503
+ },
2504
+ "error": {
2505
+ "saveAnswer": "Impossible d'enregistrer la réponse",
2506
+ "updateFinding": "Impossible de mettre à jour le constat",
2507
+ "incorporate": "Impossible d'intégrer les réponses",
2508
+ "reReview": "Impossible de relire le rapport de bogue",
2509
+ "proceed": "Impossible de continuer",
2510
+ "resolve": "Impossible de résoudre la relecture"
2511
+ }
2512
+ },
2513
+ "consensus": {
2514
+ "titlePrefix": "Consensus",
2515
+ "participantCount": "aucun participant | un participant | {count} participants",
2516
+ "loading": "Chargement de la session de consensus…",
2517
+ "empty": "Aucune session de consensus n'a encore été exécutée pour cette étape.",
2518
+ "failed": "Échec du consensus : {error}",
2519
+ "unknownError": "erreur inconnue",
2520
+ "synthesizedResult": "Résultat synthétisé",
2521
+ "confidence": "confiance {pct}",
2522
+ "panel": "Panel",
2523
+ "topScore": "meilleur {label} {pct}",
2524
+ "expert": "Expert {letter}",
2525
+ "participant": "Participant",
2526
+ "strategy": {
2527
+ "specialistPanel": "Panel de spécialistes",
2528
+ "debate": "Débat",
2529
+ "rankedVoting": "Vote par classement"
2530
+ },
2531
+ "round": {
2532
+ "heading": "Tour {n}",
2533
+ "contributions": "Contributions",
2534
+ "draft": "Brouillons indépendants",
2535
+ "critique": "Critique et révision",
2536
+ "score": "Notation"
2537
+ },
2538
+ "status": {
2539
+ "running": "En cours",
2540
+ "synthesizing": "Synthèse en cours",
2541
+ "done": "Terminé",
2542
+ "failed": "Échoué"
2543
+ }
2544
+ },
2545
+ "brainstorm": {
2546
+ "title": {
2547
+ "architecture": "Brainstorming d'architecture",
2548
+ "requirements": "Brainstorming des exigences"
2549
+ },
2550
+ "subjectNoun": {
2551
+ "architecture": "approche",
2552
+ "requirements": "exigences"
2553
+ },
2554
+ "docNoun": {
2555
+ "architecture": "approche technique",
2556
+ "requirements": "orientation des exigences"
2557
+ },
2558
+ "iteration": "Itération {current} / {max}",
2559
+ "intro": "Un partenaire IA a proposé les options d'{subject} ci-dessous, chacune avec ses compromis. {choose} celles que vous voulez (et orientez-les) et {dismiss} les autres, puis intégrez ; le processus se relance jusqu'à ce que vous convergiez vers une {doc}.",
2560
+ "introChoose": "Choisissez",
2561
+ "introDismiss": "écartez",
2562
+ "empty": "Pas encore de brainstorming. Il s'exécute automatiquement lorsque le pipeline de cette tâche atteint l'étape de brainstorming.",
2563
+ "loading": "Chargement du brainstorming…",
2564
+ "generating": "Génération des options…",
2565
+ "settledBanner": "L'{doc} est arrêtée. Le document ci-dessous est ce qu'utilise l'étape suivante.",
2566
+ "exceeded": {
2567
+ "heading": "Limite de {max} itérations atteinte avec des options encore ouvertes.",
2568
+ "detail": "Faites une ronde de brainstorming supplémentaire, passez à l'étape suivante avec la dernière orientation malgré tout, ou arrêtez et réinitialisez la tâche pour pouvoir la modifier et la resoumettre."
2569
+ },
2570
+ "working": {
2571
+ "incorporating": "Intégration de vos choix dans une {doc}… Vous pouvez fermer cette fenêtre ; nous vous préviendrons uniquement si davantage d'informations sont nécessaires.",
2572
+ "reReviewing": "Relance du brainstorming sur l'orientation mise à jour… Vous pouvez fermer cette fenêtre ; nous vous préviendrons uniquement si davantage d'informations sont nécessaires."
2573
+ },
2574
+ "severity": {
2575
+ "low": "faible",
2576
+ "medium": "moyenne",
2577
+ "high": "élevée"
2578
+ },
2579
+ "category": {
2580
+ "gap": "lacune",
2581
+ "clarification": "clarification",
2582
+ "assumption": "hypothèse",
2583
+ "risk": "risque",
2584
+ "question": "question"
2585
+ },
2586
+ "itemStatus": {
2587
+ "open": "ouverte",
2588
+ "answered": "répondue",
2589
+ "resolved": "résolue",
2590
+ "dismissed": "écartée",
2591
+ "recommend_requested": "recommandation demandée"
2592
+ },
2593
+ "yourChoice": "Votre choix",
2594
+ "replyPlaceholder": {
2595
+ "refine": "Affinez votre choix…",
2596
+ "choose": "Choisissez / orientez cette option…"
2597
+ },
2598
+ "saveChoice": "Enregistrer le choix",
2599
+ "dismiss": "Écarter",
2600
+ "reopen": "Rouvrir",
2601
+ "docDraft": "{doc} (brouillon)",
2602
+ "rail": {
2603
+ "options": "Options",
2604
+ "open": "Ouvertes",
2605
+ "chosen": "Choisies",
2606
+ "model": "Modèle"
2607
+ },
2608
+ "proceedNothing": "Continuer (rien à intégrer)",
2609
+ "incorporateChoices": "Intégrer les choix",
2610
+ "hint": {
2611
+ "allDismissed": "Toutes les options sont écartées — passez à l'étape suivante sans orientation.",
2612
+ "incorporate": "Intègre vos choix dans une seule {doc}, puis relance le brainstorming automatiquement.",
2613
+ "chooseAll": "Choisissez ou écartez chaque option pour continuer."
2614
+ },
2615
+ "reRunning": "Relance en cours…",
2616
+ "reRun": "C'est bon — relancer",
2617
+ "redoIncorporation": "Refaire l'intégration",
2618
+ "redoPlaceholder": "Que devrait faire l'orientation différemment ?",
2619
+ "redoWithDirection": "Refaire avec cette orientation",
2620
+ "mergedHint": "Relancer exécute l'agent sur cette orientation. Si l'intégration ne vous convient pas, refaites-la plutôt avec un commentaire.",
2621
+ "incorporatedFooter": "Orientation arrêtée — le pipeline continue avec le document à gauche.",
2622
+ "toast": {
2623
+ "saveChoiceError": "Impossible d'enregistrer le choix",
2624
+ "updateOptionError": "Impossible de mettre à jour l'option",
2625
+ "incorporateError": "Impossible d'intégrer les choix",
2626
+ "draftingTitle": "Rédaction de l'{doc} en arrière-plan",
2627
+ "draftingDescription": "Vous êtes de retour sur le tableau — nous vous préviendrons uniquement si davantage d'informations sont nécessaires.",
2628
+ "reReviewSettled": "Orientation arrêtée — poursuite du pipeline",
2629
+ "reReviewExceeded": "Limite d'itérations atteinte — choisissez comment procéder",
2630
+ "reReviewNewOptions": "aucune nouvelle option à traiter | une nouvelle option à traiter | {count} nouvelles options à traiter",
2631
+ "reReviewError": "Impossible de relancer le brainstorming",
2632
+ "proceeding": "Passage à l'étape suivante",
2633
+ "proceedError": "Impossible de continuer",
2634
+ "taskReset": "Tâche réinitialisée — modifiez-la et resoumettez-la",
2635
+ "extraRoundGranted": "Une ronde de brainstorming supplémentaire accordée",
2636
+ "resolveError": "Impossible de résoudre le brainstorming"
2637
+ }
2638
+ },
2639
+ "spec": {
2640
+ "title": "Exigences",
2641
+ "loading": "Chargement de la spécification…",
2642
+ "error": "Impossible de charger la spécification. Essayez de rouvrir cette fenêtre.",
2643
+ "overview": "Aperçu",
2644
+ "noFeatureGroups": "Aucun groupe de fonctionnalités",
2645
+ "noSummary": "Aucun résumé du service.",
2646
+ "noGherkinForGroup": "Aucun scénario Gherkin pour ce groupe.",
2647
+ "noRequirements": "Aucune exigence dans ce groupe.",
2648
+ "domainRules": "Règles du domaine",
2649
+ "ruleRationale": " — {rationale}",
2650
+ "moduleHint": "aucun module. Sélectionnez un groupe de fonctionnalités à gauche pour voir ses exigences. | 1 module. Sélectionnez un groupe de fonctionnalités à gauche pour voir ses exigences. | {count} modules. Sélectionnez un groupe de fonctionnalités à gauche pour voir ses exigences.",
2651
+ "moduleHintGherkin": "aucun module. Sélectionnez un groupe de fonctionnalités à gauche pour voir ses exigences ou basculez vers les scénarios Gherkin. | 1 module. Sélectionnez un groupe de fonctionnalités à gauche pour voir ses exigences ou basculez vers les scénarios Gherkin. | {count} modules. Sélectionnez un groupe de fonctionnalités à gauche pour voir ses exigences ou basculez vers les scénarios Gherkin.",
2652
+ "mode": {
2653
+ "structured": "Structuré",
2654
+ "gherkin": "Gherkin",
2655
+ "gherkinTooltip": "Scénarios Gherkin",
2656
+ "gherkinNone": "Aucun scénario sur main pour l'instant"
2657
+ },
2658
+ "empty": {
2659
+ "title": "Pas encore de spécification",
2660
+ "description": "Ce service n'a pas de spécification sur sa branche par défaut. Une spécification est générée à mesure que les tâches exécutent leurs pipelines ; une fois fusionnée sur main, elle apparaîtra ici, avec ses scénarios Gherkin."
2661
+ },
2662
+ "priority": {
2663
+ "must": "Indispensable",
2664
+ "should": "Souhaitable",
2665
+ "could": "Optionnel"
2666
+ },
2667
+ "kind": {
2668
+ "functional": "Fonctionnel",
2669
+ "nonfunctional": "Non fonctionnel",
2670
+ "constraint": "Contrainte"
2671
+ },
2672
+ "acceptance": {
2673
+ "given": "Given",
2674
+ "when": "When",
2675
+ "then": "Then"
2676
+ }
2677
+ },
2678
+ "followUp": {
2679
+ "title": "Suivis",
2680
+ "titleWithBlock": "Suivis — {title}",
2681
+ "subtitle": "Suivis et questions prospectifs soulevés par le Coder. Le pipeline continue une fois chaque élément tranché.",
2682
+ "badge": {
2683
+ "toDecide": "{count} à trancher | {count} à trancher | {count} à trancher",
2684
+ "allDecided": "Tout est tranché"
2685
+ },
2686
+ "empty": {
2687
+ "title": "Aucun suivi pour l'instant.",
2688
+ "hint": "Au fil de son travail, le Coder diffuse ici les points en suspens, les tâches annexes et les questions. Ils apparaissent en direct, vous pouvez donc agir avant même que le Coder ait terminé."
2689
+ },
2690
+ "suggested": "Suggestion :",
2691
+ "viewIssue": "Voir le ticket",
2692
+ "yourAnswer": "Votre réponse :",
2693
+ "answerPlaceholder": "Répondez à cette question ; elle sera intégrée à la prochaine passe du Coder…",
2694
+ "status": {
2695
+ "pending": "Nécessite une décision",
2696
+ "filed": "Enregistré comme ticket",
2697
+ "queued": "Envoyé au Coder",
2698
+ "answered": "Répondu",
2699
+ "dismissed": "Rejeté"
2700
+ },
2701
+ "actions": {
2702
+ "answerAndSend": "Répondre et renvoyer",
2703
+ "dismiss": "Rejeter",
2704
+ "fileAsIssue": "Enregistrer comme ticket",
2705
+ "sendToCoder": "Envoyer au Coder"
2706
+ },
2707
+ "footer": {
2708
+ "summary": "{count} élément · {undecided} non tranché | {count} éléments · {undecided} non tranchés",
2709
+ "loops": "Cycles du Coder utilisés : {loops} / {max}"
2710
+ }
2711
+ },
2712
+ "humanTest": {
2713
+ "title": "Test humain",
2714
+ "titleWithBlock": "Test humain — {title}",
2715
+ "subtitle": "Validez la modification dans un environnement en ligne",
2716
+ "notStarted": "Cette étape n'a pas encore commencé.",
2717
+ "confirm": "C'est bon, continuer",
2718
+ "phase": {
2719
+ "provisioning": "Provisionnement de l'environnement…",
2720
+ "awaitingHuman": "En attente de votre validation",
2721
+ "fixing": "Le réparateur traite vos remarques…",
2722
+ "resolvingConflicts": "Résolution des conflits avec main…",
2723
+ "passed": "Validé"
2724
+ },
2725
+ "envStatus": {
2726
+ "provisioning": "Provisionnement…",
2727
+ "ready": "Prêt",
2728
+ "failed": "Échec",
2729
+ "expired": "Expiré",
2730
+ "tearingDown": "Démantèlement…",
2731
+ "tornDown": "Détruit"
2732
+ },
2733
+ "environment": {
2734
+ "heading": "Environnement éphémère",
2735
+ "noUrl": "Pas encore d'URL.",
2736
+ "expires": "Expire le {date}",
2737
+ "none": "Aucun environnement en ligne."
2738
+ },
2739
+ "actions": {
2740
+ "recreate": "Recréer",
2741
+ "destroy": "Détruire",
2742
+ "pullMain": "Récupérer main et redéployer"
2743
+ },
2744
+ "fix": {
2745
+ "heading": "Un problème ?",
2746
+ "cancel": "Annuler",
2747
+ "requestFix": "Demander une correction",
2748
+ "placeholder": "Décrivez ce qui n'a pas fonctionné : l'agent réparateur reçoit ceci comme contexte, puis l'environnement est reconstruit pour un nouveau test.",
2749
+ "send": "Envoyer au réparateur"
2750
+ },
2751
+ "history": {
2752
+ "heading": "Historique (aucun tour) | Historique (un tour) | Historique ({count} tours)",
2753
+ "fixRequested": "Correction demandée",
2754
+ "pulledMain": "Main récupéré"
2755
+ },
2756
+ "roundOutcome": {
2757
+ "completed": "terminé",
2758
+ "failed": "échoué",
2759
+ "inProgress": "en cours"
2760
+ }
2761
+ },
2762
+ "testing": {
2763
+ "title": "Rapport de tests",
2764
+ "subtitle": "Tests exploratoires et de régression de la modification",
2765
+ "badge": {
2766
+ "greenlit": "Validé",
2767
+ "needsFixes": "Corrections requises"
2768
+ },
2769
+ "fixerAttempts": "Tentatives du correcteur",
2770
+ "fixCount": "{attempts}/{max} correction",
2771
+ "fixingSuffix": "· correction…",
2772
+ "empty": {
2773
+ "title": "Aucun rapport de tests pour l'instant.",
2774
+ "hint": "Le rapport apparaît une fois que le Testeur a terminé une passe. Pendant son exécution, l'étape affiche la progression en direct sur le tableau."
2775
+ },
2776
+ "scenariosOutcomes": "Scénarios et résultats",
2777
+ "otherChecks": "Autres vérifications",
2778
+ "checks": "Vérifications",
2779
+ "screenshotCount": "{count} capture | {count} captures",
2780
+ "checkCount": "{count} vérification | {count} vérifications",
2781
+ "concernCount": "{count} réserve | {count} réserves",
2782
+ "noDiscreteCheck": "Aucune vérification distincte enregistrée pour ce scénario.",
2783
+ "severity": {
2784
+ "critical": "critique",
2785
+ "high": "élevée",
2786
+ "medium": "moyenne",
2787
+ "low": "faible"
2788
+ },
2789
+ "status": {
2790
+ "passed": "Réussi",
2791
+ "failed": "Échoué",
2792
+ "skipped": "Ignoré"
2793
+ },
2794
+ "shot": {
2795
+ "failed": "Échec",
2796
+ "failedToLoad": "Échec du chargement",
2797
+ "loading": "Chargement…"
2798
+ },
2799
+ "screenshotAlt": "{view} (capture d'écran)",
2800
+ "screenshots": "Captures d'écran",
2801
+ "verdict": {
2802
+ "heading": "Verdict",
2803
+ "safe": "Prêt à publier",
2804
+ "withheld": "Retenu"
2805
+ },
2806
+ "outcomes": {
2807
+ "heading": "Résultats",
2808
+ "passed": "Réussis",
2809
+ "failed": "Échoués",
2810
+ "skipped": "Ignorés",
2811
+ "concerns": "Réserves",
2812
+ "blocking": "({count} bloquante) | ({count} bloquantes)"
2813
+ },
2814
+ "environment": "Environnement",
2815
+ "footer": "Les scénarios sont les domaines que le Testeur a choisi d'éprouver (ses scénarios d'acceptation de la spécification). Les résultats et les réserves y sont regroupés par nom."
2816
+ },
2817
+ "visualConfirm": {
2818
+ "ariaLabel": "Confirmation visuelle",
2819
+ "title": "Confirmation visuelle",
2820
+ "titleWithBlock": "Confirmation visuelle — {title}",
2821
+ "subtitle": "Comparez l'interface aux maquettes de référence",
2822
+ "notStarted": "Cette étape n'a pas encore commencé.",
2823
+ "noScreenshots": "Aucune capture d'écran n'a été réalisée. Vérifiez la modification manuellement ou importez une référence ci-dessous.",
2824
+ "noteIssue": "Signaler un problème sur {view}",
2825
+ "noted": "noté",
2826
+ "notePlaceholder": "Qu'est-ce qui ne va pas sur {view} ?",
2827
+ "reviewedManually": "Je l'ai vérifié manuellement",
2828
+ "recapture": "Recapturer",
2829
+ "approve": "Approuver — continuer",
2830
+ "phase": {
2831
+ "awaiting_human": "En attente de votre revue",
2832
+ "fixing": "Le correcteur traite vos remarques…",
2833
+ "approved": "Approuvé"
2834
+ },
2835
+ "outcome": {
2836
+ "completed": "terminé",
2837
+ "failed": "échoué",
2838
+ "inProgress": "en cours"
2839
+ },
2840
+ "lightbox": {
2841
+ "actualLabel": "{view} — réel",
2842
+ "actualAlt": "{view} (réel)",
2843
+ "referenceLabel": "{view} — référence",
2844
+ "referenceAlt": "{view} (référence)"
2845
+ },
2846
+ "upload": {
2847
+ "heading": "Importer une maquette de référence",
2848
+ "viewPlaceholder": "Nom de la vue (ex. login)",
2849
+ "tipReady": "Astuce : déposez une image directement sur une paire ci-dessus pour définir sa référence.",
2850
+ "tipNeedView": "Saisissez d'abord un nom de vue, puis choisissez un fichier. Ou déposez une image directement sur une paire ci-dessus."
2851
+ },
2852
+ "requestFix": {
2853
+ "heading": "Demander une correction",
2854
+ "placeholder": "Tout ce que le Correcteur doit savoir d'autre (en plus des notes par vue ci-dessus).",
2855
+ "foldedHint": "Les notes par vue sont intégrées automatiquement.",
2856
+ "send": "Envoyer au Correcteur"
2857
+ },
2858
+ "history": {
2859
+ "heading": "Historique (aucun tour) | Historique ({count} tour) | Historique ({count} tours)",
2860
+ "fixRequested": "Correction demandée"
2861
+ }
2862
+ },
2863
+ "focus": {
2864
+ "board": "Tableau",
2865
+ "typeSubtitle": "{type} · vue détaillée",
2866
+ "runPipeline": "Lancer le pipeline",
2867
+ "rerunPipeline": "Relancer le pipeline",
2868
+ "noPipelineRunning": "Aucun pipeline en cours",
2869
+ "emptyPipelineHint": "Lancez un pipeline pour visualiser les agents travaillant sur ce bloc.",
2870
+ "description": "Description",
2871
+ "overallProgress": "Progression globale",
2872
+ "dependencies": "Dépendances",
2873
+ "noDependencies": "Aucune"
2327
2874
  }
2328
2875
  }