diff --git a/src/main/webapp/public/locales/en/common.json b/src/main/webapp/public/locales/en/common.json
index 6066739..50fe38a 100644
--- a/src/main/webapp/public/locales/en/common.json
+++ b/src/main/webapp/public/locales/en/common.json
@@ -4,15 +4,19 @@
"---ToutLesClubs---": "--- all clubs ---",
"---ToutLesPays---": "--- all countries ---",
"---TouteLesCatégories---": "--- all categories ---",
- "--NonLicencier--": "-- Unlicensed --",
+ "--NonLicencier--": "-- Not licensed --",
+ "--SélectionnerCatégorie--": "-- Select category --",
+ "1Catégorie": "+1 category",
+ "2Catégorie": "+2 categories",
"activer": "Activate",
"admin": "Administration",
+ "administrateur": "Administrator",
"adresse": "Address",
"adresseAdministrative": "Administrative address",
"aff.ancienNom": "Former name: {{name}}",
"aff.byMembreSim": "By similar member",
"aff.byNewMenbre": "By new member",
- "aff.byNoLicence": "By licence number",
+ "aff.byNoLicence": "By license number",
"aff.info1": "This club has already been affiliated (affiliation no. {{no}})",
"aff.membreNo": "Member no. {{no}}",
"aff.nomDuClub": "Club name",
@@ -21,8 +25,8 @@
"aff.refusConfirm": "Are you sure you want to refuse this request?",
"aff.refuserLaDemande": "Refuse the request",
"aff.refuserLaDemande.detail": "Are you sure you want to refuse this request?",
- "aff.submit.error1": "Please enter a valid licence number for member {{id}}",
- "aff.submit.error2": "Please enter a valid licence number for member {{id}}",
+ "aff.submit.error1": "Please enter a valid license number for member {{id}}",
+ "aff.submit.error2": "Please enter a valid license number for member {{id}}",
"aff.submit.error3": "Please enter a valid email for member {{id}}",
"aff.toast.accept.error": "Failed to accept affiliation",
"aff.toast.accept.pending": "Accepting affiliation in progress",
@@ -45,7 +49,7 @@
"aff_req.button.confirm": "Confirm my affiliation request",
"aff_req.button.save": "Save changes",
"aff_req.denomination": "Denomination",
- "aff_req.disposeLicence": "Already has a licence",
+ "aff_req.disposeLicence": "Already has a license",
"aff_req.error1": "The role of member {{i}} is required",
"aff_req.error2": "The SIRET/RNA format is invalid",
"aff_req.nomDeLassociation": "Association name",
@@ -54,28 +58,31 @@
"aff_req.text2.li": [
"Have its headquarters in France or the Principality of Monaco",
"Be constituted in accordance with Chapter 1 of Title II of Book 1 of the Sports Code",
- "Pursue a social purpose that falls within the definition of Article 1 of the Federation's statutes",
+ "Pursue a purpose that falls within the definition of Article 1 of the Federation's statutes",
"Have statutes compatible with the principles of organization and operation of the Federation",
- "Ensure freedom of opinion and respect for the rights of the defense within it, and prohibit any discrimination",
+ "Ensure freedom of opinion and respect for the rights of defense within it, and prohibit any discrimination",
"Comply with the rules of supervision, hygiene, and safety established by the Federation's regulations"
],
- "aff_req.text3": "After your request is validated, you will receive a temporary ID and password to access your FFSAF space",
+ "aff_req.text3": "After validation of your request, you will receive a temporary identifier and password to access your FFSAF space",
"aff_req.text4": "Note that to finalize your affiliation, you will need to:",
"aff_req.text4.li1": "Have at least three licensed members, including the president",
"aff_req.text4.li2": "Have paid the fees provided for by the federal regulations",
"aff_req.text5": "You can later add publicly visible addresses for your training locations",
"aff_req.text6": "Leave blank to make no changes. (If a coat of arms has already been sent with this request, it will be used; otherwise, we will use the one from the previous affiliation)",
"aff_req.text7": "Affiliation request sent successfully",
- "aff_req.text8": "Once your request is validated, you will receive a temporary ID and password to access your FFSAF space",
+ "aff_req.text8": "Once your request is validated, you will receive a temporary identifier and password to access your FFSAF space",
"aff_req.toast.undo.error": "Failed to cancel affiliation request",
"aff_req.toast.undo.pending": "Cancelling affiliation request in progress",
"aff_req.toast.undo.success": "Affiliation request cancelled successfully 🎉",
"afficherLétatDesAffiliation": "Display affiliation status",
"affiliation": "Affiliation",
"affiliationNo": "Affiliation no. {{no}}",
+ "ajout": "Addition",
"ajouterUnClub": "Add a club",
"ajouterUnMembre": "Add a member",
"all_season": "--- all seasons ---",
+ "au": "to",
+ "aucun": "None",
"aucunMembreSélectionné": "No member selected",
"back": "« back",
"blason": "Coat of arms",
@@ -86,9 +93,12 @@
"button.appliquer": "Apply",
"button.confirmer": "Confirm",
"button.créer": "Create",
+ "button.enregister": "Save",
"button.enregistrer": "Save",
"button.fermer": "Close",
+ "button.modifier": "Edit",
"button.refuser": "Refuse",
+ "button.seDésinscrire": "Unsubscribe",
"button.suivant": "Next",
"button.supprimer": "Delete",
"cat.benjamin": "Benjamin",
@@ -103,14 +113,15 @@
"cat.superMini": "Super Mini",
"cat.vétéran1": "Veteran 1",
"cat.vétéran2": "Veteran 2",
+ "categorie": "category",
"catégorie": "Category",
"certificatMédical": "Medical certificate",
"chargement...": "Loading...",
- "chargerLexcel": "Upload Excel",
- "chargerLexcel.msg": "Please use the file above as a base; do not rename the columns or modify the licence numbers.",
+ "chargerLexcel": "Load Excel",
+ "chargerLexcel.msg": "Please use the file above as a template; do not rename the columns or modify the license numbers.",
"choisir...": "Choose...",
"club.aff_renew.msg": "Please select 0 to 3 board members to fill out the pre-request. (If a non-board member will become one next year, you can enter them in the next step)",
- "club.change.status": "To modify the above information, please contact FFSAF by email.",
+ "club.change.status": "To modify the above information, please contact the FFSAF by email.",
"club.contact.tt": {
"AUTRE": "Other club contact",
"COURRIEL": "Club email address
Example: contact@ffsaf.fr",
@@ -135,15 +146,115 @@
"club_one": "Club",
"club_other": "Clubs",
"club_zero": "No club",
+ "combattant": "fighter",
+ "comp.aff.blason": "Display the club's coat of arms on screens",
+ "comp.aff.flag": "Display the fighter's country on screens",
+ "comp.ajoutRapide": "Quick add",
+ "comp.ajouterUnCombattant": "Add a fighter",
+ "comp.ajouterUnInvité": "Add a guest",
+ "comp.billetterie": "Ticketing",
+ "comp.billetterieHelloasso": "HelloAsso Ticketing",
+ "comp.catégorieNormalisée": "Standardized category",
+ "comp.combattantNonTrouvé": "Fighter not found",
+ "comp.combattantsInscrits": "Registered fighters",
+ "comp.compétitionFuture": "Future competition",
+ "comp.compétitionPassée": "Past competition",
+ "comp.créationCompétition": "Competition creation",
+ "comp.dateDinscription": "Registration date",
+ "comp.editionCompétition": "Competition edition",
+ "comp.error1": "The end date must be after the start date.",
+ "comp.error2": "Please enter the start and end dates of registration.",
+ "comp.error3": "The end date of registration must be after the start date of registration.",
+ "comp.exporterLesInscription": "Export registrations",
+ "comp.ha.emailDeRéceptionDesInscriptionséchoué": "Email for receiving failed registrations",
+ "comp.ha.error1": "Please enter the HelloAsso ticketing URL and associated rates.",
+ "comp.ha.error2": "The HelloAsso ticketing URL is invalid. Please check the URL format.",
+ "comp.ha.error3": "Please enter the email for receiving failed registrations.",
+ "comp.ha.tarifsHelloasso": "HelloAsso rates",
+ "comp.ha.text1": "To ensure good interconnection with HelloAsso, please follow these instructions:",
+ "comp.ha.text2": "Configure the notification URL: In order for us to receive a notification for each registration, it is necessary to configure the notification URL of your HelloAsso account to redirect to \"https://intra.ffsaf.fr/api/webhook/ha\". To do this, from the home page of your association on HelloAsso, go to My account > Settings > Integrations and API section Notification and copy-paste https://intra.ffsaf.fr/api/webhook/ha in the My callback URL field and save.",
+ "comp.ha.text3": "Copy-paste the exact name of the rates -separated by semicolons- that will result in automatic registration. All these rates must imperatively require the license number as a mandatory field. To do this, during the configuration of your ticketing at step 3, click on + Add information, enter the exact title License number, in Type of response desired enter Number, select the rates entered previously and make the information mandatory.",
+ "comp.ha.text4": "Copy-paste the URL of your ticketing in the field below. It should look like this: https://www.helloasso.com/associations/__asso-name-on-helloasso__/events/__ticketing-name__",
+ "comp.ha.text5": "HelloAsso ticketing URL",
+ "comp.ha.text6": "If for any reason the automatic registration fails, an email will be sent to this address to inform you",
+ "comp.informationsGénéralesSurLaCompétition": "General information about the competition",
+ "comp.informationsSurLeModeDinscription": "Information on the registration mode",
+ "comp.informationsTechniques": "Technical information",
+ "comp.inscription": "Registration",
+ "comp.inscriptionModeAdministrateur": "Registration - administrator mode",
+ "comp.inscriptionsLibres": "Free registrations",
+ "comp.inscriptionsParLesAdministrateursDeLaCompétition": "Registrations by competition administrators",
+ "comp.inscriptionsParLesResponsablesDeClub": "Registrations by club managers",
+ "comp.inscriptionsSurLaBilletterieHelloasso": "Registrations on the HelloAsso ticketing",
+ "comp.modal.information": "Information",
+ "comp.modal.poids": "Weight (in kg)",
+ "comp.modal.recherche": "Search*",
+ "comp.modal.surclassement": "Overclassification",
+ "comp.modal.text1": "Guests are reserved for members not licensed by the federation. Fighters registered via this form will not be able to see their results from their profile.",
+ "comp.modal.text2": "Prevent members/clubs from modifying this registration",
+ "comp.modifierLesParticipants": "View/Edit participants",
+ "comp.monInscription": "My registration",
+ "comp.noDeLicence": "License number",
+ "comp.nouvelleCompétition": "New competition",
+ "comp.organisateur": "Organizer",
+ "comp.quiPeutInscrire": "Who can register",
+ "comp.reg.libres": "Free",
+ "comp.reg.parLesAdministrateursDeLaCompétition": "By competition administrators",
+ "comp.reg.parLesResponsablesDeClub": "By club managers",
+ "comp.reg.surLaBilletterieHelloasso": "On the HelloAsso ticketing",
+ "comp.responsablesEtBureauxDesAssociations": "Managers and boards of associations",
+ "comp.sinscrire": "Register",
+ "comp.supprimerLaCompétition": "Delete competition",
+ "comp.supprimerLaCompétition.msg": "Are you sure you want to delete this competition and all associated results?",
+ "comp.surclassement_one": "{{cat}} with 1 overclassification",
+ "comp.surclassement_other": "{{cat}} with {{count}} overclassifications",
+ "comp.surclassement_zero": "{{cat}}",
+ "comp.text2": "Visible to the public (appears in the list of competitions)",
+ "comp.text3": "If not checked, the competition will only be visible to people who can register participants.",
+ "comp.tips": "Tip 1: It is possible to ban a fighter, which will prevent them from being re-registered by any means other than by an administrator of this competition. To do this, click on the small <1/> next to their name.
Tip 2: It is also possible to lock the modifications of their registration from their file, which will prevent it from being modified/deleted by themselves and/or a club manager.",
+ "comp.toast.del.error": "Failed to delete competition",
+ "comp.toast.del.pending": "Deleting competition in progress",
+ "comp.toast.del.success": "Competition deleted successfully 🎉",
+ "comp.toast.params.error": "Failed to update competition parameters",
+ "comp.toast.params.pending": "Updating competition parameters in progress...",
+ "comp.toast.params.success": "Competition parameters updated successfully 🎉",
+ "comp.toast.register.add.error": "Fighter not found",
+ "comp.toast.register.add.pending": "Search in progress",
+ "comp.toast.register.add.success": "Fighter found and added/updated",
+ "comp.toast.register.ban.error": "Error",
+ "comp.toast.register.ban.pending": "Unregistration in progress",
+ "comp.toast.register.ban.success": "Fighter unregistered and banned",
+ "comp.toast.register.del.error": "Error",
+ "comp.toast.register.del.pending": "Unregistration in progress",
+ "comp.toast.register.del.success": "Fighter unregistered",
+ "comp.toast.register.self.add.error": "Error during registration",
+ "comp.toast.register.self.add.pending": "Registration in progress",
+ "comp.toast.register.self.add.success": "Registration completed 🎉",
+ "comp.toast.register.self.del.error": "Error during unregistration",
+ "comp.toast.register.self.del.pending": "Unregistration in progress",
+ "comp.toast.register.self.del.success": "Unregistration completed",
+ "comp.toast.save.error": "Failed to save competition",
+ "comp.toast.save.pending": "Saving competition in progress",
+ "comp.toast.save.success": "Competition saved successfully 🎉",
+ "comp.tousLesMembresDeLaFfsaf": "All FFSAF members",
+ "comp.typeDinscription": "Registration type",
+ "comp.uniquementLesAdministrateursDeLaCompétition": "Only competition administrators",
+ "comp.warn1": "Are you sure you want to unregister and ban this fighter from the competition?\n(You can re-register them later)",
+ "comp.warn2": "Are you sure you want to unregister this fighter?\nThis will not unregister them from the HelloAsso ticketing and will not refund them.",
+ "comp.warn3": "Are you sure you want to unregister this fighter?",
+ "comp.warn4": "Are you sure you want to unregister yourself?",
"comp_manage": "Competitions Manager",
"competition_one": "Competition",
"competition_other": "Competitions",
"compte": "Account",
+ "compétition": "Competition",
+ "configuration": "Configuration",
"conserverLancienEmail": "Keep the old email",
"contactAdministratif": "Administrative contact",
"contactInterne": "Internal contact",
"contact_one": "Contact",
"contact_other": "Contacts",
+ "date": "Date",
"dateDeNaissance": "Date of birth",
"days": [
"Monday",
@@ -156,14 +267,17 @@
],
"de": "of",
"demandeDaffiliationEnCours": "Affiliation request in progress",
- "demandeDeLicence": "Licence request",
+ "demandeDeLicence": "License request",
"demander": "Request",
+ "description": "Description",
"dlAff": "Download affiliation certificate",
"donnéesAdministratives": "Administrative data",
- "définirLidDuCompte": "Set account ID",
+ "du": "From",
+ "dun": "of a",
+ "définirLidDuCompte": "Define account ID",
"editionDeL'affiliation": "Editing affiliation",
"editionDeLaDemande": "Editing request",
- "editionDeLaLicence": "Editing licence",
+ "editionDeLaLicence": "Editing license",
"editionDeLaSéléction": "Editing selection",
"editionDeLadresse": "Editing address",
"email": "Email",
@@ -173,26 +287,30 @@
"erreurDePaiement.detail": "Error message:",
"erreurDePaiement.msg": "An error occurred while processing your payment. Please try again later.",
"espaceAdministration": "Administration space",
+ "f": "F",
"faitPar": "Done by",
"femme": "Female",
"filtre": "Filter",
"genre": "Gender",
"gestionGroupée": "Group management",
- "gradeDarbitrage": "Referee grade",
+ "gradeDarbitrage": "Refereeing grade",
+ "h": "M",
"home": {
"header1": "For licensed members",
"header2": "For clubs",
- "text1": "Here you will find all your information as well as the status of your registration with the federation. You can also download your registration certificate, sign up for competitions, and view your results, provided that the organizing club has entered them.
During your first registration, you will receive an email containing your login details; this email will be sent once your licence is validated by the secretariat.",
- "text2": "This is where you can take out federal licences for your members, request or renew your affiliation, enter your schedules, training locations, and social networks, which will then be displayed on the ffsaf.fr website.
You will also have the possibility to publish registration forms for your competitions and record the results.
Not yet affiliated with the federation? Click <1>here1> to make your first request.",
+ "text1": "Here you will find all your information as well as the status of your registration with the federation. You can also download your registration certificate, register for competitions, and consult your results, provided that the organizing club has entered them.
During your first registration, you will receive an email containing your login information; this email will be sent once your license is validated by the secretariat.",
+ "text2": "This is where you can take out federal licenses for your members, where you can request or renew your affiliation, enter your schedules, training locations, and social networks, which will then be displayed on the ffsaf.fr website.
You will also have the possibility to publish registration forms for your competitions and to record the results.
Not yet affiliated with the federation? Click <1>here1> to make your first request.",
"welcome_message": "Welcome to the intranet of the Fédération France Soft Armored Fighting"
},
"homme": "Male",
"horairesD'entraînements": "Training schedules",
"information": "Information",
+ "invité": "guest",
"keepEmpty": "Leave blank to make no changes.",
"le": "the",
- "licence": "Licence",
- "licenceNo": "Licence no. {{no}}",
+ "licence": "License",
+ "licenceNo": "License no. {{no}}",
+ "lieu": "Place",
"lieuxDentraînements": "Training locations",
"loading": "Loading...",
"me": {
@@ -207,33 +325,33 @@
"toast.settings.success": "Settings updated successfully 🎉"
},
"me.changerMonMotDePasse": "Change my password",
- "me.formationDarbitrage": "Referee training",
+ "me.formationDarbitrage": "Refereeing training",
"me.paramètresDuCompte": "Account settings",
"me.rôleAuSienDuClub": "Role within the club",
- "me.visibilitéDesRésultats": "Results visibility",
+ "me.visibilitéDesRésultats": "Visibility of results",
"member_one": "Member",
"member_other": "Members",
"membre.emailVideàLaLigne": "Empty email on line {{no}}",
- "membre.emailVérifié": "Verified email",
+ "membre.emailVérifié": "Email verified",
"membre.filtre.inactif": "Show inactive fighters",
- "membre.filtre.licence": "Show licence status",
+ "membre.filtre.licence": "Show license status",
"membre.filtre.licences": [
- "No request or valid licence",
- "With request or valid licence",
+ "No request or valid license",
+ "With request or valid license",
"Request in progress",
- "Licence validated",
- "All licence statuses",
+ "License validated",
+ "All license statuses",
"Complete request",
"Incomplete request"
],
"membre.filtre.payement": [
- "No payment",
+ "Without payment",
"With payment",
"All payment statuses"
],
"membre.identifiant": "Identifier",
- "membre.import.err1": "Invalid certificate date format on line {{no}}",
- "membre.import.err2": "Invalid certificate date format on line {{no}}",
+ "membre.import.err1": "Invalid medical certificate date format on line {{no}}",
+ "membre.import.err2": "Invalid medical certificate date format on line {{no}}",
"membre.import.err3": "Empty date of birth on line {{no}}",
"membre.import.err4": "Invalid date of birth format on line {{no}}",
"membre.import.err5": "Invalid email on line {{no}}",
@@ -248,8 +366,8 @@
"membre.initaccount.text1": "Enter the account UUID",
"membre.initaccount.text2": "Warning: only change a member's ID if you are sure of what you are doing...",
"membre.noAccount": "This member does not have an account...",
- "membre.noAccount.clubMsg": "An account will be created by the federation when their first licence is validated",
- "membre.nomVideàLaLigne": "Empty name on line {{no}}",
+ "membre.noAccount.clubMsg": "An account will be created by the federation when their first license is validated",
+ "membre.nomVideàLaLigne": "Empty last name on line {{no}}",
"membre.prénomVideàLaLigne": "Empty first name on line {{no}}",
"membre.toast.compte.created": "Account created successfully 🎉",
"membre.toast.compte.error": "Failed to create account",
@@ -257,30 +375,30 @@
"membre.toast.del.error": "Failed to delete account",
"membre.toast.del.pending": "Deleting account in progress",
"membre.toast.del.success": "Account deleted successfully 🎉",
- "membre.toast.id.error": "Failed to set identifier",
- "membre.toast.id.pending": "Setting identifier in progress",
- "membre.toast.id.success": "Identifier set successfully 🎉",
- "membre.toast.licence.ask.del.error": "Failed to delete licence request",
- "membre.toast.licence.ask.del.pending": "Deleting licence request in progress",
- "membre.toast.licence.ask.del.success": "Licence request deleted successfully 🎉",
- "membre.toast.licence.ask.error": "Failed to request licence",
- "membre.toast.licence.ask.pending": "Recording licence request in progress",
- "membre.toast.licence.ask.success": "Licence request recorded successfully 🎉",
- "membre.toast.licence.del.error": "Failed to delete licence",
- "membre.toast.licence.del.pending": "Deleting licence in progress",
- "membre.toast.licence.del.success": "Licence deleted successfully 🎉",
- "membre.toast.licence.save.error": "Failed to save licence",
- "membre.toast.licence.save.pending": "Saving licence in progress",
- "membre.toast.licence.save.success": "Licence saved successfully 🎉",
- "membre.toast.licences.export.error": "Failed to export licences",
- "membre.toast.licences.export.pending": "Exporting licences in progress",
- "membre.toast.licences.export.success": "Licences exported successfully 🎉",
+ "membre.toast.id.error": "Failed to define identifier",
+ "membre.toast.id.pending": "Defining identifier in progress",
+ "membre.toast.id.success": "Identifier defined successfully 🎉",
+ "membre.toast.licence.ask.del.error": "Failed to delete license request",
+ "membre.toast.licence.ask.del.pending": "Deleting license request in progress",
+ "membre.toast.licence.ask.del.success": "License request deleted successfully 🎉",
+ "membre.toast.licence.ask.error": "Failed to request license",
+ "membre.toast.licence.ask.pending": "Saving license request in progress",
+ "membre.toast.licence.ask.success": "License request saved successfully 🎉",
+ "membre.toast.licence.del.error": "Failed to delete license",
+ "membre.toast.licence.del.pending": "Deleting license in progress",
+ "membre.toast.licence.del.success": "License deleted successfully 🎉",
+ "membre.toast.licence.save.error": "Failed to save license",
+ "membre.toast.licence.save.pending": "Saving license in progress",
+ "membre.toast.licence.save.success": "License saved successfully 🎉",
+ "membre.toast.licences.export.error": "Failed to export licenses",
+ "membre.toast.licences.export.pending": "Exporting licenses in progress",
+ "membre.toast.licences.export.success": "Licenses exported successfully 🎉",
"membre.toast.licences.import.error": "Failed to send changes",
"membre.toast.licences.import.pending": "Sending changes in progress",
"membre.toast.licences.import.success": "Changes sent successfully 🎉",
- "membre.toast.licences.load.error": "Failed to load licences",
- "membre.toast.licences.load.pending": "Loading licences in progress",
- "membre.toast.licences.load.success": "Licences loaded successfully 🎉",
+ "membre.toast.licences.load.error": "Failed to load licenses",
+ "membre.toast.licences.load.pending": "Loading licenses in progress",
+ "membre.toast.licences.load.success": "Licenses loaded successfully 🎉",
"membre.toast.perm.error": "Failed to update permissions 😕",
"membre.toast.perm.pending": "Updating permissions in progress...",
"membre.toast.perm.success": "Permissions updated successfully 🎉",
@@ -294,6 +412,7 @@
"membre.toast.select.save.pending": "Saving selection in progress",
"membre.toast.select.save.success": "Selection saved successfully 🎉",
"mettreàJours": "Update",
+ "modification": "Modification",
"nationalité": "Nationality",
"nav": {
"account": "My account",
@@ -310,21 +429,22 @@
"space": "My space",
"title": "FFSAF Intranet"
},
- "noLicence": "Licence no.",
+ "noLicence": "License no.",
"noSiretOuRna": "SIRET or RNA no.",
"nom": "Last name",
- "nombreDeLicences": "Number of licences",
- "nombreDeLicencesParCatégorie": "Number of licences by category for {{saison}}",
+ "nombreDeLicences": "Number of licenses",
+ "nombreDeLicencesParCatégorie": "Number of licenses by category for {{saison}}",
"non": "No",
"nonDéfinie": "Not defined",
"nonValidée": "Not validated",
"nouveauClub": "New club",
"nouveauMembre": "New member",
"nouvelEmail": "New email",
+ "ou": "or",
"oui": "Yes",
"outdated_session": {
"login_button": "Log in again",
- "message": "Your session has expired. Please log in again to continue using the application.",
+ "message": "Your session has expired, please log in again to continue using the application.",
"title": "Session expired"
},
"pageClub": "Club page",
@@ -332,20 +452,21 @@
"pageNouveauClub": "New club page",
"page_info_full": "Line {{line}} to {{tt_line}} (page {{page}} of {{tt_page}})",
"page_info_ligne": "{{show}} line(s) displayed out of {{total}}",
- "paiementDeLaLicence": "Licence payment",
- "paiementDesLicences": "Licence payments",
- "pasDeLicence": "No licence",
+ "paiementDeLaLicence": "License payment",
+ "paiementDesLicences": "License payments",
+ "par": "by",
+ "pasDeLicence": "No license",
"payment.ha.info": "HelloAsso's solidarity model guarantees that 100% of your payment will be transferred to the chosen association. You can support the help they provide to associations by leaving a voluntary contribution to HelloAsso at the time of your payment.",
"payment.info": "About HelloAsso",
"payment.paiementSécurisé": "Secure payment",
"payment.payerAvec": "Pay with",
- "payment.recap": "{{count}} licence(s) selected
Total to pay: {{total}} €",
- "paymentDesLicences": "Licence payments",
- "paymentDesLicences.msg_one": "Are you sure you want to mark the licence as paid?",
- "paymentDesLicences.msg_other": "Are you sure you want to mark the {{count}} licences as paid?",
+ "payment.recap": "{{count}} license(s) selected
Total amount to pay: {{total}} €",
+ "paymentDesLicences": "License payments",
+ "paymentDesLicences.msg_one": "Are you sure you want to mark the license as paid?",
+ "paymentDesLicences.msg_other": "Are you sure you want to mark the {{count}} licenses as paid?",
"paymentDesLicences.msg_zero": "$t(paymentDesLicences.msg_other)",
- "paymentOk": "🎉 Your payment has been processed successfully. 🎉",
- "paymentOk.msg": "Thank you for your payment. The licences should be activated within the next hour, provided the medical certificate is completed.",
+ "paymentOk": "🎉Your payment has been processed successfully.🎉",
+ "paymentOk.msg": "Thank you for your payment. The licenses should be activated within the next hour, provided that the medical certificate is completed.",
"pays": "Country",
"perm.administrateurDeLaFédération": "Federation administrator",
"perm.créerDesCompétion": "Create competitions",
@@ -353,6 +474,7 @@
"permission": "Permission",
"photos": "Photos",
"prenom": "First name",
+ "prénomEtNom": "First and last name",
"rechercher": "Search",
"rechercher...": "Search...",
"registration_one": "Registration",
@@ -372,6 +494,7 @@
"role.vise-secrétaire": "Vice-Secretary",
"role.vise-trésorier": "Vice-Treasurer",
"saison": "Season",
+ "secrétariatsDeLice": "Ring secretariats",
"selectionner...": "Select...",
"siretOuRna": "SIRET or RNA",
"stats": "Statistics",
@@ -387,32 +510,33 @@
"toast.edit.error": "Failed to save changes",
"toast.edit.pending": "Saving changes in progress",
"toast.edit.success": "Changes saved successfully 🎉",
- "toast.licence.bulk.pay.error": "Failed to mark licences as paid",
- "toast.licence.bulk.pay.pending": "Marking licences as paid in progress",
- "toast.licence.bulk.pay.success": "Licences marked as paid successfully 🎉",
- "toast.licence.bulk.valid.error": "Failed to validate licences",
- "toast.licence.bulk.valid.pending": "Validating licences in progress",
- "toast.licence.bulk.valid.success": "Licences validated successfully 🎉",
+ "toast.licence.bulk.pay.error": "Failed to mark licenses as paid",
+ "toast.licence.bulk.pay.pending": "Marking licenses as paid in progress",
+ "toast.licence.bulk.pay.success": "Licenses marked as paid successfully 🎉",
+ "toast.licence.bulk.valid.error": "Failed to validate licenses",
+ "toast.licence.bulk.valid.pending": "Validating licenses in progress",
+ "toast.licence.bulk.valid.success": "Licenses validated successfully 🎉",
"toast.licence.order.error": "Failed to create order",
"toast.licence.order.pending": "Creating order in progress",
"toast.licence.order.success": "Order created successfully 🎉",
"trie": "Sort",
"téléchargerLexcelDesMembres": "Download members' Excel",
- "téléchargerLexcelDesMembres.info": "Use as a template to update information",
- "téléchargéeLaLicence": "Download licence",
- "validationDeLaLicence": "Licence validation",
- "validationDesLicences": "Licence validations",
- "validerDesLicences": "Validate licences",
- "validerLePayement_one": "Validate payment for the selected licence",
- "validerLePayement_other": "Validate payment for the {{count}} selected licences",
+ "téléchargerLexcelDesMembres.info": "To be used as a template to update information",
+ "téléchargéeLaLicence": "Download license",
+ "validationDeLaLicence": "License validation",
+ "validationDesLicences": "License validations",
+ "validerDesLicences": "Validate licenses",
+ "validerLePayement_one": "Validate payment for the selected license",
+ "validerLePayement_other": "Validate payment for the {{count}} selected licenses",
"validerLePayement_zero": "$t(validerLePayement_other)",
- "validerLicence.msg_one": "Are you sure you want to validate the licence?",
- "validerLicence.msg_other": "Are you sure you want to validate the {{count}} licences?",
+ "validerLicence.msg_one": "Are you sure you want to validate the license?",
+ "validerLicence.msg_other": "Are you sure you want to validate the {{count}} licenses?",
"validerLicence.msg_zero": "$t(validerLicence.msg_other)",
- "validerLicence_one": "Validate the selected licence",
- "validerLicence_other": "Validate the {{count}} selected licences",
+ "validerLicence_one": "Validate the selected license",
+ "validerLicence_other": "Validate the {{count}} selected licenses",
"validerLicence_zero": "$t(validerLicence_other)",
"validée": "Validated",
+ "voir/modifierLesParticipants": "View/Edit participants",
"voirLesStatues": "View statues",
"à": "at",
"étatDeLaDemande": "Request status"
diff --git a/src/main/webapp/public/locales/fr/common.json b/src/main/webapp/public/locales/fr/common.json
index ed7bb93..d8b246d 100644
--- a/src/main/webapp/public/locales/fr/common.json
+++ b/src/main/webapp/public/locales/fr/common.json
@@ -5,8 +5,12 @@
"---ToutLesPays---": "--- tout les pays ---",
"---TouteLesCatégories---": "--- toute les catégories ---",
"--NonLicencier--": "-- Non licencier --",
+ "--SélectionnerCatégorie--": "-- Sélectionner catégorie --",
+ "1Catégorie": "+1 catégorie",
+ "2Catégorie": "+2 catégorie",
"activer": "Activer",
"admin": "Administration",
+ "administrateur": "Administrateur",
"adresse": "Adresse",
"adresseAdministrative": "Adresse administrative",
"aff.ancienNom": "Ancien nom: {{name}}",
@@ -73,9 +77,12 @@
"afficherLétatDesAffiliation": "Afficher l'état des affiliation",
"affiliation": "Affiliation",
"affiliationNo": "Affiliation n°{{no}}",
+ "ajout": "Ajout",
"ajouterUnClub": "Ajouter un club",
"ajouterUnMembre": "Ajouter un membre",
"all_season": "--- tout les saisons ---",
+ "au": "au",
+ "aucun": "Aucun",
"aucunMembreSélectionné": "Aucun membre sélectionné",
"back": "« retour",
"blason": "Blason",
@@ -86,9 +93,12 @@
"button.appliquer": "Appliquer",
"button.confirmer": "Confirmer",
"button.créer": "Créer",
+ "button.enregister": "Enregister",
"button.enregistrer": "Enregistrer",
"button.fermer": "Fermer",
+ "button.modifier": "Modifier",
"button.refuser": "Refuser",
+ "button.seDésinscrire": "Se désinscrire",
"button.suivant": "Suivant",
"button.supprimer": "Supprimer",
"cat.benjamin": "Benjamin",
@@ -103,6 +113,7 @@
"cat.superMini": "Super Mini",
"cat.vétéran1": "Vétéran 1",
"cat.vétéran2": "Vétéran 2",
+ "categorie": "categorie",
"catégorie": "Catégorie",
"certificatMédical": "Certificat médical",
"chargement...": "Chargement...",
@@ -135,15 +146,115 @@
"club_one": "Club",
"club_other": "Clubs",
"club_zero": "Sans club",
+ "combattant": "combattant",
+ "comp.aff.blason": "Afficher le blason du club sur les écrans",
+ "comp.aff.flag": "Afficher le pays du combattant sur les écrans",
+ "comp.ajoutRapide": "Ajout rapide",
+ "comp.ajouterUnCombattant": "Ajouter un combattant",
+ "comp.ajouterUnInvité": "Ajouter un invité",
+ "comp.billetterie": "Billetterie",
+ "comp.billetterieHelloasso": "Billetterie HelloAsso",
+ "comp.catégorieNormalisée": "Catégorie normalisée",
+ "comp.combattantNonTrouvé": "Combattant non trouvé",
+ "comp.combattantsInscrits": "Combattants inscrits",
+ "comp.compétitionFuture": "Compétition future",
+ "comp.compétitionPassée": "Compétition passée",
+ "comp.créationCompétition": "Création compétition",
+ "comp.dateDinscription": "Date d'inscription",
+ "comp.editionCompétition": "Edition compétition",
+ "comp.error1": "La date de fin doit être postérieure à la date de début.",
+ "comp.error2": "Veuillez renseigner les dates de début et de fin d'inscription.",
+ "comp.error3": "La date de fin d'inscription doit être postérieure à la date de début d'inscription.",
+ "comp.exporterLesInscription": "Exporter les inscription",
+ "comp.ha.emailDeRéceptionDesInscriptionséchoué": "Email de réception des inscriptions échoué",
+ "comp.ha.error1": "Veuillez renseigner l'URL de la billetterie HelloAsso et les tarifs associés.",
+ "comp.ha.error2": "L'URL de la billetterie HelloAsso n'est pas valide. Veuillez vérifier le format de l'URL.",
+ "comp.ha.error3": "Veuillez renseigner l'email de réception des inscriptions échouées.",
+ "comp.ha.tarifsHelloasso": "Tarifs HelloAsso",
+ "comp.ha.text1": "Afin de permettre une bonne interconnexion avec HelloAsso, merci de suivre les instructions suivantes :",
+ "comp.ha.text2": "Configurer l'url de notification : afin que nous puissions recevoir une notification à chaque inscription, il est nécessaire de configurer l'url de notification de votre compte HelloAsso pour qu'il redirige vers \"https://intra.ffsaf.fr/api/webhook/ha\". Pour ce faire, depuis la page d'accueil de votre association sur HelloAsso, allez dans Mon compte > Paramètres > Intégrations et API section Notification et copier-coller https://intra.ffsaf.fr/api/webhook/ha dans le champ Mon URL de callback et enregister.",
+ "comp.ha.text3": "Copier-coller le nom exacte des tarifs -sépare par des point-virgules- qui donneront lieux à une inscription automatique. Tous ces tarifs doivent impérativement demander le numéro de licence en champs obligatoire. Pour ce faire, lors de la configuration de votre billetterie à l'étape n°3, cliquer sur + Ajouter une information, saisissez l'intituler exact suivant Numéro de licence, dans Type de réponse souhaitée rentrer Nombre, sélectionner les tarifs entrés plus précédemment et rendre l'information obligatoire.",
+ "comp.ha.text4": "Copier-coller l'url de votre billetterie dans le champs si dessous. Il devrais avoir la forme suivante: https://www.helloasso.com/associations/__nom-asso-sur-helloasso__/evenements/__nom-billetterie__",
+ "comp.ha.text5": "Url de la billetterie HelloAsso",
+ "comp.ha.text6": "Si pour une raison quelconque l'inscription automatique échoue, un email sera envoyé à cette adresse pour vous en informer",
+ "comp.informationsGénéralesSurLaCompétition": "Informations générales sur la compétition",
+ "comp.informationsSurLeModeDinscription": "Informations sur le mode d'inscription",
+ "comp.informationsTechniques": "Informations techniques",
+ "comp.inscription": "Inscription",
+ "comp.inscriptionModeAdministrateur": "Inscription - mode administrateur",
+ "comp.inscriptionsLibres": "Inscriptions libres",
+ "comp.inscriptionsParLesAdministrateursDeLaCompétition": "Inscriptions par les administrateurs de la compétition",
+ "comp.inscriptionsParLesResponsablesDeClub": "Inscriptions par les responsables de club",
+ "comp.inscriptionsSurLaBilletterieHelloasso": "Inscriptions sur la billetterie HelloAsso",
+ "comp.modal.information": "Information",
+ "comp.modal.poids": "Poids (en kg)",
+ "comp.modal.recherche": "Recherche*",
+ "comp.modal.surclassement": "Surclassement",
+ "comp.modal.text1": "Les invités sont réservés aux membres non licenciés par la fédération. Les combattants inscrits via ce formulaire ne pourront pas voir leur résultat depuis leur profil.",
+ "comp.modal.text2": "Empêcher les membres/club de modifier cette inscription",
+ "comp.modifierLesParticipants": "Voir/Modifier les participants",
+ "comp.monInscription": "Mon inscription",
+ "comp.noDeLicence": "N° de licence",
+ "comp.nouvelleCompétition": "Nouvelle compétition",
+ "comp.organisateur": "Organisateur",
+ "comp.quiPeutInscrire": "Qui peut inscrire",
+ "comp.reg.libres": "Libres",
+ "comp.reg.parLesAdministrateursDeLaCompétition": "Par les administrateurs de la compétition",
+ "comp.reg.parLesResponsablesDeClub": "Par les responsables de club",
+ "comp.reg.surLaBilletterieHelloasso": "Sur la billetterie HelloAsso",
+ "comp.responsablesEtBureauxDesAssociations": "Responsables et bureaux des associations",
+ "comp.sinscrire": "S'inscrire",
+ "comp.supprimerLaCompétition": "Supprimer la compétition",
+ "comp.supprimerLaCompétition.msg": "Êtes-vous sûr de vouloir supprimer cette compétition est tout les resultat associer?",
+ "comp.surclassement_one": "{{cat}} avec 1 de surclassement",
+ "comp.surclassement_other": "{{cat}} avec {{count}} de surclassements",
+ "comp.surclassement_zero": "{{cat}}",
+ "comp.text2": "Visible par le public (Apparaît dans la liste des compétitions)",
+ "comp.text3": "Si non coché, la compétition ne sera visible que par les personnes pouvant y inscrire des participants.",
+ "comp.tips": "Tips 1: Il est possible de bannir un combattant, ce qui l'empêchera d'être réinscrit par un autre moyen que par un administrateur de cette compétition. Pour cela, cliquez sur la petite <1/> à côté de son nom.
Tips 2: Il est aussi possible de verrouiller les modifications de son inscription depuis sa fiche, ce qui l'empêchera d'être modifié/supprimé par lui-même et/ou un responsable de club.",
+ "comp.toast.del.error": "Échec de la suppression de la compétition",
+ "comp.toast.del.pending": "Suppression de la compétition en cours",
+ "comp.toast.del.success": "Compétition supprimée avec succès 🎉",
+ "comp.toast.params.error": "Échec de la mise à jours des paramètres de la compétition",
+ "comp.toast.params.pending": "Mise à jours des paramètres de la compétition en cours...",
+ "comp.toast.params.success": "Paramètres de la compétition mis à jours avec succès 🎉",
+ "comp.toast.register.add.error": "Combattant non trouvé",
+ "comp.toast.register.add.pending": "Recherche en cours",
+ "comp.toast.register.add.success": "Combattant trouvé et ajouté/mis à jour",
+ "comp.toast.register.ban.error": "Erreur",
+ "comp.toast.register.ban.pending": "Désinscription en cours",
+ "comp.toast.register.ban.success": "Combattant désinscrit et bannie",
+ "comp.toast.register.del.error": "Erreur",
+ "comp.toast.register.del.pending": "Désinscription en cours",
+ "comp.toast.register.del.success": "Combattant désinscrit",
+ "comp.toast.register.self.add.error": "Erreur lors de l'inscription",
+ "comp.toast.register.self.add.pending": "Inscription en cours",
+ "comp.toast.register.self.add.success": "Inscription réalisée 🎉",
+ "comp.toast.register.self.del.error": "Erreur lors de la désinscription",
+ "comp.toast.register.self.del.pending": "Désinscription en cours",
+ "comp.toast.register.self.del.success": "Désinscription réalisée",
+ "comp.toast.save.error": "Échec de l'enregistrement de la compétition",
+ "comp.toast.save.pending": "Enregistrement de la compétition en cours",
+ "comp.toast.save.success": "Compétition enregistrée avec succès 🎉",
+ "comp.tousLesMembresDeLaFfsaf": "Tous les membres de la FFSAF",
+ "comp.typeDinscription": "Type d'inscription",
+ "comp.uniquementLesAdministrateursDeLaCompétition": "Uniquement les administrateurs de la compétition",
+ "comp.warn1": "Êtes-vous sûr de vouloir désinscrire et bannir ce combattant de la compétition?\n(Vous pouvez le réinscrire plus tard)\"",
+ "comp.warn2": "Êtes-vous sûr de vouloir désinscrire ce combattant ?\nCela ne le désinscrira pas de la billetterie HelloAsso et ne le remboursera pas.",
+ "comp.warn3": "Êtes-vous sûr de vouloir désinscrire ce combattant ?",
+ "comp.warn4": "Êtes-vous sûr de vouloir vous désinscrire ?",
"comp_manage": "Compétitions Manager",
"competition_one": "Compétition",
"competition_other": "Compétitions",
"compte": "Compte",
+ "compétition": "Compétition",
+ "configuration": "Configuration",
"conserverLancienEmail": "Conserver l'ancien email",
"contactAdministratif": "Contact administratif",
"contactInterne": "Contact interne",
"contact_one": "Contact",
"contact_other": "Contacts",
+ "date": "Date",
"dateDeNaissance": "Date de naissance",
"days": [
"Lundi",
@@ -158,8 +269,11 @@
"demandeDaffiliationEnCours": "Demande d'affiliation en cours",
"demandeDeLicence": "Demande de licence ",
"demander": "Demander",
+ "description": "Description",
"dlAff": "Téléchargée l'attestation d'affiliation",
"donnéesAdministratives": "Données administratives",
+ "du": "Du",
+ "dun": "d'un",
"définirLidDuCompte": "Définir l'id du compte",
"editionDeL'affiliation": "Edition de l'affiliation",
"editionDeLaDemande": "Edition de la demande ",
@@ -173,12 +287,14 @@
"erreurDePaiement.detail": "Message d'erreur :",
"erreurDePaiement.msg": "Une erreur est survenue lors du traitement de votre paiement. Veuillez réessayer plus tard.",
"espaceAdministration": "Espace administration",
+ "f": "F",
"faitPar": "Fait par",
"femme": "Femme",
"filtre": "Filtre",
"genre": "Genre",
"gestionGroupée": "Gestion groupée",
"gradeDarbitrage": "Grade d'arbitrage",
+ "h": "H",
"home": {
"header1": "Pour les licenciés",
"header2": "Pour les clubs",
@@ -189,10 +305,12 @@
"homme": "Homme",
"horairesD'entraînements": "Horaires d'entraînements",
"information": "Information",
+ "invité": "invité",
"keepEmpty": "Laissez vide pour ne rien changer.",
"le": "le",
"licence": "Licence",
"licenceNo": "Licence n°{{no}}",
+ "lieu": "Lieu",
"lieuxDentraînements": "Lieux d'entraînements",
"loading": "Chargement...",
"me": {
@@ -294,6 +412,7 @@
"membre.toast.select.save.pending": "Enregistrement de la séléction en cours",
"membre.toast.select.save.success": "Séléction enregistrée avec succès 🎉",
"mettreàJours": "Mettre à jours",
+ "modification": "Modification",
"nationalité": "Nationalité",
"nav": {
"account": "Mon compte",
@@ -321,6 +440,7 @@
"nouveauClub": "Nouveau club",
"nouveauMembre": "Nouveau membre",
"nouvelEmail": "Nouvel email",
+ "ou": "Ou",
"oui": "Oui",
"outdated_session": {
"login_button": "Se reconnecter",
@@ -334,6 +454,7 @@
"page_info_ligne": "{{show}} ligne(s) affichée(s) sur {{total}}",
"paiementDeLaLicence": "Paiement de la licence",
"paiementDesLicences": "Paiement des licences",
+ "par": "par",
"pasDeLicence": "Pas de licence",
"payment.ha.info": "Le modèle solidaire de HelloAsso garantit que 100% de votre paiement sera versé à l’association choisie. Vous pouvez soutenir l’aide qu’ils apportent aux associations en laissant une contribution volontaire à HelloAsso au moment de votre paiement.",
"payment.info": "A propos de HelloAsso",
@@ -353,6 +474,7 @@
"permission": "Permission",
"photos": "Photos",
"prenom": "Prénom",
+ "prénomEtNom": "Prénom et nom",
"rechercher": "Rechercher",
"rechercher...": "Rechercher...",
"registration_one": "Inscription",
@@ -372,6 +494,7 @@
"role.vise-secrétaire": "Vise-Secrétaire",
"role.vise-trésorier": "Vise-Trésorier",
"saison": "Saison",
+ "secrétariatsDeLice": "Secrétariats de lice",
"selectionner...": "Sélectionner...",
"siretOuRna": "SIRET ou RNA",
"stats": "Statistiques",
@@ -413,6 +536,7 @@
"validerLicence_other": "Valider les {{count}} licences sélectionnées",
"validerLicence_zero": "$t(validerLicence_other)",
"validée": "Validée",
+ "voir/modifierLesParticipants": "Voir/Modifier les participants",
"voirLesStatues": "Voir les statues",
"à": "à",
"étatDeLaDemande": "État de la demande"
diff --git a/src/main/webapp/src/pages/competition/CompetitionEdit.jsx b/src/main/webapp/src/pages/competition/CompetitionEdit.jsx
index f7eeedb..a938abd 100644
--- a/src/main/webapp/src/pages/competition/CompetitionEdit.jsx
+++ b/src/main/webapp/src/pages/competition/CompetitionEdit.jsx
@@ -6,31 +6,24 @@ import {CheckField, OptionField, TextField} from "../../components/MemberCustomF
import {ClubSelect} from "../../components/ClubSelect.jsx";
import {ConfirmDialog} from "../../components/ConfirmDialog.jsx";
import {toast} from "react-toastify";
-import {apiAxios, errFormater} from "../../utils/Tools.js";
+import {apiAxios, getToastMessage} from "../../utils/Tools.js";
import {useEffect, useReducer, useState} from "react";
import {SimpleReducer} from "../../utils/SimpleReducer.jsx";
import {FontAwesomeIcon} from "@fortawesome/react-fontawesome";
import {faAdd, faTrashCan} from "@fortawesome/free-solid-svg-icons";
+import {Trans, useTranslation} from "react-i18next";
export function CompetitionEdit() {
const {id} = useParams()
const navigate = useNavigate();
+ const {t} = useTranslation();
const setLoading = useLoadingSwitcher()
const {data, refresh, error} = useFetch(`/competition/${id}?light=false`, setLoading, 1)
const handleRm = () => {
toast.promise(
- apiAxios.delete(`/competition/${id}`),
- {
- pending: "Suppression de la compétition en cours...",
- success: "Compétition supprimé avec succès 🎉",
- error: {
- render({data}) {
- return errFormater(data, "Échec de la suppression de la compétition")
- }
- },
- }
+ apiAxios.delete(`/competition/${id}`), getToastMessage("comp.toast.del")
).then(_ => {
navigate("/competition")
})
@@ -42,7 +35,7 @@ export function CompetitionEdit() {
return <>