Écrans bénévole et référent redessinés, messages aux bénévoles
ci-cd / build-backend (push) Successful in 29s
ci-cd / build-frontend (push) Successful in 21s
ci-cd / deploy (push) Successful in 12s

Étape 55 : écrans /mobile-benevole et /mobile-referent d'après la maquette
(design/Planning bénévole mobile) — créneau en cours ou prochain mis en
avant, planning par journée de festival avec frise horaire, compteurs et
pointage du référent par créneau.

Étape 56 : message de l'organisation (Edition.volunteer_message, onglet
« Message aux bénévoles ») et message de chaque poste (Position.message,
saisi par le référent), migration 0029, affichés sur l'écran bénévole.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
AdamThomas
2026-10-27 23:17:14 +01:00
co-authored by Claude Opus 5.5
parent 4a3f93e137
commit 16d8fb44a7
21 changed files with 1305 additions and 274 deletions
+60 -11
View File
@@ -5,7 +5,6 @@
"action.remove": "Retirer",
"action.add": "Ajouter",
"app.loading": "Chargement…",
"common.now": "MAINTENANT",
"app.error.generic": "Une erreur est survenue",
"app.error.reference": "Référence à communiquer : {id}",
"error.generic": "Erreur inattendue",
@@ -120,20 +119,63 @@
"volunteers.empty": "Aucun bénévole ne correspond à ce filtre — bonne nouvelle. Repassez sur « TOUS » pour revoir l'ensemble de l'équipe.",
"volunteers.noData": "Aucun bénévole pour le moment. Ajoutez-les dans Configuration → « Bénévoles & import ».",
"volunteers.footnote": "Oublié = aucune affectation.",
"mobileVol.kicker": "MON PLANNING BÉNÉVOLE",
"mobileVol.greeting": "SALUT {name}",
"mobileVol.slots": "{count} CRÉNEAUX",
"mobileVol.hours": "{count} HEURES",
"mobileVol.location": "📍 {location}",
"mobileVol.referent": "👤 Responsable : {name}",
"mobileVol.phone": "📞 {phone}",
"mobileVol.greeting": "Salut {name}",
"mobileVol.summary.one": "{count} créneau · {duration} sur {days} jour",
"mobileVol.summary.other": "{count} créneaux · {duration} sur {days} jour(s)",
"mobileVol.summary.none": "Pas encore de créneau.",
"mobileVol.featured.now": "● EN COURS",
"mobileVol.featured.next": "PROCHAIN CRÉNEAU",
"mobileVol.featured.overlap": "⚠ Tu es aussi sur {position} de {start} à {end}. Vérifie avec la coordination.",
"mobileVol.featured.referent": "TON RÉFÉRENT",
"mobileVol.featured.call": "APPELER",
"mobileVol.allDone": "Festival terminé. Merci {name}, tu as assuré !",
"mobileVol.day.one": "{count} créneau · {duration}",
"mobileVol.day.other": "{count} créneaux · {duration}",
"mobileVol.slot.done": "TERMINÉ",
"mobileVol.slot.now": "EN COURS",
"mobileVol.slot.referent": " · réf. {name}",
"mobileVol.slot.overlap": "⚠ Chevauche {position} de {start} à {end}. Vérifie avec la coordination où tu dois être.",
"slot.duration.hours": "{h} h",
"slot.duration.hoursMinutes": "{h} h {m}",
"slot.countdown.endsAt": "FIN À {time}",
"slot.countdown.minutes": "DANS {count} MIN",
"slot.countdown.in": "DANS {duration}",
"slot.countdown.days": "DANS {count} J",
"mobileVol.orgMessage.title": "MESSAGE DE L'ORGANISATION",
"mobileVol.orgMessage.signature": "Coordination · {when}",
"message.save": "Enregistrer",
"message.remove": "Retirer le message",
"message.saving": "Enregistrement…",
"message.saved": "✓ Enregistré",
"message.updatedAt": "Publié {when}",
"message.length": "{count} / {max} caractères",
"message.date.today": "aujourd'hui {time}",
"message.date.yesterday": "hier {time}",
"message.date.other": "{day} · {time}",
"mobileVol.noSlots": "Aucun créneau pour l'instant. La coordination t'affectera bientôt.",
"mobileVol.noAccount": "Ce compte n'est rattaché à aucun bénévole. Contactez la coordination.",
"mobileLead.kicker": "RÉFÉRENT DE POSTE",
"mobileLead.positionsCount": "{count} POSTE(S) DONT VOUS ÊTES RÉFÉRENT",
"mobileLead.kicker": "Ton équipe",
"mobileLead.kickerNamed": "{name} · ton équipe",
"mobileLead.status.done": "terminé",
"mobileLead.status.now": "en cours",
"mobileLead.status.next": "à venir",
"mobileLead.count.present": "PRÉSENTS",
"mobileLead.count.waiting": "ATTENDUS",
"mobileLead.count.absent": "ABSENTS",
"mobileLead.absentAlert.one": "⚠ 1 absent sur le créneau — il manque du monde",
"mobileLead.absentAlert.other": "⚠ {count} absents sur le créneau — il manque du monde",
"mobileLead.roll": "POINTAGE · {count} BÉNÉVOLE(S)",
"mobileLead.when.now": "Créneau en cours",
"mobileLead.when.next": "Début {time}",
"mobileLead.when.done": "Créneau terminé",
"mobileLead.call": "APPEL",
"mobileLead.callLabel": "Appeler {name}",
"mobileLead.message.title": "MESSAGE À TON ÉQUIPE",
"mobileLead.message.audience": "{count} bénévole(s) le verront",
"mobileLead.message.help": "Consignes du poste (tenue, matériel, point de rendez-vous…), affichées sur l'écran de chaque bénévole affecté au poste.",
"mobileLead.message.placeholder": "Ex. Gilet jaune fourni à la base bénévoles. Rendez-vous 10 min avant le début.",
"mobileLead.noPosition": "Vous n'êtes actuellement référent d'aucun poste.",
"mobileLead.noShift": "Aucun créneau sur ce poste.",
"mobileLead.present": "{present}/{total} POINTÉS PRÉSENTS",
"mobileLead.badgePresent": "✓ PRÉSENT",
"mobileLead.badgeAbsent": "✕ ABSENT",
"mobileLead.markPresent": "PRÉSENT",
@@ -143,6 +185,13 @@
"config.reserved": "RÉSERVÉ À LA COORDINATION",
"config.tab.grid": "POSTES & CRÉNEAUX",
"config.tab.volunteers": "BÉNÉVOLES & IMPORT",
"config.tab.message": "MESSAGE AUX BÉNÉVOLES",
"config.message.orgTitle": "Message de l'organisation",
"config.message.orgHelp": "Le même pour tous les bénévoles, affiché en bas de leur écran planning. Laissez vide pour ne rien afficher.",
"config.message.orgPlaceholder": "Ex. Badges et t-shirts à récupérer à l'accueil bénévoles dès 17:00.",
"config.message.positionsTitle": "Messages des postes",
"config.message.positionsHelp": "Saisis par chaque référent depuis son écran et montrés aux bénévoles du poste. Vous pouvez aussi les modifier ici.",
"config.message.none": "Pas de message",
"config.tab.mail": "MESSAGES",
"config.tab.rules": "RÈGLES & ÉDITION",
"config.grid.positionsHeader": "POSTES · {count} CRÉNEAUX",