SkateSpots/src/i18n/fr/drift.ts

575 lines
30 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* fr — translation drift fragment. Keys added after the main batches
* (language picker search, trust, marketplace guidelines, clothing craft,
* weather additions, Cordn MLS chat). Composed LAST in `index.ts` via a deep
* merge so these nested keys complement — never replace — the batch namespaces.
*/
const drift = {
nav: {
searchLanguages: "Rechercher des langues…",
noLanguages: "Aucune langue trouvée",
},
mapPage: {
searchSuggestPlaces: "Lieux",
},
mapUi: {
firstRunTitle: "Pour commencer",
firstRunTip: "Touchez n'importe quel repère pour explorer. Rien à configurer — les spots à proximité sont à un toucher.",
firstRunAddSpot: "Ajoutez votre premier spot",
firstRunJoinCrew: "Rejoindre une Crew",
firstRunStartCrew: "Lancer votre Crew",
firstRunWallet: "Configurer votre portefeuille",
forecastDays: "Prévisions sur {{count}} jours",
},
spotUi: {
forecastDays: "Prévisions sur {{count}} jours",
},
marketUi: {
trades: {
stateRevoked: "révoqué",
stateVerifying: "vérification",
},
loadFailed: "Impossible de joindre les relays. Vérifiez votre connexion et réessayez.",
statusPending: "en attente",
offers: {
closeDeal: "Clôturer l'accord",
loadFailed: "Impossible de charger les offres. Vérifiez votre connexion et réessayez.",
},
pay: {
nonSats: "Cette offre est libellée en {{currency}}. Le paiement dans l'app se fait uniquement en sats. Réglez directement avec le vendeur.",
unsupported: "Ce code de paiement (une requête Cashu) n'est pas encore pris en charge. Demandez une facture ou une adresse Lightning au vendeur.",
},
escrowRequest: {
lockedNotSent: "Les fonds sont bloqués sous séquestre et enregistrés sur cet appareil, mais la demande n'a pas été envoyée. Rouvrez l'annonce pour réessayer. Ne payez pas à nouveau.",
mintLabel: "Mint (où les fonds sont bloqués)",
sellerMintHint: "Le vendeur préfère ce mint ; les fonds bloqués ici sont les plus faciles à récupérer pour lui.",
mintHint: "Le séquestre réside dans ce mint. Le vendeur y récupère les fonds, alors choisissez-en un en qui vous avez tous les deux confiance.",
noMints: "Aucun mint disponible",
p2pkUnsupported: "Ce mint n'annonce pas la prise en charge de P2PK (NUT-11), le séquestre ne peut donc pas y être bloqué. Choisissez un autre mint.",
},
},
labUi: {
offerClothing: "Proposer des vêtements",
tabClothing: "Vêtements",
empty: {
clothingTitle: "Pas encore de créateurs de vêtements",
clothingBody: "Soyez le premier à proposer des vêtements personnalisés, des kits d'équipe et des vêtements pour la scène.",
transportTitle: "Pas encore de prestataires de transport",
transportBody: "Vous déplacez des skateurs, du matériel ou du fret ? Proposez votre voiture, van, taxi, vélo, hélicoptère, avion ou bateau.",
},
craftFields: {
sizing: "Gamme de tailles",
samples: "Échantillons / prototypes",
customization: "Personnalisation",
capacity: "Capacité",
cargo: "Espace cargo",
coverage: "Couverture / trajets",
availability: "Disponibilité",
base: "Zone de départ",
accessibility: "Accessibilité",
},
tabTransport: "Transport",
filterVehicles: "Véhicules",
filterTransportServices: "Services",
filterCapabilities: "Capacités",
filterCapacity: "Capacité",
filterCoverage: "Couverture",
offerTransport: "Proposer un transport",
labLink: {
transport: "Transport",
designer: "Vêtements",
},
detail: {
noun: {
transport: "prestataire de transport",
},
skillsTitle: {
transport: "Véhicules et services",
},
},
},
socialUi: {
coordinator: {
ourDefaultTitle: "Coordinateur SkateSpots",
ourDefaultDesc: "SkateSpots fait tourner un coordinateur sur relay.skate-spots.org. Utilisez-le par défaut, ou faites tourner le vôtre — un coordinateur ne voit jamais que du texte chiffré et des métadonnées, jamais vos messages.",
useOurs: "Utiliser le coordinateur SkateSpots",
},
crewCoordinator: {
encryptedChat: "Chat chiffré",
privateChatName: "Chat privé",
privateChatDesc: "Chat de groupe à confidentialité persistante (MLS) via un coordinateur.",
privateChatDescFull: "Le chat privé est créé une fois par un admin, puis les membres le rejoignent.",
chatRowDesc: "Tout le monde dans la Crew — scellé avec la clé de chaque membre (NIP-17).",
openChat: "Ouvrir",
setUpChat: "Configurer",
joinChat: "Rejoindre",
checking: "Vérification…",
openInAnotherApp: "Ouvrir dans une autre app",
openInCordnWeb: "Cordn (web)",
openCordnGroup: "Ouvrir le chat de la Crew",
copyForStaircase: "Copier pour Staircase",
},
dms: {
refresh: "Actualiser",
privateRooms: "Salons privés",
crews: "Crews",
crewFounder: "Fondateur",
crewMember: "Membre",
crewOpen: "Ouvrir",
crewSetUp: "Configurer",
},
form: {
cordnGroup: "Groupe Cordn",
cordnGroupHint: "Facultatif : collez le lien du groupe depuis Staircase ou Cordn web. Votre Crew obtient alors un vrai chat MLS de bout en bout, hébergé sur notre coordinateur.",
},
bell: {
dmsUnread: "{{count}} nouveau(x) message(s) chiffré(s)",
messagesAndCrews: "Messages et discussions de crew",
},
},
settingsUi: {
loginDialog: {
welcomeSubtitleBrowse: "Inscris-toi ou connecte-toi — ou continue à explorer.",
extensionCard: "Extension navigateur",
signerCard: "App signataire",
secretKeyLink: "Utiliser une clé secrète",
whereBunker: "Où trouver un bunker ?",
},
settingsPage: {
trust: "Confiance",
trustSub: "Sources et affichage",
},
},
walletUi: {
trust: {
mute: "Masquer",
muted: "Masqué",
mutedDesc: "Vous ne verrez pas son contenu.",
unmute: "Ne plus masquer",
unmuted: "Plus masqué",
unmutedDesc: "Son contenu réapparaîtra.",
unmuteFailed: "Impossible de ne plus masquer. Réessayez.",
muteFailed: "Impossible de masquer. Réessayez.",
loginToMute: "Connectez-vous pour masquer.",
attributedNetwork: "De personnes de votre réseau",
attributedProviderHouse: "Du fournisseur de confiance communautaire",
attributedProviderCustom: "Du fournisseur que vous avez choisi",
howItWorks: "Comment fonctionne la confiance",
flaggedNoticeTitle: "Signalé par des skateurs de confiance",
flaggedNoticeDesc: "Soyez prudent. Des personnes de confiance du réseau ont signalé ce compte.",
flaggedReporterFollow: "{{count}} que vous suivez",
flaggedReporterNetwork: "{{count}} dans votre réseau",
flaggedReporterOther: "{{count}} autres comptes",
flaggedReport: "Signaler",
flaggedDismiss: "Ignorer",
bucketVerified: "Vérifié",
bucketUnknown: "Inconnu",
bucketFlagged: "Signalé",
bucketVerifiedDesc: "Quelqu'un de votre réseau se porte garant de ce compte.",
bucketUnknownDesc: "Personne dans votre réseau ne s'est encore porté garant de ce compte.",
bucketFlaggedDesc: "Des personnes de confiance ont signalé ce compte.",
reportedByTrusted: "Signalé par {{count}} personnes de confiance",
},
stats: {
transport: "Transport",
},
},
trustUi: {
alertsTitle: "Alertes réseau",
alertsDesc: "Des comptes que vous suivez et que des personnes de confiance ont signalés ou masqués.",
alertsEmpty: "Aucune alerte. Nous vérifions les comptes que vous suivez à la recherche de signalements de confiance.",
alertsReported: "Signalé par {{count}} personnes de confiance",
alertsMuted: "Masqué par {{count}} personnes de confiance",
alertsIgnore: "Ignorer",
alertsUnfollow: "Se désabonner",
alertsLogin: "Connectez-vous pour voir les alertes concernant les comptes que vous suivez.",
providerTitle: "Fournisseur",
providerDesc: "Les scores proviennent d'un fournisseur que vous choisissez. Le fournisseur communautaire est celui par défaut.",
useCommunity: "Utiliser le fournisseur communautaire",
setProvider: "Définir un fournisseur",
customPubkeyPlaceholder: "npub ou clé publique hex du fournisseur",
customRelayPlaceholder: "wss://relais.exemple.com",
invalidProvider: "Saisissez un npub ou une clé publique hex de 64 caractères valide, et un relais wss://.",
publishFailed: "Impossible de publier le fournisseur. Réessayez.",
providerSaved: "Fournisseur mis à jour.",
loggedOutProvider: "Connectez-vous pour choisir un fournisseur.",
showMarks: "Afficher les marques de confiance",
showMarksDesc: "Marques vérifiées et inconnues. Les signalements s'affichent toujours.",
sourceLabel: "Source",
sourceHouse: "Fournisseur de confiance communautaire",
sourceCustom: "Votre fournisseur",
loggedOut: "Connectez-vous pour choisir votre propre fournisseur de confiance.",
seoTitle: "Comment fonctionne la confiance",
seoDescription: "Comment SkateSpots montre la confiance : trois états, d'où viennent les scores, et pourquoi l'absence n'est pas de la défiance.",
title: "Comment fonctionne la confiance",
intro: "Ici, la confiance est un signal, pas un verdict. Elle vient de qui vous connaissez, ou d'un fournisseur que vous choisissez. Nous ne classons pas les gens globalement.",
statesTitle: "Trois états",
verifiedTitle: "Vérifié",
verifiedDesc: "Quelqu'un de votre réseau se porte garant de ce compte : un ami d'un ami, ou le fournisseur que vous avez choisi.",
unknownTitle: "Inconnu",
unknownDesc: "Personne ne s'est encore porté garant. C'est là que commence chaque nouveau compte.",
flaggedTitle: "Signalé",
flaggedDesc: "Des personnes de confiance ont signalé ce compte. C'est un avertissement pour regarder de plus près, pas une preuve.",
absenceTitle: "Pas de badge ne signifie pas défiance",
absenceDesc: "La plupart des comptes n'affichent rien du tout. Cela signifie que personne de votre réseau ne s'est encore porté garant, pas que quelque chose ne va pas. Ne lisez jamais une marque absente comme un point négatif.",
sourceTitle: "Qui le calcule",
sourceDesc: "Par défaut, nous utilisons votre propre réseau. Vous pouvez aussi choisir un fournisseur de confiance qui publie des scores signés sur Nostr (NIP-85), ou désactiver l'affichage. Les signalements s'affichent toujours, car c'est un signal de sécurité.",
endorsementTitle: "La présence n'est pas une approbation",
endorsementDesc: "Une marque vérifiée signifie que quelqu'un s'est porté garant, pas que la personne est bonne. Un signalement signifie que des personnes de confiance l'ont signalée, pas qu'elle est coupable. Vérifiez les détails avant de décider.",
povTitle: "Cela dépend du point de vue",
povDesc: "Un score est relatif à qui regarde. Un classement d'un fournisseur ou d'une personne n'est pas comparable à un autre, et nous n'en présentons jamais un comme un fait objectif.",
settingsCta: "Gérer dans les réglages",
},
marketTerms: {
link: "Règles de la Marketplace",
seoTitle: "Règles de la Marketplace",
seoDescription: "Comment fonctionnent les annonces de matériel SkateSpots : entre particuliers, acheteur vigilant, et les règles.",
title: "Règles de la Marketplace",
intro: "SkateSpots est un tableau de matériel entre particuliers. Vous traitez directement avec l'autre personne : nous ne détenons pas les fonds, n'expédions pas les articles et ne réglons pas les litiges.",
howTitle: "Comment ça marche",
howBody: "Publiez du matériel, contactez le vendeur en message privé et réglez directement (espèces, Lightning ou échange). Il n'y a ni panier ni paiement.",
rulesTitle: "Ce qui n'est pas autorisé",
rulesBody: "Aucun contenu illégal, dangereux ou pour adultes ; pas de drogues, d'armes, de contrefaçons ou d'objets volés. Gardez les annonces liées au matériel de skate et aux articles connexes.",
respectTitle: "Soyez respectueux",
respectBody: "Pas d'abus, de harcèlement, de menaces ni de haine. Les modérateurs peuvent masquer des annonces ou des comptes.",
trustTitle: "La confiance est un guide, pas une garantie",
trustBody: "Les marques de vérification et la réputation d'échange sont des signaux du réseau, pas des promesses. Faites vos propres vérifications avant de commercer.",
trustLink: "Comment fonctionne la confiance",
privacyLink: "Ce qui quitte votre appareil",
safetyTitle: "Commercez en toute sécurité",
safetyBody: "Rencontrez-vous dans un lieu public pour les remises en main propre, utilisez le séquestre ou un dépôt de bonne foi pour les envois, et n'envoyez jamais d'argent en dehors de l'app.",
moderationTitle: "La modération est douce et réversible",
moderationBody: "Le contenu masqué reste sur les relays et peut être restauré ; les litiges entre personnes sont à vous de résoudre.",
},
labOptions: {
clothing: {
service: {
tees: "T-shirts",
hoodies: "Sweats à capuche",
pants: "Pantalons et shorts",
jackets: "Vestes et vêtements d'extérieur",
kits: "Kits d'équipe et maillots",
caps: "Casquettes et bonnets",
socks: "Chaussettes",
accessories: "Sacs et accessoires",
footwear: "Chaussures",
patches: "Écussons et appliqués",
griptape: "Vêtements griptape et deck",
onepiece: "Pièces uniques / upcyclées",
},
serviceDesc: {
tees: "T-shirts et hauts personnalisés",
hoodies: "Sweats à capuche, cols ras et pantalons de jogging",
pants: "Pantalons de travail, cargos et shorts",
jackets: "Vestes de coach, coupe-vent et vestes de travail",
kits: "Kits d'équipe, maillots et uniformes",
caps: "Casquettes, bonnets et couvre-chefs",
socks: "Chaussettes d'équipe et maille",
accessories: "Sacs, ceintures et petite maroquinerie",
footwear: "Chaussures personnalisées",
patches: "Écussons brodés et appliqués",
griptape: "Art griptape et vêtements de deck",
onepiece: "Pièces uniques et vêtements upcyclés",
},
method: {
screenprint: "Sérigraphie",
dtg: "DTG / impression directe sur textile",
embroidery: "Broderie",
cutsew: "Coupe et couture",
sublimation: "Sublimation",
heattransfer: "Transfert thermique / vinyle",
garmentdye: "Teinture en pièce",
knit: "Maille",
patchwork: "Patchwork",
allover: "Impression intégrale",
},
material: {
cotton: "Coton",
heavyweight: "Grammage épais",
organic: "Bio / durable",
fleece: "Polaire",
denim: "Denim",
canvas: "Toile",
nylon: "Nylon / technique",
wool: "Mérinos / laine",
leather: "Cuir",
recycled: "Recyclé / deadstock",
},
},
transport: {
capacity: {
solo: "1–3 personnes",
small_group: "4–7 personnes",
large_group: "8+ personnes",
van_load: "Van plein",
freight: "Fret / cargo",
},
coverage: {
local: "Local",
regional: "Régional",
national: "National",
international: "International",
cross_border: "Itinéraires transfrontaliers",
},
},
},
becomeRolesUi: {
clothing: {
seoTitle: "Devenir créateur de vêtements - SkateSpots",
seoDescription: "Vêtements personnalisés, kits d'équipe et apparel pour la scène.",
heading: "Créateur de vêtements",
tagline: "Vêtements personnalisés, kits d'équipe et apparel pour la scène",
noun: "créateur de vêtements",
rateLabel: "Tarif",
portfolioLabel: "Lien boutique / portfolio",
sectionWhatYouMake: "Ce que vous créez",
sectionHowYouMake: "Comment vous le créez",
sectionMaterials: "Matériaux",
minimumPlaceholder: "ex. 10 pièces",
turnaroundPlaceholder: "ex. 2-3 semaines",
sizingPlaceholder: "ex. XS-3XL / sur mesure",
samplesHelper: "Proposez-vous des échantillons ou des prototypes avant une production complète ?",
customizationPlaceholder: "ex. noms, numéros, graphismes",
},
transport: {
seoTitle: "Proposer un transport / conduire - SkateSpots",
seoDescription: "Déplacez skateurs, matériel et fret — voitures, taxis, vans, motos, hélicoptères, avions et bateaux. Déclaré par vous, évalué par la communauté.",
heading: "Transport / Chauffeur",
tagline: "Déplacez les personnes et le matériel sur la scène — terre, air ou mer",
noun: "prestataire de transport",
rateLabel: "Tarif / trajet",
portfolioLabel: "Photos du véhicule / de la flotte",
sectionVehicles: "Véhicules",
sectionServices: "Services",
sectionFeatures: "Capacités",
sectionCapacity: "Capacité",
sectionCoverage: "Couverture",
capacityLabel: "Capacité",
capacityPlaceholder: "ex. 4 passagers / 2 planches",
cargoLabel: "Espace cargo",
cargoPlaceholder: "ex. van plein, 8 cartons de planches",
coverageLabel: "Couverture / trajets",
coveragePlaceholder: "ex. Barcelone ↔ Perpignan, régional",
availabilityLabel: "Disponibilité",
availabilityPlaceholder: "ex. week-ends, jours d'événement, sur appel",
baseLabel: "Zone de départ",
basePlaceholder: "ex. Barcelone / El Prat",
accessibilityLabel: "Accessibilité",
accessibilityPlaceholder: "ex. rampe, place fauteuil roulant, assistance",
},
},
weatherUi: {
updated: "Mis à jour",
refresh: "Actualiser",
unavailable: "Météo indisponible.",
retry: "Réessayer",
sunrise: "Lever du soleil",
sunset: "Coucher du soleil",
legendTitle: "Score météo",
legendWeatherOnly: "Météo uniquement",
},
cordnUi: {
shareInvite: 'Inviter',
shareInviteText: 'Rejoins {{crew}} — chat privé du crew',
inviteCopied: 'Lien d’invitation copié',
title: "Chat privé",
subtitle: "Chiffré de bout en bout (MLS) entre les membres de la Crew. Le coordinateur ne route que du texte chiffré et des métadonnées — il ne voit jamais le contenu des messages.",
notLoggedIn: "Connectez-vous pour utiliser le chat privé de la Crew.",
membersOnly: "Seuls les membres de la Crew peuvent ouvrir le chat privé.",
connecting: "Connexion…",
noCoordinator: "Aucun coordinateur n'est encore configuré pour cette Crew.",
noGroupAdmin: "Le chat privé de cette Crew n'a pas encore été créé.",
noGroupMember: "Vous n'êtes pas encore dans le chat privé de cette Crew.",
create: "Créer le chat privé",
requestJoin: "Demander à rejoindre",
requestAgain: "Redemander",
requestHandled: "Demande traitée",
copyCordnLink: "Copier le lien Cordn",
cordnWebCaveat: "Cordn web peut se bloquer après la connexion ; rejoindre depuis l’app est plus fiable.",
checkInvite: "Vérifier l'invitation",
requested: "Demande envoyée — un admin de la Crew l'approuvera.",
noInvite: "Aucune invitation en attente. Demandez à un admin d'approuver votre demande.",
placeholder: "Écrire à la Crew…",
send: "Envoyer",
refresh: "Actualiser",
requests: "Demandes d'adhésion",
checkRequests: "Vérifier les demandes",
approve: "Ajouter",
approveTitle: "Approuver cet appareil ?",
approveDesc: "Ajouter {{name}} à ce salon chiffré ? Cet appareil pourra lire les nouveaux messages.",
noRequests: "Aucune demande d'adhésion en attente.",
inviteHint: "Vous êtes seul dans ce chat pour l'instant — les membres de la Crew peuvent appuyer sur « Demander à rejoindre », puis vous les approuvez ici.",
memberCount: "{{count}} dans le groupe",
you: "Vous",
groupRef: "Lien du groupe",
copyRef: "Copier",
copied: "Copié",
attachImage: "Joindre une image",
uploading: "Envoi…",
uploadFailed: "Impossible d'envoyer l'image.",
bannerTitle: "Cette Crew n'a pas encore de chat privé",
bannerBody: "Configurez un chat chiffré de bout en bout (MLS) pour votre Crew — les membres rejoignent depuis l'onglet.",
bannerCta: "Configurer",
ready: "Connecté · MLS",
errorPrefix: "Impossible de joindre le coordinateur",
interactiveHint: "Votre signataire demande une approbation à chaque action — utilisez Actualiser et Envoyer au besoin.",
setupDevice: "Configurer cet appareil",
setupDeviceBody: "Cet appareil obtient sa propre clé pour le chat privé. Un fondateur l’approuve une fois.",
waitingApproval: "En attente de l’approbation du fondateur…",
waitingApprovalManual: "En attente du fondateur. Touchez « Vérifier l’invitation » après son approbation.",
onboardingFounder1: "Lancez le chat privé.",
onboardingFounder2: "Approuvez les membres qui demandent à rejoindre.",
onboardingFounder3: "Discutez en privé avec votre Crew.",
onboardingMember1: "Demander à rejoindre",
onboardingMember2: "Le fondateur approuve votre appareil.",
onboardingMember3: "Vous y êtes — les messages sont chiffrés.",
encryptedNote: "Seuls les membres de la Crew peuvent le lire ; le coordinateur ne relaie que des messages chiffrés.",
advanced: "Avancé",
compareTitle: "Chat vs chat privé",
compareChat: "Le chat est un DM de groupe NIP-17 standard. Il fonctionne avec d'autres clients Nostr et n'a pas de coordinateur.",
comparePrivate: "Le chat privé utilise MLS : un contrôle des membres plus fort et une confidentialité persistante. Le coordinateur voit les métadonnées du groupe et le texte chiffré, jamais le contenu des messages.",
coordinator: "Coordinateur",
lastChecked: "Dernière vérification",
keyPackage: "Paquet de clés",
keyPackageReady: "Prêt sur cet appareil",
keyPackageMissing: "Non configuré sur cet appareil",
members: "Membres",
roleFounder: "Fondateur",
roleAdmin: "Admin",
makeAdmin: "Nommer admin",
removeAdmin: "Retirer admin",
adminAdded: "Membre promu admin.",
adminRemoved: "Rôle admin retiré.",
roleUpdateFailed: "Impossible de modifier le rôle. Réessayez.",
addReaction: "Ajouter une réaction",
deleteMessage: "Supprimer le message",
deleteMessageConfirm: "Supprimer ce message pour tout le monde ?",
readBy: "Lu par {{count}}",
joinRequestTitle: "Demande de chat privé",
joinRequestFor: "Nouvelle demande pour rejoindre {{crew}}",
joinRequestReview: "Examiner la demande",
joinRequestDismiss: "Ignorer la demande",
roleMember: "Membre",
qrTitle: "Scannez pour rejoindre le chat privé",
qrHint: "Les membres de la Crew le scannent avec l’appareil photo de leur téléphone. Le lien ouvre l’onglet Chat privé.",
sendFailed: "Échec de l’envoi — touchez Réessayer.",
queued: "En file sur cet appareil",
sending: "Envoi…",
sent: "Envoyé",
retry: "Réessayer",
errorUnreachable: "Impossible de joindre le chat privé. Vérifiez votre connexion.",
errorDetails: "Détails",
unreachable: "Injoignable",
dismiss: "Fermer",
linkDevice: "Lier cet appareil",
linkDeviceTitle: "Lier un autre appareil",
linkDeviceHint: "Scannez ce code sur un appareil déjà présent dans le salon.",
linkDeviceNote: "Le code contient un paquet de clés publiques. Votre clé privée reste sur le nouvel appareil.",
waitingDevice: "En attente de l’autre appareil…",
addDevice: "Ajouter un appareil",
deviceLinked: "Appareil ajouté.",
deviceLinkFailed: "Impossible d’ajouter cet appareil.",
removeMemberConfirm: "Retirer {{name}} du chat privé ? Cet appareil perdra l’accès.",
removeMemberFailed: "Impossible de retirer ce membre.",
reply: "Répondre",
},
communityUi: {
link: "Communauté",
title: "Chat de la communauté",
subtitle: "Pose des questions, partage tes retours et échange avec la communauté SkateSpots — chiffré de bout en bout.",
heading: "Communauté SkateSpots",
eyebrow: "Questions et retours",
seoTitle: "Chat de la communauté SkateSpots",
seoDescription: "Questions, retours et discussions communautaires — chiffrés de bout en bout.",
notLoggedIn: "Connecte-toi pour rejoindre le chat de la communauté.",
noGroupAdmin: "Le salon de la communauté n’a pas encore été créé.",
noGroupMember: "Tu n’es pas encore dans le salon de la communauté.",
waitingApproval: "En attente de l’approbation du bot de la communauté ou d’un admin…",
waitingApprovalManual: "Mode manuel. Appuie sur « Vérifier l’invitation » une fois approuvé.",
noInvite: "Pas encore d’invitation. Le bot approuve généralement en moins d’une minute — appuie ensuite sur « Vérifier l’invitation ».",
pendingRequests: "{{count}} demande(s) d’adhésion en attente",
pendingRequestsDesc: "Le bot approuve généralement automatiquement. S’il est bloqué, ouvre le salon ci-dessous et appuie sur Vérifier les demandes.",
botMissing: "Le bot de la communauté n’est pas dans ce salon pour le moment ; un admin examinera les demandes d’adhésion.",
secondDeviceHint: "Déjà membre sur un autre appareil ? Utilise « Lier cet appareil » pour un transfert direct, ou redemande à rejoindre avec cet appareil.",
create: "Créer le salon de la communauté",
setupDeviceBody: "Cela donne à cet appareil une clé pour le salon de la communauté. Un admin ou le bot l’approuve une fois.",
onboardingFounder1: "Crée le salon de la communauté.",
onboardingFounder2: "Approuve le bot de la communauté et les nouveaux membres.",
onboardingFounder3: "Réponds aux questions et recueille les retours.",
onboardingMember1: "Demande à rejoindre le salon de la communauté.",
onboardingMember2: "Un admin ou le bot de la communauté approuve ton appareil.",
onboardingMember3: "Pose des questions, partage tes retours ou dis simplement bonjour.",
encryptedNote: "Seuls les membres du salon peuvent lire ceci ; le coordinateur ne relaie que des messages chiffrés.",
shareInviteText: "Rejoins le chat de la communauté SkateSpots",
qrTitle: "Scanne pour rejoindre le chat de la communauté",
qrHint: "Scanne avec l’appareil photo de ton téléphone pour ouvrir le chat de la communauté et demander à le rejoindre.",
owner: "Propriétaire",
botName: "Bot de la communauté",
howItWorks: "Les nouveaux appareils sont approuvés une fois par un admin ou le bot de la communauté. Les messages envoyés avant ton arrivée ne te sont pas visibles.",
feedbackNote: "Les questions et les retours sont les bienvenus. Reste courtois — c’est un salon partagé.",
},
translateUi: {
title: "Traduction des messages",
translate: "Traduire",
translating: "Traduction…",
showOriginal: "Afficher l'original",
showTranslation: "Afficher la traduction",
translatedFrom: "Traduit du {{language}}",
failed: "Échec de la traduction. Réessaie.",
unsupported: "Cette paire de langues n'est pas encore disponible.",
pilotNote: "Pilote : anglais ↔ espagnol uniquement.",
autoTranslate: "Traduire automatiquement les messages",
autoTranslateDesc: "Traduis les messages reçus dans ta langue. Fonctionne sur cet appareil ; rien n'est envoyé.",
privacy: "La traduction s'exécute sur ton appareil. Ton message ne le quitte jamais. La première utilisation télécharge un modèle de langue.",
},
newsletterDraftUi: {
weeklyDraftReady: 'Brouillon hebdomadaire prêt',
loadDraft: 'Charger le brouillon',
hidePreview: 'Masquer l’aperçu',
untitled: 'Sans titre',
},
signerPromptUi: {
title: "Budget d'invites Amber",
body: "Amber demande une approbation pour chaque action signée. Les lectures et les déchiffrements en arrière-plan restent locaux et ne déclenchent aucune invite. L'envoi d'un DM de groupe demande une fois par destinataire (chiffrement + signature), et Cordn peut demander à chaque requête de coordinateur. Pour un chat privé ou d'équipage fréquent, un bunker ou une clé locale est plus discret.",
bunker: "Garde Amber pour les signatures importantes, ou passe à un bunker si tu prévois une longue conversation.",
},
globalSearchUi: {
open: "Rechercher",
placeholder: "Rechercher spots, crews, événements, matériel…",
hint: "⌘K / Ctrl+K",
recent: "Récents",
pages: "Pages",
spots: "Spots",
shops: "Skateshops",
crews: "Crews",
events: "Événements",
gear: "Matériel",
skaters: "Skaters",
signers: "Signataires",
trust: "Confiance",
noResults: "Aucun résultat pour « {{query}} ».",
},
marketplaceExtrasUi: {
savedSearches: "Recherches enregistrées",
saveSearch: "Enregistrer la recherche",
searchName: "Nommer cette recherche…",
deleteSearch: "Supprimer la recherche enregistrée",
safetyTitle: "Acheter et vendre en toute sécurité",
safetyMeet: "Retrouvez-vous dans un lieu public et inspectez le matériel avant de payer.",
safetyKeys: "Ne partagez jamais de phrases de récupération ni de clés privées. Gardez la transaction dans le chat de l'application.",
safetyEscrow: "Pour les envois, lisez d'abord les conditions de l'escrow : l'escrow Cashu est réservé à l'application native et n'est pas vérifié.",
safetyMore: "Lire les règles du marché",
offerTemplates: "Notes rapides",
offerDiscount: "Peux-tu faire 10 % de remise ?",
offerSwap: "Envisagerais-tu un échange ?",
offerPickup: "Je peux venir le chercher cette semaine.",
offerShipping: "Peux-tu regrouper l'expédition ?",
},
placesUi: {
eventDetail: {
eventPass: "Pass événement"
},
},
};
export default drift;