@courthive/i18n 0.10.3 → 0.12.0

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.
@@ -303,6 +303,30 @@
303
303
  "none": "Aucune — valeur par défaut du moteur",
304
304
  "custom": "Politique personnalisée",
305
305
  "attached": "Associée — {{name}}"
306
+ },
307
+ "pipelineFeatures": {
308
+ "title": "Fonctions du pipeline",
309
+ "intro": "Pour les tests uniquement. Modifie la propagation des résultats dans les tableaux de ce tournoi. Disponible hors connexion, ou pour un tournoi généré (fictif), qui s’exécute alors localement sur cet appareil.",
310
+ "disabled": "Ce tournoi a sa propre politique de score, qui détermine ces options. Les fonctions du pipeline sont désactivées.",
311
+ "perCall": "Appliqué à chaque résultat saisi",
312
+ "policy": "Rattaché à ce tournoi",
313
+ "progressionLocked": "Ce tournoi a sa propre politique de progression, qui détermine ces options.",
314
+ "default": "Par défaut",
315
+ "on": "Activé",
316
+ "off": "Désactivé",
317
+ "badge": "Fonctions du pipeline",
318
+ "badgeTitle": "Les résultats de ce tournoi sont saisis selon des règles de pipeline modifiées (Paramètres → Fonctions du pipeline)",
319
+ "options": {
320
+ "propagateExitStatus": "Propager le statut de sortie (le forfait ou la disqualification suit le perdant)",
321
+ "propagateRetirementAsExit": "Traiter un abandon comme une sortie",
322
+ "allowChangePropagation": "Permettre qu’un vainqueur modifié soit remplacé dans les tours suivants",
323
+ "disableScoreValidation": "Ignorer la validation du score",
324
+ "requireParticipantsForScoring": "Exiger les deux participants avant la saisie du score",
325
+ "doubleExitPropagateBye": "Une double sortie place un BYE à la prochaine position du perdant",
326
+ "autoPlaceQualifiers": "Placer automatiquement les qualifiés à la fin des qualifications",
327
+ "autoReplaceQualifiers": "Remplacer automatiquement un qualifié quand un résultat de qualification change",
328
+ "autoRemoveQualifiers": "Retirer automatiquement un qualifié quand un résultat de qualification est supprimé"
329
+ }
306
330
  }
307
331
  },
308
332
  "round_names": {
@@ -508,7 +532,8 @@
508
532
  "existing": "Enregistrement de tournoi existant",
509
533
  "publishtime": "Heure de publication",
510
534
  "replacelocal": "Remplacer la copie locale ?",
511
- "unpublish": "Dépublier le tournoi ?"
535
+ "unpublish": "Dépublier le tournoi ?",
536
+ "exampleClockUnavailable": "L’exemple {{name}} n’a pas été généré : l’horloge de compétition ne fournit pas d’heure exploitable. Corrigez ou supprimez l’horloge de compétition (dev.setCompetitionClock) et réessayez."
512
537
  },
513
538
  "ddlb": {
514
539
  "singles": "Rang du tournoi en simple :",
@@ -1090,7 +1115,23 @@
1090
1115
  "ended": "Terminé",
1091
1116
  "scored": "Score saisi"
1092
1117
  },
1093
- "clockUnavailable": "L’horloge de compétition ne fournit pas d’heure exploitable, le match n’a donc pas été appelé."
1118
+ "clockUnavailable": "L’horloge de compétition ne fournit pas d’heure exploitable, le match n’a donc pas été appelé.",
1119
+ "presentation": {
1120
+ "layout": "Disposition",
1121
+ "layoutLabel": "Disposition de la programmation",
1122
+ "catalogPlacement": "Position du catalogue",
1123
+ "inspectorPlacement": "Position de l’inspecteur",
1124
+ "catalogLeft": "Catalogue : à gauche",
1125
+ "catalogBottom": "Catalogue : en bas",
1126
+ "inspectorDocked": "Inspecteur : ancré",
1127
+ "inspectorFloating": "Inspecteur : flottant",
1128
+ "previousCards": "Cartes précédentes",
1129
+ "nextCards": "Cartes suivantes"
1130
+ },
1131
+ "collapseAllGroups": "Réduire tous les groupes",
1132
+ "expandAllGroups": "Développer tous les groupes",
1133
+ "live": "EN DIRECT",
1134
+ "liveTooltip": "Score en direct — non officiel tant que le résultat n’est pas saisi"
1094
1135
  },
1095
1136
  "penalties": {
1096
1137
  "AUDIBLE_OBSCENITY": "Obscénité audible",
@@ -1181,8 +1222,6 @@
1181
1222
  "dynamicSets": "Sets dynamiques",
1182
1223
  "dialPad": "Pavé numérique",
1183
1224
  "freeScore": "Score libre",
1184
- "inlineScoring": "Score en ligne",
1185
- "smartComplements": "Compléments intelligents (sets dynamiques uniquement)",
1186
1225
  "storage": "Stockage",
1187
1226
  "saveLocalCopies": "Enregistrer des copies locales",
1188
1227
  "scheduling": "Programmation",
@@ -1202,7 +1241,10 @@
1202
1241
  "schedule2": "Page de programmation 2",
1203
1242
  "options": "Options",
1204
1243
  "officialsBoard": "Tableau des officiels",
1205
- "linkedTournaments": "Tournois liés"
1244
+ "linkedTournaments": "Tournois liés",
1245
+ "themeMode": "Mode",
1246
+ "lightPalette": "Thème du mode clair",
1247
+ "darkPalette": "Thème du mode sombre"
1206
1248
  },
1207
1249
  "editTournamentName": {
1208
1250
  "title": "Modifier le nom du tournoi",
@@ -1383,7 +1425,11 @@
1383
1425
  "offline": "Hors ligne",
1384
1426
  "online": "En ligne",
1385
1427
  "uploadWarning": "Avertissement : cette action remplacera l'enregistrement du tournoi sur le serveur",
1386
- "scopedAccess": "Accès ciblé"
1428
+ "scopedAccess": "Accès ciblé",
1429
+ "saveConflict": "Le serveur possède une version plus récente de ce tournoi. Rien n’a été enregistré et votre copie locale a été conservée. Charger la copie du serveur la remplace.",
1430
+ "saveExists": "Ce tournoi existe déjà sur le serveur. Rien n’a été enregistré et votre copie locale a été conservée.",
1431
+ "saveUncertain": "Impossible de confirmer que l’enregistrement a atteint le serveur. Votre copie locale a été conservée ; réessayez.",
1432
+ "loadServerCopy": "Charger la copie du serveur"
1387
1433
  },
1388
1434
  "inviteUser": {
1389
1435
  "title": "Inviter un utilisateur",
@@ -1495,29 +1541,12 @@
1495
1541
  "warning": "La structure sera supprimée !"
1496
1542
  },
1497
1543
  "scoring": {
1498
- "title": "Saisie du score",
1499
- "cancel": "Annuler",
1500
- "clear": "Effacer",
1501
- "submit": "Valider le score",
1502
- "format": "Format",
1503
- "irregularEnding": "Fin irrégulière",
1504
- "winner": "Vainqueur",
1505
1544
  "retired": "Abandon",
1506
1545
  "walkover": "Forfait",
1507
1546
  "defaulted": "Disqualification",
1508
- "validScore": "Score valide",
1509
- "scoreIncomplete": "Score incomplet",
1510
- "invalidScore": "Score invalide",
1511
- "scoreTips": "Conseils de saisie :",
1512
- "setScores": "Scores de sets :",
1513
- "tiebreaks": "Tie-breaks :",
1514
- "matchTiebreaks": "Super tie-breaks :",
1515
- "irregularEndings": "Fins irrégulières :",
1516
1547
  "abandoned": "Abandonné",
1517
1548
  "cancelled": "Annulé",
1518
1549
  "incomplete": "Incomplet",
1519
- "reasonCode": "Motif",
1520
- "noReasonCode": "Aucun motif indiqué",
1521
1550
  "deadRubber": "Match sans enjeu",
1522
1551
  "challenged": "Défi",
1523
1552
  "statusUnavailable": "{{status}} n’est pas disponible pour ce match",
@@ -1525,6 +1554,70 @@
1525
1554
  "inProgress": "En cours",
1526
1555
  "awaitingResult": "En attente du résultat"
1527
1556
  },
1557
+ "scoreEntry": {
1558
+ "title": "Saisie du score",
1559
+ "submit": "Valider",
1560
+ "clear": "Effacer",
1561
+ "cancel": "Annuler",
1562
+ "player": "JOUEUR",
1563
+ "formatEditTitle": "Modifier le format de jeu",
1564
+ "formatEditAria": "Format de jeu {{format}} — modifier",
1565
+ "approachDynamicSets": "Sets dynamiques",
1566
+ "approachFreeScore": "Score libre",
1567
+ "approachDialPad": "Pavé numérique",
1568
+ "other": "Autre…",
1569
+ "otherBase": "Autre",
1570
+ "endedEarlyTitle": "Comment ce match s’est-il terminé pour ce joueur ?",
1571
+ "endedEarlyAria": "{{name}} — fin anticipée",
1572
+ "sidePanelHead": "Que s’est-il passé pour {{name}} ?",
1573
+ "hintWalkover": "N’a pas joué du tout — aucun score",
1574
+ "hintRetired": "A commencé sans pouvoir finir — score conservé",
1575
+ "hintDefaulted": "Exclu par l’arbitre",
1576
+ "reason": "MOTIF",
1577
+ "bothSidesOut": "{{name}} ne s’est pas présenté non plus — personne ne se qualifie",
1578
+ "endingNeedsScore": "Pas encore de score — {{status}} conserve le score joué",
1579
+ "endingAfterCompleteScore": "Le score est complet — {{status}} ne peut pas suivre",
1580
+ "doubleWalkover": "Double forfait",
1581
+ "doubleDefault": "Double disqualification",
1582
+ "doubleExitWarning": "{{ending}} — aucun des deux ne se qualifie, et un forfait se propage au tour suivant.",
1583
+ "defeated": "{{winner}} bat {{loser}} {{score}}",
1584
+ "advancesTo": "se qualifie pour {{round}}",
1585
+ "notFinished": "{{score}} — pas un résultat final",
1586
+ "noResultYet": "Aucun résultat saisi",
1587
+ "neitherAdvances": "{{status}} — aucun des deux ne se qualifie",
1588
+ "sideAdvances": "{{status}} — {{name}} se qualifie",
1589
+ "noScoreRecorded": "aucun score enregistré",
1590
+ "partScoreCleared": "{{status}} — le score partiel {{score}} a été effacé",
1591
+ "nobodyAdvances": "personne ne se qualifie",
1592
+ "scoreRecorded": "{{status}} — {{score}} enregistré",
1593
+ "noWinnerYet": "{{status}} — pas encore de vainqueur",
1594
+ "notReadyToSubmit": "pas prêt à être validé",
1595
+ "clearedHeadline": "Le résultat enregistré sera supprimé — validez pour l’effacer.",
1596
+ "clearRefused": "Saisissez un score de remplacement : un match ultérieur dépend de ce résultat.",
1597
+ "setPrefix": "Set {{number}} :",
1598
+ "sideFallback": "côté {{side}}",
1599
+ "tiebreakContradiction": "{{set}} {{name}} a gagné ce set, il doit donc gagner le tie-break",
1600
+ "setHasNoScore": "{{set}} n’a pas de score",
1601
+ "setNotFinished": "{{set}} n’est pas terminé",
1602
+ "setHeading": "Set {{number}}",
1603
+ "tiebreakHeading": "TB",
1604
+ "editSet": "Cliquer pour modifier ce set",
1605
+ "gamesAria": "Set {{number}}, côté {{side}}, jeux",
1606
+ "tiebreakAria": "Set {{number}}, tie-break, côté {{side}}, points",
1607
+ "enteredSetAria": "Set {{number}}, côté {{side}} : {{entered}} — modifier",
1608
+ "gamesEntered": "{{games}} jeux",
1609
+ "gamesAndTiebreakEntered": "{{games}} jeux, tie-break {{points}}",
1610
+ "tiebreakSpoken": "tie-break {{points}}",
1611
+ "smartComplements": "Auto",
1612
+ "smartComplementsExplain": "Compléments intelligents — remplit le score adverse à partir de celui que vous saisissez",
1613
+ "typeTheScore": "SAISISSEZ LE SCORE",
1614
+ "notAScore": "Score non autorisé par ce format",
1615
+ "completeMatch": "Un match complet en {{format}}",
1616
+ "tiebreak": "Tie-break",
1617
+ "backspace": "Retour",
1618
+ "readoutAria": "Côté {{side}} : {{score}}",
1619
+ "readoutNoScore": "Côté {{side}} : aucun score"
1620
+ },
1528
1621
  "generateTeams": {
1529
1622
  "title": "Générer des équipes fictives",
1530
1623
  "gender": "Genre",
@@ -1933,7 +2026,8 @@
1933
2026
  "providerLabel": "Fournisseur",
1934
2027
  "continue": "Continuer",
1935
2028
  "signOut": "Se déconnecter",
1936
- "failed": "Impossible d’ouvrir ce fournisseur"
2029
+ "failed": "Impossible d’ouvrir ce fournisseur",
2030
+ "consoleIntro": "Votre compte appartient à plusieurs fournisseurs. Choisissez celui pour lequel vous travaillez maintenant ; vous pourrez en changer plus tard."
1937
2031
  },
1938
2032
  "exitBeforeArrival": {
1939
2033
  "title": "Forfait ou disqualification",
@@ -2140,14 +2234,22 @@
2140
2234
  "invalidStartTime": "Heure de début non enregistrée : elle doit précéder l’heure de fin déjà enregistrée.",
2141
2235
  "invalidTime": "Cette heure n’a pas pu être enregistrée.",
2142
2236
  "courtNotFound": "Ce court n’existe plus. Actualisez le tournoi et réessayez.",
2143
- "notSaved": "La modification de la programmation n’a pas été enregistrée : {{reason}}"
2237
+ "notSaved": "La modification de la programmation n’a pas été enregistrée : {{reason}}",
2238
+ "beforePlayedSource": "Non programmé : il dépend de {{matchUp}}, déjà joué ({{when}}). Déplacez d’abord ce match si son horaire est erroné.",
2239
+ "afterDependent": "Non déplacé : un match joué ne peut pas avoir lieu après {{matchUp}} ({{when}}), qui en dépend.",
2240
+ "moreBlocking": "(+{{count}} de plus)",
2241
+ "roundLabel": "un match du tour {{roundNumber}}"
2144
2242
  },
2145
2243
  "tournamentsTruncated": "Affichage des {{loaded}} premiers tournois sur {{total}}. Filtrez ou recherchez pour affiner la liste.",
2146
2244
  "tournamentSearchFailed": "La recherche de tournois est indisponible pour le moment. Seuls les tournois déjà chargés sont affichés.",
2147
2245
  "statusOutOfScope": "Ce statut n’est pas disponible pour ce match",
2148
2246
  "clearRefused": "Ce résultat ne peut pas être effacé : un match ultérieur en dépend. Effacez d’abord ce match.",
2149
2247
  "scoreDiscardedByFormat": "Le passage au format {{matchUpFormat}} a supprimé {{count}} set(s) : {{sets}}",
2150
- "offlineChangeRejected": "Une modification effectuée hors ligne a été rejetée par le serveur"
2248
+ "offlineChangeRejected": "Une modification effectuée hors ligne a été rejetée par le serveur",
2249
+ "scoreRefused": "Ce match ne peut pas être noté ni corrigé maintenant : le tableau ne propose pas de saisie de score pour lui.",
2250
+ "durableChangeNeedsReview": "Une modification antérieure doit être vérifiée. Actualisez le tournoi avant de continuer.",
2251
+ "durableCommandNotStored": "La commande durable n’a pas pu être stockée pour cette session",
2252
+ "durableQueueFailed": "La modification n’a pas pu être mise en file d’attente de façon durable ; gardez cette page ouverte"
2151
2253
  },
2152
2254
  "loginMenu": {
2153
2255
  "authorization": "Autorisation",
@@ -2882,7 +2984,14 @@
2882
2984
  },
2883
2985
  "inviteFailed": "Impossible d’envoyer l’invitation. Veuillez réessayer.",
2884
2986
  "manageAsProvisioner": "Gérer en tant que ce provisionneur",
2885
- "nowManagingProvisioner": "Agit désormais en tant que « {{name}} »"
2987
+ "nowManagingProvisioner": "Agit désormais en tant que « {{name}} »",
2988
+ "associateExistingUser": "Associer un utilisateur existant",
2989
+ "associateExistingUserHint": "Ajoutez un utilisateur qui possède déjà un compte. Seuls les utilisateurs que vous pouvez gérer peuvent être trouvés.",
2990
+ "userAssociated": "Utilisateur associé au fournisseur",
2991
+ "userAlreadyAssociated": "L’utilisateur était déjà associé ; rôle mis à jour",
2992
+ "associateUserNotFound": "Aucun utilisateur que vous pouvez ajouter n’a cet e-mail. Créez plutôt l’utilisateur.",
2993
+ "associateEmailAmbiguous": "Plusieurs comptes utilisent cet e-mail. Un super administrateur doit résoudre le problème.",
2994
+ "lastProviderAdmin": "Un fournisseur doit conserver au moins un administrateur du fournisseur"
2886
2995
  },
2887
2996
  "formatWizard": {
2888
2997
  "title": "Assistant de format",
@@ -3010,7 +3119,14 @@
3010
3119
  "md": "Moyenne (16 px)",
3011
3120
  "lg": "Grande (18 px)",
3012
3121
  "xl": "Très grande (20 px)"
3013
- }
3122
+ },
3123
+ "select": "Thème",
3124
+ "mode": "Mode",
3125
+ "light": "Clair",
3126
+ "dark": "Sombre",
3127
+ "system": "Système",
3128
+ "lightPalette": "Thème du mode clair",
3129
+ "darkPalette": "Thème du mode sombre"
3014
3130
  },
3015
3131
  "language": {
3016
3132
  "select": "Sélectionner la langue"
@@ -3632,13 +3748,19 @@
3632
3748
  "tooltip": {
3633
3749
  "liveTracker": "Score reporté via un suiveur en direct",
3634
3750
  "unconfirmed": "Score délégué non confirmé — confirmez pour le rendre officiel",
3635
- "unconfirmedAria": "Score délégué non confirmé en attente de confirmation"
3751
+ "unconfirmedAria": "Score délégué non confirmé en attente de confirmation",
3752
+ "liveScore": "Score en direct d’un suiveur — non officiel tant que le résultat n’est pas saisi",
3753
+ "crowdSessions_one": "{{count}} marqueur du public sur ce match — cliquez pour examiner",
3754
+ "crowdSessions_other": "{{count}} marqueurs du public sur ce match — cliquez pour examiner",
3755
+ "crowdTrusted_one": "{{count}} marqueur du public, promu — son score est affiché en direct. Cliquez pour examiner",
3756
+ "crowdTrusted_other": "{{count}} marqueurs du public, dont un promu — son score est affiché en direct. Cliquez pour examiner"
3636
3757
  },
3637
3758
  "accept": "Accepter",
3638
3759
  "nominateScorekeeper": "Désigner un marqueur",
3639
3760
  "removeScorekeeper": "Retirer le marqueur désigné",
3640
3761
  "approveScorekeeper": "Approuver comme marqueur",
3641
- "removeScorekeeperApproval": "Retirer l’approbation du marqueur"
3762
+ "removeScorekeeperApproval": "Retirer l’approbation du marqueur",
3763
+ "live": "EN DIRECT"
3642
3764
  },
3643
3765
  "providerSetup": {
3644
3766
  "wizardTitle": "Configurer votre fournisseur",
@@ -4240,7 +4362,13 @@
4240
4362
  "saved": "Profil enregistré.",
4241
4363
  "noRounds": "Aucun tour dans le plan du jour. Faites d’abord glisser des tours du catalogue vers les couloirs de sites.",
4242
4364
  "failed": "Échec de la programmation. Consultez la console pour plus de détails.",
4243
- "gridFailed": "Échec de la programmation de la grille."
4365
+ "gridFailed": "Échec de la programmation de la grille.",
4366
+ "repairTitle": "Le profil de programmation doit être réparé",
4367
+ "repairIntro": "Le profil de programmation cite {{count}} tour(s) dont le site, l’épreuve ou le tableau n’existe plus. Rien n’a été programmé. Réparer le profil (supprimer ces tours) et appliquer à nouveau ?",
4368
+ "repair": "Réparer le profil",
4369
+ "repaired": "Profil réparé. Appliquez à nouveau pour programmer.",
4370
+ "repairFailed": "La réparation du profil a échoué.",
4371
+ "planGuardRefused": "Rien n’a été programmé : le plan plaçait {{count}} match(s) avant des matchs déjà joués. Veuillez signaler ce problème."
4244
4372
  },
4245
4373
  "topology": {
4246
4374
  "clearCanvas": "Effacer le canevas",
@@ -4353,7 +4481,12 @@
4353
4481
  "tournamentChat": "Messagerie du tournoi",
4354
4482
  "noRecentActivity": "Aucune activité de messagerie sur la période récente.",
4355
4483
  "monitorTitle": "Suivi des messages — tous les tournois",
4356
- "selectGroup": "Sélectionnez une pastille de groupe pour répondre dans ce tournoi"
4484
+ "selectGroup": "Sélectionnez une pastille de groupe pour répondre dans ce tournoi",
4485
+ "sending": "Envoi",
4486
+ "delivered": "Distribué",
4487
+ "notDelivered": "Non distribué",
4488
+ "retry": "Réessayer",
4489
+ "clickToRetry": "Cliquez pour l’envoyer à nouveau."
4357
4490
  },
4358
4491
  "drawActions": {
4359
4492
  "pagePlayoff": "Barrage en page",
@@ -4518,7 +4651,11 @@
4518
4651
  "scheduleResults": {
4519
4652
  "title": "Résultats de la programmation",
4520
4653
  "noActivity": "Aucune activité du planificateur à cette date.",
4521
- "noPerDate": "Le planificateur a terminé mais n’a signalé aucune activité par date."
4654
+ "noPerDate": "Le planificateur a terminé mais n’a signalé aucune activité par date.",
4655
+ "noFormat": "Aucun format",
4656
+ "playedOrder": "Reporté — ordre de jeu",
4657
+ "playedOrderDetail": "{{matchUp}} déjà joué {{when}}",
4658
+ "dailyLimitWarnings": "Placés au-delà de la limite quotidienne"
4522
4659
  },
4523
4660
  "schedulingTab": {
4524
4661
  "availability": "Disponibilité",
@@ -4537,8 +4674,7 @@
4537
4674
  "schedulePlan": "Plan de programmation",
4538
4675
  "desktopNotifications": " Notifications bureau",
4539
4676
  "serverUrl": "URL du serveur",
4540
- "workOffline": " Travailler hors ligne",
4541
- "scoreEntryDialog": "Nouvelle fenêtre de saisie du score"
4677
+ "workOffline": " Travailler hors ligne"
4542
4678
  },
4543
4679
  "venueDetail": {
4544
4680
  "noCourts": "Aucun court sur ce site pour le moment.",
@@ -4567,7 +4703,9 @@
4567
4703
  "modify": "Modifier ?",
4568
4704
  "impersonate": "Prendre l’identité ?",
4569
4705
  "rejected": "Le serveur a refusé la modification",
4570
- "sessionExpired": "Session expirée"
4706
+ "sessionExpired": "Session expirée",
4707
+ "tournamentChangedBeforeApply": "Le tournoi a changé avant que la modification puisse être appliquée",
4708
+ "tournamentChangedAwaitingAck": "Le tournoi a changé en attendant l’accusé de réception"
4571
4709
  },
4572
4710
  "queueService": {
4573
4711
  "saved": "Enregistré"
@@ -4633,5 +4771,67 @@
4633
4771
  "standings": "Classement individuel",
4634
4772
  "unresolved": "Résultats non résolus : {{count}}"
4635
4773
  }
4774
+ },
4775
+ "demoClock": {
4776
+ "title": "Horloge de démo",
4777
+ "launch": "Ouvrir l’horloge de démo",
4778
+ "cannotStart": "L’horloge de démo n’a pas pu démarrer : ce tournoi a besoin d’une date de début et d’un fuseau horaire de site.",
4779
+ "launchHint": "Charge un nouveau Scheduling Lab avec le parcours Garman, Pro et combiné et son horloge de démo. L’horloge ne fonctionne que dans un Scheduling Lab : tant qu’il est ouvert, Ouvrir l’horloge de démo la fait réapparaître. Disponible uniquement hors connexion.",
4780
+ "collapse": "Masquer les contrôles",
4781
+ "expand": "Contrôles de l’horloge",
4782
+ "exit": "Quitter l’horloge",
4783
+ "time": "Heure de démo",
4784
+ "date": "Date de démo",
4785
+ "setTime": "Heure réelle de la démo",
4786
+ "set": "Régler l’heure",
4787
+ "paused": "En pause",
4788
+ "step": "+{{minutes}} min",
4789
+ "forwardOnly": "Choisissez une heure valide égale ou postérieure à l’heure de démo actuelle. Les appels et les résultats ne peuvent pas être rembobinés.",
4790
+ "boundary": "Prochain : {{kind}} · {{time}}",
4791
+ "noBoundary": "Aucune échéance horaire à venir",
4792
+ "boundaries": {
4793
+ "scheduled": "début programmé",
4794
+ "blockStart": "début du créneau du court",
4795
+ "blockEnd": "fin du créneau du court"
4796
+ },
4797
+ "openDay": "Ouvrir la journée",
4798
+ "garman": "Appliquer les horaires Garman",
4799
+ "pro": "Appliquer la grille Pro",
4800
+ "saveFirst": "Enregistrez ou abandonnez les modifications de programmation avant de lancer un planificateur.",
4801
+ "notOpened": "La démo de programmation a été enregistrée mais pas ouverte. Ouvrez-la depuis la liste des tournois.",
4802
+ "failed": "La programmation a échoué. Vérifiez le programme et réessayez.",
4803
+ "applied": "Planificateur appliqué. Examinez la journée dans la grille pour comparer le résultat.",
4804
+ "hint": "Le temps est en pause. Lancez, notez et terminez les matchs avec les contrôles habituels du tournoi. Ouvrir une journée ultérieure avance à 09:55 ; les journées précédentes peuvent être consultées sans rembobiner l’historique. Quitter rétablit l’heure réelle.",
4805
+ "days": {
4806
+ "day1": {
4807
+ "title": "Jour 1 · Garman",
4808
+ "description": "Appliquez les horaires au simple. Examinez les heures de début issues de la politique, les temps de récupération et la disponibilité des courts."
4809
+ },
4810
+ "day2": {
4811
+ "title": "Jour 2 · Pro",
4812
+ "description": "Appliquez la grille au double. Examinez l’ordre des courts sans heures programmées. Utilisez les contrôles habituels de la grille pour les annotations « pas avant » et « suivi de »."
4813
+ },
4814
+ "day3": {
4815
+ "title": "Jour 3 · Ensemble",
4816
+ "description": "Appliquez d’abord les horaires Garman, puis la grille Pro aux mêmes tableaux de simple et de double. Vérifiez que les horaires sont conservés lorsque les positions de court sont ajoutées."
4817
+ }
4818
+ },
4819
+ "shortLabel": "Heure de démo",
4820
+ "bottomBar": "Barre inférieure de l’horloge de démo",
4821
+ "mode": "Mode démo",
4822
+ "modes": {
4823
+ "clock": "Horloge libre",
4824
+ "script": "Démo guidée de programmation"
4825
+ },
4826
+ "loadScript": "Charger la démo guidée de programmation",
4827
+ "loadFailed": "Impossible de charger la démo de programmation. Veuillez réessayer.",
4828
+ "freeHint": "Le temps est en pause. Parcourez ce tournoi avec les contrôles habituels, avancez le temps et enregistrez éventuellement vos actions. Quitter rétablit l’heure réelle.",
4829
+ "startCapture": "Démarrer l’enregistrement",
4830
+ "stopCapture": "Arrêter l’enregistrement",
4831
+ "exportCapture": "Exporter l’enregistrement",
4832
+ "capturing": "Enregistrement · {{count}} étapes",
4833
+ "captureReady": "Enregistrement prêt · {{count}} étapes",
4834
+ "captureLimit": "Enregistrement arrêté à la limite de capture. Exportez les étapes enregistrées.",
4835
+ "captureFailed": "Impossible de démarrer l’enregistrement. Vérifiez que le contrôle de l’horloge de démo est actif."
4636
4836
  }
4637
4837
  }