SPB Git

Repository Public

admin-agenda.ts 21.9 KB 150 lines typescript

1const fr = {2  // ── Commun ──3  loading: "Chargement…", retry: "Réessayer", loadError: "Impossible de charger ces données.", staleData: "La dernière actualisation a échoué : les données affichées peuvent être périmées.",4  cancel: "Annuler", close: "Fermer", save: "Enregistrer", delete: "Supprimer", back: "Retour", optional: "facultatif", view: "Voir", handle: "Traiter",5  today: "Aujourd'hui", prev: "Précédent", next: "Suivant", date: "Date", type: "Type de rendez-vous", reason: "Motif", history: "Historique", historyEmpty: "Aucun événement enregistré.",6  actorAdmin: "vous", actorVisitor: "visiteur", actorSystem: "système",7  st_pending: "En attente", st_approved: "Approuvée", st_declined: "Refusée", st_expired: "Expirée", st_cancelled: "Annulé", st_reschedule_requested: "Proposition envoyée", st_confirmed: "Confirmé",8  loc_video: "Visioconférence", loc_phone: "Téléphone", loc_in_person: "En personne",9  h_request_submitted: "Demande soumise", h_request_approved: "Demande approuvée", h_request_declined: "Demande refusée", h_request_proposed: "Autre moment proposé", h_request_note: "Note interne modifiée",10  h_request_expired: "Demande expirée", h_visitor_cancelled: "Annulation par le visiteur", h_visitor_accepted_proposal: "Proposition acceptée par le visiteur", h_visitor_reschedule: "Changement d'horaire demandé par le visiteur",11  h_booking_created: "Rendez-vous créé par vous", h_booking_cancelled: "Rendez-vous annulé", h_booking_rescheduled: "Rendez-vous déplacé", h_booking_auto_confirmed: "Confirmation automatique", h_links_revoked: "Liens du visiteur révoqués",12  ms_sent: "Envoyé", ms_queued: "En file", ms_sending: "En cours d'envoi", ms_failed: "Échec", ms_dead: "Abandonné", ms_unconfigured: "Non configuré", ms_cancelled: "Sans objet",13  // ── Choix d'un créneau ──14  pickDate: "Jour", prevDay: "Jour précédent", nextDay: "Jour suivant", freeSlots: "Créneaux libres", loadingSlots: "Calcul des créneaux…",15  noFreeSlots: "Aucun créneau libre ce jour-là.", noTypeSlots: "Aucun type associé : indiquez une heure ci-dessous.", customTime: "Ou une heure précise",16  customTimeHint: "Hors des créneaux proposés. Un moment déjà occupé sera refusé par le serveur.",17  // ── Demandes ──18  reqTitle: "Demandes", reqLead: "Une demande n'est pas un rendez-vous : rien n'est confirmé tant que vous ne l'avez pas approuvée. La disponibilité est revérifiée au moment de l'approbation.",19  filterLabel: "Filtres", fOpen: "En attente", fAll: "Toutes", fApproved: "Approuvées", fDeclined: "Refusées", fClosed: "Expirées et annulées",20  selectAll: "Tout sélectionner", selectOne: "Sélectionner la demande de {name}", declineSelection: "Refuser la sélection ({n})",21  reqEmptyOpen: "Aucune demande en attente", reqEmptyOpenLead: "Les nouvelles demandes de rendez-vous apparaîtront ici.", reqEmpty: "Aucune demande dans cette vue",22  contactErased: "Contact supprimé", rescheduleBadge: "Changement d'horaire", currentTime: "Horaire actuel", requestedTime: "Horaire demandé", newTime: "Nouvel horaire",23  visitorSees: "Pour le visiteur : {time} ({zone})", holdsUntil: "Retient ce créneau jusqu'au {time}.", holdsNot: "Ne retient pas le créneau : d'autres personnes peuvent demander le même moment.",24  proposalSent: "Vous avez proposé :", proposalExpires: "Sans réponse, la proposition expire le {time}.",25  conflictTaken: "Ce moment n'est plus libre (autre rendez-vous, blocage ou calendrier externe). L'approbation est impossible : proposez un autre moment ou refusez.",26  conflictPast: "Ce moment est passé : la demande ne peut plus être approuvée. Proposez un autre moment ou refusez.",27  conflictClosed: "Ce moment est maintenant hors de vos heures d'ouverture. L'approbation vous demandera une confirmation.",28  conflictOther: "Ce moment ne respecte plus les règles du type de rendez-vous ; vous pouvez tout de même l'approuver.",29  conflictTakenShort: "Créneau désormais occupé", conflictPastShort: "Moment passé",30  staleNote: "La confirmation automatique a été retenue parce qu'un calendrier externe n'était pas à jour. Vérifiez votre agenda avant d'approuver.",31  declineMsgSent: "Message envoyé :", approve: "Approuver", approveMove: "Approuver le changement", approveFor: "Approuver la demande de {name}", propose: "Proposer un autre moment", proposeAgain: "Proposer un autre moment", decline: "Refuser",32  noteAndHistory: "Note interne et historique", hasNote: "note", internalNote: "Note interne", internalNoteHint: "Visible par vous seulement. Jamais envoyée au visiteur.", saveNote: "Enregistrer la note", noteSaved: "Note enregistrée.",33  receivedAt: "Demande reçue le {time}.",34  approvedOk: "Demande approuvée : le rendez-vous est confirmé.", movedOk: "Rendez-vous déplacé.", declinedOk: "Demande refusée.", proposedOk: "Proposition envoyée au visiteur.",35  takenToast: "Ce créneau a été pris entre-temps. Rien n'a été confirmé.",36  takenExplain: "Le moment demandé n'est plus libre : il ne peut pas être confirmé. Choisissez un autre créneau à proposer ; rien ne sera confirmé tant que le visiteur ne l'aura pas accepté.",37  outsideTitle: "Hors des heures d'ouverture", outsideBody: "Ce moment est en dehors de vos heures d'ouverture actuelles. Il est libre, mais vous devez confirmer explicitement.", outsideConfirm: "Approuver quand même",38  declineTitle: "Refuser la demande", declineTitleN: "Refuser {n} demandes", declineLead: "{name} recevra un courriel poli, sans détail de votre agenda.", declineLeadN: "Chaque personne recevra un courriel poli, sans détail de votre agenda.",39  messageToVisitor: "Message au visiteur", declineHint: "Ajouté au courriel de refus.",40  bulkOk: "{n} demandes refusées.", bulkPartial: "{ok} refusée(s), {bad} en échec.", bulkFailedBody: "{bad} demande(s) n'ont pas pu être refusées (leur état a changé). La liste a été actualisée.",41  proposeTitle: "Proposer un autre moment", proposeLead: "{name} pourra accepter ou refuser ce moment. Le créneau proposé est retenu jusqu'à sa réponse (72 h au plus).", proposeSend: "Proposer {time}", proposeSendNone: "Choisissez un créneau",42  // ── Blocages ──43  blockQuick: "Bloquer une plage", blockNew: "Bloquer une plage", blockEdit: "Modifier le blocage", blockLead: "Événement privé : la plage n'est plus offerte au public. Heures en {zone}.",44  startDate: "Début — jour", startTime: "Heure de début", endDate: "Fin — jour", endTime: "Heure de fin", blockTitle: "Titre", blockTitleHint: "Visible par vous seulement.", blockNote: "Note",45  blockCreate: "Bloquer", blockOrder: "La fin doit être après le début.", blockSaved: "Blocage modifié.", blockCreated: "Plage bloquée.", blockDeleted: "Blocage supprimé.", blockDeleteConfirm: "Supprimer ce blocage ? La plage redeviendra disponible selon vos heures d'ouverture.",46  blockUntitled: "Occupé", blockShort: "Blocage", overlapTitle: "La plage est bloquée, mais {n} rendez-vous confirmé(s) s'y trouvent déjà", overlapBody: "Un blocage n'annule rien automatiquement. Déplacez ou annulez ces rendez-vous depuis l'agenda si nécessaire :",47  // ── Tableau de bord ──48  dashNext: "Prochain rendez-vous", dashNow: "En cours", shareLink: "Copier le lien public", linkCopied: "Lien public copié.",49  dashTitle: "Bonjour {name}", dashLead: "Vue d'ensemble de vos rendez-vous. Heures en {zone}.", openAgenda: "Ouvrir l'agenda", alerts: "Alertes", alertOpen: "Ouvrir", indicators: "Indicateurs",50  al_request_conflict: "{detail} demande(s) en attente visent un moment qui n'est plus libre ou qui est passé.",51  al_mail_unconfigured: "L'envoi de courriels n'est pas configuré : aucune notification ne part ({detail}).",52  al_mail_parked: "{detail} courriel(s) en attente faute de transport configuré.",53  al_mail_dead: "{detail} courriel(s) n'ont pas pu être livrés après plusieurs tentatives.",54  al_external_stale: "Calendrier externe non à jour : {detail}. Les confirmations automatiques sont retenues.",55  al_worker_down: "Le service d'arrière-plan ne répond plus (dernier signe de vie : {detail}). Courriels, expirations et synchronisations sont à l'arrêt.",56  al_single_passkey: "Une seule clé d'accès est enregistrée. Ajoutez-en une deuxième pour ne pas dépendre d'un seul appareil.",57  tileOpen: "Demandes en attente", tile7: "7 prochains jours", tile30: "30 prochains jours", tile90: "Approuvées / refusées (90 j)",58  dashOpen: "Demandes en attente", seeAll: "Tout voir ({n})", dashUpcoming: "Prochains rendez-vous", upEmpty: "Aucun rendez-vous à venir", upEmptyLead: "Les rendez-vous confirmés apparaîtront ici.",59  dashCancelled: "Annulations récentes", cancelEmpty: "Aucune annulation dans les 14 derniers jours.", cancelledByVisitor: "Annulé par le visiteur", cancelledByAdmin: "Annulé par vous",60  dashTaken: "Ce créneau n'est plus libre : rien n'a été confirmé. Ouvrez les demandes pour proposer un autre moment.", dashOutside: "Ce moment est hors de vos heures d'ouverture. Ouvrez les demandes pour confirmer explicitement.",61  // ── Agenda ──62  agTitle: "Agenda", navLabel: "Navigation dans le temps", viewLabel: "Vue", vDay: "Jour", vWeek: "Semaine", vMonth: "Mois", vList: "Liste",63  shConfirmed: "Confirmés", shPending: "En attente", shBlocks: "Blocages", shCancelled: "Annulés", allTypes: "Tous les types", gridLabel: "Grille horaire",64  externalShort: "Calendrier externe", nEvents: "{n} élément(s)", listEmpty: "Rien dans cette période", listEmptyLead: "Aucun rendez-vous, demande ou blocage sur les 30 jours affichés avec ces filtres.",65  legend: "Légende", legendClosed: "Hors heures d'ouverture", legendDrag: "Glissez un rendez-vous confirmé pour le déplacer.",66  newTitle: "Nouveau", newKind: "Type d'élément", newBlock: "Événement privé", newBooking: "Rendez-vous",67  bookingLead: "Rendez-vous que vous inscrivez pour quelqu'un. Il est confirmé immédiatement, après vérification que le moment est libre.", typeDuration: "Durée : {n} min", personName: "Nom de la personne", personEmail: "Courriel de la personne",68  notifyPerson: "Envoyer la confirmation par courriel", notifyPersonHint: "Avec l'invitation de calendrier et le lien de gestion.", bookingCreate: "Confirmer le rendez-vous", bookingCreated: "Rendez-vous confirmé.",69  noTypes: "Aucun type de rendez-vous actif.", navTypesLink: "Gérer les types",70  bookingTitle: "Rendez-vous", contactCard: "contacts", bookingPast: "Ce rendez-vous est passé.", mailsTitle: "Courriels", mailsEmpty: "Aucun courriel associé.",71  move: "Déplacer", moveTitle: "Déplacer le rendez-vous", moveLead: "Choisissez le nouveau moment. Le visiteur recevra l'invitation mise à jour.", moveTo: "Déplacer au {time}", moveToNone: "Choisissez un moment", moveConfirm: "Confirmer le déplacement",72  moveNotice: "La disponibilité est revérifiée par le serveur. Le visiteur est avisé par courriel avec l'invitation mise à jour.",73  cancelBooking: "Annuler le rendez-vous", cancelTitle: "Annuler le rendez-vous", cancelLead: "Le visiteur sera avisé par courriel et le créneau redeviendra libre.", cancelLeadNoContact: "Le créneau redeviendra libre.",74  cancelReason: "Raison", cancelReasonHint: "Conservée dans l'historique.", cancelConfirm: "Annuler ce rendez-vous", cancelledOk: "Rendez-vous annulé.",75  externalTitle: "Période occupée (calendrier externe)", externalFrom: "Lue depuis le calendrier « {name} ».", externalBlocks: "Cette période bloque vos disponibilités publiques.", externalNoBlock: "Ce calendrier est réglé pour ne pas bloquer vos disponibilités.",76  externalReadOnly: "Lecture seule : SP Calendar n'écrit jamais dans ce calendrier. Réglages dans Paramètres → Intégrations.",77};78const en: typeof fr = {79  loading: "Loading…", retry: "Retry", loadError: "These data could not be loaded.", staleData: "The last refresh failed: what is shown may be out of date.",80  cancel: "Cancel", close: "Close", save: "Save", delete: "Delete", back: "Back", optional: "optional", view: "View", handle: "Review",81  today: "Today", prev: "Previous", next: "Next", date: "Date", type: "Appointment type", reason: "Reason", history: "History", historyEmpty: "No recorded event.",82  actorAdmin: "you", actorVisitor: "visitor", actorSystem: "system",83  st_pending: "Pending", st_approved: "Approved", st_declined: "Declined", st_expired: "Expired", st_cancelled: "Cancelled", st_reschedule_requested: "Proposal sent", st_confirmed: "Confirmed",84  loc_video: "Video call", loc_phone: "Phone", loc_in_person: "In person",85  h_request_submitted: "Request submitted", h_request_approved: "Request approved", h_request_declined: "Request declined", h_request_proposed: "Another time proposed", h_request_note: "Internal note edited",86  h_request_expired: "Request expired", h_visitor_cancelled: "Cancelled by the visitor", h_visitor_accepted_proposal: "Proposal accepted by the visitor", h_visitor_reschedule: "New time requested by the visitor",87  h_booking_created: "Appointment created by you", h_booking_cancelled: "Appointment cancelled", h_booking_rescheduled: "Appointment moved", h_booking_auto_confirmed: "Automatic confirmation", h_links_revoked: "Visitor links revoked",88  ms_sent: "Sent", ms_queued: "Queued", ms_sending: "Sending", ms_failed: "Failed", ms_dead: "Given up", ms_unconfigured: "Not configured", ms_cancelled: "Not needed",89  pickDate: "Day", prevDay: "Previous day", nextDay: "Next day", freeSlots: "Free slots", loadingSlots: "Computing slots…",90  noFreeSlots: "No free slot that day.", noTypeSlots: "No type attached: enter a time below.", customTime: "Or a precise time",91  customTimeHint: "Outside the offered slots. A time that is already taken will be refused by the server.",92  reqTitle: "Requests", reqLead: "A request is not an appointment: nothing is confirmed until you approve it. Availability is checked again at the moment of approval.",93  filterLabel: "Filters", fOpen: "Pending", fAll: "All", fApproved: "Approved", fDeclined: "Declined", fClosed: "Expired and cancelled",94  selectAll: "Select all", selectOne: "Select the request from {name}", declineSelection: "Decline selection ({n})",95  reqEmptyOpen: "No pending request", reqEmptyOpenLead: "New appointment requests will appear here.", reqEmpty: "No request in this view",96  contactErased: "Deleted contact", rescheduleBadge: "Reschedule", currentTime: "Current time", requestedTime: "Requested time", newTime: "New time",97  visitorSees: "For the visitor: {time} ({zone})", holdsUntil: "Holds this slot until {time}.", holdsNot: "Does not hold the slot: other people may ask for the same time.",98  proposalSent: "You proposed:", proposalExpires: "Without an answer, the proposal expires on {time}.",99  conflictTaken: "This time is no longer free (another appointment, a block or an external calendar). It cannot be approved: propose another time or decline.",100  conflictPast: "This time has passed: the request can no longer be approved. Propose another time or decline.",101  conflictClosed: "This time is now outside your opening hours. Approving will ask you to confirm.",102  conflictOther: "This time no longer follows the rules of the appointment type; you may still approve it.",103  conflictTakenShort: "Slot now taken", conflictPastShort: "Time has passed",104  staleNote: "Automatic confirmation was withheld because an external calendar was not up to date. Check your agenda before approving.",105  declineMsgSent: "Message sent:", approve: "Approve", approveMove: "Approve the change", approveFor: "Approve the request from {name}", propose: "Propose another time", proposeAgain: "Propose another time", decline: "Decline",106  noteAndHistory: "Internal note and history", hasNote: "note", internalNote: "Internal note", internalNoteHint: "Visible to you only. Never sent to the visitor.", saveNote: "Save the note", noteSaved: "Note saved.",107  receivedAt: "Request received on {time}.",108  approvedOk: "Request approved: the appointment is confirmed.", movedOk: "Appointment moved.", declinedOk: "Request declined.", proposedOk: "Proposal sent to the visitor.",109  takenToast: "This slot was taken in the meantime. Nothing was confirmed.",110  takenExplain: "The requested time is no longer free: it cannot be confirmed. Pick another slot to propose; nothing is confirmed until the visitor accepts it.",111  outsideTitle: "Outside opening hours", outsideBody: "This time is outside your current opening hours. It is free, but you must confirm explicitly.", outsideConfirm: "Approve anyway",112  declineTitle: "Decline the request", declineTitleN: "Decline {n} requests", declineLead: "{name} will get a polite e-mail, with no detail of your agenda.", declineLeadN: "Each person will get a polite e-mail, with no detail of your agenda.",113  messageToVisitor: "Message to the visitor", declineHint: "Added to the decline e-mail.",114  bulkOk: "{n} requests declined.", bulkPartial: "{ok} declined, {bad} failed.", bulkFailedBody: "{bad} request(s) could not be declined (their state changed). The list was refreshed.",115  proposeTitle: "Propose another time", proposeLead: "{name} will be able to accept or decline this time. The proposed slot is held until the answer (72 h at most).", proposeSend: "Propose {time}", proposeSendNone: "Pick a slot",116  blockQuick: "Block a period", blockNew: "Block a period", blockEdit: "Edit the block", blockLead: "Private event: the period is no longer offered to the public. Times in {zone}.",117  startDate: "Start — day", startTime: "Start time", endDate: "End — day", endTime: "End time", blockTitle: "Title", blockTitleHint: "Visible to you only.", blockNote: "Note",118  blockCreate: "Block", blockOrder: "The end must be after the start.", blockSaved: "Block updated.", blockCreated: "Period blocked.", blockDeleted: "Block deleted.", blockDeleteConfirm: "Delete this block? The period becomes available again according to your opening hours.",119  blockUntitled: "Busy", blockShort: "Block", overlapTitle: "The period is blocked, but {n} confirmed appointment(s) are already in it", overlapBody: "A block never cancels anything by itself. Move or cancel these appointments from the agenda if needed:",120  dashNext: "Next appointment", dashNow: "In progress", shareLink: "Copy the public link", linkCopied: "Public link copied.",121  dashTitle: "Hello {name}", dashLead: "Overview of your appointments. Times in {zone}.", openAgenda: "Open the agenda", alerts: "Alerts", alertOpen: "Open", indicators: "Indicators",122  al_request_conflict: "{detail} pending request(s) target a time that is no longer free or has passed.",123  al_mail_unconfigured: "E-mail sending is not configured: no notification goes out ({detail}).",124  al_mail_parked: "{detail} e-mail(s) waiting because no transport is configured.",125  al_mail_dead: "{detail} e-mail(s) could not be delivered after several attempts.",126  al_external_stale: "External calendar out of date: {detail}. Automatic confirmations are withheld.",127  al_worker_down: "The background service is not responding (last heartbeat: {detail}). E-mails, expiries and syncs are stopped.",128  al_single_passkey: "Only one passkey is enrolled. Add a second one so you do not depend on a single device.",129  tileOpen: "Pending requests", tile7: "Next 7 days", tile30: "Next 30 days", tile90: "Approved / declined (90 d)",130  dashOpen: "Pending requests", seeAll: "See all ({n})", dashUpcoming: "Upcoming appointments", upEmpty: "No upcoming appointment", upEmptyLead: "Confirmed appointments will appear here.",131  dashCancelled: "Recent cancellations", cancelEmpty: "No cancellation in the last 14 days.", cancelledByVisitor: "Cancelled by the visitor", cancelledByAdmin: "Cancelled by you",132  dashTaken: "This slot is no longer free: nothing was confirmed. Open the requests to propose another time.", dashOutside: "This time is outside your opening hours. Open the requests to confirm explicitly.",133  agTitle: "Agenda", navLabel: "Time navigation", viewLabel: "View", vDay: "Day", vWeek: "Week", vMonth: "Month", vList: "List",134  shConfirmed: "Confirmed", shPending: "Pending", shBlocks: "Blocks", shCancelled: "Cancelled", allTypes: "All types", gridLabel: "Time grid",135  externalShort: "External calendar", nEvents: "{n} item(s)", listEmpty: "Nothing in this period", listEmptyLead: "No appointment, request or block in the 30 days shown with these filters.",136  legend: "Legend", legendClosed: "Outside opening hours", legendDrag: "Drag a confirmed appointment to move it.",137  newTitle: "New", newKind: "Kind of item", newBlock: "Private event", newBooking: "Appointment",138  bookingLead: "An appointment you enter for someone. It is confirmed at once, after checking that the time is free.", typeDuration: "Duration: {n} min", personName: "Person's name", personEmail: "Person's e-mail",139  notifyPerson: "Send the confirmation by e-mail", notifyPersonHint: "With the calendar invitation and the management link.", bookingCreate: "Confirm the appointment", bookingCreated: "Appointment confirmed.",140  noTypes: "No active appointment type.", navTypesLink: "Manage types",141  bookingTitle: "Appointment", contactCard: "contacts", bookingPast: "This appointment is in the past.", mailsTitle: "E-mails", mailsEmpty: "No related e-mail.",142  move: "Move", moveTitle: "Move the appointment", moveLead: "Pick the new time. The visitor will receive the updated invitation.", moveTo: "Move to {time}", moveToNone: "Pick a time", moveConfirm: "Confirm the move",143  moveNotice: "Availability is checked again by the server. The visitor is told by e-mail with the updated invitation.",144  cancelBooking: "Cancel the appointment", cancelTitle: "Cancel the appointment", cancelLead: "The visitor will be told by e-mail and the slot becomes free again.", cancelLeadNoContact: "The slot becomes free again.",145  cancelReason: "Reason", cancelReasonHint: "Kept in the history.", cancelConfirm: "Cancel this appointment", cancelledOk: "Appointment cancelled.",146  externalTitle: "Busy period (external calendar)", externalFrom: "Read from the calendar “{name}”.", externalBlocks: "This period blocks your public availability.", externalNoBlock: "This calendar is set not to block your availability.",147  externalReadOnly: "Read-only: SP Calendar never writes to this calendar. Settings in Settings → Integrations.",148};149export const adminAgenda = { fr, en };150
Files main
Menu

Theme