{
  "brand": {
    "tagline": "Trouvez votre moniteur de ski ou de snowboard"
  },
  "common": {
    "fixMarked": "Vérifiez ce qui est marqué en rouge.",
    "skipToContent": "Aller au contenu",
    "language": "Langue",
    "signIn": "Se connecter",
    "signUp": "S'inscrire",
    "loading": "Chargement…",
    "cancel": "Annuler",
    "close": "Fermer",
    "save": "Enregistrer",
    "unsavedChanges": "Vous avez des modifications non enregistrées.",
    "discard": "Annuler les modifications",
    "unsavedLeave": "Vous avez des modifications non enregistrées. Quitter sans les enregistrer ?",
    "delete": "Supprimer",
    "back": "Retour",
    "retry": "Réessayer",
    "select": "Sélectionner",
    "menu": "Menu",
    "openChat": "Ouvrir la messagerie",
    "viewBooking": "Voir la réservation",
    "viewProfile": "Voir le profil",
    "seeAll": "Tout voir",
    "showMore": "Voir plus",
    "showLess": "Voir moins",
    "typeToConfirm": "Saisissez {phrase} pour confirmer",
    "saving": "Enregistrement…",
    "emailDidYouMean": "Vouliez-vous dire {email} ?",
    "optional": "Facultatif"
  },
  "nav": {
    "findInstructor": "Trouver un moniteur",
    "countries": "Par pays",
    "resorts": "Stations",
    "howItWorks": "Comment ça marche",
    "becomeInstructor": "Devenir moniteur",
    "registerSchool": "Inscrire mon école",
    "dashboard": "Tableau de bord",
    "bookings": "Réservations",
    "requests": "Demandes",
    "calendar": "Calendrier",
    "messages": "Messages",
    "favourites": "Favoris",
    "earnings": "Revenus",
    "invoices": "Factures",
    "profile": "Profil",
    "notifications": "Notifications",
    "settings": "Paramètres",
    "admin": "Admin",
    "finances": "Finances",
    "schoolInstructors": "Moniteurs",
    "previewPage": "Voir ma page",
    "privateLessons": "Cours privés",
    "groupLessons": "Cours collectifs",
    "equipmentRental": "Location de matériel",
    "connections": "Connexions"
  },
  "registration": {
    "question": "D'abord, dites-nous qui vous êtes",
    "kind": {
      "instructor": "Je suis moniteur indépendant",
      "instructorBody": "Votre propre profil, vos tarifs et votre calendrier.",
      "school": "Je veux inscrire mon école",
      "schoolBody": "Inscrivez l'école, puis invitez vos moniteurs par e-mail."
    },
    "heardFrom": {
      "instagram": "Instagram",
      "google": "Google",
      "email": "Un e-mail d'Alpine Pal",
      "phone": "Un appel d'Alpine Pal",
      "other": "Autre",
      "instructor": "Invitation d'un moniteur"
    },
    "heardFromOtherLabel": "Où ? (facultatif)",
    "heardFromOtherPlaceholder": "Bouche-à-oreille, un salon, un autre site…",
    "conflictTitle": "Un compte, un rôle",
    "signOutForSchool": "Se déconnecter et créer un compte école",
    "signOutForInstructor": "Se déconnecter et créer un compte moniteur"
  },
  "view": {
    "label": "Voir l'application en tant que",
    "admin": "Administrateur",
    "instructor": "Moniteur",
    "customer": "Élève",
    "school": "École"
  },
  "home": {
    "heroTitle": "Trouvez votre moniteur de ski ou de snowboard",
    "heroSubtitle": "Réservez des moniteurs vérifiés, indépendants ou en école de ski, dans les meilleures stations du monde. Payez en toute sécurité, échangez en direct, skiez l'esprit tranquille.",
    "popularResorts": "Stations populaires",
    "featuredInstructors": "Moniteurs à la une",
    "featuredSchools": "Écoles de ski à la une",
    "howTitle": "Comment fonctionne Alpine Pal",
    "how1Title": "Cherchez et comparez",
    "how1Body": "Filtrez les moniteurs par station, langue, discipline, prix et disponibilités.",
    "how2Title": "Réservez et payez en toute sécurité",
    "how2Body": "Envoyez une demande de réservation payée. Remboursement intégral si elle n'est pas acceptée.",
    "how3Title": "Échangez et retrouvez-vous sur les pistes",
    "how3Body": "Écrivez tout de suite à votre moniteur, convenez d'un point de rendez-vous et profitez de votre cours.",
    "whyTitle": "Pourquoi réserver avec Alpine Pal",
    "why1": "Des moniteurs vérifiés, indépendants ou en école",
    "why2": "Remboursement intégral si votre moniteur n'accepte pas",
    "why3": "L'heure locale de chaque station",
    "why4": "Une assistance dans votre langue",
    "ctaTitle": "Vous êtes moniteur diplômé ?",
    "ctaBody": "Rejoignez Alpine Pal et touchez une clientèle internationale toute la saison. Gardez 90 % du prix de vos cours.",
    "ctaButton": "Devenir moniteur"
  },
  "hiw": {
    "title": "Comment fonctionne Alpine Pal",
    "subtitle": "Du choix du bon moniteur au rendez-vous sur les pistes : réserver un cours ne prend que trois étapes.",
    "ctaTitle": "Envie de dévaler les pistes ?",
    "ctaBody": "Trouvez un moniteur vérifié dans votre station et réservez votre premier cours en quelques minutes.",
    "ctaSearch": "Trouver un moniteur"
  },
  "privateLessons": {
    "faqTitle": "Les questions qu'on se pose avant de réserver",
    "ctaTitle": "Trouvez un moniteur dans votre station",
    "ctaBody": "Filtrez par station, date, discipline et langue, lisez les profils et écrivez à celui ou celle qui vous convient avant de réserver quoi que ce soit.",
    "ctaButton": "Voir les moniteurs",
    "navLabel": "Cours particuliers",
    "moreLink": "Ce que comprend un cours particulier, et comment fonctionne la réservation"
  },
  "becomeInstr": {
    "stepsTitle": "Comment ça marche",
    "step1Title": "Créez votre profil",
    "step1Body": "Parlez-nous de votre expérience, de vos diplômes, des langues dans lesquelles vous enseignez et des stations où vous travaillez. Nous vérifions chaque moniteur indépendant avant sa mise en ligne ; les moniteurs d'une école sont garantis par leur école.",
    "step2Title": "Fixez vos tarifs et vos disponibilités",
    "step2Body": "Choisissez votre prix horaire et la taille des groupes, et n'ouvrez que les heures où vous voulez enseigner.",
    "step3Title": "Recevez des réservations et vos paiements",
    "step3Body": "Les clients paient d'avance en envoyant leur demande de réservation. Acceptez celles qui vous conviennent et gardez 90 % du prix du cours.",
    "benefitsTitle": "Pourquoi enseigner avec Alpine Pal",
    "benefit1Title": "Une clientèle internationale",
    "benefit1Body": "Des élèves du monde entier vous trouvent, sans marketing ni agence.",
    "benefit2Title": "Votre calendrier, vos règles",
    "benefit2Body": "Vous décidez quand, où et combien vous enseignez. Acceptez ou refusez chaque demande.",
    "benefit3Title": "Des paiements sécurisés",
    "benefit3Body": "Les cours sont payés d'avance : vous n'aurez plus jamais à courir après un paiement.",
    "benefit4Title": "Une messagerie intégrée",
    "benefit4Body": "Convenez des points de rendez-vous et des détails du cours avec vos clients, au même endroit.",
    "ctaTitle": "Envie de nous rejoindre ?",
    "ctaBody": "Créez votre compte et commencez à bâtir votre profil de moniteur dès aujourd'hui.",
    "ctaButton": "Créer votre compte",
    "ctaSignIn": "J'ai déjà un compte",
    "ctaSchoolLink": "Vous êtes une école de ski ?",
    "ctaSchoolLinkCta": "Inscrivez-la ici",
    "schoolCannotApply": "Ce compte gère une école de ski. Un profil de moniteur a son propre compte : inscrivez-vous avec une autre adresse e-mail pour candidater.",
    "applyTitle": "Candidater comme moniteur",
    "applySubtitle": "Parlez-nous de vous. Notre équipe examine chaque candidature avant la mise en ligne du profil.",
    "applyTitleSchool": "Complétez votre profil pour {school}",
    "applySubtitleSchool": "Parlez-nous de vous. Votre profil est mis en ligne dès l'envoi, garanti par {school}.",
    "schoolSetsPrice": "Votre tarif horaire est fixé par {school} : il figure dans l'invitation, et l'école peut l'ajuster plus tard.",
    "schoolSetsFormats": "Vous vendrez avec les formules, saisons et prix de {school} : l'école les fixe et ils changent quand elle les modifie.",
    "schoolRunsCalendar": "{school} gère votre calendrier et vos demandes, avec ses heures ouvertes ; elle peut vous les confier plus tard.",
    "kindLabel": "Comment souhaitez-vous vous présenter ?",
    "kind": {
      "certified": "Moniteur diplômé indépendant",
      "certifiedBody": "Vous détenez un diplôme officiel qui vous autorise à enseigner (diplôme d'État, BASI, ISIA, PSIA…) et vous travaillez à votre compte.",
      "enthusiast": "Passionné, sans diplôme",
      "enthusiastBody": "Aucun diplôme : vous skiez avec vos clients et partagez votre expérience de la montagne, sans donner de cours.",
      "school": "Moniteur d'école de ski",
      "schoolBody": "Vous avez un diplôme et vous enseignez pour une école de ski qui travaille avec Alpine Pal."
    },
    "countryFirst": "Choisissez votre pays pour voir comment nous rejoindre.",
    "schoolInviteNotice": "Les moniteurs d'école rejoignent Alpine Pal via l'invitation que leur école envoie par e-mail : il n'y a pas de formulaire à remplir ici. Demandez à votre école de vous inviter depuis son tableau de bord Alpine Pal.",
    "schoolInviteCta": "Votre école n'est pas encore sur Alpine Pal ? Parlez-lui de nous",
    "draftRestored": "Nous avons récupéré ce que vous aviez laissé en cours.",
    "draftDiscard": "Repartir de zéro",
    "kindGate": "Choisissez une option pour voir la suite du formulaire.",
    "kindCertifiedNote": "Vous pourrez ajouter vos diplômes depuis votre profil une fois votre candidature approuvée.",
    "kindEnthusiastNote": "Important : dans de nombreux pays, enseigner le ski contre rémunération exige un diplôme officiel. En tant que passionné, vous vous engagez à ne pas donner de cours et à respecter le règlement de votre station.",
    "bioLabel": "À propos de vous",
    "bioPlaceholder": "Votre expérience, vos diplômes et votre façon d'enseigner.",
    "bioTranslateHint": "Écrivez-la dans la langue où vous êtes le plus à l'aise. Nous la traduisons automatiquement dans les autres langues du site.",
    "resortsLabel": "Où enseignez-vous ?",
    "resortsHint": "Choisissez un pays, puis une ou plusieurs stations. La première définit votre devise.",
    "languagesLabel": "Langues d'enseignement",
    "dobLabel": "Date de naissance",
    "dobHint": "Votre profil affiche votre âge, jamais la date. Il faut être majeur pour s'inscrire comme moniteur.",
    "yearsLabel": "Années d'expérience",
    "priceLabel": "Prix horaire",
    "extraStudentLabel": "Prix par élève supplémentaire",
    "groupSetupNow": "Configurer maintenant les prix des cours collectifs",
    "groupSetupHint": "Facultatif. Sans cocher cette case, vous pourrez activer les cours collectifs plus tard dans la rubrique Cours collectifs de votre tableau de bord.",
    "submit": "Envoyer la candidature",
    "submitted": "Candidature envoyée !",
    "missingName": "Indiquez votre nom",
    "missingDob": "Indiquez votre date de naissance",
    "tooYoung": "Vous devez avoir au moins {min} ans pour vous inscrire comme moniteur",
    "dobInvalid": "Cette date de naissance n'est pas valide",
    "missingBio": "Rédigez une courte biographie",
    "missingResorts": "Choisissez au moins une station",
    "missingLanguages": "Choisissez au moins une langue",
    "missingLicence": "Un numéro de licence est obligatoire dans votre pays",
    "missingTitle": "Envoyez votre diplôme ou indiquez son numéro",
    "heardFromLabel": "Comment avez-vous connu Alpine Pal ?",
    "missingHeardFrom": "Dites-nous comment vous avez connu Alpine Pal",
    "missingTerms": "Acceptez les conditions",
    "goToDashboard": "Aller à votre tableau de bord moniteur",
    "status": {
      "pendingTitle": "Candidature en cours d'examen",
      "pendingBody": "Merci ! Notre équipe examine votre profil. Nous le publierons dès qu'il aura été validé et vous préviendrons par e-mail.",
      "pendingNextStep": "En attendant, préparez votre calendrier : votre profil n'a encore aucune heure de cours, et personne ne peut vous réserver tant que vous n'en ouvrez pas.",
      "verifiedTitle": "Votre profil de moniteur est vérifié",
      "verifiedBody": "Votre profil est en ligne. Gérez vos tarifs, votre calendrier et vos demandes depuis votre tableau de bord.",
      "rejectedTitle": "Candidature non approuvée",
      "rejectedBody": "Votre candidature n'a pas été approuvée cette fois-ci. Contactez l'assistance si vous pensez qu'il s'agit d'une erreur."
    },
    "companionBlocked": "Dans les pays choisis ({countries}), enseigner contre rémunération exige un diplôme officiel : l'option passionné n'y est donc pas disponible.",
    "credentialTitle": "Votre diplôme",
    "credentialRequired": "Pour enseigner dans les pays choisis ({countries}), il vous faut le titre requis : « {credential} ». Indiquez-nous son numéro et nous le vérifierons dans le registre officiel avant de publier votre profil.",
    "credentialRequiredTitle": "Pour enseigner dans les pays choisis ({countries}), il vous faut le titre requis : « {credential} ». Aucun numéro de licence n'est demandé : envoyez une photo ou un PDF du diplôme et nous le vérifierons avant de publier votre profil.",
    "credentialSchoolVouches": "Dans les pays choisis ({countries}), {school} répond de vous pour enseigner sur les pistes : votre diplôme n'est donc pas obligatoire. Si vous en avez un, ajoutez-le : il apparaîtra sur votre profil, et il vous le faut pour enseigner en hors-piste ou à votre compte.",
    "credentialOptional": "Aucune licence n'est exigée par la loi dans les pays que vous avez choisis. Si vous détenez un diplôme, indiquez-le et nous pourrons le vérifier : votre profil l'affichera comme vérifié.",
    "licenceNumber": "Numéro de licence ou d'enregistrement",
    "titleNumber": "Numéro du diplôme (s'il en a un)",
    "credentialName": "Nom du diplôme",
    "credentialIssuer": "Délivré par",
    "credentialYear": "Année d'obtention",
    "credentialDocument": "Justificatif (facultatif)",
    "credentialDocumentTitle": "Photo ou PDF du diplôme",
    "credentialDocumentHint": "PDF ou photo, 8 Mo maximum. Seuls vous et notre équipe de vérification pouvez l'ouvrir. Nous le conservons comme preuve du contrôle.",
    "credentialUploaded": "Document enregistré",
    "credentialAttached": "Document importé",
    "credentialNotSavedYet": "Pas encore enregistré : renseignez les informations du diplôme, puis cliquez sur le bouton ci-dessous.",
    "credentialUpload": "Importer le document",
    "credentialReplace": "Remplacer le document",
    "acceptResponsibility": "Je confirme qu'il m'appartient de détenir un diplôme, une licence et une assurance valides pour les stations que j'ai choisies, que les documents que je fournis sont authentiques, et que j'accepte les",
    "acceptResponsibilityCompanion": "Je confirme que je ne donnerai pas de cours et ne me présenterai pas comme moniteur diplômé, qu'il m'appartient de détenir l'assurance exigée par les stations que j'ai choisies, et que j'accepte les",
    "specialtiesHint": "Facultatif. Cochez ce qui vous décrit le mieux : c'est ce qu'un client voit sur votre profil pour juger si vous correspondez à ce qu'il cherche.",
    "offPisteNeedsTitle": "Dans les pays choisis ({countries}), « Hors-piste », « Freeride » et « Big mountain » exigent votre propre diplôme : ajoutez-le pour pouvoir les cocher.",
    "credentialExpiry": "Date d'expiration",
    "credentialNeverExpires": "Ce diplôme n'expire pas",
    "missingExpiry": "Indiquez la date d'expiration, ou cochez qu'il n'expire pas",
    "reapply": "Demander un nouvel examen",
    "reapplyBody": "Corrigez depuis votre profil ce qui n'allait pas (le diplôme, le numéro de licence, le document) et demandez-nous de regarder à nouveau.",
    "reapplied": "Envoyé. Nous l'examinerons à nouveau.",
    "faqTitle": "Les questions que posent les moniteurs",
    "moreTitle": "Pour en savoir plus sur l'enseignement avec Alpine Pal :",
    "moreCountries": "ce que chaque pays exige",
    "priceTooLow": "C'est trop bas pour pouvoir l'encaisser : le minimum est de {min} {currency} par heure.",
    "groupPriceTooLow": "C'est trop bas pour pouvoir l'encaisser : le minimum est de {min} {currency} par personne.",
    "missingPrice": "Relevez votre prix horaire jusqu'au minimum"
  },
  "search": {
    "title": "Trouver un moniteur",
    "country": "Pays",
    "resort": "Station",
    "selectCountryFirst": "Sélectionnez d'abord un pays",
    "selectDateFirst": "Choisissez d'abord une date",
    "maxPricePerHour": "Jusqu'à {price}/h",
    "allCountries": "Tous les pays",
    "allResorts": "Toutes les stations",
    "date": "Date",
    "startTime": "Heure de début",
    "duration": "Durée",
    "durationHours": "{hours} h",
    "discipline": "Discipline",
    "ski": "Ski",
    "snowboard": "Snowboard",
    "both": "Ski et snowboard",
    "language": "Langue du cours",
    "anyLanguage": "Toutes les langues",
    "students": "Nombre d'élèves",
    "cta": "Trouver un moniteur",
    "resultsCount": "{count} résultats",
    "resultsCountOne": "1 résultat",
    "noResults": "Aucun cours ne correspond à vos filtres.",
    "noResultsHint": "Essayez de changer la station, la langue ou la date.",
    "lessonType": "Type de cours",
    "lessonTypeAny": "Particuliers et collectifs",
    "lessonTypePrivate": "Particuliers",
    "lessonTypeGroup": "Collectifs",
    "groupsTitle": "Cours collectifs",
    "priceFrom": "dès {price}",
    "schoolBadge": "École",
    "schoolAssigns": "L'école attribue le moniteur de votre cours.",
    "schoolBook": "Réserver avec l'école",
    "filters": "Filtres",
    "clearFilters": "Effacer les filtres",
    "nameFilter": "Nom : {name}",
    "nameFilterClear": "Retirer le nom",
    "priceRange": "Fourchette de prix",
    "minRating": "Note minimale",
    "minExperience": "Années d'expérience minimum",
    "instructorKind": "Type de moniteur",
    "anyKind": "Tous",
    "sort": "Trier par",
    "sortRecommended": "Recommandés",
    "sortHighestRated": "Mieux notés",
    "sortMostExperienced": "Plus expérimentés",
    "sortLowestPrice": "Prix croissant",
    "sortHighestPrice": "Prix décroissant",
    "sortMostReviewed": "Plus d'avis",
    "sortFastestResponse": "Réponse la plus rapide",
    "selectInstructor": "Sélectionner",
    "nextAvailable": "Prochaine disponibilité",
    "perHour": "/heure",
    "years": "{years} ans",
    "reviews": "{count} avis",
    "rankingNotice": "L'ordre « Recommandés » peut être influencé par la commission que paient certaines écoles et certains moniteurs.",
    "rankingLink": "Comment nous classons les résultats"
  },
  "resort": {
    "localTimeNotice": "Tous les horaires sont indiqués à l'heure locale de la station.",
    "featuredInstructors": "{resort} : moniteurs à la une",
    "noInstructorsTitle": "Aucun moniteur disponible dans cette station pour le moment",
    "noInstructorsBody": "Personne ne propose de cours ici pour l'instant : essayez une station voisine, ou repassez bientôt.",
    "comingSoonTitle": "{resort} : de nouveaux moniteurs arrivent bientôt",
    "comingSoonBodyOne": "{school} a rejoint Alpine Pal et ajoute ses moniteurs. En attendant, vous pouvez contacter l'école depuis sa page.",
    "comingSoonBodyMany": "Ces écoles ont rejoint Alpine Pal et ajoutent leurs moniteurs. En attendant, vous pouvez les contacter depuis leur page.",
    "schoolsBookableTitle": "{resort} : réservez avec une école de ski",
    "schoolsBookableBody": "Aucun moniteur n'a encore son propre profil ici, mais vous pouvez déjà réserver auprès de l'école, qui attribue le moniteur.",
    "schoolView": "Voir l'école",
    "schoolBook": "Réserver un cours",
    "groupLessonsTitle": "Cours collectifs à {resort}",
    "groupLessonsIntro": "Apprenez avec d'autres personnes de niveau similaire : chacun réserve et paie sa place. La prochaine date de chaque cours :",
    "groupLessonWith": "avec {name}",
    "schoolSeatsTitle": "Ou réservez auprès d'une école de ski",
    "schoolSeatsIntro": "Ces écoles vendent des cours à {resort} sans nommer le moniteur : vous réservez auprès de l'école, qui attribue un moniteur de son équipe.",
    "instructorCtaTitle": "{resort} : vous y enseignez ?",
    "instructorCtaTitleGeneric": "Vous êtes moniteur dans le coin ?",
    "instructorCtaBody": "Rejoignez Alpine Pal, publiez votre profil et touchez les clients qui cherchent déjà des cours ici même.",
    "areas": "Secteurs de la station",
    "meetingPoints": "Points de rendez-vous suggérés",
    "searchAt": "Trouver un moniteur – {resort}",
    "filterPlaceholder": "Rechercher par nom, région ou pays…",
    "countResorts": "{n} stations",
    "showAll": "Voir les {n} autres",
    "showLess": "Voir moins",
    "noResults": "Aucune station ne correspond à votre recherche.",
    "factRegion": "Région",
    "factCountry": "Pays",
    "factTimeZone": "Heure locale",
    "factCurrency": "Devise",
    "factInstructors": "Moniteurs ici",
    "factFrom": "Cours à partir de",
    "factOpened": "Ouverture",
    "lessonsTitle": "Où commencent les cours",
    "gettingThereTitle": "Comment s'y rendre",
    "goodForTitle": "Idéale pour",
    "nearbyTitle": "Autres stations à proximité",
    "faqTitle": "{resort} : questions fréquentes",
    "mapLink": "Voir sur la carte",
    "officialSite": "Site officiel de la station",
    "ctaTitle": "{resort} : réservez votre cours",
    "ctaBody": "Comparez les moniteurs qui enseignent ici, écrivez-leur avant de vous engager et payez en toute sécurité via la plateforme.",
    "aboutTitle": "{resort} en bref",
    "audienceBeginners": "Débutants",
    "audienceFamilies": "Familles",
    "audienceIntermediates": "Niveau intermédiaire",
    "audienceAdvanced": "Skieurs avancés",
    "audienceFreeride": "Hors-piste et freeride",
    "audienceSnowboard": "Snowboard",
    "audienceNightskiing": "Ski nocturne",
    "audienceCrosscountry": "Ski de fond"
  },
  "countries": {
    "ES": "Espagne",
    "AD": "Andorre",
    "FR": "France",
    "IT": "Italie",
    "DE": "Allemagne",
    "AR": "Argentine",
    "CL": "Chili",
    "CH": "Suisse",
    "AT": "Autriche",
    "PL": "Pologne",
    "BG": "Bulgarie",
    "US": "États-Unis",
    "CA": "Canada",
    "JP": "Japon",
    "NZ": "Nouvelle-Zélande",
    "MC": "Monaco"
  },
  "country": {
    "hubTitle": "Moniteurs de ski et de snowboard par pays",
    "hubShort": "Par pays",
    "hubIntro": "Chaque pays skie à sa façon : le terrain, la saison, le prix d'un cours et même ce que la loi exige d'un moniteur changent quand on passe une frontière. Choisissez un pays pour voir ses stations, ses moniteurs et ce qu'il faut savoir avant de réserver.",
    "breadcrumbHome": "Accueil",
    "searchCta": "Trouver un moniteur – {country}",
    "browseAll": "Voir tous les moniteurs",
    "factResorts": "Stations de ski",
    "factSeason": "Saison",
    "factCurrency": "Devise",
    "factFrom": "Cours à partir de",
    "factLanguages": "Langues d'enseignement",
    "perHour": "{price} / heure",
    "terrainTitle": "Le terrain",
    "seasonTitle": "Quand partir",
    "instructorsTitle": "{country} : les moniteurs",
    "instructorsEmpty": "{country} : aucun moniteur ne s'est encore inscrit. Nous les ajoutons station par station ; si vous enseignez ici, c'est le bon moment pour être le premier.",
    "instructorsEmptyCta": "Devenir moniteur",
    "resortsTitle": "{country} : les stations de ski",
    "credentialsTitle": "{country} : diplômes exigés",
    "credentialsRequired": "{country} : enseigner le ski ou le snowboard contre rémunération y est une profession réglementée, et le moniteur doit détenir le titre requis (« {credential} »). Les moniteurs affichés comme diplômés sur Alpine Pal nous ont envoyé le leur pour vérification, ou sont garantis par l'école de ski qui les a invités.",
    "credentialsNotRequired": "{country} : il n'y existe pas de licence d'État pour enseigner. La référence professionnelle est « {credential} », et Alpine Pal affiche ce que chaque moniteur détient réellement pour que vous puissiez en juger vous-même.",
    "credentialsName": "Diplôme",
    "credentialsIssuer": "Délivré par",
    "credentialsRegister": "Registre public :",
    "credentialsDisclaimer": "Ceci est un résumé indicatif, pas un avis juridique. Le moniteur reste responsable de détenir un diplôme valide.",
    "faqTitle": "{country} : questions fréquentes",
    "relatedTitle": "Pays voisins",
    "ctaTitle": "{country} : envie de réserver ?",
    "ctaBody": "Comparez les moniteurs, écrivez-leur avant de vous engager et payez en toute sécurité via la plateforme.",
    "ctaButton": "Trouver un moniteur",
    "onThisPage": "Sur cette page",
    "navGuide": "Le guide",
    "navInstructors": "Moniteurs",
    "navResorts": "Stations",
    "navQualifications": "Diplômes",
    "navFaq": "Questions",
    "availableTitle": "Où réserver dès maintenant",
    "availableIntro": "{country} : les stations où au moins un moniteur prend des réservations sur Alpine Pal aujourd'hui.",
    "tableResort": "Station",
    "tableRegion": "Région",
    "tableInstructors": "Moniteurs",
    "tableFrom": "À partir de",
    "guideTitle": "{country} : le guide"
  },
  "instructor": {
    "verified": "Vérifié",
    "identityVerified": "Identité vérifiée",
    "certificationsVerified": "Diplômes vérifiés",
    "age": "{age} ans",
    "yearsExperience": "ans d'expérience",
    "completedLessons": "cours donnés",
    "responseRate": "Taux de réponse",
    "averageResponse": "Réponse moyenne",
    "instantConfirmation": "Confirmation immédiate",
    "biography": "À propos de moi",
    "specialties": "Spécialités",
    "resorts": "Stations",
    "languages": "Langues d'enseignement",
    "certifications": "Diplômes",
    "pricing": "Tarifs",
    "extraStudentPrice": "Par élève supplémentaire",
    "perExtraStudent": "par élève supplémentaire et par heure",
    "perExtraStudentLesson": "par élève supplémentaire et par cours",
    "reviews": "Avis",
    "book": "Réserver un cours",
    "favourite": "Ajouter aux favoris",
    "favourited": "Dans vos favoris",
    "sendMessage": "Message",
    "kind": {
      "certified": "Moniteur diplômé",
      "enthusiast": "Passionné"
    },
    "kindBadge": {
      "certified": {
        "male": "Moniteur diplômé",
        "female": "Monitrice diplômée",
        "unspecified": "Diplôme officiel"
      }
    },
    "newBadge": {
      "male": "Nouveau",
      "female": "Nouvelle",
      "unspecified": "Nouveau profil",
      "school": "Nouvelle"
    },
    "noReviewsYet": "Pas encore d'avis",
    "verifiedBadge": {
      "male": "Vérifié",
      "female": "Vérifiée",
      "unspecified": "Profil vérifié"
    },
    "verifiedBySchool": {
      "male": "Vérifié par son école",
      "female": "Vérifiée par son école",
      "unspecified": "Profil vérifié par son école"
    },
    "genderLabel": "Genre",
    "gender": {
      "male": "Homme",
      "female": "Femme",
      "unspecified": "Je préfère ne pas le dire"
    },
    "certificationsDeclared": "Déclarés par le moniteur, pas encore vérifiés par nos soins",
    "certificationsSchoolBacked": "Garantis par {school}, l'école à l'origine de l'invitation",
    "noCertifications": "Aucun diplôme enregistré pour le moment.",
    "certExpired": "Expiré",
    "certExpiredWarning": "L'un de vos diplômes a expiré. Importez sa version renouvelée pour que votre profil affiche un diplôme valide.",
    "freeCancellation": "Annulation gratuite jusqu'à {window} avant le cours"
  },
  "bio": {
    "machineFrom": {
      "en": "Traduit automatiquement de l'anglais",
      "es": "Traduit automatiquement de l'espagnol",
      "it": "Traduit automatiquement de l'italien",
      "fr": "Traduit automatiquement du français",
      "de": "Traduit automatiquement de l'allemand",
      "pl": "Traduit automatiquement du polonais",
      "nl": "Traduit automatiquement du néerlandais",
      "ru": "Traduit automatiquement du russe"
    },
    "originalIn": {
      "en": "Rédigée en anglais — pas encore de version française",
      "es": "Rédigée en espagnol — pas encore de version française",
      "it": "Rédigée en italien — pas encore de version française",
      "fr": "Rédigée en français — pas encore d'autre version",
      "de": "Rédigée en allemand — pas encore de version française",
      "pl": "Rédigée en polonais — pas encore de version française",
      "nl": "Rédigée en néerlandais — pas encore de version française",
      "ru": "Rédigée en russe — pas encore de version française"
    },
    "sourceLabel": "La langue dans laquelle vous écrivez",
    "sourceHelp": "Écrivez votre biographie une seule fois, dans votre langue. Nous la traduisons dans les autres langues du site.",
    "originalLabel": "Votre biographie ({language})",
    "translationsTitle": "Traductions",
    "translationsHelp": "Générées automatiquement à l'enregistrement. Modifiez celles que vous préférez formuler avec vos propres mots.",
    "chooseLanguage": "Langue à afficher ou à modifier",
    "auto": "Automatique",
    "yours": "Votre version",
    "pending": "Pas encore traduite",
    "willUpdate": "Elle sera régénérée à l'enregistrement.",
    "keptOnEdit": "Vous avez écrit celle-ci vous-même : elle reste telle quelle.",
    "edit": "Modifier",
    "restoreAuto": "Utiliser la traduction automatique",
    "close": "Fermer"
  },
  "favourites": {
    "empty": "Vous n'avez pas encore de moniteurs favoris. Touchez le cœur sur le profil d'un moniteur pour l'enregistrer ici.",
    "remove": "Retirer"
  },
  "settings": {
    "photoAlsoPublic": "C'est aussi la photo de votre profil public de moniteur.",
    "title": "Paramètres du compte",
    "subtitle": "Vos informations personnelles et vos préférences.",
    "firstName": "Prénom",
    "lastName": "Nom",
    "email": "E-mail",
    "country": "Pays",
    "preferredLanguage": "Langue préférée",
    "maxStudents": "Élèves max. par cours",
    "privateLessons": "Cours privés",
    "groupLessons": "Cours collectifs",
    "groupEnabled": "Proposer des cours collectifs",
    "groupEnabledHelp": "Désactivés par défaut. Une fois activés, vous pourrez publier des cours collectifs depuis votre calendrier ; les nouveaux cours prennent le prix ci-dessous.",
    "groupPrice": "Prix par personne",
    "groupPriceHelp": "Par place, pour tout le cours. En le modifiant, les cours collectifs déjà publiés sont aussi mis à jour.",
    "minNotice": "Délai minimum de réservation",
    "minNoticeHelp": "Les clients ne voient vos heures libres que s'ils réservent au moins avec ce délai d'avance.",
    "autoAccept": "Confirmation immédiate",
    "autoAcceptHelp": "Les réservations payées sont confirmées aussitôt, sans attendre que vous les acceptiez. Vous pouvez toujours annuler un cours confirmé, avec remboursement intégral du client.",
    "disciplineHelp": "C'est le filtre qu'utilisent les clients : mettez-le à jour si vous commencez à enseigner l'autre discipline.",
    "noticeNone": "Aucun délai minimum",
    "noticeHours": "Au moins {n} heures à l'avance",
    "saved": "Modifications enregistrées",
    "cancellationWindow": "Politique d'annulation",
    "cancellationOption": "Gratuite jusqu'à {window} avant",
    "cancellationOptionDefault": "Gratuite jusqu'à {window} avant (par défaut)",
    "cancellationWindowHelp": "Une fois un cours confirmé, le client peut encore l'annuler avec remboursement intégral jusqu'à ce délai avant le début ; ensuite, aucun remboursement. Elle s'applique à vos cours particuliers et collectifs, et le client la voit sur votre profil et avant de payer. Les réservations déjà faites gardent la politique sous laquelle elles ont été faites.",
    "cancellationBySchool": "Fixée par votre école : annulation gratuite jusqu'à {window} avant le cours."
  },
  "lessonsPage": {
    "noGroupLessons": "Pas de cours collectifs",
    "movedInstructor": "Les prix, le nombre d'élèves, le préavis et la confirmation immédiate se trouvent désormais dans la rubrique",
    "privateTitle": "Cours privés",
    "groupTitle": "Cours collectifs",
    "privateIntro": "Des cours pour un client et son groupe, sans mélanger des inconnus. Ici, vous décidez comment vous les vendez, à quel prix et à quelles heures.",
    "privateIntroSchool": "Les cours privés que l'école vend sans nommer le moniteur : vous publiez les heures, le client réserve et paie, et vous attribuez le moniteur quand vous voulez. Choisissez un moniteur ci-dessus pour voir les siens.",
    "privateIntroPerson": "Les cours privés de ce moniteur : ses tarifs et son calendrier. Si l'école gère son calendrier, vous le modifiez ici.",
    "groupIntro": "Des cours vendus place par place : chacun réserve et paie la sienne, et tous partagent le même cours. Activez-les, fixez le prix par personne et publiez-les dans le calendrier.",
    "groupIntroSchool": "Les cours collectifs que publie l'école : le prix par personne, les places, le niveau et le point de rendez-vous se règlent à la publication de chacun, et vous pouvez ensuite le confier à un moniteur de votre équipe.",
    "groupIntroPerson": "Les cours collectifs de ce moniteur : son prix par personne et son calendrier. Si l'école gère son calendrier, vous les publiez ici.",
    "resortPick": "Station",
    "resortCopyFrom": "Copier depuis une autre station",
    "resortHint": "Tout ce qui suit concerne uniquement cette station : la façon de vendre les cours, les prix et le calendrier.",
    "resortOwn": "Cette station a sa propre configuration.",
    "resortShared": "Elle utilise encore la configuration commune de l'école ; ce que vous enregistrez ici ne change que cette station.",
    "resortCopied": "Copié depuis {resort} : prix et conditions, pas le calendrier. Vérifiez puis appuyez sur Enregistrer.",
    "whose": "Afficher",
    "howTitle": "Comment ils sont vendus",
    "modeHoursTitle": "À l'heure",
    "modeHoursBody": "Le client choisit l'heure de début et le nombre d'heures. Vous fixez un prix à l'heure.",
    "modeFormatsTitle": "Formules fixes",
    "modeFormatsBody": "Des horaires fixes (matin, après-midi, journée…), chacun à un prix pour tout le groupe, qui peut changer selon la saison.",
    "modeHoursPicture": "Exemple : heures ouvertes de 9:00 à 17:00 et un client qui en réserve deux",
    "modeFormatsPicture": "Exemple : cours du matin 9:00–13:00, de l'après-midi 13:00–17:00 et journée 9:00–17:00",
    "modeNote": "Vous pouvez changer quand vous voulez : ce que vous avez réglé pour l'autre mode reste enregistré si vous revenez.",
    "rosterModeNote": "C'est vous qui décidez ici comment vend chaque moniteur et à quel prix ; ses cours collectifs, dans Cours collectifs.",
    "rosterNoticeHelp": "Les clients ne voient ses heures libres que s'ils réservent au moins avec ce délai d'avance.",
    "rosterAutoAcceptHelp": "Les réservations payées sont confirmées aussitôt, sans attendre que l'école les accepte. Vous pouvez toujours annuler un cours confirmé, avec remboursement intégral du client.",
    "rosterTermsByInstructor": "Le nombre maximum d'élèves, le délai minimum et la confirmation immédiate sont décidés par le moniteur, qui gère son propre calendrier. Si l'école le gère (Géré par, dans Moniteurs), ils se règlent ici.",
    "rosterGroupHelp": "Désactivés par défaut. Une fois activés, ses cours collectifs peuvent être publiés sur le calendrier ci-dessous. Le prix est par place, pour tout le cours ; en le modifiant, les cours déjà publiés sont aussi mis à jour.",
    "followSchoolHours": "Utiliser les heures ouvertes de l'école",
    "followSchoolHoursOn": "Son calendrier a les mêmes heures ouvertes que les cours sans moniteur attribué, dans les stations où il enseigne, et change tout seul quand elles changent. Un cours à la fois. Désactivez-le pour lui donner ses propres heures : il repart de celles d'aujourd'hui.",
    "followSchoolHoursOff": "Une fois activé, ses heures ouvertes deviennent celles des cours sans moniteur attribué et changent avec elles.",
    "calendarFollowsSchool": "Ce sont les heures ouvertes de l'école. Elles se modifient dans le calendrier « Cours sans moniteur attribué », ou désactivez « Utiliser les heures ouvertes de l'école » pour lui donner ses propres heures.",
    "instructorModeBySchool": "La façon de vendre vos cours particuliers, et leur prix, sont décidés par votre école.",
    "instructorFollowsSchool": "Vous vendez avec les formules et les prix de votre école : ils changent quand l'école modifie les siens.",
    "paramsHoursTitle": "Prix et conditions",
    "paramsFormatsTitle": "Formules, saisons et prix",
    "calendarTitle": "Calendrier",
    "calendarHoursHint": "Les heures où ils peuvent être réservés. Les cours collectifs éventuels apparaissent hachurés : ils se gèrent dans Cours collectifs.",
    "calendarFormatsHint": "Les formules ne se vendent que dans les heures ouvertes ici : ouvrez au moins les heures de chaque formule. Les cours collectifs éventuels apparaissent hachurés : ils se gèrent dans Cours collectifs.",
    "calendarGroupHint": "En vert clair, les heures ouvertes aux cours privés ; un cours collectif publié dessus prend ces heures.",
    "calendarGroupSeatHint": "Les cours collectifs sont indépendants des places des cours privés. Depuis chaque cours, vous pouvez le confier à un moniteur.",
    "groupSettingsTitle": "Activer et fixer le prix",
    "groupPriceTitle": "Prix par personne",
    "groupOffNotice": "Les cours collectifs sont désactivés : activez-les à l'étape 1, fixez leur prix et enregistrez pour pouvoir les publier.",
    "notOnSaleNotice": "Rien n'est encore en vente ici : l'étape 2 indique ce qui manque. Vous pouvez déjà ouvrir les heures.",
    "cancellationChange": "La modifier dans Profil"
  },
  "booking": {
    "reviewAndPay": "Vérifier et payer",
    "checkout": "Paiement",
    "summary": "Récapitulatif de la réservation",
    "instructor": "Moniteur",
    "resort": "Station",
    "date": "Date",
    "time": "Heure",
    "duration": "Durée",
    "language": "Langue",
    "students": "Élèves",
    "oneGroupNote": "Cette école met un moniteur par niveau et par âge : tous les élèves d'une réservation doivent avoir le même niveau et le même âge (adultes ou enfants).",
    "oneGroupMixed": "Ces élèves mélangent les niveaux ou les âges. Faites une réservation par groupe : revenez en arrière et réservez seulement les élèves du même niveau et du même âge.",
    "oneGroupBack": "Changer le nombre d'élèves",
    "studentN": "Élève {n}",
    "studentName": "Nom et prénom",
    "studentAge": "Âge",
    "studentLevel": "Niveau",
    "studentDetails": "Informations sur les élèves",
    "yearsOld": "{n} ans",
    "contactPhone": "Téléphone de contact",
    "contactPhoneHint": "Pour que {name} puisse vous joindre le jour du cours.",
    "errorStudentName": "Indiquez le nom de cet élève.",
    "errorStudentAge": "Indiquez l'âge de cet élève.",
    "errorStudentAgeRange": "Cet âge ne correspond pas à ce cours : {who}.",
    "errorContactPhone": "Indiquez votre téléphone avec l'indicatif.",
    "errorDetailsAbove": "Vérifiez ce qui est en rouge : il manque des informations sur les élèves ou le téléphone.",
    "actionsTitle": "Actions",
    "accountClosed": "Compte fermé",
    "instructorPaused": "Son profil n'est pas publié pour le moment.",
    "refundLabel": "Remboursement",
    "refundInProgress": "En cours",
    "refundedLabel": "Remboursé",
    "refundPendingNote": "Nous traitons votre remboursement. Il reviendra sur le moyen de paiement utilisé.",
    "refundBankNote": "Il revient sur le moyen de paiement utilisé. Selon votre banque, il peut falloir 5 à 10 jours ouvrés pour qu'il apparaisse.",
    "pickAnotherTime": "Choisissez une autre date ou un autre horaire",
    "slotNoLongerBookable": "Ce créneau ne peut plus être réservé : le délai minimum du moniteur est dépassé.",
    "priceChanged": "Le moniteur a modifié son tarif pendant que cette page était ouverte. Vérifiez le montant mis à jour et appuyez à nouveau pour payer.",
    "customerNoShow": "Le client ne s'est pas présenté",
    "customerNoShowTitle": "Enregistrer l'absence du client ?",
    "customerNoShowBody": "Le cours compte comme donné et votre paiement est débloqué. Le client est prévenu : ne le faites que s'il n'est vraiment jamais venu.",
    "customerNoShowToast": "Enregistré. Le cours compte comme donné.",
    "messageToInstructor": "Message au moniteur (facultatif)",
    "messagePlaceholder": "Parlez à votre moniteur de votre expérience, de vos objectifs ou de tout ce qu'il devrait savoir.",
    "priceBreakdown": "Détail du prix",
    "extraStudents": "+{count} élèves supplémentaires × {hours} h",
    "extraStudents_one": "+{count} élève supplémentaire × {hours} h",
    "extraStudentsLesson": "+{count} élèves supplémentaires",
    "extraStudentsLesson_one": "+{count} élève supplémentaire",
    "total": "Total",
    "payAndSend": "Payer et envoyer la demande",
    "paymentTitle": "Paiement",
    "paymentNotice": "Le débit a lieu maintenant. La réservation reste en attente jusqu'à ce que le moniteur l'approuve. S'il refuse la demande ou ne répond pas avant l'échéance, vous recevez un remboursement intégral.",
    "paymentNoticeInstant": "Le débit a lieu maintenant et le cours est confirmé dès que le paiement aboutit.",
    "paymentNoticeGroup": "Le débit a lieu maintenant et votre place est confirmée dès que le paiement aboutit. Si le cours est annulé, vous recevez un remboursement intégral.",
    "paymentNoticeSchool": "Le débit a lieu maintenant. La réservation reste en attente jusqu'à ce que l'école l'approuve. Si elle refuse la demande ou ne répond pas avant l'échéance, vous recevez un remboursement intégral.",
    "paymentNoticePack": "Le débit de tout le pack a lieu maintenant et il est confirmé dès que le paiement aboutit. Il ne peut être annulé qu'en entier, suffisamment tôt avant son premier jour. Si l'un de ses jours est annulé, la part de ce jour vous est remboursée.",
    "paymentNoticePackRequest": "Le débit de tout le pack a lieu maintenant. Il reste en attente jusqu'à ce que l'école l'approuve ; si elle le refuse ou ne répond pas avant l'échéance, vous recevez un remboursement intégral. Il ne peut être annulé qu'en entier, suffisamment tôt avant son premier jour.",
    "paymentNoticePackRequestInstructor": "Le débit de tout le pack a lieu maintenant. Il reste en attente jusqu'à ce que le moniteur l'approuve ; s'il le refuse ou ne répond pas avant l'échéance, vous recevez un remboursement intégral. Il ne peut être annulé qu'en entier, suffisamment tôt avant son premier jour.",
    "cancellationPolicy": "Politique d'annulation",
    "cancellationPolicyBody": "Annulation gratuite tant que le moniteur n'a pas confirmé. Après confirmation, vous pouvez encore annuler avec remboursement intégral jusqu'à {window} avant le début du cours. Remboursement intégral si le moniteur refuse ou ne répond pas à temps.",
    "cancellationPolicyLastMinute": "Ce cours commence dans moins de {window} : une fois confirmé par le moniteur, vous ne pourrez plus l'annuler. Vous recevez toujours un remboursement intégral s'il le refuse ou ne répond pas à temps.",
    "cancellationPolicyBodySchool": "Annulation gratuite tant que l'école n'a pas confirmé. Après confirmation, vous pouvez encore annuler avec remboursement intégral jusqu'à {window} avant le début du cours. Remboursement intégral si l'école refuse ou ne répond pas à temps.",
    "cancellationPolicyBodyInstant": "Votre cours est confirmé dès que votre paiement est validé, sans attendre de réponse. Vous pouvez l'annuler avec remboursement intégral jusqu'à {window} avant le début ; ensuite, il ne peut plus être annulé.",
    "cancellationPolicyBodyGroup": "Votre place est confirmée dès que votre paiement est validé. Vous pouvez l'annuler avec remboursement intégral jusqu'à {window} avant le début du cours ; ensuite, elle ne peut plus être annulée.",
    "cancellationPolicyLastMinuteSchool": "Ce cours commence dans moins de {window} : une fois confirmé par l'école, vous ne pourrez plus l'annuler. Vous recevez toujours un remboursement intégral si l'école le refuse ou ne répond pas à temps.",
    "cancellationPolicyLastMinuteInstant": "Ce cours commence dans moins de {window} : il est confirmé dès que vous payez et vous ne pourrez plus l'annuler.",
    "cancel": "Annuler la réservation",
    "cancelByInstructor": "Annuler ce cours",
    "cancelTitle": "Annuler cette réservation ?",
    "cancelBody": "La demande sera annulée et le moniteur ne la verra plus.",
    "cancelBodyPaid": "La demande sera annulée et vous recevrez un remboursement intégral.",
    "cancelByInstructorBody": "Le cours sera annulé et le client intégralement remboursé. Annuler des cours confirmés nuit à votre réputation : ne le faites que si c'est inévitable.",
    "cancelConfirm": "Oui, annuler",
    "cancelBodyConfirmed": "Le cours confirmé sera annulé et vous recevrez un remboursement intégral. Le moniteur récupère le créneau.",
    "freeCancelUntil": "Annulation gratuite jusqu'au {date} (heure de la station)",
    "cancelWindowClosed": "Le délai d'annulation gratuite est passé : le cours commence dans moins de {window}.",
    "cancelWindowClosedAsk": "Demandez à {name} dans la messagerie de l'annuler : c'est encore possible, avec remboursement intégral.",
    "cancelWindowClosedAskGroup": "Demandez à {name} dans la messagerie d'annuler votre place : c'est encore possible, avec remboursement intégral.",
    "managedBySchoolNotice": "Votre école répond à cette demande pour vous.",
    "manageInSchoolPanel": "La gérer depuis l'espace école",
    "schoolLabel": "École",
    "unassignedNote": "L'école attribue le moniteur et vous le rencontrez au point de rendez-vous. Pour toute question, la messagerie vous met en contact avec l'école.",
    "unassignedShort": "Moniteur attribué par l'école",
    "lessonType": "Type de cours",
    "groupLesson": "Cours collectif",
    "groupMax": "Maximum {n} personnes",
    "groupSeatsLeft": "{count} places libres",
    "groupSeatsLeft_one": "{count} place libre",
    "perPerson": "par personne",
    "groupPriceWhole": "Pour le cours entier ({hours} h)",
    "groupFromPerPerson": "Cours collectifs dès {price} par personne",
    "groupCheckoutNote": "C'est un cours collectif : d'autres clients peuvent s'inscrire au même cours, jusqu'à {n} personnes au total.",
    "groupQuorumNotice": "Ce cours a lieu à partir de {min} participants. S'il est encore en dessous {hours} heures avant le début, il est annulé et vous êtes intégralement remboursé.",
    "schoolViewerNote": "Vous voyez cette réservation en tant qu'école du moniteur. La messagerie et le point de rendez-vous restent entre le moniteur et le client.",
    "rejectConfirmTitle": "Refuser cette demande ?",
    "rejectConfirmBody": "Le client sera intégralement remboursé et la demande ne pourra pas être rouverte. Si c'est seulement l'horaire qui ne vous convient pas, proposez-en un autre.",
    "proposeTimeBody": "Le client peut accepter votre nouvel horaire ou le refuser et garder la demande initiale ouverte.",
    "proposeFormatNote": "Ce cours a été vendu en formule fixe : il ne peut passer qu'à un autre jour au même horaire, si ce jour-là la formule est vendue au même prix.",
    "proposeMessagePlaceholder": "Message facultatif pour le client…",
    "proposeSent": "Nouvel horaire proposé. Le client a été prévenu.",
    "completePayment": "Finaliser le paiement",
    "declinedProposedToast": "Nouvel horaire refusé : la demande initiale est de nouveau ouverte.",
    "completePaymentBody": "Cette réservation attend le paiement, et le moniteur ne verra pas la demande tant qu'il n'est pas validé. Quand vous ouvrez le paiement, nous vous gardons le créneau pendant {minutes} minutes ; si vous n'en voulez plus, annulez-la.",
    "cancelledToast": "Réservation annulée",
    "processing": "Paiement en cours…",
    "paymentSuccess": "Paiement effectué",
    "confirmationTitle": "Votre réservation est en cours de traitement",
    "confirmationBody": "Nous avons débité votre carte et ouvert une messagerie privée avec votre moniteur. Vous recevrez une notification dès qu'il répondra.",
    "confirmedTitle": "Votre cours est confirmé",
    "confirmedTitleGroup": "Votre place est confirmée",
    "confirmedBody": "Nous avons débité votre carte et ouvert une messagerie privée pour le cours. Le point de rendez-vous et tous les détails se trouvent sur la page de votre réservation.",
    "openChat": "Ouvrir la messagerie avec le moniteur",
    "responseDeadline": "Le moniteur a {time} pour répondre.",
    "responseDeadlineExpired": "Le délai de réponse est dépassé.",
    "proposalDeadlineCustomer": "Vous avez {time} pour répondre à la proposition.",
    "proposalDeadlineOther": "Le client a {time} pour répondre.",
    "status": {
      "payment_pending": "Paiement en attente",
      "payment_failed": "Paiement échoué",
      "pending_instructor_approval": "En attente du moniteur",
      "change_proposed": "Modification proposée",
      "confirmed": "Confirmée",
      "rejected_by_instructor": "Refusée par le moniteur",
      "expired": "Expirée",
      "cancelled_by_customer": "Annulée par l'élève",
      "cancelled_by_instructor": "Annulée par le moniteur",
      "refunded": "Remboursée",
      "upcoming": "À venir",
      "in_progress": "En cours",
      "completed": "Terminée",
      "no_show_customer": "Client absent",
      "no_show_instructor": "Moniteur absent",
      "disputed": "En examen"
    },
    "payment": {
      "pending": "Paiement en attente",
      "processing": "En cours",
      "succeeded": "Payée",
      "failed": "Échoué",
      "authentication_required": "Authentification requise",
      "refund_pending": "Remboursement en cours",
      "refunded": "Remboursée"
    },
    "acceptRequest": "Accepter",
    "rejectRequest": "Refuser",
    "proposeTime": "Proposer un autre horaire",
    "acceptProposed": "Accepter le nouvel horaire",
    "declineProposed": "Refuser le nouvel horaire",
    "demoNotice": "Ceci est un paiement simulé. Aucun débit réel ne sera effectué.",
    "mockCardHint": "En mode démo, n'importe quel numéro de carte fonctionne.",
    "securedByStripe": "Paiement sécurisé par Stripe",
    "continueToPayment": "Continuer vers le paiement",
    "continueHint": "Vous saisirez les données de votre carte à l'étape suivante, sans quitter cette page.",
    "signInToPay": "Connectez-vous pour continuer",
    "signInToPayBody": "Créer un compte est gratuit et prend une minute. Il nous sert à relier votre réservation, votre messagerie et votre reçu à vous.",
    "processingTitle": "Nous confirmons votre paiement",
    "processingBody": "Cela prend généralement quelques secondes. Vous pouvez quitter cette page : nous vous enverrons un e-mail dès qu'il sera validé.",
    "slotGoneTitle": "Ce créneau n'était plus disponible",
    "slotGoneBody": "Il a été réservé ou fermé pendant que vous payiez : la réservation n'a donc pas abouti. Le remboursement intégral est en cours sur le même moyen de paiement ; selon votre banque, il peut mettre quelques jours à apparaître.",
    "paymentReturnedTitle": "Votre paiement vous est remboursé",
    "paymentReturnedBody": "Cette réservation ne se poursuit pas. Le montant revient sur le même moyen de paiement ; selon votre banque, il peut mettre quelques jours à apparaître.",
    "loadingPayment": "Ouverture du formulaire de paiement sécurisé…",
    "holdUntil": "Nous vous gardons ce créneau jusqu'à {clock} (encore {time}).",
    "holdExpired": "Vos {minutes} minutes sont écoulées : le créneau ne vous est plus gardé et quelqu'un d'autre peut le réserver.",
    "holdRenew": "Vérifier qu'il est toujours libre et le garder à nouveau",
    "kindLabel": "Type de cours",
    "kindPrivate": "Cours particulier",
    "kindGroup": "Cours collectif",
    "cancellationPolicyBodyPack": "Vous pouvez annuler tout le pack, avec remboursement intégral, jusqu'à {window} avant son premier jour. Ensuite, il ne peut plus être annulé. Si l'un de ses jours est annulé, la part de ce jour vous est remboursée.",
    "addToCalendar": "Ajouter à mon agenda",
    "addToCalendarGoogle": "Google Agenda",
    "addToCalendarFile": "Apple / Outlook"
  },
  "chat": {
    "directChat": "Messagerie directe",
    "directSubtitle": "Conversation directe : vous pouvez échanger avant de réserver un cours.",
    "empty": "Pas encore de messages. Lancez la conversation !",
    "emptyList": "Vous n'avez pas encore de conversations.",
    "unknownUser": "Utilisateur",
    "notReady": "La messagerie s'ouvre une fois le paiement effectué.",
    "prePayTitle": "Des questions avant de payer ?",
    "prePayBody": "Le chat de cette réservation s'ouvre une fois le paiement effectué. Si vous voulez d'abord poser une question au moniteur, écrivez-lui : il vous répondra dans une conversation à part.",
    "prePayCta": "Écrire au moniteur",
    "prePayNewTab": "S'ouvre dans un autre onglet",
    "sendPlaceholder": "Écrivez un message…",
    "send": "Envoyer",
    "typing": "en train d'écrire…",
    "failed": "Le message n'a pas pu être envoyé.",
    "readOnly": "Cette réservation est close. La conversation est en lecture seule.",
    "meetingPoint": "Point de rendez-vous",
    "proposeMeeting": "Proposer un point de rendez-vous",
    "confirmMeeting": "Confirmer le point de rendez-vous",
    "meetingConfirmed": "Point de rendez-vous confirmé",
    "meetingProposedBy": "Proposé par {who}",
    "meetingProposedByYou": "Proposé par vous",
    "system": {
      "accepted": "Le moniteur a accepté la réservation.",
      "rejected": "Le moniteur a refusé la réservation.",
      "acceptedNewTime": "Le client a accepté le nouvel horaire du cours.",
      "refundInitiated": "Un remboursement a été lancé."
    },
    "answeredBySchool": "{school} vous répond au nom de {name}.",
    "writingForInstructor": "Vous écrivez au nom de {name} : son profil n'a pas encore de compte.",
    "forInstructor": "Pour {name}"
  },
  "dashboard": {
    "customer": {
      "title": "Mon tableau de bord",
      "overview": "Vue d'ensemble",
      "nextLesson": "Prochain cours",
      "pendingResponses": "En attente du moniteur",
      "unreadMessages": "Messages non lus",
      "empty": "Vous n'avez pas encore de réservations.",
      "browse": "Trouver un moniteur",
      "pastLessons": "Cours passés"
    },
    "instructor": {
      "title": "Tableau de bord moniteur",
      "notManaging": "Vous ne gérez aucun moniteur en ce moment.",
      "notManagingGo": "Voir les moniteurs",
      "pendingRequests": "Demandes de réservation en attente",
      "upcomingLessons": "Prochains cours",
      "monthEarnings": "Ce mois-ci",
      "rating": "Note moyenne",
      "requestsEmpty": "Aucune demande en attente.",
      "requestsManagedBySchool": "Votre école répond à vos demandes de réservation. Vous pouvez les suivre ici et ouvrir la messagerie.",
      "youEarn": "Vous touchez ({percent} %)",
      "bookingRef": "Réservation n° {ref}",
      "studentsCount": "{count} élèves",
      "studentsCount_one": "{count} élève",
      "noAvailabilityTitle": "Votre calendrier est vide",
      "noAvailabilityBody": "Vous n'avez encore publié aucune heure de cours : les clients ne peuvent pas vous réserver. Ouvrez les heures où vous voulez enseigner.",
      "noAvailabilityCta": "Définir vos disponibilités",
      "acting": {
        "banner": "Vous gérez {name} en tant qu'Alpine Pal.",
        "moneyReadOnly": "Les versements et les retraits relèvent du moniteur : vous pouvez les voir ici, mais pas les modifier.",
        "messagesNotice": "Vous voyez ici vos propres conversations en tant qu'Alpine Pal, pas celles du moniteur.",
        "accountNotice": "Son moyen de paiement et la fermeture du compte appartiennent au moniteur : ils ne se gèrent pas d'ici.",
        "calendarNotice": "Le Google Agenda appartient au moniteur : il ne se gère pas d'ici."
      },
      "connectionsIntro": "Connectez Alpine Pal à votre Google Agenda : vos cours y apparaissent tout seuls et, si vous le souhaitez, les heures occupées de votre agenda ne peuvent plus être réservées."
    }
  },
  "review": {
    "submit": "Envoyer l'avis",
    "verifiedBooking": "Réservation vérifiée",
    "rateInstructor": "Notez votre moniteur",
    "rateCustomer": "Notez votre élève",
    "commentPlaceholder": "Dites-nous comment s'est passé le cours (facultatif)",
    "submittedToast": "Merci pour votre avis !",
    "thanks": "Vous avez déjà noté ce cours. Merci !",
    "pendingBadge": "Notez le cours",
    "clientRating": "{count} avis",
    "clientRating_one": "{count} avis",
    "clientRatingEmpty": "Nouveau client, pas encore d'avis",
    "toReview": "Cours à noter"
  },
  "calendar": {
    "title": "Disponibilités",
    "subtitle": "Cliquez sur une heure libre pour l'ouvrir, ou sur une heure ouverte pour la retirer. Horaires dans le fuseau de la station.",
    "today": "Aujourd'hui",
    "prevWeek": "Semaine précédente",
    "nextWeek": "Semaine suivante",
    "weekOf": "Semaine du {date}",
    "addTitle": "Ajouter des disponibilités",
    "untilHour": "Jusqu'à",
    "oneOff": "Ponctuelle",
    "recurring": "Récurrente (chaque semaine)",
    "recurringUntil": "Répéter jusqu'au",
    "noEndDate": "Laissez vide pour répéter sans date de fin.",
    "add": "Ajouter",
    "removeTitle": "Retirer la disponibilité",
    "removeBody": "Cette heure fait partie d'une disponibilité récurrente. La retirer seulement ce jour-là, ou toute la série ?",
    "removeSingleDay": "Seulement ce jour",
    "removeSeries": "Toute la série",
    "legendAvailable": "Disponible",
    "legendUnavailable": "Indisponible",
    "legendConfirmed": "Cours confirmé",
    "legendPending": "Demande en attente",
    "legendInProgress": "Cours commencé",
    "legendCompleted": "Terminé",
    "legendProblem": "Problème non résolu",
    "legendBooked": "Réservé",
    "legendPendingSlot": "Réservation en cours",
    "legendSelected": "Votre sélection",
    "legendYourBooking": "Votre réservation",
    "legendYourPending": "Votre demande en attente",
    "noticeWindowBlocked": "Vous demandez {hours} heures de préavis : personne ne pourrait réserver cette heure à temps. Ouvrez des heures plus lointaines, ou réduisez votre délai de préavis dans la rubrique Cours privés.",
    "jumpToNext": "Prochain cours disponible : {date}",
    "noneAvailableSoon": "Aucun créneau disponible dans les prochaines semaines.",
    "emptyResortHint": "Aucune heure ouverte dans cette station pour le moment. Cliquez sur une heure libre de la grille pour l'ouvrir.",
    "managedBySchool": "Votre école gère ce calendrier. Vous pouvez le consulter ici ; les modifications se font depuis l'espace école.",
    "legendExternal": "Réservé ailleurs",
    "selectHint": "Cliquez sur une heure libre pour commencer ; cliquez sur la suivante pour allonger le cours.",
    "clearSelection": "Effacer la sélection",
    "noSelection": "Choisissez un horaire dans le calendrier",
    "noFormatSelection": "Choisissez une formule et un jour dans le calendrier",
    "legendGroup": "Cours collectif",
    "legendGroupFull": "Cours collectif · complet",
    "groupCellTitle": "Cours collectif · {taken}/{capacity} places",
    "groupCellJoinTitle": "Cours collectif · {count} places libres · {price} par personne",
    "groupCellJoinTitle_one": "Cours collectif · {count} place libre · {price} par personne",
    "groupCellFullTitle": "Cours collectif · aucune place libre",
    "groupToggle": "Cours collectif",
    "groupToggleHint": "Tout le monde peut s'inscrire tant qu'il reste des places ; chacun paie la sienne. Publié immédiatement, sans passer par Enregistrer.",
    "groupCapacity": "Places",
    "groupMinStudents": "Minimum pour maintenir le cours",
    "groupPrice": "Prix par personne",
    "groupPriceMin": "Minimum {price}",
    "groupLevel": "Niveau",
    "groupLanguage": "Langue du cours",
    "groupMeetingPoint": "Point de rendez-vous",
    "groupStillMissing": "Pour la publier, il manque : {fields}.",
    "groupMeetingPointNone": "Non défini",
    "groupMeetingPointSuggested": "Utiliser un point suggéré de la station",
    "groupMeetingPointSet": "Le fixer",
    "groupMeetingPointChange": "Modifier",
    "groupMeetingPointSave": "Enregistrer le point de rendez-vous",
    "groupMeetingPointSaved": "Point de rendez-vous enregistré. Les inscrits ont été prévenus.",
    "groupMeetingPointHint": "Fixe et identique pour tous les participants.",
    "publishGroup": "Publier le cours",
    "groupPublished": "Cours collectif publié",
    "groupCancelled": "Cours collectif retiré",
    "groupManageTitle": "Cours collectif",
    "groupSeatsLabel": "Places",
    "groupCancelDay": "Annuler ce jour",
    "groupCancelSeries": "Annuler la série",
    "groupCancelClass": "Annuler le cours",
    "groupCancelDayTitle": "Annuler le cours du {date} ?",
    "groupCancelSeriesTitle": "Annuler toute la série ?",
    "groupCancelClassTitle": "Annuler ce cours ?",
    "groupCancelDayScope": "Seule cette date n'est plus proposée ; le reste de la série reste inchangé.",
    "groupCancelSeriesScope": "Toutes les dates restantes de cette série sont annulées, y compris celles des prochaines semaines.",
    "groupCancelClassScope": "Le cours n'est plus proposé et disparaît du calendrier.",
    "groupCancelSeats": "{count} places sont vendues : chaque participant est intégralement remboursé et prévenu.",
    "groupCancelSeats_one": "1 place est vendue : elle est intégralement remboursée et la personne qui l'a réservée est prévenue.",
    "groupCancelSeatsNone": "Aucune place n'est vendue.",
    "groupCancelIrreversible": "Cette action est irréversible.",
    "groupCancelSeriesPhrase": "ANNULER",
    "groupAssignLabel": "Confier ce cours à un moniteur",
    "groupAssignPlaceholder": "Choisissez un moniteur",
    "groupAssignButton": "Attribuer",
    "groupAssignHint": "Le cours et toutes ses places réservées passent sur son calendrier.",
    "groupAssignedToast": "Cours attribué",
    "groupDisabledNotice": "Les cours collectifs sont désactivés. Activez-les et fixez le prix par personne à l'étape 1, plus haut.",
    "groupPriceFromSettings": "Se règle à l'étape 1, plus haut.",
    "seatSubtitle": "Cliquez sur une heure libre pour l'ouvrir, ou sur une heure ouverte pour changer ses places. Chaque case indique réservées/places. Horaires dans le fuseau de la station.",
    "seatCellTitle": "Réservées : {taken} sur {places}",
    "legendFull": "Complet",
    "placesLabel": "Places en cours particulier",
    "placesHint": "Combien de cours vous pouvez vendre en même temps sur ces heures, dans cette station.",
    "placesTitle": "Places de cette heure",
    "placesNow": "Places : {places} · Réservées : {taken}",
    "placesScopeDay": "Ce jour seulement",
    "placesScopeWeekly": "Chaque {weekday}",
    "placesScopeDayHint": "Ne change que ce jour ; les autres semaines restent telles quelles.",
    "placesScopeWeeklyHint": "Change ces heures chaque semaine à partir de ce jour ; les semaines précédentes restent telles quelles.",
    "placesBelowTaken": "Cours déjà réservés sur ces heures : {taken}. Ils sont maintenus même si vous baissez les places ; seuls les nouveaux ne se vendent plus.",
    "placesRemove": "Retirer ces heures",
    "placesApply": "Appliquer",
    "seatCellGroups": "Cours collectifs : {n}",
    "hourIntro": "Ce qui a lieu à cette heure : cours particuliers et cours collectifs, côte à côte.",
    "hourPrivate": "Cours particuliers",
    "hourNoPrivate": "Aucun cours particulier à cette heure.",
    "hourOpenPrivate": "Ouvrir des cours particuliers",
    "hourChangePlaces": "Modifier les places",
    "hourGroups": "Cours collectifs",
    "hourNoGroups": "Aucun cours collectif à cette heure.",
    "hourManage": "Gérer",
    "hourAddGroup": "Ajouter un cours collectif",
    "weekdaysLabel": "Jours de la semaine",
    "placesHintWithGroup": "Cours particuliers en même temps, en plus du cours collectif.",
    "seatOfferLabel": "Sur ces heures",
    "seatOfferPrivate": "Cours particuliers",
    "seatOfferGroup": "Un cours collectif seulement",
    "seatOfferBoth": "Particuliers et un collectif",
    "seatOfferHintPrivate": "Heures en vente pour des cours particuliers, avec les places que vous indiquez. Gardées avec Enregistrer.",
    "seatOfferHintGroup": "Le cours collectif seul : aucun cours particulier n'est vendu sur ces heures. Publié aussitôt, sans Enregistrer.",
    "seatOfferHintBoth": "Le cours collectif est publié aussitôt ; les places particulières se gardent avec Enregistrer.",
    "groupAudience": "Pour qui",
    "groupAges": "Âges (facultatif)",
    "groupAgesFrom": "De (ans)",
    "groupAgesTo": "À (ans)",
    "groupAgesHint": "Affichés sur le cours. À la réservation, chaque élève doit être un enfant.",
    "groupAgesInvalid": "Âges entre {min} et {max} ; le premier pas plus grand que le second.",
    "groupCellChoose": "Cours collectifs : {n} · choisissez-en un",
    "groupChooseTitle": "Choisissez le cours",
    "groupChoosePick": "Choisir",
    "selectGroupHint": "Cliquez sur un cours pour le choisir ; si plusieurs ont lieu à cette heure, vous choisissez lequel.",
    "selectFormatHint": "Cliquez sur un prix pour choisir cette formule ce jour-là : c'est un cours entier, pour tout le groupe.",
    "formatMinDaysWeek": "Cette semaine, {list} ne se vendent que sur plusieurs jours d'affilée : choisissez le premier jour et ils s'affichent tous.",
    "formatMinDaysItem": "{format} (min. {days} jours)",
    "formatNotSold": "Pas en vente ce jour-là",
    "recurringSince": "Commence le",
    "recurringSinceHint": "Rien ne s'ouvre avant cette date : vous pouvez charger la saison à l'avance.",
    "untilBeforeSince": "La fin ne peut pas être antérieure au début.",
    "sinceOutOfRange": "Choisissez un début entre aujourd'hui et le {date}.",
    "noWeekdayBetween": "Aucun de ces jours ne tombe entre les deux dates.",
    "laterSeriesReplaced": "Une série de ce jour commence déjà le {date}. Sans date de fin, ou avec une date postérieure, ces places la remplaceront ; terminez avant cette date pour la conserver.",
    "seriesSince": "à partir du {date}",
    "seriesUntil": "jusqu'au {date}",
    "privateTitle": "Calendrier des cours privés",
    "groupTitle": "Calendrier des cours collectifs",
    "groupSubtitle": "Cliquez sur une heure pour publier un cours collectif, ou sur un cours pour le gérer. Heures dans le fuseau horaire de la station.",
    "legendPrivateOpen": "Ouverte aux cours privés",
    "groupElsewhere": "se gère dans Cours collectifs",
    "legendGoogleBusy": "Occupé dans Google Agenda"
  },
  "languagePicker": {
    "placeholder": "Sélectionnez des langues",
    "search": "Rechercher une langue…",
    "noResults": "Aucune langue ne correspond."
  },
  "invoice": {
    "title": "Facture de commission",
    "print": "Imprimer",
    "number": "Numéro",
    "date": "Date",
    "platformBlock": "Émetteur",
    "instructorBlock": "Destinataire",
    "colRef": "Référence",
    "colDate": "Date",
    "colSubtotal": "Montant du cours",
    "colFee": "Commission ({percent} %)",
    "colNet": "Net moniteur",
    "totals": "Totaux",
    "provisionalNote": "Document provisoire : les coordonnées fiscales de l'émetteur sont en cours de configuration.",
    "footnote": "Ce document détaille la commission de la plateforme déjà retenue sur les cours inclus dans le retrait. Il ne génère aucun nouveau débit.",
    "notAvailable": "Cette facture n'est pas disponible.",
    "colFeeMixed": "Commission"
  },
  "meetingPoint": {
    "notAgreed": "Point de rendez-vous non convenu",
    "proposed": "Point de rendez-vous proposé",
    "propose": "Proposer un point de rendez-vous",
    "titleLabel": "Titre",
    "areaLabel": "Secteur de la station",
    "instructionsLabel": "Indications",
    "mapUrlLabel": "Lien vers la carte (facultatif)",
    "change": "Changer le point de rendez-vous",
    "viewMap": "Ouvrir la carte",
    "locked": "Vous pourrez convenir du point de rendez-vous une fois la réservation confirmée.",
    "groupPendingCustomer": "Le moniteur n'a pas encore fixé le point de rendez-vous de ce cours collectif. Vous serez prévenu ici dès que ce sera fait.",
    "groupPendingInstructor": "Ce cours collectif n'a pas encore de point de rendez-vous. Fixez-le sur le cours depuis le calendrier et tous les participants le recevront.",
    "error": "Impossible de mettre à jour le point de rendez-vous."
  },
  "admin": {
    "overview": "Vue d'ensemble admin",
    "attention": {
      "title": "En attente de votre part",
      "none": "Rien n'est en attente.",
      "instructors": "Moniteurs à vérifier",
      "schools": "Écoles à vérifier",
      "disputes": "Réclamations ouvertes",
      "moneyAlerts": "Alertes d'argent à vérifier",
      "manualPayouts": "Versements à envoyer",
      "awaitingFunds": "Retraits en attente de fonds sur Stripe",
      "open": "Ouvrir",
      "referrals": "Récompenses de parrainage à examiner",
      "lueiraReviews": "Connexions Lueira à vérifier"
    },
    "loadError": {
      "body": "Le chargement a échoué. Il peut s'agir d'un incident passager : réessayez.",
      "retry": "Réessayer"
    },
    "instructors": "Moniteurs",
    "resorts": "Stations",
    "bookings": "Réservations",
    "colRef": "Réf.",
    "instructorFilterPlaceholder": "Rechercher par nom, slug, id ou statut…",
    "noMatches": "Aucun moniteur ne correspond à cette recherche.",
    "copyId": "Copier l'id du compte (Clerk)",
    "idCopied": "Id du compte copié",
    "gmv": "GMV",
    "savedToast": "Enregistré",
    "approve": "Approuver",
    "schools": "Écoles",
    "schoolsPending": "{count} en attente",
    "schoolsPending_one": "{count} en attente",
    "schoolOwner": "Titulaire",
    "schoolInstructorCount": "Moniteurs : {n}",
    "schoolWebsite": "Site web",
    "noSchools": "Aucune école pour le moment.",
    "rejectSchoolTitle": "Refuser cette école ?",
    "status": {
      "pending_review": "En attente d'examen",
      "verified": "Vérifiée",
      "rejected": "Refusée"
    },
    "instructorStatus": {
      "draft": "Brouillon",
      "pending_review": "En attente d'examen",
      "verified": "Vérifié",
      "rejected": "Refusé",
      "documents_expired": "Documents expirés"
    },
    "finances": {
      "title": "Finances",
      "available": "Disponible",
      "pending": "En attente",
      "onHold": "Bloqué",
      "paidOut": "Retiré",
      "byInstructor": "Solde par moniteur",
      "instructor": "Moniteur",
      "withdrawals": "Retraits",
      "reference": "Référence Stripe",
      "empty": "Aucun mouvement d'argent pour le moment.",
      "commissionTitle": "Commission Alpine Pal",
      "commissionEarned": "Acquise",
      "commissionAtRisk": "Pas encore réglée",
      "commissionRefunded": "Remboursée",
      "commissionNote": "Un remboursement rend la réservation entière, commission comprise : seul un cours donné compte comme acquis.",
      "balance": {
        "title": "Solde Stripe",
        "canMove": "Vous pouvez virer sur votre banque jusqu'à",
        "available": "Disponible sur Stripe",
        "pending": "En cours d'encaissement",
        "mustKeep": "Doit rester sur Stripe",
        "manualToPay": "Dont paiements manuels à envoyer",
        "hint": "Ce qui doit rester, c'est ce qui est dû aux moniteurs et aux écoles plus ce qui peut encore être remboursé aux clients : un remboursement rend toute la réservation, commission comprise, jusqu'à ce que l'argent de ce cours soit retiré. Seul le solde disponible compte ; les paiements en cours d'encaissement couvriront leur part. Quand vous payez un retrait à la main, virez ce montant sur votre banque pour l'envoyer.",
        "unavailable": "Impossible de lire le solde Stripe pour le moment.",
        "waitingTitle": "Retraits en attente de fonds",
        "waitingHint": "Le solde disponible sur Stripe ne les couvre pas encore. Ils sont relancés toutes les heures et partent dès qu'il le fait. Si vous ajoutez des fonds au solde des paiements sur Stripe, cliquez sur « Réessayer maintenant ».",
        "shortfall": "Il manque {amount} sur le solde disponible de Stripe",
        "since": "depuis le {date}",
        "attempts": "tentatives : {n}",
        "retryNow": "Réessayer maintenant",
        "retried": "Envoyés : {sent} · toujours en attente : {waiting}"
      },
      "owedTitle": "Dû aux moniteurs"
    },
    "colInstructor": "Moniteur",
    "colStatus": "Statut",
    "colChecks": "Contrôles",
    "colActive": "Actif",
    "colActions": "Actions",
    "colResort": "Station",
    "colRegion": "Région",
    "colInstructors": "Moniteurs",
    "active": "Actif",
    "inactive": "Inactif",
    "verify": "Vérifier",
    "reject": "Refuser",
    "activate": "Activer",
    "deactivate": "Désactiver",
    "refund": "Rembourser",
    "resortsNote": "Les stations sont maintenues comme contenu statique dans src/data/resorts : cette vue est en lecture seule. Moniteurs et écoles comptent les profils qu'un client peut trouver ; cours donnés, ceux assurés et non remboursés ; à venir, les réservations payées pas encore assurées.",
    "viewDocument": "Voir le document",
    "disputes": "Réclamations",
    "schoolSuspend": "Suspendre",
    "schoolReactivate": "Réactiver",
    "schoolClose": "Fermer",
    "schoolSuspendedBadge": "Suspendue",
    "schoolClosedBadge": "Fermée",
    "continue": "Continuer",
    "suspendSchoolTitle": "Suspendre {name} ?",
    "suspendSchoolBody": "Sa page n'est plus visible et ses cours sans moniteur attribué ne sont plus en vente. Les réservations qu'elle a déjà continuent, et elle peut toujours utiliser son tableau de bord et l'API. Ses gestionnaires seront prévenus par notification et par e-mail. Vous pourrez la réactiver quand vous voudrez.",
    "suspendSchoolSureTitle": "En êtes-vous tout à fait sûr ?",
    "suspendSchoolSureBody": "Vous allez retirer {name} d'Alpine Pal dès maintenant, et ses gestionnaires le sauront aussitôt.",
    "suspendSchoolNow": "Oui, suspendre",
    "reactivateSchoolTitle": "Réactiver {name} ?",
    "reactivateSchoolBody": "Sa page redevient visible. Ses cours sans moniteur attribué sont de nouveau en vente sur les heures qu'elle a ouvertes. Ses gestionnaires seront prévenus.",
    "closeSchoolTitle": "Fermer {name} définitivement ?",
    "closeSchoolBody": "Voici ce qui va se passer : ses {roster} moniteurs quitteront l'équipe et resteront en pause jusqu'à vérification ({rosterLessons} de leurs cours à venir restent à eux) ; les {unclaimed} profils qu'elle a ajoutés sans compte seront fermés ; ses clés d'API seront révoquées et ses webhooks désactivés.",
    "closeSchoolLoading": "Calcul de ce qu'implique sa fermeture…",
    "closeSchoolOwed": "Elle ne peut pas être fermée : l'école doit encore recevoir {owed}, entre ce qu'elle peut retirer, ce que rapporteront les cours encore à donner et ce qui est retenu. Une école fermée ne peut plus être payée. Vous pouvez la suspendre en attendant et la fermer une fois qu'elle aura tout reçu.",
    "closeSchoolLessonsAhead": "Elle ne peut pas encore être fermée : elle a {count} cours à venir dont seule l'école peut s'occuper (sans moniteur attribué, ou de moniteurs ajoutés sans compte), et ils doivent d'abord avoir lieu. Fermez-la une fois qu'ils seront passés et qu'elle aura tout reçu. Vous pouvez la suspendre en attendant.",
    "closeSchoolLessonsAhead_one": "Elle ne peut pas encore être fermée : elle a {count} cours à venir dont seule l'école peut s'occuper (sans moniteur attribué, ou d'un moniteur ajouté sans compte), et il doit d'abord avoir lieu. Fermez-la une fois qu'il sera passé et qu'elle aura tout reçu. Vous pouvez la suspendre en attendant.",
    "closeSchoolSureTitle": "Dernière confirmation",
    "closeSchoolSureBody": "La fermeture d'une école est irréversible. Tapez son nom exact pour confirmer.",
    "closeSchoolNow": "Fermer l'école",
    "schoolSuspendedToast": "École suspendue",
    "schoolReactivatedToast": "École réactivée",
    "schoolClosedToast": "École fermée",
    "review": {
      "title": "À vérifier",
      "hint": "Les alertes d'argent qui demandent une intervention, chacune avec sa réservation. Marquez-les comme vérifiées une fois réglées : elles disparaissent pour tous les administrateurs.",
      "repeats": "{n} fois",
      "settled": "Remboursée depuis",
      "stripeOnly": "Ce paiement n'existe que dans Stripe : remboursez-le depuis le tableau de bord de Stripe.",
      "retryRefund": "Relancer le remboursement",
      "retryTitle": "Relancer le remboursement de {reference} ?",
      "retryBody": "Stripe est de nouveau invité à rendre son argent au client. Si c'est déjà fait, rien n'est remboursé deux fois.",
      "dismiss": "Marquer comme vérifié",
      "dismissed": "Marqué comme vérifié"
    },
    "sweep": {
      "title": "Traitement automatique",
      "ok": "Dernier passage complet il y a {minutes} min.",
      "late": "Aucun passage complet depuis {hours} h : les cours ne sont pas clôturés et les remboursements ne sont pas relancés. Vérifiez le worker snowmatch-tasks.",
      "unknown": "Aucun passage enregistré pour l'instant.",
      "failing": "Les {count} derniers passages ont échoué : {error}",
      "failing_one": "Le dernier passage a échoué : {error}",
      "webhooks": "Relances des webhooks : dernier passage il y a {minutes} min.",
      "lastReport": "Dernier passage :",
      "lastReportEmpty": "rien à faire"
    },
    "backup": {
      "title": "Sauvegardes",
      "ok": "Dernière sauvegarde : {date}. Une par semaine, gardée 90 jours.",
      "late": "Dernière sauvegarde : {date}. Aucune depuis plus d'une semaine : vérifiez le worker snowmatch-tasks.",
      "never": "Aucune sauvegarde n'a encore réussi : vérifiez le worker snowmatch-tasks et son D1_EXPORT_TOKEN.",
      "unknown": "Aucune sauvegarde enregistrée pour l'instant.",
      "failing": "Tentatives échouées d'affilée : {n}. Dernière erreur : {error}"
    },
    "disputeRefund": "Rembourser le client",
    "disputeDismiss": "Rejeter",
    "refundConfirmTitle": "Rembourser cette réservation ?",
    "refundConfirmBody": "Le montant de {amount} sera intégralement remboursé au client pour la réservation {reference}. Cette action est irréversible.",
    "disputeRefundNoShow": "Rembourser (moniteur absent)",
    "disputeRefundNoShowConfirmBody": "Le montant total revient au client et la réservation est enregistrée comme absence du moniteur. La réclamation est close définitivement.",
    "disputeRefundConfirmTitle": "Rembourser le client ?",
    "disputeRefundConfirmBody": "Le montant total revient au client et le moniteur n'est pas payé. La réclamation est close définitivement.",
    "disputeDismissConfirmTitle": "Rejeter cette réclamation ?",
    "disputeDismissConfirmBody": "La réclamation est classée et le paiement du moniteur est débloqué. La réclamation est close définitivement.",
    "disputeChargebackBadge": "Rétrofacturation Stripe",
    "disputeChargebackDismissBody": "C'est Stripe qui tranche la rétrofacturation, pas cette liste : le paiement du moniteur reste retenu jusqu'à sa décision, puis il est libéré ou rendu automatiquement. La rejeter la retire seulement d'ici, et le client n'est prévenu de rien.",
    "disputeChargebackRefundBody": "L'argent est déjà revenu au client par sa banque avec la rétrofacturation : ceci l'accepte comme perdu, annule le paiement du moniteur et clôt la réclamation.",
    "rejectConfirmTitle": "Refuser ce moniteur ?",
    "rejectConfirmBody": "{name} verra sa candidature refusée et son profil ne sera pas publié.",
    "deactivateConfirmTitle": "Désactiver ce moniteur ?",
    "deactivateConfirmBody": "{name} disparaîtra de la recherche et ne pourra plus recevoir de réservations jusqu'à sa réactivation.",
    "accountClosed": "Compte fermé",
    "expiredCerts": "{n} avec un diplôme expiré",
    "stripeVerified": "Identité vérifiée par Stripe",
    "stripePending": "Stripe examine ses informations",
    "stripeNone": "Pas encore de compte de versement",
    "payoutViaSchool": "Payé par l'intermédiaire de son école",
    "payoutManual": "Versement manuel : {provider}",
    "filterAllCountries": "Tous les pays",
    "filterAllStaffing": "Avec ou sans moniteurs",
    "filterWithInstructors": "Avec moniteurs",
    "filterWithoutInstructors": "Sans moniteurs",
    "filterAllBookingStatuses": "Tout statut de réservation",
    "filterAllPaymentStatuses": "Tout statut de paiement",
    "filterAllResorts": "Toutes les stations",
    "filterDateFrom": "Du",
    "filterDateTo": "Au",
    "bookingFilterPlaceholder": "Rechercher par référence, moniteur ou station…",
    "noResortMatches": "Aucune station ne correspond à ces filtres",
    "noBookingMatches": "Aucune réservation ne correspond à ces filtres",
    "filterAllStatuses": "Tout statut",
    "filterPending": "En attente d'examen",
    "filterVerified": "Vérifié",
    "filterRejected": "Refusé",
    "filterAllKinds": "Tout type de profil",
    "filterAllStates": "Toute situation",
    "filterExpiredCert": "Diplôme expiré",
    "filterAllSchools": "Indépendants ou d'une école",
    "filterIndependent": "Indépendants",
    "filterAnySchool": "D'une école (toutes)",
    "schoolOf": "École : {name}",
    "openInStripe": "Ouvrir dans Stripe",
    "heardFrom": "Nous a connus via {source}",
    "heardFromSummary": "Comment ils nous ont connus : {list}",
    "heardFromUnknown": "non renseigné",
    "joinedOn": "Inscription : {date}",
    "lessonsCount": "Cours donnés : {n}",
    "sort": {
      "label": "Trier par",
      "name": "Nom",
      "newest": "Inscription la plus récente",
      "oldest": "Inscription la plus ancienne",
      "lessons": "Le plus de cours donnés",
      "instructors": "Le plus de moniteurs",
      "schools": "Le plus d'écoles",
      "upcoming": "Le plus de réservations à venir",
      "country": "Pays et nom",
      "pendingFirst": "En attente d'examen d'abord"
    },
    "schoolState": {
      "pending": "En attente d'examen",
      "published": "Publiées",
      "suspended": "Suspendues",
      "rejected": "Refusées",
      "closed": "Fermées"
    },
    "schoolFilterPlaceholder": "Rechercher par nom, e-mail ou pays…",
    "noSchoolMatches": "Aucune école ne correspond à ces filtres",
    "colSchools": "Écoles",
    "colLessons": "Cours donnés",
    "colUpcoming": "À venir",
    "payouts": {
      "title": "Versements à envoyer",
      "hint": "Moniteurs dans des pays que Stripe ne couvre pas. Envoyez-leur l'argent sur leur plateforme, puis enregistrez-le ici.",
      "requested": "Demandé le {date}",
      "referencePlaceholder": "Réf. de la transaction",
      "markPaid": "Marquer comme payé",
      "marked": "Paiement enregistré",
      "release": "Je n'ai pas pu le payer",
      "released": "Solde restitué et bénéficiaire prévenu",
      "releaseConfirmTitle": "Rendre le solde ?",
      "reasonLabel": "Motif",
      "reason": {
        "invalid_details": "Coordonnées de paiement non valides",
        "rejected": "Le compte a refusé le paiement",
        "other": "Autre (expliquez-le dans la note)"
      },
      "noteLabel": "Note pour le bénéficiaire",
      "notePlaceholder": "Facultative. Elle sera lue telle que vous l'écrivez.",
      "notePlaceholderRequired": "Obligatoire avec « Autre » : expliquez ce qui s'est passé.",
      "releaseConfirmBody": "Le montant revient sur son solde disponible et il en est informé par notification et par e-mail, avec le motif que vous choisissez, pour qu'il corrige ses coordonnées et le redemande."
    },
    "schoolInstructorsButton": "Moniteurs",
    "manageSchoolButton": "Gérer",
    "manageSchoolFailed": "Impossible d'ouvrir le tableau de bord de cette école.",
    "readOnlyBanner": "Lecture seule : vous pouvez voir tout le panneau d'administration, ouvrir Gérer et suivre chaque lien, mais rien modifier.",
    "manageInstructorButton": "Gérer",
    "manageInstructorFailed": "Impossible d'ouvrir le tableau de bord de ce moniteur.",
    "schoolInstructorsTitle": "Moniteurs de {name}",
    "schoolInstructorsIntro": "Ce que vous faites ici, vous le faites pour l'école, comme dans son propre espace : inviter par e-mail ou ajouter des moniteurs sans compte à partir des informations qu'elle vous envoie.",
    "unclaimedBadge": "Sans compte · ajouté par son école",
    "top": {
      "badge": "TOP · {percent} %",
      "since": "TOP depuis le {date} · par {by}",
      "switchOn": "Passer en TOP ({percent} %)",
      "switchOff": "Retirer le TOP",
      "confirmOnTitle": "Passer {name} en TOP ?",
      "confirmOnBodySchool": "Ses nouveaux cours, ceux de tous ses moniteurs et ceux sans moniteur désigné, paieront {percent} % de commission au lieu de {standard} % et monteront d'une demi-étoile dans l'ordre « Recommandés ». Les cours déjà vendus ne changent pas et rien n'apparaît sur son profil. Avant le premier TOP : les nouvelles conditions envoyées par e-mail à tous les moniteurs et écoles depuis au moins 15 jours, et l'accord écrit de l'école sur la commission.",
      "confirmOnBodyInstructor": "Ses nouveaux cours paieront {percent} % de commission au lieu de {standard} % et monteront d'une demi-étoile dans l'ordre « Recommandés ». Les cours déjà vendus ne changent pas et rien n'apparaît sur son profil. Avant le premier TOP : les nouvelles conditions envoyées par e-mail à tous les moniteurs et écoles depuis au moins 15 jours, et l'accord écrit du moniteur sur la commission.",
      "confirmOffTitle": "Retirer le TOP à {name} ?",
      "confirmOffBody": "Ses nouveaux cours reviendront à {standard} % de commission et à l'ordre normal. Les cours vendus en TOP gardent leur commission.",
      "onToast": "TOP activé",
      "offToast": "TOP retiré",
      "bySchool": "TOP par son école",
      "filterAll": "TOP ou non",
      "filterOnly": "TOP uniquement"
    },
    "referredBy": "Code de {name}",
    "salesRep": "Commercial : {name}",
    "sales": {
      "title": "Commerciaux",
      "intro": "Chaque commercial a un lien avec son code. Si une école ou un moniteur indépendant arrive par ce lien et s'inscrit, il est attribué à ce commercial sans que rien ne lui soit montré. Avec les cookies publicitaires acceptés, le lien compte {days} jours ; sans eux, seulement si l'inscription a lieu lors de la même visite. Ajoutez à la main ce que le lien ne recueille pas.",
      "new": "Nouveau commercial",
      "name": "Nom",
      "code": "Code",
      "codeHint": "Lettres, chiffres et tirets, sans espaces. C'est ce que porte le lien, et il ne peut pas être modifié ensuite.",
      "email": "E-mail (facultatif)",
      "note": "Note (facultative)",
      "create": "Créer le commercial",
      "created": "Commercial créé",
      "empty": "Aucun commercial pour l'instant.",
      "inactive": "Désactivé",
      "deactivate": "Désactiver",
      "activate": "Activer",
      "deactivated": "Désactivé : son lien ne compte plus à partir de maintenant",
      "activated": "Activé : son lien compte de nouveau",
      "copy": "Copier",
      "copied": "Lien copié",
      "linkHint": "Fonctionne sur n'importe quelle page du site : il suffit d'ajouter {param} à la fin de l'adresse.",
      "funnelSchools": "Écoles : {total} · approuvées : {approved} · peuvent être payées : {payable} · avec des cours donnés : {teaching}",
      "funnelInstructors": "Moniteurs : {total} · approuvés : {approved} · peuvent être payés : {payable} · avec des cours donnés : {teaching}",
      "totals": "Ventes de cours donnés : {sales} · commission d'Alpine Pal : {commission}",
      "noSales": "Pas encore de ventes",
      "kind": {
        "school": "École",
        "instructor": "Moniteur"
      },
      "source": {
        "link": "Par son lien",
        "admin": "Ajouté à la main"
      },
      "since": "depuis le {date}",
      "closed": "Compte fermé",
      "payable": "Peut être payé",
      "notPayable": "Ne peut pas encore être payé",
      "lessons": "Cours donnés : {n} (le premier le {date})",
      "noLessons": "Aucun cours donné",
      "entrySales": "Ventes : {sales} · commission : {commission}",
      "remove": "Retirer",
      "removed": "Retiré de ce commercial",
      "assignTitle": "Ajouter à la main",
      "assignPlaceholder": "Cherchez une école ou un moniteur indépendant",
      "assign": "Ajouter",
      "assigned": "Ajouté à ce commercial",
      "noMatches": "Personne sans commercial ne porte ce nom"
    },
    "referrals": {
      "title": "Parrainages entre moniteurs",
      "summary": "{toReview} à examiner · {total} au total",
      "pair": "{invitee} · code {code} de {referrer}",
      "since": "depuis le {date}",
      "firstLesson": "Premier cours : #{ref}, {date} · {status} · paiement {payment}",
      "disputed": "En litige",
      "note": "Motif : {note}",
      "grant": "{side} : {used} sur {cap} à {percent} % (au lieu de {base} %), jusqu'au {date}",
      "revoked": "Retirée",
      "revoke": "Retirer",
      "approve": "Approuver la récompense",
      "decline": "Refuser",
      "notePlaceholder": "Motif (facultatif)",
      "approvedToast": "Récompense approuvée",
      "declinedToast": "Récompense refusée",
      "revokedToast": "Réduction retirée",
      "revokeConfirmTitle": "Retirer ce qui reste de cette réduction ?",
      "revokeConfirmBody": "Les réservations déjà faites gardent leur commission ; les suivantes paieront la commission normale.",
      "showAll": "Tout voir ({n})",
      "side": {
        "invitee": "Réduction du filleul",
        "referrer": "Réduction du parrain"
      },
      "flag": {
        "same_payout": "Même IBAN ou e-mail de paiement",
        "same_bank": "Même compte bancaire sur Stripe",
        "same_email": "Même adresse e-mail",
        "duplicate_person": "Même nom et date de naissance qu'un autre moniteur",
        "cap_reached": "Plafond annuel atteint"
      }
    }
  },
  "notif": {
    "empty": "Aucune notification pour le moment.",
    "newBookingRequest": "Nouvelle demande de réservation",
    "bookingAccepted": "Réservation acceptée",
    "bookingConfirmed": "Réservation confirmée",
    "bookingRejected": "Réservation refusée",
    "bookingExpired": "Réservation expirée",
    "timeProposed": "Nouvel horaire proposé",
    "newTimeAccepted": "Nouvel horaire accepté",
    "newTimeDeclined": "Nouvel horaire refusé",
    "meetingPointProposed": "Point de rendez-vous proposé",
    "meetingPointConfirmed": "Point de rendez-vous confirmé",
    "customerNoShow": "Enregistrée comme absence du client",
    "refundIssued": "Remboursement effectué",
    "newMessage": "Nouveau message",
    "newApplication": "Nouvelle candidature de moniteur",
    "newSchoolApplication": "Nouvelle demande d'inscription d'école",
    "schoolApproved": "Votre école est approuvée",
    "schoolRejected": "La demande d'inscription de votre école n'a pas été approuvée",
    "invitationAccepted": "Une invitation d'école a été acceptée",
    "instructorLeftSchool": "Un moniteur a quitté une école",
    "schoolOwnerDeleted": "Le titulaire d'une école a supprimé son compte",
    "schoolOwnerDeletedOwed": "Le titulaire d'une école qui a encore des cours à venir ou qui doit encore être payée a supprimé son compte : l'école est suspendue, pas fermée",
    "schoolAdminJoined": "Un nouvel administrateur a rejoint l'école",
    "schoolAdminRemoved": "Vous n'êtes plus administrateur de l'école",
    "schoolCalendarUnlinked": "Le Google Agenda de l'école a été déconnecté : il était lié par quelqu'un qui ne gère plus l'école. Reconnectez-le depuis Connexions.",
    "removedFromSchool": "Votre école vous a retiré de son équipe",
    "instructorNowCertified": "Un moniteur déclare désormais un diplôme",
    "instructorNowCompanion": "Un moniteur est passé en profil passionné",
    "instructorCredentialsChanged": "Un moniteur modifie ses diplômes vérifiés",
    "applicationApproved": "Votre profil de moniteur est vérifié",
    "applicationRejected": "Candidature de moniteur non approuvée",
    "lessonConfirmed": "Cours confirmé",
    "lessonAutoConfirmed": "Cours confirmé automatiquement",
    "disputeOpened": "Une réclamation a été ouverte",
    "disputeRefunded": "Réclamation résolue : remboursement",
    "disputeDismissed": "Réclamation résolue",
    "refundNeedsReview": "Un remboursement demande un examen manuel",
    "schoolSuspended": "Votre école est suspendue pour le moment",
    "schoolReactivated": "Votre école est de nouveau publiée",
    "schoolClosed": "Votre école a été fermée",
    "schoolClosedForInstructor": "Votre école a fermé sur Alpine Pal",
    "manualPayoutFailed": "Nous n'avons pas pu vous envoyer votre paiement",
    "sweepStalled": "Le traitement automatique s'est arrêté",
    "sweepRecovered": "Le traitement automatique fonctionne à nouveau",
    "backupProblem": "Les sauvegardes de la base de données échouent",
    "chargebackWon": "La banque a tranché en faveur du cours : paiement débloqué",
    "chargebackSettled": "Litige bancaire tranché et réglé",
    "reviewInvite": "Notez votre cours",
    "paymentMismatch": "Le montant débité diffère du montant attendu",
    "bookingCancelled": "Réservation annulée par le client",
    "bookingCancelledByInstructor": "Le moniteur a annulé votre cours",
    "groupClassBelowMinimum": "Un cours collectif n'aura pas lieu : pas assez de participants",
    "bookingAcceptedBySchool": "Votre école a accepté une réservation pour vous",
    "bookingRejectedBySchool": "Votre école a refusé une demande de réservation",
    "bookingCancelledBySchool": "Votre école a annulé l'un de vos cours",
    "bookingCancelledBySchoolCustomer": "L'école a annulé votre cours",
    "bookingAutoConfirmed": "Nouveau cours réservé et confirmé automatiquement",
    "managedBySchool": "Votre école gère désormais votre calendrier et vos demandes",
    "managedByYourself": "Vous gérez de nouveau vous-même votre calendrier et vos demandes",
    "webhookDisabled": "Un endpoint de webhook a été désactivé après des échecs répétés",
    "lessonReminder": "Votre cours a lieu demain",
    "meetingPointPending": "Votre cours a lieu demain : convenez du point de rendez-vous",
    "classMeetingPointPending": "Votre cours collectif a lieu demain : fixez son point de rendez-vous dans votre calendrier",
    "lessonReminderToday": "Votre cours a lieu aujourd'hui",
    "meetingPointPendingToday": "Votre cours a lieu aujourd'hui : convenez du point de rendez-vous",
    "classMeetingPointPendingToday": "Votre cours collectif a lieu aujourd'hui : fixez son point de rendez-vous dans votre calendrier",
    "withdrawalPaid": "Retrait effectué",
    "withdrawalFailed": "Retrait échoué",
    "withdrawalAwaitingFunds": "Un retrait attend des fonds sur Stripe",
    "transferReversed": "Virement annulé dans Stripe",
    "instructorClosedAccount": "Un moniteur a fermé son compte",
    "accountDeletedInClerk": "Compte supprimé dans Clerk, à vérifier",
    "instructorReapplied": "Un moniteur demande un nouvel examen",
    "manualPayoutDue": "Un versement doit être envoyé à la main",
    "payoutMethodMissing": "Dites-nous où envoyer votre solde",
    "payoutsReady": "Vous pouvez maintenant retirer votre solde",
    "payoutsReadyNeedsFiscal": "Vous pourrez retirer votre solde dès que vous aurez renseigné vos données fiscales dans Factures",
    "payoutsBlocked": "Votre compte de versement demande votre attention",
    "connectUnfinished": "Terminez la configuration des versements pour retirer",
    "bankRejectedPayout": "Votre banque a rejeté le dépôt : vérifiez vos coordonnées",
    "joinedSchool": "Vous faites désormais partie d'une école",
    "lessonAssigned": "Votre école vous a attribué un cours",
    "instructorAssigned": "Votre cours a désormais un moniteur",
    "unclaimedProfileAdded": "Une école a ajouté un moniteur sans compte",
    "profileClaimed": "Un moniteur a réclamé son profil",
    "profileClaimedYours": "Votre profil est désormais à vous",
    "equipmentBooked": "Matériel loué avec un cours",
    "calendarDisconnected": "Votre Google Agenda ne reçoit plus les cours",
    "referralSignedUp": "Quelqu'un s'est inscrit avec votre code",
    "referralApproved": "Nous avons approuvé une personne que vous parrainez",
    "referralRewarded": "Vous avez gagné une commission réduite",
    "referralToReview": "Récompense de parrainage à examiner",
    "lueiraDisconnected": "Lueira n'accepte plus la clé de votre école",
    "lueiraClash": "Lueira a vendu une place déjà vendue sur Alpine Pal",
    "lueiraOursCancelled": "Un cours vendu sur Alpine Pal a été annulé dans Lueira : annulez-le aussi ici pour rembourser le client",
    "lueiraOrderRefused": "Un cours payé sur Alpine Pal n'a pas pu être ajouté à votre Lueira",
    "lueiraReview": "Une école a envoyé sa clé Lueira : vérifiez la connexion",
    "lueiraApproved": "Votre connexion Lueira est prête",
    "lueiraMissingScope": "Il manque une autorisation à votre clé Lueira",
    "lueiraOrderUnsure": "Nous ne savons pas si un cours payé est arrivé dans votre Lueira"
  },
  "photo": {
    "change": "Changer la photo",
    "uploading": "Envoi en cours…",
    "uploaded": "Photo mise à jour",
    "hint": "JPG, PNG ou WebP. Nous la redimensionnons pour vous."
  },
  "photos": {
    "label": "Photos de vous (facultatif)",
    "hint": "Jusqu'à 3. Sur la neige, en train de skier, le visage visible : c'est ce qui marche le mieux. Les profils avec photos reçoivent plus de demandes.",
    "add": "Ajouter",
    "addFirst": "Ajouter des photos",
    "remove": "Retirer la photo",
    "main": "Principale",
    "moveEarlier": "Déplacer avant",
    "moveLater": "Déplacer après",
    "tooLarge": "Cette image est trop lourde. Maximum {mb} Mo par photo.",
    "sectionTitle": "Photos",
    "view": "Voir la photo {n}",
    "previous": "Photo précédente",
    "next": "Photo suivante",
    "close": "Fermer",
    "counter": "{n} sur {total}"
  },
  "payout": {
    "title": "Votre mode de versement",
    "hint": "Stripe ne peut pas encore envoyer d'argent dans votre pays : nous payons donc vos retraits à la main. Dites-nous où.",
    "provider": "Plateforme",
    "paypal": "PayPal",
    "payoneer": "Payoneer",
    "bank_transfer": "Virement bancaire",
    "email": "E-mail du compte",
    "emailPlaceholder": "vous@email.com",
    "iban": "IBAN",
    "accountHolder": "Titulaire du compte",
    "manualNotice": "Nous ne stockons aucune coordonnée bancaire. Quand vous demandez un retrait, nous l'examinons et envoyons l'argent ; c'est plus long qu'un virement automatique, et nous vous envoyons un e-mail dès qu'il part.",
    "bankNotice": "Nous envoyons chaque retrait à la main par virement sur cet IBAN. Cela fonctionne mieux avec les comptes européens (SEPA) ; ailleurs, les virements peuvent prendre plus de temps ou entraîner des frais bancaires.",
    "saved": "Mode de versement enregistré",
    "clear": "Retirer"
  },
  "profileEdit": {
    "certName": "Diplôme",
    "certOrg": "Organisme",
    "certYear": "Année",
    "addCert": "Ajouter",
    "removeCertTitle": "Retirer ce diplôme ?",
    "removeCertBody": "{name} n'apparaîtra plus sur votre profil. Si vous en avez de nouveau besoin, il faudra l'ajouter à nouveau avec son document.",
    "removeCertConfirm": "Retirer",
    "certStillMissing": "Pour l'ajouter, il manque : {fields}.",
    "removeCertLastProof": "Vous ne pouvez pas le retirer : c'est le seul qui atteste votre qualification dans vos stations. Ajoutez-en un autre avant de le retirer.",
    "kindTitle": "Comment vous vous présentez",
    "kindCurrent": "ce que dit votre profil aujourd'hui",
    "kindUpgradeBody": "Vous avez obtenu votre diplôme ? Ajoutez-le ici et votre profil vous présentera comme moniteur diplômé. Il apparaît comme déclaré jusqu'à ce que nous le vérifiions ; vous continuez à recevoir des réservations entre-temps.",
    "kindUpgrade": "Je suis désormais moniteur diplômé",
    "kindDowngradeBody": "Vous pouvez revenir au profil passionné. Votre diplôme reste enregistré, mais le profil cesse de le revendiquer.",
    "kindDowngrade": "Passer en profil passionné"
  },
  "auth": {
    "notConfiguredTitle": "La connexion n'est pas encore disponible",
    "notConfiguredBody": "Les comptes sont presque prêts. Revenez bientôt.",
    "notInstructor": "Cet espace est réservé aux moniteurs. Candidatez pour le devenir : il se débloquera une fois votre candidature approuvée."
  },
  "content": {
    "reviewed": "Dernière révision le {date}",
    "onThisPage": "Sur cette page",
    "eyebrowAbout": "Qui nous sommes",
    "eyebrowSafety": "Avant de réserver",
    "eyebrowPricing": "Une commission, rien d'autre",
    "eyebrowContact": "Nous lisons chaque message",
    "eyebrowFaq": "Des réponses, pas de discours commercial",
    "eyebrowHowItWorks": "Trois étapes",
    "eyebrowBecomeInstructor": "Enseignez à vos conditions"
  },
  "contact": {
    "emailLabel": "E-mail de contact",
    "emailHint": "Écrivez à cette adresse depuis la messagerie que vous utilisez d'habitude. Si votre question est d'ordre général, la réponse se trouve peut-être déjà dans la"
  },
  "apiDocs": {
    "eyebrow": "Pour les écoles de ski",
    "contents": "Sur cette page",
    "copy": "Copier",
    "copied": "Copié"
  },
  "footer": {
    "product": "Produit",
    "howItWorks": "Comment ça marche",
    "becomeInstructor": "Devenir moniteur",
    "forSchools": "Pour les écoles de ski",
    "apiForSchools": "API pour les écoles de ski",
    "safety": "Sécurité et confiance",
    "pricing": "Tarifs et commissions",
    "company": "Entreprise",
    "about": "À propos d'Alpine Pal",
    "contact": "Contact",
    "faq": "FAQ",
    "legal": "Mentions légales",
    "terms": "Conditions d'utilisation",
    "privacy": "Politique de confidentialité",
    "cookies": "Politique de cookies",
    "instagram": "Alpine Pal sur Instagram",
    "photoCredits": "Crédits photo",
    "rights": "Tous droits réservés."
  },
  "school": {
    "eyebrow": "Pour les écoles de ski",
    "ctaTitle": "Inscrivez votre école de ski",
    "ctaBody": "L'inscription est gratuite et sans abonnement mensuel. Créez un compte pour inscrire votre école ; nous vérifions chaque école à la main avant sa mise en ligne.",
    "ctaButton": "Créer un compte",
    "instructorCannotRegister": "Ce compte a déjà un profil de moniteur. Une école se gère depuis son propre compte : inscrivez-vous avec une autre adresse e-mail pour en enregistrer une.",
    "ctaInstructorLink": "Vous êtes moniteur indépendant ?",
    "ctaInstructorLinkCta": "Candidatez ici",
    "formTitle": "Inscrivez votre école",
    "formIntro": "Dites-nous qui vous êtes et où vous enseignez. L'inscription est gratuite et ne vous engage à rien.",
    "nameLabel": "Nom de l'école",
    "countryLabel": "Pays",
    "countryPlaceholder": "Choisissez un pays",
    "contactEmailLabel": "E-mail de contact",
    "phoneLabel": "Téléphone (facultatif)",
    "phonePrefixLabel": "Indicatif",
    "websiteLabel": "Site web (facultatif)",
    "descriptionLabel": "À propos de l'école",
    "descriptionPlaceholder": "Ce que vous enseignez, où et depuis quand. Ce texte apparaîtra sur votre page publique.",
    "submitButton": "Envoyer la demande",
    "descriptionMin": "Au moins {min} caractères ({count}/{min}).",
    "descriptionOk": "Ce texte apparaîtra sur votre page publique.",
    "missingName": "Donnez un nom à l'école",
    "missingCountry": "Choisissez un pays",
    "missingEmail": "Ajoutez un e-mail de contact",
    "heardFromLabel": "Comment avez-vous connu Alpine Pal ?",
    "missingHeardFrom": "Dites-nous comment vous avez connu Alpine Pal",
    "missingDescription": "Écrivez au moins {min} caractères sur l'école",
    "reviewNote": "Nous répondons généralement sous un jour ouvré.",
    "submitted": "Demande envoyée : nous vous écrirons par e-mail une fois qu'elle aura été examinée.",
    "statusPending": "Votre école est en attente d'examen. Nous vous enverrons un e-mail dès qu'elle sera approuvée.",
    "statusVerified": "Votre école est approuvée et en ligne.",
    "statusRejected": "La demande d'inscription de votre école n'a pas été approuvée. Écrivez-nous si vous pouvez justifier de l'agrément de l'école.",
    "goToDashboard": "Aller à votre tableau de bord",
    "badgeVerified": "Vérifiée",
    "imagesTitle": "Images de la page publique",
    "logoLabel": "Logo de l'école",
    "logoHint": "Affiché à côté de votre nom sur votre page publique. Carré, JPG/PNG/WebP.",
    "coverLabel": "Photo de couverture",
    "coverHint": "La grande photo qui ouvre votre page publique.",
    "coverHintDefault": "Aucune photo importée pour le moment : la photo par défaut d'Alpine Pal est affichée.",
    "galleryLabel": "Galerie de photos",
    "galleryHint": "Jusqu'à {max} photos, affichées sous votre description sur votre page publique : cours, groupes, vos moniteurs, la station. Les flèches changent l'ordre.",
    "faqTitle": "Questions fréquentes",
    "pageContact": "Contact",
    "pageInstructorsTitle": "Les moniteurs chez {school}",
    "pageNoInstructors": "Aucun moniteur publié pour le moment.",
    "unassigned": {
      "title": "Cours sans moniteur attribué",
      "intro": "{school} vend ces cours sans nommer le moniteur : vous réservez et payez, l'école attribue un moniteur de son équipe, que vous rencontrez au point de rendez-vous. Pour toute question, la messagerie vous met en contact avec l'école.",
      "places": "L'école publie combien de cours elle peut donner en même temps : une heure est proposée tant qu'il lui reste une place.",
      "reviews": "Ce que les clients disent de l'école"
    },
    "booking": {
      "title": "Réserver un cours avec {school}",
      "who": "Qui enseigne",
      "schoolOption": "L'école choisit le moniteur",
      "instructorNote": "Réserver {name} ici ou depuis son propre profil, c'est le même cours au même prix.",
      "show": "Voir les disponibilités",
      "hide": "Masquer les disponibilités",
      "reviewsOf": "Avis sur {name}"
    },
    "groupClasses": {
      "title": "Prochains cours collectifs",
      "intro": "Une place dans un groupe, à prix fixe par personne. Choisissez un cours pour le voir dans le calendrier et réserver votre place.",
      "previous": "Cours précédents",
      "next": "Plus de cours"
    },
    "instructorBadge": "École",
    "resortsTitle": "Stations",
    "resortsLabel": "Stations où vous travaillez",
    "resortsHint": "Cochez toutes les stations où votre école travaille. Les cours sans moniteur attribué ne peuvent être publiés que là.",
    "missingResorts": "choisissez au moins une station",
    "point1": "Vendez des cours particuliers sans nommer le moniteur, des cours collectifs à la place et les heures de vos propres moniteurs.",
    "point2": "Nous vérifions votre école à la main avant toute mise en ligne.",
    "point3": "90 % de chaque cours va sur le solde de l'école, avec une facture par retrait."
  },
  "invitation": {
    "title": "{school} vous invite à enseigner",
    "body": "Cette invitation a été envoyée à {email}. Créez un compte avec cette adresse, ou connectez-vous à un compte où elle est vérifiée, et complétez votre profil de moniteur.",
    "adminTitle": "{school} vous invite à gérer son compte",
    "adminBody": "Cette invitation a été envoyée à {email}. Créez un compte avec cette adresse, ou connectez-vous à un compte où elle est vérifiée, puis acceptez pour commencer à gérer l'école.",
    "adminExplain": "Vous gérerez le profil de l'école, ses moniteurs et leurs tarifs, et ses revenus. Seul le créateur de l'école peut ajouter ou retirer des administrateurs.",
    "adminAccept": "Accepter l'invitation",
    "adminCannotAccept": "Ce compte a déjà un rôle : il ne peut pas gérer une école. Connectez-vous plutôt avec le compte de l'adresse invitée.",
    "invalid": "Ce lien d'invitation n'est pas valide.",
    "expired": "Cette invitation a expiré. Demandez à l'école de la renvoyer.",
    "revoked": "Cette invitation a été retirée par l'école.",
    "accepted": "Cette invitation a déjà été utilisée.",
    "roleCannotAccept": "Ce compte a déjà un rôle : il ne peut pas accepter une invitation de moniteur. Connectez-vous plutôt avec le compte de l'adresse invitée.",
    "join": {
      "title": "Rejoindre {school} avec votre profil actuel",
      "sentTo": "Cette invitation a été envoyée à {email}.",
      "intro": "Votre profil, vos avis et vos photos restent exactement tels quels. Ce qui change :",
      "rate": "Votre tarif horaire devient {rate}/h",
      "extraRate": "plus {rate} par élève supplémentaire",
      "formats": "Vous vendrez avec les formules, saisons et prix de {school}",
      "changeRates": "Vos tarifs sont désormais fixés par l'école.",
      "changeCalendar": "L'école gère votre calendrier, avec ses heures ouvertes : elles remplacent les vôtres.",
      "changeEarnings": "Désormais, l'argent de vos cours est encaissé par l'école.",
      "changeBadge": "L'école se porte garante de votre profil.",
      "changeLeave": "Si vous quittez l'école plus tard, votre profil est mis en pause jusqu'à ce que nous l'examinions à nouveau.",
      "pendingBecomesVerified": "Votre profil est encore en cours d'examen. Rejoindre l'école le vérifie : l'école tient lieu d'examen.",
      "button": "Rejoindre {school}",
      "confirmTitle": "Rejoindre {school} ?",
      "confirmBody": "Désormais, l'école fixe vos tarifs, gère votre calendrier et encaisse l'argent de vos cours. Votre profil et ce qu'il contient restent à vous.",
      "confirm": "Oui, rejoindre l'école",
      "done": "Vous enseignez désormais pour {school}.",
      "blocked": {
        "closed": "Ce compte est fermé.",
        "noProfile": "Ce compte n'a pas encore de profil de moniteur.",
        "currencyMismatch": "Votre profil est tarifé en {mine} et l'école travaille en {theirs}. La devise d'un profil ne peut pas être changée : cette invitation ne peut donc pas être acceptée avec ce profil.",
        "alreadyInSchool": "Vous enseignez déjà pour une école. Demandez-lui de vous retirer de son équipe avant d'accepter une autre invitation.",
        "rejected": "Votre profil n'a pas été approuvé. Demandez un nouvel examen avant de rejoindre une école.",
        "rejectedLink": "Demander un nouvel examen",
        "notCertified": "Seuls les moniteurs diplômés peuvent rejoindre une école. Passez d'abord votre profil en moniteur diplômé.",
        "notCertifiedLink": "Modifier mon profil",
        "outstandingBalance": "Il vous reste {amount} sur votre propre solde. Retirez ce montant, et attendez que chaque cours déjà payé soit réglé, avant de rejoindre une école.",
        "outstandingBalanceLink": "Aller aux revenus"
      }
    },
    "claim": {
      "title": "{school} a créé votre profil de moniteur",
      "body": "Pour qu'il soit à vous, connectez-vous ou créez votre compte avec l'adresse e-mail à laquelle ce lien a été envoyé ({email}).",
      "sentTo": "Lien envoyé à {email}.",
      "intro": "Voici le profil que {school} a publié à votre nom. Réclamez-le et il sera à vous : vous pourrez le modifier et échanger avec vos élèves.",
      "keepsRates": "Vous restez chez {school} : l'école fixe vos tarifs.",
      "keepsCalendar": "{school} continue de gérer votre calendrier et vos demandes jusqu'à ce qu'elle vous les confie.",
      "keepsMoney": "L'argent de vos cours est encaissé par {school}, comme jusqu'à présent.",
      "takesAlong": "Si vous quittez un jour l'école, le profil part avec vous, avis compris.",
      "viewProfile": "Voir le profil de {name}",
      "button": "Réclamer mon profil",
      "done": "Le profil est désormais à vous",
      "blocked": {
        "hasProfile": "Ce compte a déjà un profil de moniteur, il ne peut donc pas en réclamer un autre. Demandez à {school} une invitation par e-mail : vous rejoindrez l'école avec votre profil, avis compris, et l'école retirera celui qu'elle a créé.",
        "schoolPaused": "{school} n'est pas publiée sur Alpine Pal pour le moment. Vous pourrez réclamer le profil dès qu'elle le sera de nouveau.",
        "managesSchool": "Ce compte gère une école, et un compte d'école ne peut pas être moniteur. Connectez-vous avec un autre compte pour réclamer le profil."
      },
      "acceptResponsibility": "Je confirme qu'il m'appartient de détenir un diplôme, une licence et une assurance valides pour les stations de ce profil, que ce que le profil dit de moi est exact, et que j'accepte les"
    }
  },
  "schoolDash": {
    "title": "Tableau de bord école",
    "notManaging": "Vous ne gérez aucune école en ce moment.",
    "notManagingGo": "Voir les écoles",
    "verifiedNote": "Votre école est approuvée. Invitez des moniteurs et gardez votre page à jour.",
    "imagesNudgeBoth": "Votre page publique n'a pas encore de logo ni de photo de couverture",
    "imagesNudgeLogo": "Votre page publique n'a pas encore de logo",
    "imagesNudgeCover": "Votre page publique n'a pas encore de photo de couverture",
    "imagesNudgeBody": "L'en-tête de la page de votre école est la première chose que voient les clients.",
    "imagesNudgeCta": "Ajouter les images",
    "instructorsHint": "Invitez des moniteurs ou ajoutez-les sans e-mail, fixez leurs tarifs et gérez votre équipe.",
    "earningsHint": "Solde, retraits et mode de versement de l'école.",
    "bookingsHint": "Demandes, prochains cours et historique de tous vos moniteurs.",
    "requestsSection": "Demandes",
    "upcomingSection": "Prochains cours",
    "historySection": "Historique",
    "noBookings": "Rien ici pour le moment.",
    "instructorAnswers": "C'est le moniteur qui répond à celle-ci.",
    "openBooking": "Ouvrir",
    "unassignedRow": "Cours sans moniteur attribué",
    "messagesHint": "Les conversations avec les clients de vos cours sans moniteur attribué et de vos moniteurs sans compte.",
    "messagesNote": "Les conversations où votre école écrit : les cours sans moniteur attribué et les moniteurs que vous avez ajoutés sans compte. Les moniteurs qui ont un compte gèrent leur propre messagerie.",
    "acting": {
      "banner": "Vous gérez {name} en tant qu'Alpine Pal.",
      "exit": "Quitter",
      "moneyReadOnly": "Les versements et les retraits relèvent de l'école : vous pouvez les voir ici, mais pas les modifier.",
      "apiReadOnly": "Les clés API, les webhooks et leurs secrets relèvent de l'école : vous pouvez voir la configuration ici, mais pas la modifier.",
      "calendarNotice": "Google Agenda relève de l'école : il ne se gère pas d'ici.",
      "messagesNotice": "Vous voyez ces conversations en tant qu'Alpine Pal, pas en tant qu'école."
    },
    "cancelLesson": "Annuler le cours",
    "cancelLessonTitle": "Annuler ce cours ?",
    "cancelLessonBody": "Le client est intégralement remboursé et informé que l'école a annulé. Cette action est irréversible.",
    "managementLabel": "Géré par",
    "managedByInstructor": "Le moniteur",
    "managedBySchool": "L'école",
    "calendarLink": "Calendrier",
    "calendarManagedByInstructor": "Ce moniteur gère lui-même son calendrier. Pour le modifier ici, passez-le en « géré par l'école » dans l'équipe.",
    "calendarPickPlaceholder": "Choisissez un moniteur",
    "assignInstructor": "Attribuer",
    "assignedToast": "Cours attribué. Nous avons prévenu le moniteur et le client.",
    "assignNobody": "Aucun moniteur actif de votre équipe n'enseigne dans cette station.",
    "assignGroupFromCalendar": "Cours collectif : le moniteur s'attribue à tout le cours depuis le calendrier.",
    "calendarUnassignedOption": "Cours sans moniteur attribué",
    "calendarUnavailable": "Ce calendrier n'est pas disponible : le moniteur n'est plus dans votre équipe.",
    "api": {
      "title": "Connectez votre système de réservation",
      "intro": "Votre channel manager ou votre propre logiciel peut lire et écrire les calendriers de vos moniteurs, recevoir les réservations dès qu'elles sont payées et répondre aux demandes. Tout passe par l'API ci-dessous avec l'une de vos clés.",
      "baseUrl": "URL de base",
      "keysTitle": "Clés API",
      "keysIntroOwner": "Une clé donne un accès complet aux calendriers et aux réservations de votre équipe. Créez-en une par système connecté, et révoquez-la le jour où vous cessez de l'utiliser.",
      "keysIntro": "Seul le créateur de l'école peut créer ou révoquer des clés. Demandez-lui si vous en avez besoin d'une.",
      "keyName": "À quoi sert cette clé ?",
      "keyNamePlaceholder": "p. ex. mon logiciel de réservation",
      "createKey": "Créer une clé",
      "keyCreatedTitle": "Votre nouvelle clé API",
      "keyCreatedBody": "Copiez-la maintenant et conservez-la en lieu sûr. Pour votre sécurité, nous n'en gardons qu'une empreinte : elle ne pourra plus être affichée.",
      "copy": "Copier",
      "copied": "Copiée",
      "keyCreated": "Créée le {date}",
      "keyLastUsed": "dernière utilisation {date}",
      "keyNeverUsed": "jamais utilisée",
      "keyRevoked": "Révoquée",
      "revokeKey": "Révoquer",
      "revokeKeyTitle": "Révoquer cette clé ?",
      "revokeKeyBody": "Tout ce qui utilise encore « {name} » cessera de fonctionner immédiatement. Cette action est irréversible.",
      "keyRevokedToast": "Clé révoquée",
      "noKeys": "Aucune clé pour le moment.",
      "docsLink": "Lire la documentation de l'API",
      "webhooksTitle": "Webhooks",
      "webhooksIntro": "Nous envoyons chaque événement de réservation en POST aux URL que vous enregistrez, signé avec le secret de l'endpoint. Si un endpoint échoue de façon répétée, nous réessayons pendant environ trois jours, puis nous le désactivons.",
      "webhookUrl": "URL (https)",
      "webhookDescription": "Description",
      "webhookEvents": "Événements",
      "allEvents": "Tous les événements",
      "addWebhook": "Ajouter un endpoint",
      "noWebhooks": "Aucun endpoint pour le moment.",
      "webhookSaved": "Enregistré",
      "webhookActive": "Actif",
      "webhookDisabled": "Désactivé",
      "webhookFailing": "{count} échecs d'affilée",
      "webhookFailing_one": "{count} échec",
      "lastDelivery": "dernière livraison {date}",
      "sendTest": "Envoyer un test",
      "testSent": "Test livré : votre endpoint a répondu avec un code de succès.",
      "testFailed": "Le test n'est pas passé ({error}).",
      "revealSecret": "Afficher le secret",
      "hideSecret": "Masquer le secret",
      "rotateSecret": "Renouveler le secret",
      "rotateSecretTitle": "Émettre un nouveau secret ?",
      "rotateSecretBody": "Le secret actuel cesse de fonctionner immédiatement. Mettez votre système à jour avec le nouveau avant le prochain événement.",
      "deleteWebhook": "Supprimer",
      "deleteWebhookTitle": "Supprimer cet endpoint ?",
      "deleteWebhookBody": "Il cesse de recevoir des événements et son journal de livraisons est supprimé. Cette action est irréversible.",
      "deliveries": "Livraisons",
      "noDeliveries": "Rien de livré pour le moment.",
      "sandbox": {
        "title": "Environnement de test",
        "intro": "Une copie de test de votre école avec des moniteurs fictifs, où votre système peut publier des calendriers, recevoir des réservations par webhook et y répondre, sans argent ni e-mail. Les clés de test commencent par ap_test_ et n'atteignent que la copie ; la première la crée.",
        "createKey": "Créer une clé de test",
        "keyNamePlaceholder": "p. ex. tests de mon logiciel de réservation",
        "empty": "Pas encore d'environnement de test : créez une clé de test pour le mettre en place.",
        "instructorsTitle": "Ce qu'il contient",
        "instantOn": "confirme immédiatement",
        "instantOff": "répond aux demandes à la main",
        "seatLabel": "Cours sans moniteur attribué",
        "customerNote": "POST /sandbox/bookings joue le rôle du client : il crée une réservation payée sur n'importe lequel de ces ids. Rien dans l'environnement de test n'est jamais public.",
        "reset": "Vider l'environnement de test",
        "resetTitle": "Vider l'environnement de test ?",
        "resetBody": "Toutes les réservations et conversations de la copie de test sont supprimées. Les clés, les webhooks et les calendriers restent.",
        "resetToast": "Environnement vidé : {count} réservations supprimées",
        "resetToast_one": "Environnement vidé : {count} réservation supprimée"
      },
      "deliveryStatus": {
        "pending": "En attente",
        "delivered": "Livrée",
        "failed": "Échouée"
      }
    },
    "savedToast": "Enregistré",
    "inviteTitle": "Inviter un moniteur",
    "inviteIntro": "Il reçoit un e-mail, complète son propre profil et passe en ligne comme moniteur de votre école. C'est vous qui fixez les prix : avec vos formules ou à l'heure. C'est vous qui gérez son calendrier, avec les heures ouvertes de votre école.",
    "inviteVouches": "Aucun diplôme n'est demandé : en invitant cette personne, vous répondez de ce qu'elle remplit les exigences de votre canton pour enseigner sur les pistes. Sans diplôme personnel, elle ne pourra pas proposer de cours en hors-piste.",
    "inviteEmailLabel": "E-mail",
    "inviteRateLabel": "Tarif/h",
    "inviteExtraLabel": "Extra/élève",
    "inviteModeLabel": "Comment il vendra",
    "inviteModeFormats": "Avec les formules de l'école",
    "inviteModeHours": "À l'heure",
    "inviteModeFormatsHint": "Il vendra avec les formules, saisons et prix de vos cours sans moniteur attribué, sans tarif horaire. Quand vous modifiez les vôtres, les siennes changent aussi.",
    "inviteModeFormatsNone": "Vous n'avez pas encore de formules : créez-les dans Cours privés, sur les cours sans moniteur attribué. D'ici là, ses cours ne pourront pas être réservés ; dès que vous les enregistrez, elles apparaissent d'elles-mêmes.",
    "schoolFormatsShort": "Formules de l'école",
    "ownFormatsShort": "Formules propres",
    "schoolHoursShort": "avec les heures de l'école",
    "inviteButton": "Inviter",
    "inviteSent": "Invitation envoyée.",
    "invitationsTitle": "Invitations",
    "invitationStatus": {
      "pending": "En attente",
      "accepted": "Acceptée",
      "revoked": "Révoquée",
      "expired": "Expirée"
    },
    "expiresOn": "expire le {date}",
    "resend": "Renvoyer",
    "revoke": "Révoquer",
    "rosterTitle": "Vos moniteurs",
    "noInstructors": "Personne pour le moment : invitez votre premier moniteur ci-dessus.",
    "instructorClosed": "Compte fermé",
    "instructorActive": "{count} cours donnés",
    "instructorActive_one": "{count} cours donné",
    "instructorInactive": "Non publié",
    "remove": "Retirer",
    "removeTitle": "Retirer de l'école ?",
    "removeBody": "{name} : le profil sera dépublié jusqu'à ce que nous l'examinions. L'argent déjà gagné reste à l'école.",
    "removedToast": "Retiré de l'équipe.",
    "adminsTitle": "Administrateurs",
    "adminsIntro": "Toutes les personnes qui peuvent gérer cette école.",
    "adminsIntroOwner": "Toutes les personnes qui peuvent gérer cette école. Les administrateurs peuvent tout faire, sauf ajouter ou retirer des administrateurs.",
    "adminInviteLabel": "Inviter un administrateur par e-mail",
    "adminInviteButton": "Inviter",
    "adminInviteSent": "Invitation envoyée.",
    "adminCreatorBadge": "Créateur",
    "adminPendingTitle": "Invitations en attente",
    "adminRemove": "Retirer",
    "adminRemoveTitle": "Retirer cet administrateur ?",
    "adminRemoveBody": "{name} perdra immédiatement l'accès à l'école. Le compte reste ; seul l'accès disparaît.",
    "adminRemovedToast": "Administrateur retiré.",
    "unassigned": {
      "title": "Cours sans moniteur attribué",
      "notOnSale": "Pas encore en vente.",
      "rateLabel": "Prix par heure ({currency})",
      "rateHint": "Au moins {min} {currency}.",
      "rateOptional": "Inutile : vos cours commencent à {hours} heures, qui ont déjà leur prix.",
      "lengthLabel": "Durée des cours",
      "lengthFrom": "De",
      "lengthTo": "à",
      "extraLabel": "Extra par élève supplémentaire ({currency})",
      "maxStudentsLabel": "Élèves par cours, au maximum",
      "autoAcceptLabel": "Confirmer immédiatement quand le client paie",
      "autoAcceptHint": "Désactivé, vous acceptez ou refusez chaque demande depuis vos réservations. Vous avez {hours} heures après le paiement (ou jusqu'au début du cours, s'il commence avant) ; sans réponse, elle expire et le client est remboursé intégralement.",
      "singleLevelLabel": "Un seul niveau et un seul âge par réservation",
      "singleLevelHint": "Activé, une réservation ne peut pas mélanger les niveaux (débutant, intermédiaire, avancé) ni adultes et enfants : le client fait une réservation par groupe, et chacune occupe sa propre place.",
      "rulesTitle": "Élèves et réservations",
      "rulesHint": "Combien d'élèves par cours, ce que vous enseignez, combien de temps à l'avance on réserve et comment les réservations sont confirmées.",
      "rulesStudents": "Jusqu'à {count} élèves",
      "rulesStudents_one": "Jusqu'à {count} élève",
      "rulesAuto": "Confirmées au paiement",
      "rulesManual": "Vous confirmez chaque réservation",
      "rulesOneLevel": "Un niveau et un âge par réservation",
      "places": "Chaque heure que vous publiez dans le calendrier a ses places : combien de cours vous pouvez vendre en même temps dans cette station. Tant qu'il en reste une, l'heure reste en vente.",
      "blocked": {
        "school_not_approved": "Votre école doit d'abord être approuvée et publiée.",
        "no_resorts": "Choisissez d'abord les stations où votre école travaille.",
        "noResortsLink": "Stations",
        "price_below_minimum": "Le prix horaire doit être d'au moins {min} {currency}.",
        "no_hourly_price": "Les cours de {from} h se facturent à l'heure : indiquez le prix horaire (au moins {min} {currency}) ou faites-les commencer à {hours} heures, qui ont déjà un prix.",
        "bad_extra_price": "L'extra par élève ne peut pas être négatif.",
        "bad_max_students": "Le nombre d'élèves par cours doit être compris entre 1 et 20.",
        "bad_formats": "Vérifiez les formules et les saisons ci-dessus : ce qui manque ou ne va pas est marqué en rouge.",
        "bad_duration_prices": "Vérifiez les prix pour plusieurs heures d'affilée.",
        "bad_notice": "Choisissez l'un des délais de préavis proposés.",
        "bad_disciplines": "Choisissez la discipline de ces cours : ski, snowboard ou les deux.",
        "bad_lesson_length": "La durée minimale ne peut pas dépasser la durée maximale.",
        "bad_season_prices": "Vérifiez les prix par saison.",
        "bad_included_students": "Le nombre d'élèves compris dans le prix doit aller de 1 à 20."
      }
    },
    "formats": {
      "formatsTitle": "Formules",
      "formatsHint": "Jusqu'à {max}, qui commencent et finissent au quart d'heure, entre {start} et {end}.",
      "copyFromSchoolNone": "L'école n'a pas encore de formules pour ses cours sans moniteur attribué : vous pouvez les créer ici directement.",
      "followSchool": "Utiliser les formules de l'école",
      "followSchoolHint": "Les formules, saisons et prix de vos cours sans moniteur attribué : quand vous modifiez les vôtres, celles de ce moniteur changent aussi. Désactivez-le pour lui en donner des propres.",
      "followersNote": "Moniteurs qui vendent avec ces formules : {n}. En enregistrant, les leurs changent aussi.",
      "kindLabel": "Type",
      "kind": {
        "morning": "Matin",
        "afternoon": "Après-midi",
        "full_day": "Journée complète",
        "other": "Autre"
      },
      "startLabel": "De",
      "endLabel": "À",
      "addFormat": "Ajouter une formule",
      "removeFormat": "Supprimer la formule",
      "seasonsTitle": "Saisons et prix",
      "seasonsHint": "Chaque saison a ses dates et un prix par formule, par cours pour tout le groupe. Laissez un prix vide et cette formule n'est pas vendue pendant cette saison ; en dehors de toute saison, rien n'est vendu.",
      "extraLabel": "Supplément par élève en plus, par cours ({currency})",
      "extraHint": "Ce qu'ajoute chaque élève au-delà du premier, pour toutes les saisons. Vide ou 0 : le prix est pour tout le groupe.",
      "seasonName": "Nom (vous seul le voyez)",
      "seasonNamePlaceholder": "Basse saison",
      "rangeFrom": "Du",
      "rangeTo": "Au (inclus)",
      "addRange": "Ajouter des dates",
      "removeRange": "Supprimer ces dates",
      "addSeason": "Ajouter une saison",
      "removeSeason": "Supprimer la saison",
      "placesNote": "Chaque formule ouverte a ses places : combien de cours de cette formule vous pouvez vendre en même temps. Elle se vend un jour donné si sa saison lui donne un prix et qu'une place reste libre.",
      "blocked": {
        "no_formats": "Ajoutez au moins une formule.",
        "too_many_formats": "{max} formules au maximum.",
        "bad_format_times": "Chaque formule doit commencer avant de finir, au quart d'heure, entre {start} et {end}.",
        "duplicate_format": "Deux formules ont le même horaire.",
        "no_seasons": "Ajoutez au moins une saison avec ses dates et ses prix.",
        "too_many_seasons": "{max} saisons au maximum.",
        "bad_season_dates": "Chaque saison a besoin d'au moins une période, dont le début ne dépasse pas la fin.",
        "bad_season_name": "Le nom d'une saison compte {max} caractères au maximum.",
        "seasons_overlap": "Deux périodes se chevauchent : un jour ne peut appartenir qu'à une seule saison.",
        "season_without_prices": "Chaque saison a besoin du prix d'au moins une formule.",
        "price_below_minimum": "Chaque prix doit être d'au moins {min} {currency} par heure de la formule.",
        "bad_pack_days": "Chaque durée va de {days} à {max} jours, sans doublon, et {count} au maximum.",
        "bad_min_days": "Le minimum d'une saison va de 1 à {max} jours.",
        "pack_price_below_minimum": "Chaque prix de pack doit être d'au moins {min} {currency} par heure de la formule et par jour."
      },
      "packsTitle": "Plusieurs jours d'affilée",
      "packsHint": "Pendant combien de jours d'affilée vous vendez aussi une formule. Chaque saison peut leur donner un prix pour tout le groupe (vide = chaque jour à son prix) et un minimum de jours.",
      "noPacks": "Aucun : chaque jour se vend à l'unité",
      "packDaysLabel": "Jours d'affilée",
      "addPackDays": "Ajouter",
      "addPackDaysN": "Ajouter {days} jours",
      "removePackDays": "Retirer {days} jours",
      "packDaysTaken": "Vous vendez déjà {days} jours d'affilée. Choisissez un autre nombre.",
      "packDaysRange": "Entre {min} et {max} jours.",
      "packDaysFull": "{max} options au maximum. Retirez-en une pour en ajouter une autre.",
      "minDays": "Minimum de jours d'affilée cette saison",
      "packPriceLabel": "{format} · {days} jours",
      "minDaysFormat": "{format} : minimum de jours d'affilée"
    },
    "unclaimed": {
      "cardTitle": "Ajouter un moniteur sans e-mail",
      "cardIntro": "Pour qui n'a pas encore de compte : vous rédigez son profil et il est en ligne aussitôt. Vous en répondez — demandes, calendrier et messagerie — jusqu'à ce qu'il soit réclamé avec la propre adresse e-mail de la personne.",
      "addTitle": "Ajouter un moniteur sans e-mail",
      "addIntro": "Le profil est publié au nom de votre école et vous en répondez jusqu'à ce que la personne le réclame avec sa propre adresse e-mail. Nous lui demanderons alors sa date de naissance et d'accepter les conditions.",
      "addButton": "Ajouter le moniteur",
      "editTitle": "Profil de {name}",
      "editProfile": "Modifier le profil",
      "createdToast": "Moniteur ajouté. Ajoutez maintenant sa photo.",
      "nowAddPhoto": "Profil créé. Ajoutez sa photo pour que les clients mettent un visage sur le nom : c'est ce qui apporte le plus de réservations.",
      "photoTitle": "Photo",
      "photoAfterSave": "Vous pourrez ajouter sa photo dès que vous aurez enregistré le profil.",
      "photosHint": "Jusqu'à trois photos en train d'enseigner. Facultatives.",
      "bioLabel": "Présentation",
      "bioPlaceholder": "Son parcours, sa façon d'enseigner, avec qui le courant passe le mieux…",
      "bioHint": "Rédigez-la dans n'importe quelle langue : nous la traduisons automatiquement dans les autres.",
      "resortsLabel": "Stations d'enseignement",
      "resortsHint": "Parmi celles de votre pays. Vous pouvez les modifier à tout moment.",
      "languagesLabel": "Langues d'enseignement",
      "yearsLabel": "Années d'expérience",
      "licenceRequired": "Ici, son numéro de licence ({credential}) est obligatoire pour publier le profil.",
      "licenceOptional": "Facultatif, mais cela rassure les clients.",
      "offPisteNeedsTitle": "Dans les pays choisis ({countries}), « Hors-piste », « Freeride » et « Big mountain » exigent un diplôme personnel du moniteur : indiquez-le dans la qualification pour pouvoir les cocher.",
      "activeLabel": "Publié",
      "activeHint": "Désactivez-le pour mettre le profil en pause sans le supprimer.",
      "consent": "Je confirme que cette personne a accepté que mon école publie son profil sur Alpine Pal et qu'elle détient le diplôme exigé pour enseigner dans ces stations.",
      "consentAdmin": "Je confirme que l'école m'a assuré que cette personne a accepté qu'elle publie son profil sur Alpine Pal et qu'elle détient le diplôme exigé pour enseigner dans ces stations.",
      "missingConsent": "Confirmez qu'elle a accepté",
      "badge": "Sans compte",
      "badgeHint": "Ajouté par votre école. Vous répondez de ce profil jusqu'à ce qu'il soit réclamé.",
      "managedLocked": "Votre école le gère jusqu'à ce que le profil soit réclamé.",
      "linkButton": "Envoyer un lien pour le réclamer",
      "linkTitle": "Permettre à {name} de réclamer son profil",
      "linkIntro": "Nous lui enverrons un lien par e-mail. En l'ouvrant, la personne se connecte ou crée son compte avec cette même adresse et le profil devient le sien, avis compris. Elle reste dans votre école, à vos tarifs, et vous continuez à gérer son calendrier jusqu'à ce que vous le lui confiiez.",
      "linkSend": "Envoyer le lien",
      "linkSentToast": "Lien envoyé",
      "linkPending": "Lien envoyé à {email} · expire le {date}",
      "linkExpired": "Le lien envoyé à {email} a expiré le {date}",
      "removeBody": "Le profil de {name} sera fermé : il disparaît du site et son lien cesse de fonctionner. Ses cours passés restent dans vos listes. Impossible tant qu'il reste des cours à venir.",
      "credentialTitle": "Diplôme",
      "missingName": "Il manque le prénom et le nom",
      "missingLicence": "Il manque le numéro de licence",
      "missingOffPisteTitle": "Le hors-piste exige son diplôme",
      "missingPrice": "Indiquez un tarif au-dessus du minimum"
    },
    "lessonsHint": "Cours privés et collectifs : comment ils se vendent, à quel prix et quand, ceux de l'école et ceux de votre équipe.",
    "cancellationHelp": "Elle s'applique à tous les cours que vend votre école : les cours particuliers et collectifs de vos moniteurs et ceux sans moniteur attribué. Une fois un cours confirmé, le client peut encore l'annuler avec remboursement intégral jusqu'à ce délai avant le début ; ensuite, aucun remboursement. Le client la voit sur les profils et avant de payer. Les réservations déjà faites gardent la politique sous laquelle elles ont été faites.",
    "lueira": {
      "statusActive": "Connectée",
      "statusBroken": "Déconnectée",
      "statusReview": "En cours de vérification",
      "reviewBody": "Nous avons bien reçu votre clé. Nous vérifions la connexion et vous préviendrons dès que tout sera prêt. D'ici là, rien n'est envoyé ni modifié dans votre Lueira.",
      "reviewAdminBody": "L'école voit seulement que la connexion est en cours de vérification. D'ici là, rien n'est envoyé à son Lueira et ce qu'elle y vend n'occupe aucune place ici. L'approbation lance la synchronisation et l'école en est avertie.",
      "approve": "Approuver la connexion",
      "approveTitle": "Approuver la connexion Lueira ?",
      "approveBody": "Les ventes de son Lueira commenceront à occuper des places ici et les cours payés ici entreront dans son Lueira. L'école recevra un e-mail.",
      "approvedToast": "Connexion approuvée",
      "intro": "Si vous gérez votre école avec Lueira, connectez-la : les cours particuliers vendus dans Lueira prennent leur place parmi vos cours sans moniteur attribué, les cours collectifs que vous connectez déduisent leurs places, et chaque cours payé sur Alpine Pal arrive dans votre Lueira, déjà payé.",
      "ownerOnly": "Seul le titulaire de l'école peut connecter Lueira et modifier ses réglages.",
      "keyLabel": "Clé API Lueira",
      "keyHint": "Créez-la dans Lueira, dans Paramètres > Développeurs > API Keys, avec lecture et écriture sur les commandes, et lecture sur les produits, les moniteurs et l'inventaire.",
      "keyReviewHint": "Une fois envoyée, nous vérifierons la connexion et vous préviendrons.",
      "connect": "Envoyer la clé",
      "connectedToast": "Clé reçue",
      "brokenBody": "Lueira n'accepte plus la clé enregistrée : rien n'est envoyé ni reçu. Collez une nouvelle clé pour la reconnecter.",
      "failure": {
        "invalid": "Lueira ne reconnaît pas cette clé. Vérifiez que vous l'avez copiée en entier et qu'elle n'est pas révoquée.",
        "scope": "La clé n'a pas les droits nécessaires. Donnez-lui lecture et écriture sur les commandes, et lecture sur les produits.",
        "unreachable": "Impossible de joindre Lueira. Réessayez dans un moment.",
        "broken": "Lueira n'accepte plus la clé. Collez-en une nouvelle.",
        "quota": "Les requêtes de ce mois de votre forfait Lueira sont épuisées.",
        "unavailable": "La connexion avec Lueira n'est pas disponible pour le moment."
      },
      "mappingTitle": "Ce que sont vos cours dans Lueira",
      "mappingDone": "Configuré : les cours payés ici sont créés ainsi dans votre Lueira.",
      "mappingMissing": "Choisissez au moins la station, un produit, les trois niveaux et le point de rendez-vous. D'ici là, rien n'est créé dans Lueira.",
      "readCatalog": "Lire depuis Lueira",
      "readCatalogHint": "Récupère vos centres, produits, niveaux, points de rendez-vous et partenaires. Utilise environ cinq requêtes de votre forfait.",
      "choose": "Choisir…",
      "none": "Aucun",
      "chosen": "Celui choisi avant",
      "resort": "Station",
      "location": "Centre",
      "productSki": "Produit cours particulier de ski",
      "productSnowboard": "Produit cours particulier de snowboard",
      "level": {
        "beginner": "Niveau débutants",
        "intermediate": "Niveau intermédiaires",
        "advanced": "Niveau avancés"
      },
      "meetingPoint": "Point de rendez-vous",
      "partner": "Alpine Pal comme partenaire (facultatif)",
      "groupsTitle": "Cours collectifs",
      "groupsHint": "Choisissez quels produits Lueira correspondent à chaque cours collectif : les places vendues dans Lueira sont déduites ici, et celles vendues ici arrivent dans votre Lueira. Si vous avez un produit par niveau, choisissez-les tous. Un cours sans produit reste non connecté.",
      "groupsPick": "Choisir des produits Lueira",
      "groupsSearch": "Rechercher un produit",
      "groupsEmpty": "Cliquez sur « {button} » pour voir vos produits.",
      "plan": "Votre forfait Lueira",
      "planUnknown": "Je ne sais pas",
      "planQuota": "{n} requêtes par mois",
      "savedToast": "Enregistré",
      "webhookTitle": "Avis de Lueira",
      "webhookReady": "Fonctionne",
      "webhookIntro": "Pour que ce que vous vendez dans Lueira prenne sa place ici, créez un webhook dans Lueira, dans Paramètres > Développeurs > Webhooks, avec cette adresse et les événements de commande (order.created, order.updated et order.cancelled). Collez ensuite ici le secret de signature que Lueira vous affiche.",
      "webhookSecret": "Secret de signature du webhook",
      "statsPrivate": "Cours particuliers",
      "statsGroup": "Cours collectifs",
      "statsSent": "Envoyés à Lueira",
      "statsReceived": "Reçus de Lueira",
      "statsReceivedSeats": "Places reçues de Lueira",
      "statsRefused": "Avec un problème",
      "reconciledAt": "Ventes vérifiées",
      "mappingGroupsOnly": "Configuré pour les cours collectifs. Pour envoyer aussi les cours particuliers, choisissez un produit, les trois niveaux et le point de rendez-vous.",
      "bookingSent": "Dans Lueira",
      "bookingPending": "En attente d'envoi à Lueira",
      "bookingRefused": "Non ajouté à Lueira",
      "requests": "Requêtes ce mois-ci",
      "requestsOf": "{used} sur {quota}",
      "syncedAt": "Dernière synchronisation",
      "never": "Pas encore",
      "lastError": "Dernier problème ({date}) :",
      "syncNow": "Synchroniser",
      "syncToast": "Synchronisation avec Lueira",
      "disconnect": "Déconnecter",
      "disconnectTitle": "Déconnecter Lueira ?",
      "disconnectBody": "Les cours payés ici n'arriveront plus dans votre Lueira, et ce que vous y vendez ne prendra plus sa place ici. Ce qui est déjà dans Lueira reste tel quel.",
      "disconnectedToast": "Lueira déconnectée",
      "clash": "Lueira a vendu une place ({when}) déjà vendue sur Alpine Pal : vous avez deux cours pour une place.",
      "noSeat": "Vous n'avez pas encore de cours sans moniteur attribué : donnez-leur un prix et des horaires dans Cours privés pour que ce que vous vendez dans Lueira prenne sa place ici.",
      "webhookLast": "Dernier avis reçu de Lueira : {date}.",
      "webhookWaiting": "Aucun avis de Lueira n'est encore arrivé. Pour vérifier, envoyez un événement de test depuis ce webhook dans Lueira et revenez sur cette page.",
      "webhookBadSignature": "Des avis de Lueira arrivent, mais leur signature ne correspond pas au secret enregistré. Copiez à nouveau le secret de ce webhook dans Lueira et collez-le ici.",
      "exportButton": "Télécharger les données Lueira",
      "exportHint": "Réservé aux administrateurs d'Alpine Pal. Lit les calendriers, les prix, les stages et la location sans rien écrire, et utilise quelques dizaines de requêtes du forfait de l'école.",
      "exportDone": "Données téléchargées ({calls} requêtes).",
      "unsure": "Nous ne savons pas si la réservation {reference} est arrivée dans Lueira. Cherchez-la là-bas : si elle n'y est pas, cliquez sur « Synchroniser »."
    },
    "connections": {
      "intro": "Connectez Alpine Pal à ce que votre école utilise déjà : vos cours apparaissent dans votre Google Agenda et, si vous travaillez avec Lueira, tout reste au même endroit.",
      "developersTitle": "Autre logiciel de réservation",
      "developersIntro": "Si votre école travaille avec un autre logiciel ou avec le sien, elle se connecte par l'API d'Alpine Pal. Cette partie est pour la personne qui le programme."
    }
  },
  "credits": {
    "title": "Crédits photo",
    "intro": "Les photographies d'Alpine Pal proviennent de Wikimedia Commons, sous des licences qui autorisent la réutilisation commerciale à condition de citer l'auteur et la licence. Cette page les cite.",
    "resorts": "Photos des stations",
    "photoBy": "Photo :"
  },
  "empty": {
    "noPending": "Aucune réservation en attente.",
    "noReviews": "Pas encore d'avis."
  },
  "error": {
    "generic": "Une erreur s'est produite.",
    "paymentsMisconfigured": "Les paiements ne sont pas entièrement configurés. Écrivez à info@alpinepal.com.",
    "paymentFailed": "Le paiement n'a pas pu aboutir. Réessayez.",
    "bookingLoadFailed": "La réservation n'a pas pu être chargée."
  },
  "specialty": {
    "beginners": "Débutants",
    "intermediate_technique": "Technique intermédiaire",
    "advanced_technique": "Technique avancée",
    "children": "Enfants",
    "families": "Familles",
    "freeride": "Freeride",
    "snowpark": "Snowpark",
    "racing_preparation": "Préparation à la compétition",
    "adaptive_skiing": "Handiski",
    "group_lessons": "Cours collectifs",
    "adults": "Adultes",
    "carving": "Carving",
    "off_piste": "Hors-piste",
    "moguls": "Bosses",
    "big_mountain": "Big mountain",
    "nervous_skiers": "Skieurs anxieux",
    "powder": "Poudreuse",
    "freestyle": "Freestyle"
  },
  "level": {
    "beginner": "Débutant",
    "intermediate": "Intermédiaire",
    "advanced": "Avancé",
    "beginnerPiste": "Débutant · Pistes vertes/bleues",
    "intermediatePiste": "Intermédiaire · Pistes bleues/rouges",
    "advancedPiste": "Avancé · Pistes rouges/noires",
    "all": "Tous niveaux"
  },
  "audience": {
    "all": "Tous",
    "children": "Enfants",
    "adults": "Adultes",
    "agesRange": "{min}–{max} ans",
    "agesFrom": "dès {min} ans",
    "agesUpTo": "jusqu'à {max} ans"
  },
  "age": {
    "adult": "Adulte",
    "child": "Enfant"
  },
  "cookies": {
    "title": "Politique de cookies",
    "intro": "Alpine Pal utilise des cookies pour deux choses : faire fonctionner le site (rester connecté, encaisser les paiements, retenir votre choix ici) et, si vous l'autorisez, mesurer l'usage du site et l'efficacité de nos publicités, pour améliorer les deux. Nous ne vendons jamais vos données.",
    "necessaryTitle": "Strictement nécessaires",
    "necessaryBody": "Ils sont déposés quel que soit votre choix : sans eux, impossible de se connecter ou de payer. Ils ne servent pas au suivi.",
    "analyticsTitle": "Statistiques",
    "analyticsBody": "Google Analytics compte les visites et les pages ; Microsoft Clarity enregistre des sessions anonymisées et des cartes de chaleur pour nous montrer où les gens bloquent. Ils ne mesurent que si vous acceptez.",
    "advertisingTitle": "Publicité",
    "advertisingBody": "Google Ads nous indique quelle publicité vous a amené ici et si une réservation a suivi, et peut vous montrer à nouveau nos publicités ailleurs. Le tag se charge pour tout le monde, mais il ne stocke rien sur votre appareil et ne personnalise rien tant que vous n'acceptez pas.",
    "colName": "Cookie",
    "colProvider": "Déposé par",
    "colPurpose": "À quoi il sert",
    "colDuration": "Durée",
    "purpose": {
      "consent": "Retient votre choix sur ce bandeau, pour ne pas vous le redemander.",
      "session": "Vous garde connecté et relie le navigateur à votre compte.",
      "payments": "Stripe l'utilise pour traiter le paiement et détecter la fraude. Déposé uniquement quand vous arrivez au paiement.",
      "clarity": "Identifie la session de navigation pour que l'enregistrement reste cohérent d'une page à l'autre.",
      "clarityId": "Identifiant anonyme que Microsoft utilise pour distinguer les visites récurrentes.",
      "ga": "Distingue les visites et les sessions pour que les rapports de trafic soient cohérents.",
      "gclAu": "Relie votre réservation à la publicité sur laquelle vous avez cliqué, pour savoir lesquelles valent la peine d'être payées.",
      "googleAds": "Déposé par Google sur ses propres domaines pour mesurer les publicités et, si vous l'autorisez, les personnaliser.",
      "salesLink": "Si vous arrivez par le lien d'un de nos commerciaux, il retient lequel, pour savoir à qui revient votre inscription si vous vous inscrivez comme école ou comme moniteur. Il n'est enregistré que si vous acceptez la publicité ; sinon rien n'est enregistré et cela ne compte que si vous vous inscrivez lors de la même visite."
    },
    "yourChoiceTitle": "Votre choix",
    "currentChoice": "Actuellement",
    "stateUndecided": "pas encore décidé",
    "stateAccepted": "statistiques et publicité acceptées",
    "stateRejected": "statistiques et publicité refusées",
    "askAgain": "Me redemander",
    "withdrawNote": "Vous pouvez changer d'avis quand vous voulez. Le retrait prend effet au prochain chargement de page ; les cookies déjà déposés expirent d'eux-mêmes ou peuvent être supprimés depuis votre navigateur.",
    "browserTitle": "Depuis votre navigateur",
    "browserBody": "Tout navigateur permet de bloquer ou de supprimer les cookies depuis ses paramètres de confidentialité. Bloquer les cookies strictement nécessaires empêchera la connexion et les paiements de fonctionner.",
    "bannerTitle": "Les cookies sur Alpine Pal",
    "bannerBody": "Nous utilisons les cookies dont le site a besoin pour fonctionner. Avec votre accord, nous aimerions aussi mesurer son usage et l'efficacité de nos publicités, avec Microsoft Clarity, Google Analytics et Google Ads.",
    "acceptAll": "Accepter",
    "rejectAll": "Essentiels uniquement",
    "readPolicy": "Voir le détail"
  },
  "instructorProfile": {
    "priceSetBySchool": "Vos tarifs sont fixés par votre école.",
    "managedBySchool": "Votre école gère votre calendrier et vos paramètres de réservation.",
    "resortsHint": "Ajoutez ou retirez les stations où vous enseignez. Les nouvelles stations démarrent avec un calendrier vide : ouvrez vos heures depuis Cours privés. En retirer une conserve les heures définies pour les autres.",
    "resortsEmpty": "Il vous faut au moins une station pour recevoir des réservations.",
    "credentialFirst": "Ajoutez-le dans Diplômes, plus haut, et enregistrez ; vous pourrez ensuite ajouter ces stations.",
    "reverifyOnSave": "Vos diplômes sont vérifiés. Une fois cette modification enregistrée, ils figureront comme déclarés jusqu'à ce que nous les examinions."
  },
  "lesson": {
    "askTitle": "Le cours a-t-il eu lieu ?",
    "askBody": "Confirmez-le et nous débloquons la part du moniteur. Si quelque chose s'est mal passé, dites-le-nous plutôt et nous retiendrons le paiement le temps d'examiner la situation.",
    "confirm": "Oui, confirmer le cours",
    "report": "Il y a eu un problème",
    "reasonPlaceholder": "Dites-nous ce qui s'est passé : le moniteur n'est pas venu, le cours a été bien plus court que prévu…",
    "sendReport": "Envoyer le signalement",
    "confirmedToast": "Merci. Le moniteur a reçu sa part.",
    "confirmTitle": "Confirmer que le cours a eu lieu ?",
    "confirmBody": "Cela débloque le paiement du moniteur. Ne confirmez que si le cours a réellement eu lieu : cette action est irréversible.",
    "reportedToast": "Signalé. Nous examinons la situation et revenons vers vous.",
    "reportTooLate": "Ce paiement a déjà été retiré : il ne peut plus être retenu. Écrivez-nous et nous réglerons cela.",
    "disputeOpenTitle": "Nous examinons la situation",
    "disputeOpenBody": "Le paiement au moniteur est bloqué jusqu'à ce que nous ayons tranché. Nous vous tiendrons au courant.",
    "completedNote": "Ce cours est confirmé et réglé.",
    "noShowNote": "Le moniteur a indiqué que vous ne vous êtes pas présenté à ce cours.",
    "noShowReport": "Ce n'est pas ce qui s'est passé ? Signaler un problème",
    "reportLate": "Un souci ? Signaler un problème",
    "pendingBadge": "En attente de votre confirmation"
  },
  "lessonFormats": {
    "name": {
      "morning": "Cours du matin",
      "afternoon": "Cours de l'après-midi",
      "full_day": "Journée complète",
      "other": "Cours"
    },
    "formatLabel": "Formule",
    "perLesson": "par cours",
    "fromPerLesson": "Dès {price} par cours",
    "wholeGroup": "Pour tout le groupe, jusqu'à {count} élèves",
    "wholeGroup_one": "Pour tout le groupe, jusqu'à {count} élève",
    "firstStudent": "Pour 1 élève",
    "extraPerStudent": "+{price} par élève en plus, par cours",
    "markdownIntro": "Cours particuliers en formules fixes, au prix du cours pour tout le groupe :"
  },
  "earnings": {
    "available": "Disponible",
    "pending": "En attente de confirmation",
    "onHold": "Bloqué",
    "paid": "Retiré",
    "withdrawTitle": "Retrait vers votre banque",
    "withdrawBody": "Les paiements ne sont pas configurés dans cet environnement. Votre solde est en sécurité et vous pourrez le retirer une fois qu'ils seront actifs.",
    "payoutCountry": {
      "title": "Dans quel pays recevez-vous vos versements ?",
      "body": "Le pays où vous vivez et payez vos impôts, qui n'est pas forcément celui où vous enseignez. Stripe vous demandera une adresse et un compte bancaire dans ce pays, et cela ne pourra plus être changé une fois votre compte de versement créé.",
      "manualBody": "Le pays où vous vivez et payez vos impôts, qui n'est pas forcément celui où vous enseignez. Stripe ne peut pas encore envoyer d'argent dans votre pays : nous payons donc vos retraits à la main.",
      "schoolTitle": "Depuis quel pays l'école est-elle payée ?",
      "schoolBody": "Le pays de l'entreprise et de son compte bancaire, qui n'est pas forcément celui où elle enseigne. Stripe demandera des informations et un compte bancaire de ce pays, et il ne pourra plus être modifié une fois le compte de paiement créé.",
      "schoolManualBody": "Le pays de l'entreprise et de son compte bancaire, qui n'est pas forcément celui où elle enseigne. Stripe ne peut pas encore envoyer d'argent dans votre pays : nous payons donc vos retraits à la main.",
      "placeholder": "Choisissez votre pays",
      "default": "Si vous ne choisissez rien, le pays retenu sera : {country}.",
      "saved": "Pays de versement enregistré.",
      "conversion": "Vos cours sont facturés en {from}, et les comptes bancaires de ce pays sont généralement en {to}. Donnez à Stripe un compte en {from} si vous le pouvez : vous recevrez exactement ce que vous voyez ici. Si vous en donnez un en {to}, Stripe convertit à l'arrivée et le montant sera différent."
    },
    "connect": {
      "setupTitle": "Configurez vos versements",
      "setupBody": "Pour retirer votre solde, il vous faut un compte de versement chez Stripe. Cela prend quelques minutes : identité et compte bancaire. Stripe conserve vos données ; nous ne les voyons jamais.",
      "setupCta": "Configurer les versements",
      "continueCta": "Reprendre la configuration",
      "reviewBadge": "En cours d'examen par Stripe",
      "readyBadge": "Versements actifs"
    },
    "withdraw": {
      "button": "Retirer {amount}",
      "minimumNote": "Retrait minimum : {amount}",
      "confirmTitle": "Retirer votre solde ?",
      "confirmBody": "Le montant de {amount} sera viré sur votre compte bancaire via Stripe. Cela prend généralement quelques jours et ne peut pas être annulé une fois lancé.",
      "confirmCta": "Oui, retirer",
      "successToast": "Retrait en route. Stripe le déposera sur votre compte d'ici quelques jours.",
      "waitingToast": "Retrait en route. L'argent des derniers cours est encore en cours d'encaissement : nous l'enverrons dès son arrivée et vous préviendrons par e-mail.",
      "waitingTitle": "Votre retrait de {amount} est en route",
      "waitingBody": "L'argent des derniers cours est encore en cours d'encaissement chez Stripe, ce qui prend généralement quelques jours. Nous l'enverrons nous-mêmes dès qu'il sera disponible, sans que vous ayez quoi que ce soit à faire, et vous préviendrons par e-mail à son départ.",
      "error": {
        "not_enabled": "Terminez la configuration de vos versements avant de retirer.",
        "no_funds": "Vous n'avez aucun solde disponible pour le moment.",
        "below_minimum": "Votre solde disponible est inférieur au minimum de retrait.",
        "in_progress": "Un retrait est déjà en cours. Attendez qu'il se termine.",
        "transfer_failed": "Le virement a échoué. Votre solde est de nouveau disponible ; réessayez.",
        "no_fiscal_details": "Ajoutez vos données fiscales avant de retirer."
      },
      "confirmManual": "Nous enverrons {amount} via le mode de versement que vous avez enregistré. Nous l'examinons et l'envoyons à la main, ce qui prend un peu plus de temps qu'un virement automatique ; nous vous enverrons un e-mail dès que l'argent part.",
      "successManual": "Retrait demandé. Nous enverrons l'argent et vous préviendrons par e-mail."
    },
    "withdrawals": {
      "title": "Retraits",
      "invoiceLink": "Facture",
      "status": {
        "processing": "En cours",
        "paid": "Effectué",
        "failed": "Échoué",
        "awaiting_funds": "En attente des fonds",
        "awaiting_payout": "En attente d'envoi"
      }
    },
    "movements": "Mouvements",
    "colRef": "Réf.",
    "colDate": "Date",
    "colInstructor": "Moniteur",
    "colResort": "Station",
    "colAmount": "Votre part",
    "colStatus": "Statut",
    "empty": "Rien ici pour le moment. Quand un cours est confirmé, vos {percent} % apparaissent dans cette liste.",
    "status": {
      "pending_completion": "En attente de confirmation",
      "pending_review_period": "En examen",
      "available": "Disponible",
      "processing": "En cours de paiement",
      "paid": "Retiré",
      "failed": "Remboursé au client",
      "on_hold": "Bloqué"
    },
    "manual": {
      "setupTitle": "Dites-nous comment vous payer",
      "setupBody": "Stripe ne couvre pas encore votre pays : nous payons donc vos retraits nous-mêmes par PayPal, Payoneer ou virement bancaire. Vous pouvez continuer à enseigner et à accumuler un solde en attendant ; ce n'est nécessaire que pour le retirer.",
      "setupCta": "Configurer les versements",
      "readyBadge": "Vos versements iront sur {email}",
      "readyBadgeBank": "Vos versements iront par virement sur l'IBAN se terminant par {last4}"
    },
    "commissionNote": "Depuis le {date}, Alpine Pal retient {percent} % de chaque nouveau cours. Les cours vendus avant gardent leur commission.",
    "referralNote": "Grâce au programme de parrainage, vos prochaines réservations paient {percent} % de commission au lieu de {standard} % : il vous reste {remaining}, jusqu'au {date}."
  },
  "fiscal": {
    "title": "Données fiscales",
    "hint": "Nous utilisons ces données pour émettre la facture de notre commission. Vous en avez besoin pour retirer votre solde. Elles n'apparaissent pas sur votre profil public.",
    "legalName": "Nom complet ou raison sociale",
    "taxId": "Numéro fiscal ou SIRET",
    "vatId": "Numéro de TVA (facultatif)",
    "vatIdHint": "Si vous en avez un, avec le préfixe de votre pays, comme FR12345678901.",
    "address": "Adresse fiscale",
    "postalCode": "Code postal",
    "city": "Ville",
    "countryCode": "Pays",
    "countryPlaceholder": "Choisissez le pays",
    "saved": "Données fiscales enregistrées.",
    "missingTitle": "Ajoutez vos données fiscales",
    "missingBody": "Nous en avons besoin pour émettre la facture de notre commission. Sans elles, vous ne pouvez pas retirer votre solde.",
    "missingCta": "Ajouter les données fiscales",
    "invoicesTitle": "Factures d'Alpine Pal",
    "invoicesEmpty": "Vous n'avez pas encore de factures d'Alpine Pal.",
    "error": {
      "legalName": "Indiquez votre nom complet ou celui de votre entreprise.",
      "taxId": "Indiquez votre numéro fiscal complet.",
      "taxIdSpain": "Ce NIF n'est pas valide : vérifiez les chiffres et la lettre.",
      "vatId": "Ce numéro ne semble pas correct : il doit commencer par le préfixe de votre pays, comme FR12345678901.",
      "address": "Indiquez la rue et le numéro.",
      "postalCode": "Indiquez le code postal.",
      "city": "Indiquez la ville.",
      "countryCode": "Choisissez le pays."
    }
  },
  "account": {
    "menu": "Votre compte",
    "security": "Sécurité et connexion",
    "signOut": "Se déconnecter",
    "closeTitle": "Fermer votre compte",
    "closeBody": "Cette action est irréversible. Votre profil, l'historique de vos conversations et vos notifications sont supprimés, et votre session est fermée.",
    "closeKept": "Nous conservons ce que la loi nous oblige à conserver : vos réservations et les justificatifs de paiement à des fins fiscales, ainsi que les avis que vous avez rédigés, qui restent publiés avec votre prénom, comme l'expliquent les conditions. Si vous êtes moniteur, vous devez d'abord avoir retiré tout votre argent. Vous pourrez vous réinscrire plus tard avec la même adresse e-mail.",
    "closeAction": "Fermer mon compte",
    "confirmTitle": "Fermer définitivement votre compte ?",
    "confirmBody": "Tout est supprimé, sauf les données mentionnées ci-dessus, et votre session sera fermée. Il n'y a pas de retour en arrière.",
    "closed": "Votre compte a été fermé.",
    "blockedBookings": "Il vous reste {count} cours à venir. Laissez-les avoir lieu ou annulez-les d'abord.",
    "blockedBookings_one": "Il vous reste {count} cours à venir. Laissez-le avoir lieu ou annulez-le d'abord.",
    "clerkFailed": "Vos données ont été supprimées, mais votre identifiant de connexion n'a pas pu l'être. Écrivez-nous pour que nous terminions.",
    "blockedBalance": "Il vous reste {amount} à percevoir. Retirez ce montant (ou attendez qu'il soit débloqué si un cours vient de se terminer), puis fermez le compte.",
    "blockedRefund": "Nous vous remboursons {amount} et l'argent n'est pas encore arrivé. Attendez la fin du remboursement avant de fermer, sinon nous n'aurons nulle part où l'envoyer.",
    "blockedSchool": "Ce compte gère une école. Écrivez-nous et nous fermerons d'abord l'école avec vous."
  },
  "serverError": {
    "salesCodeTaken": "Un autre commercial a déjà ce code",
    "availabilityManagedBySchool": "Votre école gère désormais votre calendrier. Rechargez la page pour le voir.",
    "settingsManagedBySchool": "Votre école gère vos paramètres de réservation. Rechargez la page pour les voir.",
    "bookingManagedBySchool": "Votre école répond aux demandes de réservation pour vous. Rechargez la page.",
    "instructorSelfManaged": "Ce moniteur répond lui-même à ses demandes de réservation.",
    "externalBlocksReadOnly": "Ces blocs viennent du système de réservation de votre école et ne peuvent pas être modifiés ici.",
    "availabilityChanged": "Le calendrier a été modifié par quelqu'un d'autre entre-temps. Rechargez et réessayez.",
    "tooManyApiKeys": "Vous avez déjà {max} clés actives. Révoquez-en une pour en créer une autre.",
    "tooManyWebhooks": "Vous avez déjà {max} endpoints. Supprimez-en un pour en ajouter un autre.",
    "webhookUrl": "Cette URL n'est pas autorisée : elle doit être en https et pointer vers un serveur public.",
    "webhookNotFound": "Cet endpoint n'existe plus.",
    "webhookEvents": "Choisissez au moins un événement connu.",
    "slotUnavailable": "Ce créneau n'est plus ouvert. Le moniteur a peut-être modifié son calendrier depuis que vous avez chargé la page : rechargez-la et choisissez un autre créneau.",
    "alreadyBooked": "Quelqu'un a réservé ce créneau avant vous. Choisissez-en un autre.",
    "youAlreadyBooked": "Vous avez déjà un cours réservé à cette heure.",
    "inThePast": "Ce créneau est déjà passé. Choisissez-en un autre.",
    "tooSoon": "Ce moniteur demande plus de préavis. Choisissez un créneau plus tardif.",
    "tooFarAhead": "Cette date est trop lointaine pour être réservée dès maintenant.",
    "badDuration": "Cette durée sort de ce que propose ce moniteur.",
    "badStudents": "C'est plus d'élèves que ce moniteur n'en accepte.",
    "studentDetails": "Vérifiez le nom et l'âge de chaque élève.",
    "studentAge": "L'âge d'un élève ne correspond pas à ce cours.",
    "contactPhone": "Il nous faut un téléphone de contact.",
    "wrongResort": "Ce moniteur n'enseigne pas dans cette station.",
    "badBookingState": "Cette réservation a évolué depuis que vous avez ouvert la page. Rechargez-la pour voir où elle en est.",
    "cannotPay": "Cette réservation ne peut plus être payée.",
    "alreadyPaid": "Cette réservation a déjà été payée.",
    "paymentInProgress": "Votre paiement pour cette réservation est encore en cours de traitement. Nous vous préviendrons dès qu'il aboutira.",
    "slotGoneAfterHold": "Votre réservation a expiré avant la fin du paiement et cette heure n'est plus disponible. Recommencez une nouvelle réservation.",
    "lessonAlreadyStarted": "L'heure de ce cours est déjà passée et la réservation a expiré sans paiement. Recommencez une réservation avec un autre horaire.",
    "cancellationClosed": "L'annulation gratuite est close pour ce cours. Écrivez à votre moniteur dans la messagerie.",
    "proposedTimeTaken": "Ce créneau a été pris entre-temps. Demandez-en un autre dans la messagerie.",
    "slotNowConflicts": "Ce créneau entre maintenant en conflit avec une autre réservation. Proposez un nouvel horaire ou refusez-la.",
    "outsideAvailability": "Cet horaire est en dehors de vos disponibilités publiées. Ouvrez-le d'abord dans votre calendrier.",
    "lessonNotEnded": "Le cours n'est pas encore terminé.",
    "lessonAlreadyEnded": "Le cours a déjà eu lieu : il ne peut plus être annulé.",
    "lessonNotEndedChat": "Le cours n'est pas encore terminé. Parlez-en à votre moniteur dans la messagerie.",
    "cannotDispute": "Cette réservation ne peut pas faire l'objet d'une réclamation.",
    "disputeReasonRequired": "Dites-nous ce qui s'est mal passé.",
    "refundFailed": "Le remboursement n'a pas pu être traité. Nous avons été prévenus.",
    "disputeAlreadyResolved": "Cette réclamation a déjà été traitée. Rechargez la page pour voir comment.",
    "disputeAlreadyRefunded": "Cette réservation a déjà été remboursée : la réclamation ne peut se clore que par un remboursement.",
    "schoolStillOwed": "Cette école doit encore recevoir de l'argent : elle ne peut pas être fermée. Suspendez-la et fermez-la une fois qu'elle aura tout reçu.",
    "schoolLessonsAhead": "Cette école a encore des cours à venir : elle ne peut pas encore être fermée. Ils doivent d'abord avoir lieu ; fermez-la une fois qu'ils seront passés.",
    "onlyCompletedReviewable": "Seul un cours terminé peut être noté.",
    "alreadyReviewed": "Vous avez déjà noté ce cours.",
    "badRating": "Donnez une note entre 1 et 5.",
    "commentTooLong": "Ce commentaire est trop long.",
    "bioTooLong": "Cette biographie est trop longue. La limite est de 4000 caractères.",
    "emptyMessage": "Écrivez d'abord quelque chose.",
    "meetingPointTitle": "Donnez un nom au point de rendez-vous.",
    "noMeetingPoint": "Il n'y a aucun point de rendez-vous à confirmer.",
    "fileTooLarge": "Ce fichier est trop volumineux. La limite est de 8 Mo.",
    "imageTooLarge": "Cette image est trop volumineuse. La limite est de 5 Mo.",
    "imageType": "Seules les images JPEG, PNG ou WebP sont acceptées.",
    "fileType": "Seuls les fichiers PDF, JPEG, PNG ou WebP sont acceptés.",
    "fileCorrupt": "Ce fichier ne ressemble pas à un vrai document. Essayez de l'exporter à nouveau.",
    "imageCorrupt": "Cette image ne ressemble pas à une vraie photo. Essayez-en une autre.",
    "badPrice": "Indiquez un prix horaire supérieur à zéro.",
    "badExtraPrice": "Le prix par élève supplémentaire ne peut pas être négatif.",
    "badMaxStudents": "La taille du groupe doit être comprise entre 1 et 20.",
    "badNotice": "Choisissez l'un des délais de préavis proposés.",
    "durationOrder": "La durée minimale d'un cours ne peut pas dépasser la durée maximale.",
    "badLessonDuration": "Indiquez une durée de cours supérieure à zéro.",
    "badCertifications": "Quelque chose ne va pas dans ces diplômes. Vérifiez-les et enregistrez à nouveau.",
    "certNameRequired": "Donnez au diplôme un nom et un organisme émetteur.",
    "certExpiryRequired": "Donnez au diplôme une date d'expiration, ou cochez qu'il n'expire pas.",
    "licenceRequired": "Un numéro de licence est obligatoire pour enseigner dans les stations que vous avez choisies.",
    "titleRequired": "Pour enseigner dans les stations que vous avez choisies, envoyez votre diplôme ou indiquez son numéro.",
    "offPisteNeedsTitle": "Le hors-piste, le freeride et le big mountain exigent un diplôme personnel dans ces stations : ajoutez-le d'abord ou décochez-les.",
    "approveNeedsTitle": "Ce profil n'a pas le diplôme qu'exigent ses stations : demandez-le avant de l'approuver.",
    "pickResort": "Choisissez au moins une station.",
    "resortHasGroupClasses": "Cette station a des cours collectifs publiés : annulez-les ou déplacez-les avant de la retirer.",
    "pickLanguage": "Choisissez au moins une langue d'enseignement.",
    "badKind": "Ce type de profil n'est pas valide.",
    "notRejected": "Seule une candidature refusée peut être renvoyée pour examen.",
    "foreignDocument": "Ce document n'appartient pas à ce compte.",
    "badAvailability": "Quelque chose ne va pas dans ces blocs de disponibilité. Vérifiez-les et enregistrez à nouveau.",
    "availabilityTooSoon": "Certaines des heures que vous avez ouvertes commencent dans votre délai de préavis de {hours} heures : personne ne pourrait les réserver. Ouvrez des heures plus lointaines, ou réduisez votre délai de préavis dans la rubrique Cours privés.",
    "tooManyAvailabilityBlocks": "Votre calendrier compte plus de {max} blocs de disponibilité à partir d'aujourd'hui. Regroupez-en quelques-uns ou utilisez des blocs hebdomadaires, puis enregistrez à nouveau.",
    "chargebackOpen": "Cette réservation fait l'objet d'un litige bancaire ouvert : la banque a déjà repris l'argent. Il se réglera de lui-même quand Stripe tranchera ; pour l'accepter plus tôt, utilisez « Rembourser le client » dans Réclamations.",
    "startedRejectInstead": "Ce cours a déjà commencé, il ne peut donc plus être accepté. Refusez-le et le client sera remboursé.",
    "rateLimited": "Trop de tentatives d'affilée. Patientez un instant et réessayez.",
    "badYearsExperience": "Les années d'expérience doivent être comprises entre 0 et 80.",
    "tooManyResorts": "Vous pouvez choisir au maximum {max} stations.",
    "instructorNotBookable": "Ce moniteur n'accepte pas de réservations pour le moment.",
    "instructorUnavailable": "Ce moniteur n'est pas disponible pour le moment.",
    "schoolNameMismatch": "Le nom ne correspond pas : tapez-le exactement pour fermer l'école.",
    "onlyApprovedSchoolPublished": "Seule une école approuvée peut être publiée.",
    "signInRequired": "Connectez-vous pour continuer.",
    "notAuthorised": "Vous ne pouvez pas faire cela.",
    "instructorCannotRegisterSchool": "Ce compte a déjà un profil de moniteur : inscrivez l'école depuis son propre compte.",
    "countryNotServed": "Nous ne couvrons pas encore ce pays.",
    "schoolNotFound": "Cette école n'existe pas.",
    "schoolNotApproved": "Votre école n'a pas encore été approuvée.",
    "payoutIban": "Cet IBAN ne semble pas valide.",
    "payoutAccountHolder": "Indiquez le nom du titulaire du compte.",
    "invitationInvalid": "Cette invitation n'est plus valide.",
    "invitationExpired": "Cette invitation a expiré : demandez à l'école de la renvoyer.",
    "invitationWrongEmail": "L'invitation a été envoyée à une autre adresse e-mail. Ajoutez et vérifiez cette adresse sur votre compte, ou demandez à l'école d'inviter celle-ci.",
    "schoolCurrencyMismatch": "Choisissez des stations dans le pays ou la zone monétaire de votre école.",
    "badEmail": "Cette adresse e-mail ne semble pas valide.",
    "invitationDuplicate": "Cette adresse e-mail a déjà une invitation en attente.",
    "alreadyManagesSchool": "Ce compte gère déjà une école.",
    "schoolCannotApply": "Un compte de gestion d'école ne peut pas candidater comme moniteur : utilisez un compte distinct.",
    "instructorCannotManageSchool": "Un compte de moniteur ne peut pas gérer une école : utilisez un compte distinct.",
    "creatorCannotBeRemoved": "Le créateur de l'école ne peut pas être retiré.",
    "accountClosed": "Ce compte a été fermé.",
    "instructorClosed": "Ce moniteur a fermé son compte.",
    "invoiceNotReady": "Cette facture n'est pas encore disponible.",
    "tooYoung": "Vous devez avoir au moins {min} ans pour vous inscrire comme moniteur.",
    "badDateOfBirth": "Cette date de naissance n'est pas valide.",
    "companionBlocked": "Dans les pays choisis ({countries}), enseigner contre rémunération exige un diplôme officiel.",
    "priceBelowMinimum": "Ce prix horaire est trop bas pour que nous puissions l'encaisser. Relevez-le et enregistrez à nouveau.",
    "companionNoQualification": "Un profil passionné ne revendique aucun diplôme : il n'y a donc rien à vérifier.",
    "outsideSkiDay": "Les cours ne peuvent avoir lieu qu'entre 7 h et 21 h, heure de la station.",
    "tooManyPhotos": "Vous ne pouvez avoir que 3 photos.",
    "tooManySchoolPhotos": "La galerie accepte au maximum 6 photos.",
    "photoNotYours": "Cette photo n'est pas la vôtre.",
    "photoList": "Cette liste de photos n'est pas valide.",
    "payoutProvider": "Choisissez PayPal ou Payoneer.",
    "payoutEmail": "Cette adresse e-mail de versement ne semble pas valide.",
    "payoutNotWaiting": "Ce versement n'est plus en attente.",
    "payoutsNotLiveYet": "Nous ne pouvons pas encore activer vos versements : c'est de notre côté, pas du vôtre. Nous terminons la configuration avec Stripe. Votre solde est en sécurité et vous pourrez le retirer dès que ce sera prêt.",
    "payoutsCountryBlocked": "Stripe ne peut pas effectuer de versements dans votre pays. Écrivez-nous à info@alpinepal.com et nous trouverons une solution avec vous.",
    "stripeUnreachable": "Nous n'avons pas pu joindre Stripe. Réessayez dans quelques minutes.",
    "payoutCountryUnsupported": "Nous ne pouvons pas encore effectuer de versements dans ce pays. Écrivez-nous à info@alpinepal.com et nous trouverons un autre moyen.",
    "payoutCountryLocked": "Votre pays de versement ne peut plus être changé : votre compte Stripe existe déjà. Écrivez-nous à info@alpinepal.com si ce n'est pas le bon.",
    "noInstructorProfile": "Ce compte n'a pas encore de profil de moniteur. Utilisez le formulaire de candidature de la page d'invitation.",
    "alreadyInstructor": "Ce compte a déjà un profil de moniteur. Ouvrez le lien d'invitation pour rejoindre l'école avec ce profil.",
    "joinNotCertified": "Seuls les moniteurs diplômés peuvent rejoindre une école. Passez d'abord votre profil en moniteur diplômé.",
    "joinRejected": "Votre profil n'a pas été approuvé. Demandez un nouvel examen avant de rejoindre une école.",
    "joinAlreadyInSchool": "Vous enseignez déjà pour une école. Demandez-lui d'abord de vous retirer de son équipe.",
    "joinCurrencyMismatch": "Votre profil est tarifé dans une devise différente de celle de l'école, et cela ne peut pas être changé.",
    "joinOutstandingBalance": "Retirez votre solde avant de rejoindre une école. Les cours déjà payés doivent d'abord être réglés et retirés.",
    "schoolNotTakingBookings": "Cette école ne prend pas de réservations pour le moment.",
    "unassignedNeedsResorts": "Les cours sans moniteur attribué nécessitent au moins une station. Choisissez-les dans le profil de l'école.",
    "assignNotUnassigned": "Seuls les cours sans moniteur nommé peuvent être attribués.",
    "assignBadState": "Ce cours ne peut plus être attribué.",
    "assignPackPending": "Acceptez d'abord le pack : d'ici là, ses jours ne peuvent aller qu'à des moniteurs gérés par votre école.",
    "assignNotOnRoster": "Ce moniteur n'est pas un membre actif de votre équipe.",
    "assignCurrency": "Ce moniteur facture dans une devise différente de celle de ce cours.",
    "assignNotVerified": "Ce moniteur n'est pas encore vérifié.",
    "assignDiscipline": "Ce moniteur n'enseigne pas la discipline de ce cours.",
    "assignDuration": "La durée de ce cours sort de ce que propose ce moniteur.",
    "assignStudents": "Ce cours compte plus d'élèves que ce moniteur n'en accepte.",
    "groupClassGone": "Ce cours collectif n'est plus disponible.",
    "groupClassWrongDate": "Ce cours collectif n'a pas lieu à cette date et à cette heure.",
    "groupClassFull": "Ce cours collectif est complet : toutes les places sont prises.",
    "groupClassFixedTime": "Un cours collectif a un horaire fixe et ne peut pas être déplacé.",
    "groupClassMeetingPointFixed": "Le point de rendez-vous d'un cours collectif est fixé par le moniteur et est le même pour tous.",
    "groupClassAssignWhole": "Les places d'un cours collectif ne peuvent pas être attribuées une par une.",
    "groupClassInvalid": "Impossible d'enregistrer le cours collectif. Vérifiez le jour, les horaires et les détails.",
    "groupClassCapacity": "Un cours collectif compte entre 2 et 50 places, et le minimum ne peut pas les dépasser.",
    "groupPriceBelowMinimum": "Le prix par participant est en dessous du minimum.",
    "groupClassesDisabled": "Les cours collectifs sont désactivés sur ce profil. Activez-les d'abord dans ses réglages.",
    "groupClassOverlap": "Ces heures chevauchent un autre de vos cours collectifs.",
    "groupClassExternalBlock": "Ces heures sont bloquées par un cours vendu en dehors d'Alpine Pal.",
    "tooManyGroupClasses": "Vous avez déjà {max} cours collectifs à venir, le maximum. Annulez-en un avant d'en publier un autre.",
    "unclaimedProfile": "Personne n'a encore réclamé ce profil : votre école le gère jusqu'à ce que son moniteur le fasse.",
    "unclaimedHasLessons": "Ce moniteur a encore des cours à venir : annulez-les ou attribuez-les d'abord à quelqu'un d'autre.",
    "acceptTerms": "Acceptez les conditions pour continuer.",
    "groupClassAges": "Vérifiez les âges : seulement pour un cours enfants, entre {min} et {max} ans, le premier pas plus grand que le second.",
    "groupClassForChildren": "Ce cours est pour les enfants : chaque élève doit être un enfant.",
    "groupClassForAdults": "Ce cours est pour les adultes : chaque élève doit être un adulte.",
    "badLessonFormats": "Les formules ou les saisons sont incomplètes. Vérifiez-les et enregistrez à nouveau.",
    "badDurationPrices": "Les prix pour plusieurs heures ne sont pas valides. Un cours plus long ne peut pas coûter plus cher à l'heure, ni moins au total, qu'un cours plus court.",
    "badSeatDisciplines": "Choisissez la discipline de ces cours : ski, snowboard ou les deux.",
    "badLessonLength": "Vérifiez la durée des cours : la minimale ne peut pas dépasser la maximale.",
    "oneLevelPerBooking": "Cette école ne mélange ni les niveaux ni les âges dans un cours : faites une réservation par groupe.",
    "formatsNotSold": "Ce calendrier ne vend pas de formules fixes. Choisissez de nouveau l'horaire.",
    "chooseFormat": "Ces cours se vendent en formules fixes : choisissez-en une dans le calendrier.",
    "formatGone": "Cette formule n'est plus proposée. Choisissez-en une autre dans le calendrier de l'école.",
    "formatNotOnDate": "Cette formule n'est pas vendue ce jour-là. Choisissez un autre jour ou une autre formule.",
    "formatOtherTime": "Cette formule commence à une autre heure. Choisissez-la de nouveau dans le calendrier.",
    "formatMoveHours": "Un cours vendu en formule fixe ne peut passer qu'au même horaire.",
    "formatMovePrice": "Ce jour-là, cette formule n'est pas vendue au prix payé par le client. Choisissez un autre jour.",
    "packDayUnavailable": "L'un des jours du pack n'est plus disponible. Choisissez un autre jour de début.",
    "packDayFull": "L'un des jours du pack est complet. Choisissez un autre jour de début ou moins de personnes.",
    "onlyPacks": "Ce cours collectif ne se vend qu'en packs.",
    "packNotSold": "Ce pack n'est plus vendu.",
    "packBandsMissing": "Choisissez un prix pour chaque personne.",
    "packNotFromDate": "Ce pack ne peut pas commencer à cette date : il ne reste pas assez de jours.",
    "minDaysRequired": "À ces dates, ce cours ne se vend que pour plusieurs jours d'affilée.",
    "packStarted": "Ce pack a déjà commencé : il ne peut plus être annulé.",
    "packDayFixed": "Un jour d'un pack ne peut pas être déplacé.",
    "badPacks": "Les packs ne peuvent pas être enregistrés ainsi : vérifiez les jours et les prix.",
    "equipmentUnavailable": "Ce cours ne propose plus de location de matériel. Décochez le matériel pour le réserver.",
    "equipmentInvalid": "Vérifiez le matériel choisi : un article n'est plus proposé.",
    "equipmentShoeSize": "Indiquez la pointure de chaque personne qui loue des chaussures.",
    "equipmentHeight": "Indiquez la taille de chaque personne qui loue des skis, une planche ou des vêtements.",
    "equipmentPrice": "Chaque prix par jour doit être compris entre {min} et {max}.",
    "equipmentOtherName": "Donnez un nom à chaque article de « Autres ».",
    "equipmentTooManyOthers": "{max} articles au maximum dans « Autres ».",
    "badCancellationWindow": "Choisissez l'une des politiques d'annulation proposées.",
    "referralNotPending": "Ce parrainage n'est plus en attente d'examen. Rechargez la page.",
    "referrerIneligible": "Le parrain ne peut plus recevoir la récompense : il a rejoint une école, est en pause ou a fermé son compte.",
    "referralYearLimit": "Le parrain a déjà reçu toutes les récompenses possibles cette année.",
    "referralGrantRevoked": "Cette réduction était déjà retirée.",
    "badSeasonPrices": "Les prix par saison ne sont pas valides. Vérifiez les dates et les prix.",
    "badIncludedStudents": "Le nombre d'élèves compris dans le prix doit aller de 1 à 20.",
    "badChildEquipmentAge": "L'âge des prix enfant doit être compris entre 3 et 17 ans.",
    "badChildEquipmentSize": "La taille du matériel enfant n'est pas valide : vérifiez la taille et la pointure.",
    "fiscalDetails": "Vérifiez vos données fiscales : l'une d'elles n'est pas correcte.",
    "lueiraReview": "Votre connexion Lueira est en cours de vérification. Nous vous préviendrons dès qu'elle sera prête."
  },
  "installApp": {
    "title": "Installez Alpine Pal comme une app",
    "body": "Elle s'ouvre dans sa propre fenêtre, comme n'importe quelle app, avec vos demandes et vos messages toujours à portée de main.",
    "iosIntro": "Sur iPhone et iPad, cela se fait en deux étapes :",
    "iosShare": "Touchez Partager (si vous ne le voyez pas, il est dans le menu ···).",
    "iosAdd": "Choisissez « Sur l'écran d'accueil ».",
    "install": "Installer l'app",
    "notNow": "Plus tard"
  },
  "push": {
    "title": "Recevez les notifications sur cet appareil",
    "body": "Nous vous prévenons tout de suite des demandes de réservation, des messages et de tout ce qui attend votre réponse, même l'app fermée.",
    "bodyCustomer": "Nous vous prévenons tout de suite quand votre réservation est acceptée, qu'on vous écrit ou que quelque chose change, même si Alpine Pal n'est pas ouvert.",
    "hint": "Vous pouvez les désactiver à tout moment depuis la cloche ou dans les réglages du téléphone.",
    "enable": "Activer les notifications",
    "notNow": "Plus tard",
    "toggle": "Notifications sur cet appareil",
    "blocked": "Bloquées dans les réglages de l'appareil",
    "iosInstall": "Sur iPhone, installez l'app pour recevoir les notifications",
    "enabled": "Notifications activées. Nous vous en avons envoyé une pour tester.",
    "untested": "Notifications activées, mais celle de test n'est pas partie. Si rien n'arrive, réactivez-les plus tard.",
    "disabled": "Notifications désactivées sur cet appareil.",
    "denied": "Les notifications sont bloquées. Pour les recevoir, autorisez-les pour Alpine Pal dans les réglages de l'appareil.",
    "failed": "Impossible d'activer les notifications. Réessayez.",
    "testTitle": "Notifications activées",
    "testBody": "C'est ainsi que vous recevrez les nouvelles de vos réservations et vos messages."
  },
  "share": {
    "myProfile": "Partager mon profil",
    "schoolPage": "Partager la page de l'école",
    "copied": "Lien copié",
    "copyFailed": "Impossible de copier le lien"
  },
  "formatCalendar": {
    "title": "Calendrier des formules",
    "subtitle": "Une ligne par formule. Cliquez sur une case pour l'ouvrir, modifier ses places ou la fermer. Heures dans le fuseau horaire de la station.",
    "subtitlePerson": "Une ligne par formule. Cliquez sur une case pour l'ouvrir ou la fermer. Un cours à la fois. Heures dans le fuseau horaire de la station.",
    "noFormats": "Ajoutez au moins une formule à l'étape 2 pour voir ici son calendrier.",
    "legendOnSale": "En vente",
    "legendClosed": "Fermée",
    "legendNoSeason": "Pas de prix ce jour-là",
    "cellClosed": "Fermée. Cliquez pour l'ouvrir à {price}.",
    "cellNoSeason": "Ce jour ne tombe dans aucune saison avec un prix pour cette formule : elle n'est pas vendue.",
    "cellOpen": "{taken} sur {places} réservés · {price}",
    "cellOpenNoPrice": "{taken} sur {places} réservés · pas de prix ce jour-là",
    "weekOutOfSeason": "Cette semaine ne tombe dans aucune saison : ses formules n'ont pas de prix et ne sont pas vendues.",
    "toSeason": "Aller au {date}",
    "closedNow": "Fermée ce jour-là.",
    "placesHint": "Combien de cours de cette formule vous pouvez vendre en même temps dans cette station.",
    "wholeDay": "Toute la journée ({from}–{to}) : les places valent pour toutes les formules",
    "wholeDayHint": "Avec une place par moniteur, chaque formule en prend une le temps qu'elle dure et vous ne vendez jamais plus de cours à la fois que de moniteurs. Ouvertes une à une, les formules qui se chevauchent additionnent leurs places.",
    "wholeDayPerson": "Toute la journée ({from}–{to}) : ouvre les heures de toutes les formules",
    "wholeDayPersonHint": "Un cours à la fois : dès qu'une formule est réservée, celles qui la chevauchent ne sont plus en vente ce jour-là.",
    "openNowPerson": "Ouverte ce jour-là.",
    "bookedNowPerson": "Ouverte ce jour-là, avec déjà un cours réservé sur ces heures.",
    "scopeWeekly": "Chaque semaine",
    "untilSeasonEnd": "Jusqu'à la fin de la saison, le {date}.",
    "untilDate": "Jusqu'au {date} inclus.",
    "alsoOpens": "Cela ouvre aussi : {formats}.",
    "alsoCloses": "Cela arrête aussi la vente de : {formats}.",
    "closeAlsoCloses": "La fermer ferme aussi : {formats}.",
    "closedFormatNow": "Seule cette formule est fermée ce jour-là. Ses heures gardent {places} places pour les autres.",
    "closedFormatNowPerson": "Seule cette formule est fermée ce jour-là. Les autres formules sur ces heures restent en vente.",
    "cellClosedFormat": "Seule cette formule est fermée. Cliquez pour l'ouvrir à {price}.",
    "closeDay": "Fermer la journée",
    "openDay": "Ouvrir la journée",
    "closeOnlyHint": "« Fermer la formule » ne ferme que celle-ci ; les autres gardent leurs places. Pour toutes les fermer, activez « Toute la journée ».",
    "closeOnlyHintPerson": "Fermer la formule ne ferme que celle-ci ; les autres restent en vente. Pour toutes les fermer, activez Toute la journée.",
    "close": "Fermer la formule",
    "open": "Ouvrir la formule"
  },
  "packs": {
    "title": "Packs de plusieurs jours",
    "optional": "Packs de plusieurs jours (facultatif)",
    "hint": "Vendez plusieurs jours du stage en un seul paiement, à un prix par personne selon l'âge. Chaque jour est réservé comme un cours du stage.",
    "courseNote": "Ils valent pour tout le stage : les jours de la semaine publiés ensemble.",
    "days": "Jours",
    "band": {
      "adult": "Adultes",
      "youth": "Jeunes",
      "child": "Enfants"
    },
    "addOption": "Ajouter un pack",
    "removeOption": "Supprimer ce pack",
    "pricesHint": "Prix par personne pour tout le pack. Une tranche laissée vide n'est pas vendue dans ce pack.",
    "agesTitle": "Âges de chaque tranche (facultatif)",
    "agesMin": "De",
    "agesMax": "À",
    "includesTitle": "Ce qui est inclus en plus des cours",
    "include": {
      "liftPass": "Forfait",
      "rental": "Location du matériel",
      "helmet": "Casque"
    },
    "singleDays": "Vendre aussi des jours seuls",
    "singleDaysHint": "Chaque jour seul au prix par personne du cours.",
    "blocked": {
      "too_many_options": "{max} packs au maximum.",
      "bad_days": "Chaque pack fait de {min} à {max} jours.",
      "duplicate_days": "Deux packs ont le même nombre de jours.",
      "option_without_prices": "Chaque pack a besoin d'au moins un prix.",
      "price_below_minimum": "Chaque prix doit être d'au moins {min} {currency} par jour du pack.",
      "bad_ages": "Vérifiez les âges : de {min} à {max} ans, le premier pas plus grand que le second."
    },
    "saved": "Packs enregistrés",
    "save": "Enregistrer les packs",
    "remove": "Supprimer les packs",
    "edit": "Modifier les packs",
    "none": "Aucun : chaque jour est vendu seul.",
    "summaryOptions": "Packs de {list} jours",
    "cardBadge": "Packs de {list} jours",
    "agesRange": "{min}–{max} ans",
    "agesFrom": "dès {min} ans",
    "agesUpTo": "jusqu'à {max} ans",
    "single": "Ce jour seulement",
    "optionLabel": "{days} jours",
    "fromPerPerson": "dès {price} par personne",
    "chooseWho": "Qui vient ?",
    "addOne": "Ajouter une personne",
    "removeOne": "Retirer une personne",
    "includes": "Inclus : {list}",
    "lessons": "Cours",
    "oneDay": "Un jour",
    "daysInRow": "{days} jours d'affilée",
    "minDaysNote": "À ces dates, le minimum est de {days} jours d'affilée.",
    "datesRange": "Du {from} au {to}.",
    "doesNotFit": "À partir de ce jour, il n'y a pas {days} jours d'affilée en vente : choisissez un autre premier jour.",
    "people": "Personnes : {n}",
    "summaryLabel": "Pack",
    "firstDay": "Premier jour",
    "groupDaysNote": "Les {days} prochains cours du stage, à partir du {date}.",
    "formatDaysNote": "{days} jours d'affilée, du {from} au {to}.",
    "bookingTitle": "Pack de {days} jours",
    "dayOf": "Jour {day} sur {days}",
    "bookingNote": "Chaque jour est un cours à part entière. Le pack s'annule en entier ; si l'un de ses jours est annulé, la part de ce jour vous est remboursée.",
    "chatOnFirstDay": "La messagerie du pack se trouve sur son premier jour.",
    "openFirstDay": "Aller au premier jour",
    "cancelPack": "Annuler le pack",
    "acceptPack": "Accepter le pack",
    "rejectPack": "Refuser le pack",
    "answerWhole": "Ce jour fait partie d'un pack de {days} jours : on accepte ou on refuse tout le pack, et ses jours ne peuvent pas être déplacés.",
    "wholePackNote": "Par personne, pour tout le pack, selon l'âge."
  },
  "extraStudents": {
    "title": "Prix par élève supplémentaire",
    "foldHint": "Si vous facturez plus quand le cours est pour plusieurs élèves.",
    "extraHint": "Vide ou 0 : le même prix quelle que soit la taille du groupe."
  },
  "durationPrices": {
    "title": "Prix pour plusieurs heures d'affilée",
    "hint": "Prix du cours entier pour un élève. Vide : cette durée suit le tarif horaire de la dernière durée précédente qui a un prix, ou se facture à l'heure s'il n'y en a aucune.",
    "label": "{hours} heures d'affilée",
    "labelOrMore": "{hours} heures ou plus",
    "perHour": "= {price} de l'heure",
    "lineExact": "{hours} heures d'affilée",
    "lineRate": "{hours} h à {price} de l'heure",
    "short": "{hours} h",
    "shortOrMore": "{hours} h ou plus",
    "blocked": {
      "not_a_price": "Le prix pour {hours} heures doit être un nombre supérieur à 0. Laissez-le vide si cette durée n'a pas de prix propre.",
      "below_minimum": "Chaque prix doit être d'au moins {min} {currency} par heure.",
      "dearer_per_hour": "{hours} heures reviennent à {rate} l'heure, plus que {shorter} heures ({shorterRate} l'heure) : un cours plus long ne peut pas coûter plus cher à l'heure.",
      "dearer_than_hourly": "{hours} heures reviennent à {rate} l'heure, plus que le prix horaire ({shorterRate}) auquel se facturent les cours de {shorter} h.",
      "cheaper_than_shorter": "{hours} heures coûtent {total} au total, moins que {shorter} heures ({shorterTotal}) : un cours plus long ne peut pas coûter moins.",
      "cheaper_than_hourly": "{hours} heures coûtent {total} au total, moins que {shorter} h au prix horaire ({shorterTotal}) : un cours plus long ne peut pas coûter moins.",
      "orStartLater": "Si vous ne vendez pas de cours aussi courts, faites-les commencer à {hours} heures."
    },
    "foldHint": "Si vous facturez un prix fixe pour 2, 3 heures d'affilée ou plus."
  },
  "seasonPrices": {
    "title": "Prix par saison",
    "hint": "Facultatif. Aux dates d'une saison, son tarif horaire et ses prix pour plusieurs heures d'affilée s'appliquent ; les autres jours, ceux du dessus.",
    "namePlaceholder": "Haute saison",
    "rateLabel": "Tarif horaire à ces dates ({currency})",
    "headerNote": "Le prix dépend de la date : choisissez un jour pour voir celui de ce jour-là.",
    "includesUpTo": "Le prix comprend jusqu'à {n} élèves",
    "includedLabel": "Élèves compris dans le prix",
    "includedHint": "Le supplément par élève s'applique dès le deuxième.",
    "includedHintFrom": "Le supplément par élève s'applique dès le {n}e.",
    "blocked": {
      "too_many_seasons": "Au maximum {max} saisons.",
      "bad_season": "Une saison est illisible : supprimez-la et recréez-la.",
      "bad_season_name": "Le nom d'une saison est trop long ({max} caractères au maximum).",
      "bad_season_dates": "Vérifiez les dates signalées : chaque période doit avoir un jour de début et un jour de fin, et la fin ne peut pas précéder le début.",
      "seasons_overlap": "Deux périodes se chevauchent : chaque jour ne peut avoir qu'un seul prix.",
      "season_rate_below_minimum": "Le tarif horaire de la saison est inférieur au minimum de {min} {currency}.",
      "season_duration_prices": "Vérifiez les prix pour plusieurs heures de la saison."
    },
    "foldHint": "Si vous facturez un autre prix à certaines dates, comme en haute saison.",
    "unnamed": "Saison {n}"
  },
  "extraPer": {
    "label": "Comment le supplément est facturé",
    "hour": "par heure",
    "lesson": "par cours"
  },
  "equipment": {
    "title": "Location de matériel",
    "intro": "Louez votre matériel avec vos cours. Qui réserve l'un de vos cours peut ajouter ce dont chaque élève a besoin et le payer avec le cours.",
    "enableLabel": "Proposer la location de matériel",
    "whereNote": "Elle est proposée avec tous les cours encaissés par votre école : les cours sans moniteur attribué, les cours collectifs et ceux des moniteurs de votre équipe. Le prix est par jour, pour autant de jours que le cours.",
    "commissionNote": "Comme pour les cours, nous gardons {commission} % et {share} % va sur votre solde une fois le cours terminé ; si un cours est remboursé, son matériel l'est aussi.",
    "nothingPriced": "Donnez un prix à un article pour le proposer.",
    "notPublic": "Les clients la verront une fois votre école publiée.",
    "itemsTitle": "Ce que vous louez et son prix par jour",
    "itemsHint": "Prix adulte. Laissez vide ce que vous ne louez pas.",
    "groupSki": "Ski",
    "groupSnowboard": "Snowboard",
    "groupCommon": "Pour tous",
    "perDay": "{currency}/jour",
    "othersTitle": "Autres",
    "othersHint": "Ce qui n'est pas dans la liste, avec le nom que vous lui donnez. Il s'affiche tel que vous l'écrivez, dans toutes les langues.",
    "otherNameLabel": "Nom de l'article",
    "otherNamePlaceholder": "Ex. : protection dorsale",
    "addOther": "Ajouter un article",
    "removeOther": "Retirer cet article",
    "priceRangeError": "Chaque prix par jour doit être compris entre {min} et {max}.",
    "otherIncomplete": "Donnez un nom à chaque article de « Autres », ou laissez les deux champs vides.",
    "pickupTitle": "Où le récupérer",
    "pickupHint": "Si le matériel ne se récupère pas là où commence le cours, indiquez où. La personne qui réserve le voit avant de payer, dans la confirmation et dans le rappel de la veille.",
    "pickupAddressLabel": "Adresse du magasin",
    "pickupAddressPlaceholder": "Ex. 12 rue de la Poste, Val d'Isère",
    "pickupNoteLabel": "Note (facultative)",
    "pickupNotePlaceholder": "Ex. Ouvert de 8 h à 20 h 30 ; possible de le récupérer la veille au soir",
    "pickupNoteHint": "Elle s'affiche telle que vous l'écrivez, dans toutes les langues.",
    "pickupNoAddress": "Indiquez l'adresse du magasin, ou laissez aussi la note vide.",
    "pickupBefore": "Passez le récupérer avant le cours.",
    "kind": {
      "ski_set": "Pack ski (skis, chaussures et bâtons)",
      "skis": "Skis",
      "ski_boots": "Chaussures de ski",
      "poles": "Bâtons",
      "snowboard_set": "Pack snowboard (planche et boots)",
      "snowboard": "Planche de snowboard",
      "snowboard_boots": "Boots de snowboard",
      "helmet": "Casque",
      "goggles": "Masque",
      "gloves": "Gants",
      "clothing": "Vêtements (veste et pantalon)"
    },
    "checkoutTitle": "Besoin de matériel ?",
    "checkoutIntro": "{school} loue du matériel pour le cours. Cochez ce dont chaque élève a besoin : il se paie avec le cours.",
    "checkoutDays": "Le prix est par jour, pour les {days} jours du forfait.",
    "includedInSet": "Inclus dans le pack",
    "pricePerDay": "{price}/jour",
    "shoeSize": "Pointure (EU)",
    "height": "Taille (cm)",
    "sizesNote": "Le magasin règle le matériel au moment du retrait.",
    "breakdownLine": "Location de matériel",
    "breakdownLineDays": "Location de matériel · {days} jours",
    "errorStudent": "Vérifiez le matériel choisi.",
    "errorItem": "Vérifiez le matériel choisi : un article n'est plus proposé.",
    "errorSet": "Un pack comprend déjà ses skis, ses chaussures ou sa planche.",
    "errorShoeSize": "Indiquez la pointure de chaque personne qui loue des chaussures.",
    "errorHeight": "Indiquez la taille de chaque personne qui loue des skis, une planche ou des vêtements.",
    "bookingLabel": "Location de matériel",
    "includedInTotal": "{amount}, inclus dans le total",
    "shoeShort": "pointure {size}",
    "heightShort": "{cm} cm",
    "forDays": "Pour {days} jours",
    "childTitle": "Prix enfant",
    "childFoldHint": "Si le matériel enfant a un autre prix.",
    "childHint": "Appliqués aux élèves réservés comme enfant. Laissez vide ce qui coûte le même prix qu'adulte.",
    "childMaxAgeLabel": "Pour les enfants jusqu'à",
    "childMaxAgeSuffix": "ans (inclus)",
    "childAgeError": "L'âge doit être compris entre {min} et {max} ans.",
    "childNoItems": "Indiquez d'abord plus haut le prix de ce que vous louez.",
    "childSummary": "Jusqu'à {age} ans · {n} avec prix enfant",
    "childPricesNote": "Prix enfant : jusqu'à {age} ans.",
    "childTag": "enfant",
    "tier": {
      "basic": "Gamme de base",
      "mid": "Gamme moyenne",
      "high": "Gamme haute"
    },
    "tierLabel": "Gamme",
    "tiersTitle": "Gammes",
    "tiersFoldHint": "Si vous louez le même matériel en plusieurs gammes.",
    "tiersHint": "Cochez les gammes que vous louez et indiquez le prix de chacune. Laissez vide la gamme qu'un article n'a pas : s'il n'en a qu'une, le client ne choisit pas.",
    "childByLabel": "Prix enfant selon",
    "childByAge": "l'âge",
    "childBySize": "la taille",
    "childHintSize": "Appliqué à qui mesure jusqu'à cette taille (skis, planches et vêtements) ou chausse jusqu'à cette pointure (chaussures) ; un pack, si les deux conviennent. Casque, bâtons et le reste, toujours au prix adulte. Laissez vide ce qui coûte le même prix qu'adulte.",
    "childMaxHeightLabel": "Matériel enfant jusqu'à",
    "childMaxShoeLabel": "cm et pointure",
    "childSizeError": "La taille doit être comprise entre {minHeight} et {maxHeight} cm, et la pointure entre {minShoe} et {maxShoe}.",
    "childWhoAge": "jusqu'à {age} ans",
    "childWhoSize": "jusqu'à {height} cm et pointure {shoe}",
    "childSummaryWho": "{who} · {n} avec prix enfant",
    "childSizeNote": "Matériel enfant jusqu'à {height} cm et pointure {shoe} : son prix s'affiche une fois la taille et la pointure saisies."
  },
  "googleCalendar": {
    "title": "Google Agenda",
    "introInstructor": "Vos cours confirmés apparaissent tout seuls dans un agenda « Alpine Pal » de votre compte Google : ajoutés, déplacés et supprimés aussitôt. Vos autres agendas ne sont jamais modifiés.",
    "introSchool": "Tous les cours de votre école, précédés du nom du moniteur, apparaissent tout seuls dans un agenda « Alpine Pal » de votre compte Google. Les cours sans moniteur attribué apparaissent comme « Non attribué ».",
    "schoolAccountTip": "Mieux vaut un compte partagé de l'école (par exemple reservations@…) que le compte personnel d'un administrateur. Chaque moniteur peut aussi connecter le sien depuis son tableau de bord, dans Connexions.",
    "connect": "Connecter Google Agenda",
    "connectedAs": "Connecté à {email}",
    "connectedBy": "connecté par {name}",
    "updating": "Mise à jour de vos cours…",
    "syncedAt": "Mis à jour : {when}",
    "resync": "Resynchroniser",
    "resyncDone": "Vos cours sont réécrits dans Google Agenda.",
    "disconnect": "Déconnecter",
    "disconnectTitle": "Déconnecter Google Agenda ?",
    "disconnectBody": "Les cours n'arriveront plus dans Google Agenda. Rien ne change dans Alpine Pal.",
    "deleteCalendar": "Supprimer aussi l'agenda « Alpine Pal » de Google",
    "disconnected": "Google Agenda déconnecté.",
    "brokenRevoked": "Alpine Pal n'a plus accès au compte {email} : les nouveaux cours n'arrivent plus dans Google Agenda. Reconnectez-le.",
    "brokenDeleted": "L'agenda « Alpine Pal » a été supprimé du compte {email} : les nouveaux cours n'y arrivent plus. Reconnectez-le pour le recréer.",
    "reconnect": "Reconnecter",
    "busy": {
      "title": "Bloquer mes heures occupées",
      "intro": "Ce que vous avez dans votre Google Agenda (un médecin, un autre cours, un voyage) ne peut plus être réservé sur Alpine Pal. Nous voyons seulement quand vous êtes occupé, jamais ce que c'est.",
      "enable": "Activer",
      "on": "Activé : les heures que votre agenda Google principal indique comme occupées ne peuvent pas être réservées. Les événements marqués « disponible » ne comptent pas.",
      "checkedAt": "Vérifié : {when}",
      "checking": "Lecture de vos heures occupées…",
      "failing": "La dernière fois, nous n'avons pas pu lire votre agenda ; nous réessayons dans quelques minutes. En attendant, les heures lues avant restent bloquées.",
      "disable": "Désactiver",
      "disabled": "Vos heures occupées dans Google ne bloquent plus votre calendrier."
    },
    "result": {
      "connected": "Google Agenda connecté. Vos cours apparaîtront dans quelques secondes.",
      "denied": "Pas connecté : vous avez annulé sur Google.",
      "scope_missing": "L'autorisation de l'agenda manque. Reconnectez-le en laissant cochée la case Google Agenda.",
      "forbidden": "Vous ne pouvez pas connecter cet agenda.",
      "unavailable": "La connexion avec Google Agenda n'est pas encore disponible.",
      "failed": "Impossible de se connecter à Google. Réessayez.",
      "busy_on": "C'est fait : les heures où vous êtes occupé dans Google Agenda ne peuvent plus être réservées.",
      "busy_scope_missing": "L'autorisation de disponibilité manque. Réactivez-la en laissant cochée la case pour voir votre disponibilité."
    }
  },
  "referral": {
    "card": {
      "title": "Parrainez un moniteur",
      "body": "Partagez votre lien avec d'autres moniteurs. La personne qui s'inscrit avec ce lien paie {inviteePercent} % de commission au lieu de {standard} % sur ses premiers {amount} de cours. Et dès son premier cours payé, vos prochains {amount} de cours paient {percent} % au lieu de {base} %.",
      "preview": "Visible par vous uniquement : le programme reste désactivé jusqu'à 15 jours après l'avis sur les nouvelles conditions. Un code utilisé maintenant ne compte pas.",
      "linkLabel": "Votre lien de parrainage",
      "copy": "Copier",
      "copied": "Lien copié",
      "share": "Partager",
      "shareText": "Venez enseigner sur Alpine Pal. Avec mon lien, vous payez {percent} % de commission au lieu de {standard} % sur vos premiers {amount} de cours :",
      "code": "Votre code : {code}. Sans le lien, on peut le saisir à l'inscription.",
      "rewardsTitle": "Votre commission réduite",
      "reward": "Vos cours paient {percent} % au lieu de {base} % : il vous reste {remaining} sur {cap}, jusqu'au {date}.",
      "inviteesTitle": "Les personnes que vous parrainez",
      "inviteesEmpty": "Personne ne s'est encore inscrit avec votre code.",
      "limit": "Au maximum {n} récompenses par an (vous en avez eu {used}).",
      "terms": "Conditions"
    },
    "status": {
      "registered": "En attente d'approbation",
      "approved": "Profil approuvé, pas encore de cours",
      "to_review": "Premier cours donné : récompense en cours d'examen",
      "rewarded": "Récompense obtenue",
      "declined": "Pas de récompense",
      "void": "Clôturé"
    },
    "banner": "{name} vous invite sur Alpine Pal. Si vous vous inscrivez avec son code, vos premiers cours paient {percent} % de commission au lieu de {standard} %.",
    "field": {
      "label": "Code de parrainage",
      "placeholder": "MARTA-7K3Q",
      "valid": "{name} vous parraine : vos premiers cours paieront {percent} % de commission au lieu de {standard} %.",
      "invalid": "Ce code n'existe pas ou n'est plus valable. Vérifiez-le ou laissez le champ vide.",
      "privacy": "La personne qui vous parraine verra que vous avez utilisé son code et si vous avez donné votre premier cours, jamais vos montants."
    }
  },
  "assistant": {
    "open": "Assistant IA",
    "title": "Assistant d'Alpine Pal",
    "hint": "Besoin d'aide ?",
    "aiBadge": "IA",
    "greeting": "Bonjour ! Je suis l'assistant IA d'Alpine Pal. Posez-moi vos questions sur le site, ou dites-moi où et quand vous voulez skier et je vous cherche des cours.",
    "placeholder": "Écrivez votre question…",
    "send": "Envoyer",
    "close": "Fermer",
    "restart": "Nouvelle conversation",
    "notice": "L'IA peut se tromper. Ce que vous écrivez est envoyé à Anthropic pour vous répondre et nous ne le conservons pas. Ne partagez pas de données sensibles.",
    "noticeLink": "Confidentialité",
    "contactLink": "Contact",
    "thinking": "Je réfléchis…",
    "searching": "Je cherche des cours…",
    "reading": "Je consulte le site…",
    "seeAll": "Voir tous les résultats ({total})",
    "errorLimit": "Cela fait beaucoup de questions en peu de temps. Patientez quelques minutes et réessayez.",
    "errorLimitDay": "Vous avez atteint le maximum de questions pour une journée. Vous pourrez continuer dans {count} heures.",
    "errorLimitDay_one": "Vous avez atteint le maximum de questions pour une journée. Vous pourrez continuer dans une heure.",
    "errorBusy": "L'assistant n'est pas disponible pour le moment. Vous pouvez nous écrire :",
    "errorFailed": "Un problème est survenu et je n'ai pas pu répondre. Réessayez dans un instant.",
    "errorRefused": "Je ne peux pas vous aider sur ce point. Si cela concerne Alpine Pal, essayez de reformuler.",
    "errorCut": "La connexion a été coupée et ma réponse est incomplète. Posez-moi à nouveau la question.",
    "errorTruncated": "Ma réponse a été coupée. Demandez-moi une version plus courte.",
    "suggestFind": "Je cherche un moniteur à Val d'Isère",
    "suggestSignUp": "Comment m'inscrire ?",
    "suggestCancel": "Puis-je annuler une réservation ?",
    "suggestHours": "Où indiquer mes horaires ?",
    "suggestPayout": "Comment suis-je payé ?",
    "suggestPrices": "Où modifier mes prix ?",
    "suggestAddInstructors": "Comment ajouter mes moniteurs ?"
  }
}
