i18n(fr): complete French translation (100% — 8450 keys)
This commit is contained in:
parent
845733de24
commit
1954adfdc2
8 changed files with 9409 additions and 15 deletions
|
|
@ -1,4 +1,290 @@
|
|||
/** fr — batch 1. Filled by the translation pass; empty until then. */
|
||||
const frBatch1 = {};
|
||||
const frBatch1 = {
|
||||
common: {
|
||||
loading: "Chargement…",
|
||||
error: "Erreur",
|
||||
save: "Enregistrer",
|
||||
cancel: "Annuler",
|
||||
delete: "Supprimer",
|
||||
edit: "Modifier",
|
||||
add: "Ajouter",
|
||||
remove: "Retirer",
|
||||
create: "Créer",
|
||||
submit: "Envoyer",
|
||||
close: "Fermer",
|
||||
back: "Retour",
|
||||
next: "Suivant",
|
||||
done: "Terminé",
|
||||
search: "Rechercher",
|
||||
filter: "Filtrer",
|
||||
sort: "Trier",
|
||||
share: "Partager",
|
||||
more: "Plus",
|
||||
copy: "Copier",
|
||||
copied: "Copié !",
|
||||
viewAll: "Tout voir",
|
||||
seeMore: "Voir plus",
|
||||
showMore: "Afficher plus",
|
||||
showLess: "Afficher moins",
|
||||
noResults: "Aucun résultat",
|
||||
tryAgain: "Réessayer",
|
||||
learnMore: "En savoir plus",
|
||||
getStarted: "Commencer",
|
||||
yes: "Oui",
|
||||
no: "Non",
|
||||
or: "ou",
|
||||
and: "et",
|
||||
free: "Gratuit",
|
||||
new: "Nouveau",
|
||||
popular: "Populaire",
|
||||
featured: "À la une",
|
||||
verified: "Vérifié",
|
||||
sats: "sats",
|
||||
clear: "Effacer",
|
||||
clearFilters: "Effacer les filtres",
|
||||
clearAll: "Tout effacer",
|
||||
hide: "Masquer",
|
||||
undo: "Annuler",
|
||||
},
|
||||
nav: {
|
||||
home: "Accueil",
|
||||
map: "Spots",
|
||||
lab: "The Lab",
|
||||
events: "Événements",
|
||||
crews: "Crews",
|
||||
wallet: "Portefeuille",
|
||||
settings: "Paramètres",
|
||||
more: "Plus",
|
||||
rewards: "Récompenses",
|
||||
stats: "Stats de la communauté",
|
||||
about: "À propos",
|
||||
food: "Restauration",
|
||||
marketplace: "Marketplace",
|
||||
mints: "Mints",
|
||||
appShop: "Boutique de l'app",
|
||||
diy: "DIY",
|
||||
trades: "Marketplace",
|
||||
stash: "Stash",
|
||||
collections: "Collections",
|
||||
contacts: "Contacts",
|
||||
messages: "Messages",
|
||||
skaters: "Skaters",
|
||||
glossary: "Glossaire",
|
||||
riderCard: "Rider Card",
|
||||
supporters: "Soutiens ⚡",
|
||||
newsletter: "Newsletter",
|
||||
viewProfile: "Voir le profil",
|
||||
leaderboards: "Classements",
|
||||
},
|
||||
chromeUi: {
|
||||
skipToContent: "Aller au contenu",
|
||||
menu: "Menu",
|
||||
inBadge: "Actif",
|
||||
loggedIn: "Connecté",
|
||||
profile: "Profil",
|
||||
logIn: "Se connecter",
|
||||
logOut: "Se déconnecter",
|
||||
notLoggedIn: "Non connecté",
|
||||
loggedOutPrompt: "Connectez-vous pour ajouter des spots, envoyer des zaps aux skaters et enregistrer vos favoris",
|
||||
accounts: "Comptes",
|
||||
addAnotherAccount: "Ajouter un autre compte",
|
||||
setStatus: "Définir un statut",
|
||||
setYourStatus: "Définissez votre statut",
|
||||
status: "Statut",
|
||||
addSpot: "Ajouter un spot",
|
||||
myData: "Mes données",
|
||||
myStash: "Mon Stash",
|
||||
myCollections: "Mes collections",
|
||||
viewMyProfile: "Voir mon profil",
|
||||
customizeNavBar: "Personnaliser la barre de navigation",
|
||||
ecash: "Ecash",
|
||||
madeWith: "Fait avec",
|
||||
forSkateCommunity: "pour la communauté du skate",
|
||||
beta: "Bêta",
|
||||
license: "Licence",
|
||||
privacy: "Confidentialité",
|
||||
collaborators: "Collaborateurs et amis",
|
||||
notSponsoredBy: "Non sponsorisé par",
|
||||
errorTitle: "Impossible de charger",
|
||||
errorDescription: "La requête réseau a échoué. Vérifiez votre connexion et réessayez.",
|
||||
tryAgain: "Réessayer",
|
||||
weatherOn: "Météo activée",
|
||||
weatherOff: "Météo désactivée",
|
||||
trustFilter: "Filtre de confiance",
|
||||
filterByTrustLevel: "Filtrer par niveau de confiance",
|
||||
trust: {
|
||||
all: "Tous les utilisateurs",
|
||||
allDesc: "Afficher le contenu de tout le monde",
|
||||
verified: "Vérifié",
|
||||
verifiedDesc: "Vous les suivez ou ils sont vérifiés (confiance ≥90)",
|
||||
trusted: "De confiance",
|
||||
trustedDesc: "Amis d'amis ou vérifiés par NIP-05 (confiance ≥60)",
|
||||
following: "Abonnements uniquement",
|
||||
followingDesc: "Afficher uniquement le contenu des personnes que vous suivez",
|
||||
followingShort: "Abonnements",
|
||||
},
|
||||
sort: {
|
||||
recent: "Plus récents",
|
||||
recentDesc: "Les plus récents d'abord",
|
||||
trust: "Confiance la plus élevée",
|
||||
trustDesc: "Créateurs les plus dignes de confiance",
|
||||
proximity: "Les plus proches de moi",
|
||||
proximityDesc: "Lieux les plus proches",
|
||||
popular: "Les plus populaires",
|
||||
popularDesc: "Le plus de commentaires/réactions",
|
||||
zaps: "Les plus zappés",
|
||||
zapsDesc: "Valeur reçue la plus élevée",
|
||||
},
|
||||
spotType: {
|
||||
street: "Street",
|
||||
transition: "Transition",
|
||||
park: "Park",
|
||||
plaza: "Plaza",
|
||||
diy: "DIY",
|
||||
bowl: "Bowl",
|
||||
vert: "Vert",
|
||||
indoor: "Indoor",
|
||||
skatepark: "Skatepark",
|
||||
miniramp: "Mini Ramp",
|
||||
},
|
||||
},
|
||||
desktopNav: {
|
||||
title: "Navigation du bureau",
|
||||
desc: "Choisissez les onglets qui apparaissent dans la barre supérieure et leur ordre. Les onglets masqués restent dans le menu « Plus ».",
|
||||
fixed: "Fixe",
|
||||
shownInTopBar: "Affichés dans la barre supérieure ({{count}})",
|
||||
noExtraTabs: "Aucun onglet supplémentaire affiché — tout est dans le menu « Plus ». Ajoutez-en ci-dessous.",
|
||||
inMoreMenu: "Dans le menu « Plus » ({{count}})",
|
||||
moveUp: "Déplacer {{name}} vers le haut",
|
||||
moveDown: "Déplacer {{name}} vers le bas",
|
||||
hide: "Masquer {{name}}",
|
||||
moveToMore: "Déplacer vers le menu Plus",
|
||||
show: "Afficher",
|
||||
showInTopBar: "Afficher {{name}} dans la barre supérieure",
|
||||
showInTopBarTitle: "Afficher dans la barre supérieure",
|
||||
reset: "Réinitialiser par défaut",
|
||||
},
|
||||
navSheet: {
|
||||
title: "Personnalisez votre barre",
|
||||
desc: "Choisissez les {{count}} onglets que vous utilisez le plus. Tout le reste reste dans le menu.",
|
||||
preview: "Aperçu",
|
||||
empty: "Vide",
|
||||
order: "Ordre ({{done}}/{{total}})",
|
||||
available: "Onglets disponibles",
|
||||
full: "Barre pleine — retirez-en un pour échanger",
|
||||
moveUp: "Déplacer {{name}} vers le haut",
|
||||
moveDown: "Déplacer {{name}} vers le bas",
|
||||
login: "Connexion",
|
||||
profile: "Profil",
|
||||
reset: "Réinitialiser",
|
||||
done: "Terminé",
|
||||
},
|
||||
pwa: {
|
||||
installTitle: "Installer SkateSpots",
|
||||
installSubtitle: "Profitez de l'expérience complète de l'app",
|
||||
addToHomeScreen: "Ajouter à l'écran d'accueil",
|
||||
installApp: "Installer l'app",
|
||||
maybeLater: "Plus tard",
|
||||
gotIt: "Compris !",
|
||||
benefits: {
|
||||
fast: "Ultra rapide",
|
||||
offline: "Fonctionne hors ligne",
|
||||
fullAccess: "Accès complet",
|
||||
},
|
||||
iosStep1: "Appuyez sur le bouton Partager",
|
||||
iosStep1Hint: "en bas de Safari",
|
||||
iosStep2: "Faites défiler et appuyez sur « Ajouter à l'écran d'accueil »",
|
||||
iosStep2Hint: "dans le menu de partage",
|
||||
iosStep3: "Appuyez sur « Ajouter » pour installer",
|
||||
iosStep3Hint: "L'app apparaîtra sur votre écran d'accueil",
|
||||
androidStep1: "Appuyez sur le bouton de menu",
|
||||
androidStep1Hint: "(trois points) dans votre navigateur",
|
||||
androidStep2: "Sélectionnez « Ajouter à l'écran d'accueil »",
|
||||
androidStep2Hint: "ou « Installer l'app »",
|
||||
androidStep3: "Confirmez pour installer",
|
||||
androidStep3Hint: "L'app apparaîtra sur votre écran d'accueil",
|
||||
tagline: "Gratuit • Fonctionne hors ligne • Rapide et fiable",
|
||||
},
|
||||
home: {
|
||||
tagline: "Propulsé par la communauté • Basé sur les relays",
|
||||
title: "SKATE SPOTS",
|
||||
subtitle: "Découvrez des spots • Rencontrez-vous • Apprenez des tricks • Soutenez les locaux",
|
||||
description: "Le vrai skate se passe hors ligne - cet outil vous aide à le trouver.",
|
||||
betaWarning: "BÊTA - En construction • À utiliser à vos risques et périls",
|
||||
pwaHint: "Progressive Web App - Installez-la sur votre appareil",
|
||||
exploreMap: "Explorer la carte",
|
||||
addSpot: "Ajouter un spot",
|
||||
globalSpots: "Spots mondiaux",
|
||||
openCommunity: "Communauté ouverte",
|
||||
lightningZaps: "Zaps Lightning",
|
||||
featuredSpots: "Spots à la une",
|
||||
featuredSpotsDesc: "Spots de skate vérifiés par la communauté aux quatre coins du monde",
|
||||
upcomingEvents: "Événements à venir",
|
||||
upcomingEventsDesc: "Contests, rencontres et sessions bientôt au programme",
|
||||
noSpotsYet: "Aucun spot trouvé pour l'instant",
|
||||
noSpotsHint: "Soyez le premier à ajouter un spot de skate !",
|
||||
noEventsYet: "Aucun événement à venir",
|
||||
noEventsHint: "Revenez plus tard ou créez-en un !",
|
||||
theLab: "The Lab",
|
||||
theLabDesc: "Apprenez des tricks, trouvez des coachs et progressez sur votre skate",
|
||||
coaches: "Coachs",
|
||||
coachesDesc: "Apprenez auprès de skaters expérimentés qui peuvent vous aider à progresser",
|
||||
filmers: "Filmeurs",
|
||||
filmersDesc: "Connectez-vous avec des filmeurs pour capturer vos meilleurs clips",
|
||||
findCoach: "Trouver un coach",
|
||||
becomeCoach: "Devenir coach",
|
||||
findFilmer: "Trouver un filmeur",
|
||||
becomeFilmer: "Devenir filmeur",
|
||||
viewAllSpots: "Voir tous les spots",
|
||||
viewAllEvents: "Voir tous les événements",
|
||||
createEvent: "Créer un événement",
|
||||
readyToShare: "Prêt à partager ?",
|
||||
readyToShareDesc: "Aidez la communauté du skate à grandir en ajoutant vos spots préférés. Chaque lieu que vous partagez aide d'autres skaters à découvrir de nouveaux endroits où rider.",
|
||||
},
|
||||
about: {
|
||||
title: "À propos de SkateSpots",
|
||||
subtitle: "Une communauté de skate décentralisée",
|
||||
whatIs: "Qu'est-ce que SkateSpots ?",
|
||||
whatIsDesc: "SkateSpots est une plateforme propulsée par la communauté pour découvrir des spots de skate dans le monde entier. Construite sur Nostr, elle donne aux skaters la véritable propriété de leurs données.",
|
||||
features: "Fonctionnalités",
|
||||
featuresDesc: "Trouvez des spots, créez des événements, connectez-vous avec des coachs et soutenez vos skate shops locaux — le tout au même endroit.",
|
||||
nostr: "Construit sur Nostr",
|
||||
nostrDesc: "Nostr est un protocole simple et ouvert qui permet une communication mondiale véritablement résistante à la censure. Votre compte et vos données vous appartiennent.",
|
||||
openSource: "Open Source",
|
||||
openSourceDesc: "SkateSpots est entièrement open source. Contribuez, forkez ou hébergez votre propre instance.",
|
||||
lightning: "Paiements Lightning",
|
||||
lightningDesc: "Zappez vos skaters, coachs et créateurs de contenu préférés avec des paiements Bitcoin Lightning.",
|
||||
},
|
||||
faq: {
|
||||
title: "Questions fréquentes",
|
||||
subtitle: "Tout ce que vous devez savoir sur SkateSpots",
|
||||
whatIsNostr: "Qu'est-ce que Nostr ?",
|
||||
whatIsNostrAnswer: "Nostr est un protocole ouvert pour des réseaux sociaux décentralisés. Contrairement aux plateformes traditionnelles, vos données et votre identité vous appartiennent.",
|
||||
howToStart: "Comment démarrer ?",
|
||||
howToStartAnswer: "Cliquez sur « S'inscrire » pour créer un nouveau compte Nostr, ou sur « Se connecter » si vous en avez déjà un. Vous pouvez utiliser une extension de navigateur, une app mobile ou une clé secrète.",
|
||||
whatAreZaps: "Que sont les Zaps ?",
|
||||
whatAreZapsAnswer: "Les Zaps sont des pourboires en Bitcoin Lightning que vous pouvez envoyer à d'autres utilisateurs. C'est une façon de montrer votre appréciation pour un bon contenu ou de soutenir des créateurs.",
|
||||
howToAddSpot: "Comment ajouter un spot ?",
|
||||
howToAddSpotAnswer: "Connectez-vous à votre compte, cliquez sur « Ajouter un spot » et remplissez les détails, notamment l'emplacement, les photos et la description.",
|
||||
isItFree: "SkateSpots est-il gratuit ?",
|
||||
isItFreeAnswer: "Oui ! SkateSpots est entièrement gratuit. Vous pouvez éventuellement envoyer des Zaps (pourboires en Bitcoin) à d'autres utilisateurs.",
|
||||
canIEditSpot: "Puis-je modifier ou supprimer mes spots ?",
|
||||
canIEditSpotAnswer: "Oui, vous pouvez modifier les spots que vous avez créés. En raison de la nature décentralisée de Nostr, les demandes de suppression sont envoyées, mais certains relays peuvent conserver les données.",
|
||||
},
|
||||
onboarding: {
|
||||
welcome: "Bienvenue sur SkateSpots !",
|
||||
welcomeDesc: "Configurons tout ça en quelques étapes.",
|
||||
step1Title: "Créez votre compte",
|
||||
step1Desc: "Vos clés Nostr sont en cours de génération. C'est comme un mot de passe que vous contrôlez.",
|
||||
step2Title: "Sauvegardez vos clés",
|
||||
step2Desc: "Conservez votre phrase de récupération en lieu sûr. C'est le seul moyen de récupérer votre compte !",
|
||||
step3Title: "Configurez votre profil",
|
||||
step3Desc: "Parlez un peu de vous à la communauté.",
|
||||
step4Title: "Vous êtes prêt !",
|
||||
step4Desc: "Commencez à explorer les spots, les événements et à échanger avec d'autres skaters.",
|
||||
skipForNow: "Passer pour l'instant",
|
||||
continueToApp: "Continuer vers l'app",
|
||||
},
|
||||
};
|
||||
|
||||
export default frBatch1;
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,4 +1,908 @@
|
|||
/** fr — batch 7. Filled by the translation pass; empty until then. */
|
||||
const frBatch7 = {};
|
||||
/** fr — batch 7. Translated from the English source. */
|
||||
const frBatch7 = {
|
||||
events: {
|
||||
title: 'Événements de skate',
|
||||
createEvent: 'Créer un événement',
|
||||
editEvent: 'Modifier l’événement',
|
||||
eventDetails: 'Détails de l’événement',
|
||||
eventName: 'Nom de l’événement',
|
||||
eventType: 'Type d’événement',
|
||||
date: 'Date',
|
||||
time: 'Heure',
|
||||
startDate: 'Date de début',
|
||||
endDate: 'Date de fin',
|
||||
venue: 'Lieu',
|
||||
organizer: 'Organisateur',
|
||||
attendees: 'Participants',
|
||||
going: 'Participe',
|
||||
interested: 'Intéressé',
|
||||
rsvp: 'RSVP',
|
||||
ticketPrice: 'Prix du billet',
|
||||
freeEntry: 'Entrée gratuite',
|
||||
register: 'S’inscrire',
|
||||
moreInfo: 'Plus d’infos',
|
||||
upcomingEvents: 'À venir',
|
||||
pastEvents: 'Passés',
|
||||
noEvents: 'Aucun événement trouvé',
|
||||
findEvents: 'Trouve des contests, démos, sessions et plus',
|
||||
searchPlaceholder: 'Rechercher des événements...',
|
||||
loginToCreate: 'Connecte-toi pour créer des événements',
|
||||
noEventsMatch: 'Aucun événement à venir ne correspond à tes filtres.',
|
||||
noUpcoming: 'Aucun événement à venir trouvé.',
|
||||
noPast: 'Aucun événement passé trouvé.',
|
||||
types: {
|
||||
contest: 'Contest',
|
||||
session: 'Session',
|
||||
meetup: 'Rencontre',
|
||||
premiere: 'Première vidéo',
|
||||
workshop: 'Atelier',
|
||||
demo: 'Démo',
|
||||
jam: 'Jam',
|
||||
},
|
||||
},
|
||||
wallet: {
|
||||
title: 'Portefeuille',
|
||||
balance: 'Solde',
|
||||
send: 'Envoyer',
|
||||
receive: 'Recevoir',
|
||||
transactions: 'Transactions',
|
||||
history: 'Historique',
|
||||
noTransactions: 'Aucune transaction pour le moment',
|
||||
sendSats: 'Envoyer des sats',
|
||||
receiveSats: 'Recevoir des sats',
|
||||
amount: 'Montant',
|
||||
recipient: 'Destinataire',
|
||||
lightning: 'Lightning',
|
||||
onChain: 'On-chain',
|
||||
invoice: 'Facture',
|
||||
address: 'Adresse',
|
||||
scanQR: 'Scanner le QR',
|
||||
paste: 'Coller',
|
||||
payInvoice: 'Payer la facture',
|
||||
createInvoice: 'Créer une facture',
|
||||
copied: 'Copié dans le presse-papiers !',
|
||||
insufficientFunds: 'Fonds insuffisants',
|
||||
paymentSent: 'Paiement envoyé !',
|
||||
paymentReceived: 'Paiement reçu !',
|
||||
cashu: {
|
||||
title: 'Portefeuille Cashu',
|
||||
tokens: 'Jetons',
|
||||
mint: 'Mint',
|
||||
mints: 'Mints',
|
||||
manageMints: 'Gérer les mints',
|
||||
addMint: 'Ajouter un mint',
|
||||
removeMint: 'Supprimer le mint',
|
||||
defaultMint: 'Mint par défaut',
|
||||
backup: 'Sauvegarde',
|
||||
restore: 'Restaurer',
|
||||
recoveryPhrase: 'Phrase de récupération',
|
||||
viewRecoveryPhrase: 'Voir la phrase de récupération',
|
||||
seedWarning: 'C’est comme ton nsec Nostr - garde-le secret et sauvegardé !',
|
||||
},
|
||||
},
|
||||
spots: {
|
||||
addSpot: 'Ajouter un Spot',
|
||||
editSpot: 'Modifier le Spot',
|
||||
spotDetails: 'Détails du Spot',
|
||||
spotName: 'Nom du Spot',
|
||||
spotType: 'Type de Spot',
|
||||
description: 'Description',
|
||||
location: 'Emplacement',
|
||||
address: 'Adresse',
|
||||
photos: 'Photos',
|
||||
addPhotos: 'Ajouter des photos',
|
||||
obstacles: 'Obstacles',
|
||||
features: 'Caractéristiques',
|
||||
bustLevel: 'Niveau de risque',
|
||||
bestTime: 'Meilleur moment',
|
||||
tips: 'Astuces',
|
||||
reviews: 'Avis',
|
||||
addReview: 'Ajouter un avis',
|
||||
reportSpot: 'Signaler le Spot',
|
||||
directions: 'Itinéraire',
|
||||
shareSpot: 'Partager le Spot',
|
||||
createdBy: 'Créé par',
|
||||
lastUpdated: 'Dernière mise à jour',
|
||||
types: {
|
||||
park: 'Skatepark',
|
||||
street: 'Spot de rue',
|
||||
diy: 'Spot DIY',
|
||||
plaza: 'Plaza',
|
||||
indoor: 'Intérieur',
|
||||
bowl: 'Bowl',
|
||||
vert: 'Vert',
|
||||
miniramp: 'Mini Ramp',
|
||||
},
|
||||
bustLevels: {
|
||||
chill: 'Tranquille',
|
||||
moderate: 'Modéré',
|
||||
sketchy: 'Sketchy',
|
||||
heavy: 'Intense',
|
||||
},
|
||||
},
|
||||
settings: {
|
||||
title: 'Paramètres',
|
||||
profile: 'Profil',
|
||||
editProfile: 'Modifier le profil',
|
||||
account: 'Compte',
|
||||
security: 'Sécurité',
|
||||
relays: 'Relays',
|
||||
appearance: 'Apparence',
|
||||
language: 'Langue',
|
||||
notifications: 'Notifications',
|
||||
privacy: 'Confidentialité',
|
||||
about: 'À propos',
|
||||
help: 'Aide',
|
||||
feedback: 'Retours',
|
||||
version: 'Version',
|
||||
displayName: 'Nom affiché',
|
||||
username: 'Nom d’utilisateur',
|
||||
bio: 'Bio',
|
||||
website: 'Site web',
|
||||
lightningAddress: 'Adresse Lightning',
|
||||
profilePicture: 'Photo de profil',
|
||||
banner: 'Bannière',
|
||||
saveProfile: 'Enregistrer le profil',
|
||||
backupKeys: 'Sauvegarder les clés',
|
||||
exportKeys: 'Exporter les clés',
|
||||
secretKey: 'Clé secrète',
|
||||
publicKey: 'Clé publique',
|
||||
showSecretKey: 'Afficher la clé secrète',
|
||||
hideSecretKey: 'Masquer la clé secrète',
|
||||
copyKey: 'Copier la clé',
|
||||
keysBackedUp: 'Tu as confirmé que tes clés sont bien sauvegardées.',
|
||||
keysNotBackedUp: 'Assure-toi de sauvegarder ta phrase de récupération ou ta clé secrète !',
|
||||
selectLanguage: 'Choisir la langue',
|
||||
english: 'Anglais',
|
||||
spanish: 'Espagnol',
|
||||
},
|
||||
createSpot: {
|
||||
title: 'Ajouter un Spot de skate',
|
||||
subtitle: 'Partage un spot de skate avec la communauté',
|
||||
backToMap: 'Retour à la carte',
|
||||
namePlaceholder: 'ex. : Hollywood High School',
|
||||
descriptionPlaceholder: 'Décris le spot, les obstacles, les meilleurs moments pour skater, les infos de sécurité, etc.',
|
||||
addressPlaceholder: 'ex. : 1521 N Highland Ave, Los Angeles, CA',
|
||||
selectType: 'Choisir le type de Spot',
|
||||
selectBustLevel: 'Choisir le niveau de risque',
|
||||
uploadPhotos: 'Importer',
|
||||
dragDrop: 'Glisse-dépose ou clique pour importer',
|
||||
maxPhotos: '5 photos max',
|
||||
publishing: 'Publication...',
|
||||
success: 'Spot publié avec succès !',
|
||||
error: 'Échec de la publication du Spot',
|
||||
locationRequired: 'Sélectionne un emplacement sur la carte',
|
||||
useCurrentLocation: 'Utiliser ma position actuelle',
|
||||
pickOnMap: 'Choisir l’emplacement sur la carte',
|
||||
loginToAdd: 'Tu dois te connecter pour ajouter un spot de skate.',
|
||||
locationLabel: 'Emplacement',
|
||||
tapToPlace: 'Touche la carte pour placer l’épingle, ou glisse-la pour affiner.',
|
||||
manualCoords: 'Saisir les coordonnées manuellement',
|
||||
moreDetails: 'Plus de détails (facultatif)',
|
||||
photoHint: 'une photo est requise pour publier',
|
||||
nameRequired: 'Saisis un nom pour ce Spot.',
|
||||
descriptionRequired: 'Décris ce Spot.',
|
||||
addressRequired: 'Ajoute une adresse ou un nom de quartier.',
|
||||
photoRequired: 'Ajoute au moins une photo.',
|
||||
draftTitle: 'Tu as un brouillon non enregistré',
|
||||
draftBody: 'Reprends là où tu t’es arrêté, ou supprime-le.',
|
||||
draftResume: 'Reprendre',
|
||||
draftDiscard: 'Supprimer le brouillon',
|
||||
requiredFields: 'Parle-nous de ce Spot. Tous les champs marqués d’un * sont obligatoires.',
|
||||
coordinates: 'Coordonnées',
|
||||
latitudePlaceholder: 'Latitude (ex. : 34.1012)',
|
||||
longitudePlaceholder: 'Longitude (ex. : -118.3389)',
|
||||
gettingLocation: 'Localisation en cours...',
|
||||
accessType: 'Type d’accès',
|
||||
publicTitle: 'Public - Ouvert à tous',
|
||||
publicDesc: 'Skateparks, places publiques, spots de rue',
|
||||
privateTitle: 'Propriété privée - Autorisation nécessaire',
|
||||
privateDesc: 'Ramps de jardin, terrain privé, spots fermés',
|
||||
localsTitle: 'Demander aux locaux d’abord',
|
||||
localsDesc: 'Respecte le spot, ne le grille pas',
|
||||
contactInfo: 'Coordonnées de contact',
|
||||
contactPlaceholder: 'ex. : numéro de téléphone, Instagram, e-mail...',
|
||||
contactHintPrivate: 'Comment les gens peuvent-ils te contacter pour l’autorisation ?',
|
||||
contactHintLocals: 'Comment les gens peuvent-ils te contacter pour se renseigner sur le Spot ?',
|
||||
},
|
||||
marketplace: {
|
||||
title: 'Marché',
|
||||
subtitle: 'Achète, vends et échange du gear de skate',
|
||||
addListing: 'Ajouter une annonce',
|
||||
condition: 'État',
|
||||
conditions: {
|
||||
new: 'Neuf',
|
||||
likeNew: 'Comme neuf',
|
||||
good: 'Bon',
|
||||
fair: 'Correct',
|
||||
poor: 'Mauvais',
|
||||
},
|
||||
categories: {
|
||||
all: 'Tout',
|
||||
decks: 'Planches',
|
||||
trucks: 'Trucks',
|
||||
wheels: 'Roues',
|
||||
bearings: 'Roulements',
|
||||
shoes: 'Chaussures',
|
||||
clothing: 'Vêtements',
|
||||
protection: 'Protection',
|
||||
other: 'Autre',
|
||||
},
|
||||
priceRange: 'Fourchette de prix',
|
||||
location: 'Emplacement',
|
||||
seller: 'Vendeur',
|
||||
contact: 'Contacter le vendeur',
|
||||
makeOffer: 'Faire une offre',
|
||||
sold: 'Vendu',
|
||||
available: 'Disponible',
|
||||
gear: 'Gear',
|
||||
sellGear: 'Vendre du gear',
|
||||
wantToBuy: 'Je recherche',
|
||||
},
|
||||
auth: {
|
||||
login: 'Se connecter',
|
||||
logout: 'Se déconnecter',
|
||||
signUp: 'S’inscrire',
|
||||
signUpTitle: 'Nouveau sur Nostr ?',
|
||||
signUpDesc: 'Crée un nouveau compte pour commencer. C’est gratuit et ouvert.',
|
||||
orLogIn: 'Ou connecte-toi',
|
||||
loginWithExtension: 'Se connecter avec l’extension',
|
||||
loginWithAmber: 'Se connecter avec Amber (Android)',
|
||||
loginWithKey: 'Clé secrète (nsec) ou phrase de récupération',
|
||||
loginWithBunker: 'Se connecter avec Nostr Connect',
|
||||
bunkerUri: 'Chaîne de connexion Bunker',
|
||||
openAmber: 'Ouvrir Amber',
|
||||
connectToBunker: 'Se connecter au Bunker',
|
||||
noExtension: 'Aucune extension détectée.',
|
||||
extensionHelp: 'Essaie le bouton S’inscrire ci-dessus pour créer un nouveau compte, ou utilise les onglets Amber, Clé ou Bunker si tu as déjà des identifiants.',
|
||||
amberDesc: 'Amber est une application de signature Nostr sécurisée pour Android. Clique sur le bouton ci-dessous pour ouvrir Amber et autoriser l’accès.',
|
||||
bunkerDesc: 'Accède à ton compte depuis n’importe quel appareil avec un signer distant (bunker). Tes clés restent en sécurité sur le serveur, jamais exposées aux sites web.',
|
||||
keyPlaceholder: 'nsec1... ou ta phrase de récupération de 12 mots',
|
||||
keyHint: 'Tu peux coller ta clé nsec ou ta phrase de récupération de 12 mots',
|
||||
uploadKeyFile: 'Importer ton fichier de clé',
|
||||
loggingIn: 'Connexion...',
|
||||
connecting: 'Connexion...',
|
||||
verifying: 'Vérification...',
|
||||
},
|
||||
createEvent: {
|
||||
title: 'Créer un événement',
|
||||
subtitle: 'Organise un événement de skate pour la communauté',
|
||||
backToEvents: 'Retour aux événements',
|
||||
namePlaceholder: 'ex. : Summer Skate Session',
|
||||
descriptionPlaceholder: 'Décris l’événement, ce qui t’attend, les règles, les lots, etc.',
|
||||
selectType: 'Choisir le type d’événement',
|
||||
venuePlaceholder: 'ex. : Venice Beach Skatepark, CA',
|
||||
selectDate: 'Choisir la date',
|
||||
selectTime: 'Choisir l’heure',
|
||||
ticketPricePlaceholder: 'Laisse vide pour les événements gratuits',
|
||||
publishing: 'Publication...',
|
||||
success: 'Événement publié avec succès !',
|
||||
error: 'Échec de la publication de l’événement',
|
||||
loginToCreate: 'Tu dois te connecter pour créer un événement.',
|
||||
requiredFields: 'Parle-nous de cet événement. Tous les champs marqués d’un * sont obligatoires.',
|
||||
startDateTime: 'Date et heure de début',
|
||||
endDateTime: 'Date et heure de fin (facultatif)',
|
||||
coordinatesOptional: 'Coordonnées (facultatif)',
|
||||
coverImage: 'Image de couverture',
|
||||
uploadCover: 'Importer une image de couverture',
|
||||
nip05Recommended: 'Vérification NIP-05 recommandée',
|
||||
nip05Desc: 'Ajoute un identifiant NIP-05 à ton profil pour vérifier ton identité et gagner la confiance des participants.',
|
||||
addNip05: 'Ajouter un NIP-05 dans les Paramètres',
|
||||
},
|
||||
labPage: {
|
||||
title: 'The Lab',
|
||||
subtitle: 'Apprends des tricks. Capture des moments. Connecte-toi avec d’autres Skaters',
|
||||
coachesTab: 'Coaching',
|
||||
filmersTab: 'Tournage',
|
||||
offerCoaching: 'PROPOSER DU COACHING',
|
||||
offerFilming: 'PROPOSER DU TOURNAGE',
|
||||
loginToOffer: 'Connecte-toi pour proposer des services',
|
||||
whatToLearn: 'QU’EST-CE QUE TU VEUX APPRENDRE ?',
|
||||
whatContent: 'QUEL TYPE DE CONTENU ?',
|
||||
selectSkillsDesc: 'Sélectionne des compétences et on te mettra en relation avec des coachs',
|
||||
selectFilmingDesc: 'Sélectionne les services de tournage que tu recherches',
|
||||
searchPlaceholder: 'Rechercher par nom, lieu ou compétences...',
|
||||
noServicesYet: 'AUCUN SERVICE POUR LE MOMENT',
|
||||
beFirstToOffer: 'Sois le premier à proposer du coaching ou du tournage à la communauté !',
|
||||
skills: 'Compétences',
|
||||
rate: 'Tarif',
|
||||
perHour: '/heure',
|
||||
contact: 'Contacter',
|
||||
viewProfile: 'Voir le profil',
|
||||
noProfilesYet: 'Aucun profil pour le moment',
|
||||
beFirstCoach: 'Sois le premier à t’inscrire comme coach !',
|
||||
beFirstFilmer: 'Sois le premier à t’inscrire comme filmer !',
|
||||
yearsExperience: 'ans d’expérience',
|
||||
},
|
||||
skills: {
|
||||
kickflip: 'Kickflip',
|
||||
heelflip: 'Heelflip',
|
||||
ollie: 'Ollie',
|
||||
treflip: '360 Flip',
|
||||
shuvit: 'Shuvit',
|
||||
hardflip: 'Hardflip',
|
||||
varial: 'Varial',
|
||||
nollie: 'Nollie',
|
||||
fakie: 'Fakie',
|
||||
switch: 'Switch',
|
||||
grind: 'Grind',
|
||||
slide: 'Slide',
|
||||
manual: 'Manual',
|
||||
transition: 'Transition',
|
||||
bowl: 'Bowl',
|
||||
vert: 'Vert',
|
||||
street: 'Street',
|
||||
flatground: 'Flatground',
|
||||
},
|
||||
lab: {
|
||||
title: 'The Lab',
|
||||
subtitle: 'Fais passer ton skate au niveau supérieur',
|
||||
coaches: 'Coachs',
|
||||
filmers: 'Filmers',
|
||||
findCoach: 'Trouver un coach',
|
||||
becomeCoach: 'Devenir coach',
|
||||
findFilmer: 'Trouver un filmer',
|
||||
becomeFilmer: 'Devenir filmer',
|
||||
hourlyRate: 'Tarif horaire',
|
||||
experience: 'Expérience',
|
||||
specialties: 'Spécialités',
|
||||
availability: 'Disponibilité',
|
||||
bookSession: 'Réserver une session',
|
||||
contactCoach: 'Contacter le coach',
|
||||
noCoaches: 'Aucun coach trouvé dans ta région',
|
||||
noFilmers: 'Aucun filmer trouvé dans ta région',
|
||||
},
|
||||
shops: {
|
||||
title: 'Skate Shops',
|
||||
addShop: 'Ajouter un Shop',
|
||||
editShop: 'Modifier le Shop',
|
||||
shopDetails: 'Détails du Shop',
|
||||
shopName: 'Nom du Shop',
|
||||
hours: 'Horaires',
|
||||
phone: 'Téléphone',
|
||||
website: 'Site web',
|
||||
services: 'Services',
|
||||
brands: 'Marques',
|
||||
supportLocal: 'Soutiens le local',
|
||||
nip05: 'NIP-05 du Shop',
|
||||
nip05Hint: 'Un identifiant facultatif que tu contrôles pour ce Shop (ex. shop@yourdomain.com), vérifié avec ta clé. Ajoutes-en jusqu’à 5.',
|
||||
},
|
||||
becomeFilmer: {
|
||||
title: 'Devenir filmer',
|
||||
subtitle: 'Capture les meilleurs clips pour la communauté',
|
||||
bioPlaceholder: 'Parle-nous de ton expérience de tournage et de ton matériel...',
|
||||
specialtiesPlaceholder: 'ex. : fisheye, longue focale, drone, montage',
|
||||
selectSpecialties: 'Sélectionne tes spécialités',
|
||||
hourlyRate: 'Tarif horaire (sats)',
|
||||
ratePlaceholder: 'ex. : 5000',
|
||||
locationPlaceholder: 'Ta ville ou ta région',
|
||||
portfolioUrl: 'URL du portfolio',
|
||||
portfolioPlaceholder: 'Lien vers ton travail (YouTube, Instagram, etc.)',
|
||||
publishing: 'Publication du profil...',
|
||||
success: 'Profil de filmer créé !',
|
||||
error: 'Échec de la création du profil',
|
||||
},
|
||||
food: {
|
||||
title: 'Spots bouffe',
|
||||
subtitle: 'Fais le plein avant ou après ta session',
|
||||
addFood: 'Ajouter un spot bouffe',
|
||||
categories: {
|
||||
all: 'Tout',
|
||||
burgers: 'Burgers',
|
||||
pizza: 'Pizza',
|
||||
tacos: 'Tacos',
|
||||
coffee: 'Café',
|
||||
drinks: 'Boissons',
|
||||
snacks: 'Snacks',
|
||||
},
|
||||
skaterFriendly: 'Adapté aux skaters',
|
||||
nearSpots: 'Près des spots de skate',
|
||||
},
|
||||
profile: {
|
||||
posts: 'Publications',
|
||||
spots: 'Spots',
|
||||
events: 'Événements',
|
||||
following: 'Abonnements',
|
||||
followers: 'Abonnés',
|
||||
editProfile: 'Modifier le profil',
|
||||
follow: 'Suivre',
|
||||
unfollow: 'Ne plus suivre',
|
||||
noPostsYet: 'Aucune publication pour le moment',
|
||||
noBio: 'Pas encore de bio',
|
||||
zapProfile: 'Zap ce skater',
|
||||
},
|
||||
becomeCoach: {
|
||||
title: 'Devenir coach',
|
||||
subtitle: 'Partage tes compétences et aide d’autres skaters à progresser',
|
||||
bioPlaceholder: 'Parle-nous de ton parcours de skate et de ton style d’enseignement...',
|
||||
skillsPlaceholder: 'ex. : kickflip, heelflip, grinds, bowls',
|
||||
selectSkills: 'Sélectionne les compétences que tu peux enseigner',
|
||||
hourlyRate: 'Tarif horaire (sats)',
|
||||
ratePlaceholder: 'ex. : 5000',
|
||||
locationPlaceholder: 'Ta ville ou ta région',
|
||||
publishing: 'Publication du profil...',
|
||||
success: 'Profil de coach créé !',
|
||||
error: 'Échec de la création du profil',
|
||||
},
|
||||
weather: {
|
||||
title: 'Météo',
|
||||
current: 'Conditions actuelles',
|
||||
forecast: 'Prévisions',
|
||||
humidity: 'Humidité',
|
||||
wind: 'Vent',
|
||||
feelsLike: 'Ressenti',
|
||||
goodForSkating: 'Bon pour skater !',
|
||||
notIdeal: 'Conditions pas idéales',
|
||||
allWeather: 'Tous les temps',
|
||||
goodWeather: 'Beau temps',
|
||||
perfectWeather: 'Temps parfait',
|
||||
},
|
||||
errors: {
|
||||
somethingWentWrong: 'Une erreur est survenue',
|
||||
tryAgainLater: 'Réessaie plus tard',
|
||||
notFound: 'Introuvable',
|
||||
pageNotFound: 'Page introuvable',
|
||||
unauthorized: 'Non autorisé',
|
||||
loginRequired: 'Connecte-toi pour continuer',
|
||||
networkError: 'Erreur réseau',
|
||||
checkConnection: 'Vérifie ta connexion internet',
|
||||
invalidInput: 'Saisie invalide',
|
||||
requiredField: 'Ce champ est obligatoire',
|
||||
},
|
||||
time: {
|
||||
today: 'Aujourd’hui',
|
||||
yesterday: 'Hier',
|
||||
tomorrow: 'Demain',
|
||||
thisWeek: 'Cette semaine',
|
||||
nextWeek: 'La semaine prochaine',
|
||||
thisMonth: 'Ce mois-ci',
|
||||
justNow: 'À l’instant',
|
||||
minutesAgo: 'il y a {{count}} minutes',
|
||||
hoursAgo: 'il y a {{count}} heures',
|
||||
daysAgo: 'il y a {{count}} jours',
|
||||
},
|
||||
spotDetail: {
|
||||
postedBy: 'Publié par',
|
||||
getDirections: 'Obtenir l’itinéraire',
|
||||
reviews: 'Avis',
|
||||
noReviews: 'Aucun avis pour le moment',
|
||||
beFirstReview: 'Sois le premier à donner ton avis sur ce Spot !',
|
||||
writeReview: 'Écrire un avis',
|
||||
submitReview: 'Envoyer l’avis',
|
||||
rating: 'Note',
|
||||
reviewPlaceholder: 'Partage ton expérience à ce Spot...',
|
||||
relatedSpots: 'Spots à proximité',
|
||||
},
|
||||
eventDetail: {
|
||||
organizedBy: 'Organisé par',
|
||||
eventInfo: 'Infos de l’événement',
|
||||
location: 'Lieu',
|
||||
dateTime: 'Date et heure',
|
||||
price: 'Prix',
|
||||
attendeeCount: '{{count}} participants',
|
||||
interested: 'Intéressé',
|
||||
going: 'Participe',
|
||||
notGoing: 'Ne participe pas',
|
||||
share: 'Partager l’événement',
|
||||
},
|
||||
venueAccess: {
|
||||
title: 'Pass d’accès',
|
||||
desc: 'Émet un pass signé pour un rider afin qu’il puisse prouver son accès à l’entrée — il montre sa carte et n’importe qui peut scanner le QR pour la vérifier.',
|
||||
active: '{{count}} actif(s)',
|
||||
revoked: '{{count}} révoqué(s)',
|
||||
issue: 'Émettre un pass',
|
||||
verifyHint: 'Vérifié par scan — aucune app ni compte nécessaire pour contrôler.',
|
||||
publicTitle: 'Pass d’accès',
|
||||
publicDesc: 'Ce lieu émet des pass d’accès. Scanne la carte d’un rider à l’entrée pour la vérifier.',
|
||||
badge: 'Pass',
|
||||
sellerHint: 'Le lieu de ce vendeur émet des pass d’accès',
|
||||
},
|
||||
zaps: {
|
||||
zapButton: 'Zap',
|
||||
sendZap: 'Envoyer un Zap',
|
||||
zapAmount: 'Montant du Zap',
|
||||
customAmount: 'Montant personnalisé',
|
||||
addMessage: 'Ajouter un message (facultatif)',
|
||||
sending: 'Envoi...',
|
||||
sent: 'Zap envoyé !',
|
||||
failed: 'Échec du Zap',
|
||||
received: 'Tu as reçu un Zap !',
|
||||
},
|
||||
rewards: {
|
||||
title: 'Récompenses',
|
||||
yourPoints: 'Tes points',
|
||||
earnPoints: 'Gagner des points',
|
||||
redeemPoints: 'Échanger des points',
|
||||
leaderboard: 'Classement',
|
||||
achievements: 'Succès',
|
||||
dailyTasks: 'Tâches quotidiennes',
|
||||
weeklyTasks: 'Tâches hebdomadaires',
|
||||
},
|
||||
errorsUi: {
|
||||
slammedTitle: 'Slam',
|
||||
slammedBody: 'Quelque chose a fait trébucher cet écran. Ton compte et tes données sont en sécurité — on te remet en selle.',
|
||||
tryAgain: 'Réessayer',
|
||||
reloadApp: 'Recharger l’app',
|
||||
pageSlammedTitle: 'Cette page a slammé',
|
||||
pageSlammedBody: 'Quelque chose sur cet écran a fait trébucher. Ton compte et tes données sont en sécurité. Un simple rechargement règle souvent le problème.',
|
||||
reload: 'Recharger',
|
||||
goBack: 'Retour',
|
||||
},
|
||||
backup: {
|
||||
title: 'Sauvegarde ta connexion',
|
||||
subtitle: 'Ça prend 10 secondes — à faire une fois',
|
||||
message: 'Ton code de récupération est le seul moyen de revenir dans ton compte. Sauvegarde-le et tu pourras te connecter sur n’importe quel appareil.',
|
||||
warning: 'Perds-le et il n’y a pas de réinitialisation — pas d’e-mail, pas de récupération de mot de passe.',
|
||||
backupNow: 'Sauvegarder maintenant',
|
||||
confirmed: 'Je l’ai sauvegardé',
|
||||
remindLater: 'Plus tard',
|
||||
},
|
||||
bootUi: {
|
||||
ariaLoading: 'Chargement de SkateSpots',
|
||||
ariaReady: 'SkateSpots prêt',
|
||||
ready: 'Prêt',
|
||||
statusWaking: 'Réveil du réseau',
|
||||
statusTuning: 'Accord des relays',
|
||||
statusPulling: 'Récupération des spots',
|
||||
statusDropping: 'Arrivée imminente',
|
||||
},
|
||||
footer: {
|
||||
vibedWith: 'Vibes avec',
|
||||
poweredBy: 'Propulsé par',
|
||||
openSource: 'Open Source',
|
||||
contribute: 'Contribuer',
|
||||
decentralized: 'Décentralisé',
|
||||
communityOwned: 'Appartient à la communauté',
|
||||
},
|
||||
role: {
|
||||
owner: 'Propriétaire',
|
||||
admin: 'Admin',
|
||||
organiser: 'Organisateur',
|
||||
verifiedOwner: 'Propriétaire vérifié',
|
||||
},
|
||||
nfc: {
|
||||
write: 'Écrire sur une balise NFC',
|
||||
written: 'Balise écrite',
|
||||
writtenDesc: 'Approche la balise d’un téléphone pour ouvrir la page de vérification.',
|
||||
failed: 'Impossible d’écrire sur la balise',
|
||||
},
|
||||
collectionUi: {
|
||||
namePlaceholder: 'Voyage à Barcelone 2024',
|
||||
descriptionPlaceholder: 'Mes spots préférés de mon voyage à Barcelone...',
|
||||
},
|
||||
toastsUi: {
|
||||
followingSuccess: 'Abonnement réussi',
|
||||
followingSuccessDesc: 'Cet utilisateur fait maintenant partie de ton réseau',
|
||||
followFailed: 'Échec de l’abonnement',
|
||||
unfollowSuccess: 'Désabonnement réussi',
|
||||
unfollowSuccessDesc: 'Retiré de ton réseau',
|
||||
unfollowFailed: 'Échec du désabonnement',
|
||||
reportThanks: 'Merci — envoyé pour examen',
|
||||
reportFailed: 'Impossible d’envoyer le signalement',
|
||||
savedOffline: 'Enregistré hors ligne',
|
||||
savedOfflineDesc: 'On le publiera automatiquement quand tu seras de nouveau en ligne.',
|
||||
cacheCleaned: 'Cache nettoyé',
|
||||
cacheCleanedDesc: '{{count}} anciens spots retirés du cache',
|
||||
cacheCleared: 'Cache vidé',
|
||||
cacheClearedDesc: 'Tous les spots en cache ont été supprimés',
|
||||
backOnline: 'De nouveau en ligne',
|
||||
backOnlineDesc: '{{count}} action(s) enregistrée(s) envoyée(s).',
|
||||
postQueued: 'Publication en file',
|
||||
postQueuedDesc: 'Ta publication sera publiée quand tu seras de nouveau en ligne',
|
||||
invalidIdentifier: 'Identifiant invalide. Utilise npub1..., user@domain.com, ou une clé publique hex',
|
||||
notASpotThanks: 'Merci — envoyé pour examen',
|
||||
notASpotThanksDesc: 'Pas de rancune : ça signale l’épingle comme hors sujet pour que chacun puisse décider.',
|
||||
notASpotFailed: 'Impossible d’envoyer le signalement',
|
||||
pleaseTryAgain: 'Réessaie.',
|
||||
relayUnreachable: 'Impossible d’atteindre un relay — vérifie ta connexion et réessaie.',
|
||||
loginToReport: 'Connecte-toi pour signaler un Spot.',
|
||||
zapLoginRequired: 'Connexion requise',
|
||||
zapLoginRequiredDesc: 'Tu dois être connecté pour envoyer un Zap.',
|
||||
zapEventNotFound: 'Événement introuvable',
|
||||
zapEventNotFoundDesc: 'Impossible de trouver l’événement à zapper.',
|
||||
zapAuthorNotFound: 'Auteur introuvable',
|
||||
zapAuthorNotFoundDesc: 'Impossible de trouver l’auteur de cet élément.',
|
||||
zapSuccess: 'Zap réussi !',
|
||||
zapSuccessNwcDesc: 'Tu as envoyé {{amount}} sats à l’auteur via NWC.',
|
||||
zapSuccessDesc: 'Tu as envoyé {{amount}} sats à l’auteur.',
|
||||
zapStatusUnknown: 'Statut du paiement inconnu',
|
||||
zapStatusUnknownDesc: 'Ton portefeuille est peut-être encore en train de régler ce Zap. Vérifie ton portefeuille avant de réessayer — ne paie pas deux fois.',
|
||||
zapNwcFailed: 'Échec du paiement NWC',
|
||||
zapWeblnFailed: 'Échec du paiement WebLN',
|
||||
zapFallingBack: '{{error}}. Retour aux autres méthodes de paiement...',
|
||||
zapFailed: 'Échec du Zap',
|
||||
zapUnknownNwcError: 'Erreur NWC inconnue',
|
||||
zapUnknownWeblnError: 'Erreur WebLN inconnue',
|
||||
nwcInvalidUri: 'URI NWC invalide',
|
||||
nwcInvalidUriDesc: 'Vérifie la chaîne de connexion et réessaie.',
|
||||
nwcExists: 'La connexion existe déjà',
|
||||
nwcExistsDesc: 'Ce portefeuille est déjà connecté.',
|
||||
nwcConnected: 'Portefeuille connecté',
|
||||
nwcConnectedDesc: 'Connexion réussie à {{alias}}.',
|
||||
nwcFailed: 'Échec de la connexion',
|
||||
nwcFailedDesc: 'Impossible de se connecter au portefeuille : {{error}}',
|
||||
nwcUnknownError: 'Une erreur inconnue est survenue',
|
||||
nwcDisconnected: 'Portefeuille déconnecté',
|
||||
nwcDisconnectedDesc: 'La connexion au portefeuille a été supprimée.',
|
||||
deleteApproveAmber: 'Approuve dans Amber',
|
||||
deleteApproveAmberDesc: 'Amber va s’ouvrir — touche Approuver pour confirmer la suppression.',
|
||||
deleteCancelled: 'Annulé',
|
||||
deleteCancelledDesc: 'Tu as rejeté la demande dans Amber.',
|
||||
deleteCouldntSign: 'Impossible de signer',
|
||||
deletePublishing: 'Étape 2/2 : publication…',
|
||||
deletePublishingDesc: 'Envoi de la suppression aux relays.',
|
||||
deleteStuck: 'Bloqué à PUBLICATION',
|
||||
deleteStuckDesc: 'Échec de l’étape relay : {{error}}. La signature a réussi ; le relay n’a pas confirmé.',
|
||||
stashMerged: 'Modifications fusionnées depuis un autre appareil',
|
||||
stashMergedDesc: 'Ton Stash a été modifié ailleurs — les deux ensembles de modifications ont été conservés.',
|
||||
statusUpdated: 'Statut mis à jour !',
|
||||
statusUpdatedDesc: 'Ton statut de skate est maintenant visible par les autres.',
|
||||
statusFailed: 'Échec de la définition du statut',
|
||||
statusCleared: 'Statut effacé',
|
||||
statusClearedDesc: 'Ton statut a été supprimé.',
|
||||
statusClearFailed: 'Échec de l’effacement du statut',
|
||||
nutzapEnabled: 'Réception Nutzap activée',
|
||||
nutzapEnabledDesc: 'Tu peux maintenant recevoir des Zaps ecash !',
|
||||
nutzapSetupFailed: 'Échec de la configuration',
|
||||
nutzapUnavailable: 'Envoi Nutzap indisponible',
|
||||
tokenReceived: 'Jeton reçu',
|
||||
tokenReceivedDesc: 'Jeton Cashu échangé avec succès !',
|
||||
receiveFailed: 'Échec de la réception',
|
||||
invalidAmount: 'Montant invalide',
|
||||
invalidAmountDesc: 'Saisis un montant valide',
|
||||
tokenCreated: 'Jeton créé',
|
||||
sendFailed: 'Échec de l’envoi',
|
||||
mintAdded: 'Mint ajouté',
|
||||
mintAddedDesc: 'Mint ajouté et approuvé avec succès',
|
||||
mintAddFailed: 'Échec de l’ajout du mint',
|
||||
mintRemoved: 'Mint supprimé',
|
||||
mintRemoveFailed: 'Échec de la suppression du mint',
|
||||
paymentReceived: 'Paiement reçu',
|
||||
paymentReceivedDesc: '{{amount}} sats reçus avec succès !',
|
||||
paymentSent: 'Paiement envoyé',
|
||||
paymentSentDesc: 'Paiement Lightning effectué avec succès',
|
||||
loginRequired: 'Connexion requise',
|
||||
loginToFollowFounder: 'Connecte-toi pour suivre le fondateur',
|
||||
alreadyFollowing: 'Déjà abonné',
|
||||
alreadyFollowingDesc: 'Tu suis déjà {{name}} !',
|
||||
couldNotComplete: 'Impossible de terminer ça',
|
||||
tryAgainLower: 'Réessaie.',
|
||||
couldNotLoadProfile: 'Impossible de charger le profil',
|
||||
couldNotLoadProfileDesc: 'Vérifie ta connexion internet et actualise.',
|
||||
undone: 'Annulé',
|
||||
undoneDesc: 'Retour à neutre — ni masqué, ni approuvé.',
|
||||
confirmed: 'Confirmé',
|
||||
confirmedDesc: 'Approuvé — ça sort de cette file.',
|
||||
hiddenToast: 'Masqué',
|
||||
couldNotUndo: 'Impossible d’annuler',
|
||||
couldNotConfirm: 'Impossible de confirmer',
|
||||
deleteFailed: 'Échec de la suppression',
|
||||
somethingWentWrong: 'Une erreur est survenue',
|
||||
},
|
||||
seoUi: {
|
||||
becomeBuilderTitle: 'Devenir constructeur - SkateSpots',
|
||||
becomeBuilderDesc: 'Répertorie tes services de construction de ramps, parks et DIY — ce que tu construis, les matériaux et l’échelle.',
|
||||
tradesTitle: 'Mes échanges — SkateSpots',
|
||||
tradesDesc: 'Gère tes échanges sur le marché, tes confirmations et ta réputation.',
|
||||
eventsTitle: 'Événements et tours de skate - SkateSpots',
|
||||
eventsDesc: 'Découvre les événements, compétitions, tours et sessions de skate près de chez toi.',
|
||||
editShopDesc: 'Modifie ton skate shop.',
|
||||
createTourDesc: 'Organise des tours de skate - tours de spots cachés locaux, road trips nationaux, aventures internationales, ou compétitions de destruction à la KOTR.',
|
||||
deckDesignerTitle: 'Designer de planches — SkateSpots DIY',
|
||||
deckDesignerDesc: 'Dessine le contour d’un skateboard ou longboard, puis exporte un gabarit imprimable 1:1, un SVG ou un DXF — concave, kicks, empattement et trous de trucks inclus.',
|
||||
createEventTitle: 'Créer un événement de skate - SkateSpots',
|
||||
createEventDesc: 'Crée un nouvel événement de skate pour la communauté.',
|
||||
editTourDesc: 'Modifie ton tour de skate — mets à jour les étapes, les dates et les détails.',
|
||||
walletTitle: 'Portefeuille - SkateSpots',
|
||||
walletDesc: 'Connecte ton portefeuille Lightning pour envoyer des Zaps aux skaters et aux créateurs de spots.',
|
||||
becomePhotographerTitle: 'Devenir photographe - SkateSpots',
|
||||
becomePhotographerDesc: 'Crée ton profil de photographe de skate — appareils, objectifs, éclairage et services.',
|
||||
newsletterTitle: 'Newsletter - SkateSpots',
|
||||
newsletterDesc: 'Chaque semaine, des nouvelles de la communauté SkateSpots. Mises à jour de l’app, nouveaux spots, événements et les personnes qui font vivre le skate.',
|
||||
homeTitle: 'SkateSpots - Découvre des spots de skate dans le monde entier',
|
||||
zapLeaderboardTitle: 'Classements des Zaps - SkateSpots',
|
||||
zapLeaderboardDesc: 'Les spots de skate les plus zappés et les membres de la communauté qui les soutiennent.',
|
||||
adminReviewTitle: 'File de modération — SkateSpots',
|
||||
gearSwapTitle: 'Échange de gear - SkateSpots',
|
||||
gearSwapDesc: 'Achète et vends du gear de skate d’occasion avec d’autres skaters. Planches, trucks, roues, chaussures et plus.',
|
||||
donateTitle: 'Faire un don — SkateSpots',
|
||||
donateDesc: 'Soutiens SkateSpots — Lightning, on-chain privé (paiements silencieux), ou finance la construction sur Angor.',
|
||||
verifyCardTitle: 'Vérifier — SkateSpots',
|
||||
verifyCardDesc: 'Vérifie une carte SkateSpots ou un pass d’accès.',
|
||||
mapTitle: 'Carte des spots de skate - SkateSpots',
|
||||
mapDesc: 'Explore les spots de skate du monde entier sur notre carte interactive.',
|
||||
diyTitle: 'DIY — Fabrique le tien | SkateSpots',
|
||||
diyDesc: 'Guides, outils ouverts et plans pour fabriquer tes propres skateboards, ramps et spots en béton — ainsi que les personnes et les lieux pour le faire.',
|
||||
appShopTitle: 'Boutique de l’app — SkateSpots',
|
||||
becomeSkaterTitle: 'Rejoins l’annuaire des skaters - SkateSpots',
|
||||
becomeSkaterDesc: 'Crée ton profil de skater pour que la communauté puisse te trouver.',
|
||||
marketplaceTitle: 'Marché - SkateSpots',
|
||||
marketplaceDesc: 'Achète et vends du gear de skate sur le Plebeian Market décentralisé.',
|
||||
becomeEditorTitle: 'Devenir monteur vidéo - SkateSpots',
|
||||
becomeEditorDesc: 'Crée ton profil de monteur vidéo de skate sur SkateSpots.',
|
||||
amberCallbackTitle: 'Connexion avec Amber - SkateSpots',
|
||||
amberCallbackDesc: 'Finalisation de ta connexion Amber (NIP-55).',
|
||||
supportersTitle: 'Soutiens - SkateSpots',
|
||||
supportersDesc: 'La communauté qui fait vivre SkateSpots — soutiens, collaborateurs, partenaires et amis.',
|
||||
becomeCoachTitle: 'Devenir coach - SkateSpots',
|
||||
becomeCoachDesc: 'Crée ton profil de coach de skate.',
|
||||
riderCardTitle: 'Carte de skater — SkateSpots',
|
||||
riderCardDesc: 'Crée ta licence de skater ou ta carte d’accès au park SkateSpots imprimable.',
|
||||
editEventDesc: 'Modifie ton événement de skate.',
|
||||
createShopTitle: 'Ajouter un skate shop - SkateSpots',
|
||||
createShopDesc: 'Ajoute ton skate shop à la communauté.',
|
||||
deckCostTitle: 'Calculateur de coût de planche — SkateSpots DIY',
|
||||
deckCostDesc: 'Calcule ce que coûte la fabrication d’une planche — main-d’œuvre, équipement, matériaux, temps de process, emballage et marge — et un prix de vente juste.',
|
||||
pyramidTitle: 'Classements Pyramid - SkateSpots',
|
||||
pyramidDesc: 'Meilleurs contributeurs et leaders de la communauté.',
|
||||
foodTitle: 'Bouffe près des spots - SkateSpots',
|
||||
foodDesc: 'Trouve des restaurants, cafés et options de bouffe près des spots de skate.',
|
||||
createListingTitle: 'Mettre du gear en vente - SkateSpots',
|
||||
createListingDesc: 'Mets du gear de skate en vente ou trouve le gear que tu veux acheter.',
|
||||
becomeFilmerTitle: 'Devenir filmer - SkateSpots',
|
||||
becomeFilmerDesc: 'Crée ton profil de filmer de skate.',
|
||||
skatersTitle: 'Skaters - SkateSpots',
|
||||
skatersDesc: 'Découvre les skaters de la communauté SkateSpots. Parcours par style, stance, niveau et lieu.',
|
||||
communityStatsTitle: 'Stats de la communauté — SkateSpots',
|
||||
communityStatsDesc: 'Métriques en direct de la communauté SkateSpots — spots, événements, coachs, filmers, monteurs, tours et croissance dans le temps. Récupérées directement depuis Nostr.',
|
||||
labTitle: 'The Lab - SkateSpots',
|
||||
labDesc: 'Trouve des coachs, filmers, photographes et monteurs vidéo de skate.',
|
||||
stashTitle: 'Mon Stash - SkateSpots',
|
||||
stashDesc: 'Gère ton inventaire privé de gear. Suis ce que tu possèdes, ce que tu veux vendre ou échanger.',
|
||||
bountyLeaderboardTitle: 'Cartographie et gagne - SkateSpots',
|
||||
bountyLeaderboardDesc: 'Cartographie des spots de skate et des shops, gagne des Zaps de la communauté. Découvre les meilleurs contributeurs.',
|
||||
spotCollectionsTitle: 'Mes collections de spots - SkateSpots',
|
||||
spotCollectionsDesc: 'Organise tes spots de skate préférés en collections personnalisées',
|
||||
mintsTitle: 'Mints Cashu — SkateSpots',
|
||||
mintsDesc: 'Parcours les mints Cashu, vérifie leur santé et ajoutes-en un à ton portefeuille.',
|
||||
},
|
||||
miscUi: {
|
||||
openingCamera: 'Ouverture de la caméra…',
|
||||
usePhoneCamera: 'Utilise l’appareil photo de ton téléphone, puis reviens ici',
|
||||
startingCamera: 'Démarrage de la caméra...',
|
||||
cameraAccessRequired: 'Accès à la caméra requis',
|
||||
cameraAccessHint: 'Autorise l’accès à la caméra dans les réglages de ton navigateur, ou utilise le sélecteur de fichiers ci-dessous.',
|
||||
cameraErrorTitle: 'Erreur de caméra',
|
||||
cameraErrorDesc: 'Impossible d’ouvrir la caméra. Vérifie les autorisations de l’app dans les Paramètres.',
|
||||
cameraDeniedTitle: 'Accès à la caméra refusé',
|
||||
cameraDeniedDesc: 'Autorise l’accès à la caméra dans les réglages de ton navigateur.',
|
||||
uploadFromGallery: 'Importer depuis la galerie',
|
||||
uploading: 'Importation...',
|
||||
usePhoto: 'Utiliser la photo',
|
||||
earningPotential: 'Potentiel de revenus',
|
||||
qualityExcellent: 'Excellent !',
|
||||
qualityGood: 'Bon',
|
||||
qualityBasic: 'Basique',
|
||||
qualityGettingStarted: 'Pour commencer',
|
||||
qualityLocationAdded: 'Lieu ajouté',
|
||||
qualityOnePhoto: 'Au moins 1 photo',
|
||||
qualityThreePhotos: '3+ photos',
|
||||
qualityMoreAngles: 'Plus d’angles = mieux',
|
||||
qualityDescription: 'Description',
|
||||
qualityDetailedDesc: 'Description détaillée (100+ caractères)',
|
||||
qualityContact: 'Infos de contact',
|
||||
qualityPhoneOrWebsite: 'Téléphone ou site web',
|
||||
qualityHours: 'Horaires d’ouverture',
|
||||
qualitySpotType: 'Type de Spot sélectionné',
|
||||
failedToLoadComments: 'Échec du chargement des commentaires',
|
||||
commentsTitle: 'Commentaires',
|
||||
noCommentsYet: 'Aucun commentaire pour le moment',
|
||||
beFirstComment: 'Sois le premier à partager ton avis !',
|
||||
removeMember: 'Retirer le membre',
|
||||
whoIsThisFor: 'Pour qui est ce profil ?',
|
||||
individual: 'Individuel',
|
||||
individualDesc: 'Une seule personne',
|
||||
collective: 'Collectif',
|
||||
collectiveDesc: 'Crew, studio ou entreprise',
|
||||
membersLabel: 'Membres',
|
||||
dismissReport: 'Ignorer le signalement',
|
||||
reportedBy: 'signalé par',
|
||||
completingLoginAmber: 'Finalisation de la connexion avec Amber...',
|
||||
entityMembersHint: 'Ajoute les comptes Nostr de ton crew. Chaque membre confirme son propre Spot avec sa clé — jusque-là, ils apparaissent comme « en attente ».',
|
||||
entityVerifiedHint: 'L’appartenance est vérifiée membre par membre — personne ne peut être ajouté à ton crew sans confirmer depuis son propre compte.',
|
||||
entityInvalidPubkey: 'Saisis un npub, nprofile, ou une clé publique hex de 64 caractères valide.',
|
||||
entityAlreadyAdded: 'Ce membre est déjà ajouté.',
|
||||
offline: 'Hors ligne',
|
||||
connected: 'Connecté',
|
||||
offlineMode: 'Mode hors ligne',
|
||||
allFeaturesAvailable: 'Toutes les fonctionnalités disponibles',
|
||||
browsingCachedSpots: 'Navigation dans les spots en cache',
|
||||
queuedActions: '{{count}} action(s) en file',
|
||||
syncing: 'Synchronisation',
|
||||
publishingWhenStable: 'Publication dès que la connexion se stabilise...',
|
||||
willPublishOnline: 'Sera publié une fois de nouveau en ligne',
|
||||
availableOffline: 'Disponible hors ligne :',
|
||||
offlineBrowseSpots: 'Parcourir les spots déjà consultés',
|
||||
offlineViewDetails: 'Voir les détails des spots en cache',
|
||||
offlineKeepActing: 'Continue d’agir — publications, RSVP, annonces et messages sont mis en file et envoyés dès que tu te reconnectes',
|
||||
},
|
||||
sasquatchGuide: {
|
||||
homeTitle: 'Bienvenue sur SkateSpots ! 🦧',
|
||||
homeMessage: 'Yo, je suis The Sasquatch. Gardien des planches, des spots et des rides sauvages. Bienvenue dans le monde du skate indompté sur Nostr — pas de costumes, pas de pubs, juste des skaters qui tracent leur propre voie. Ici, tu possèdes tes tricks, tes données, et tu peux même gagner des Bitcoin en laissant ta marque. Connecte-toi avec des skaters de ton quartier ou du monde entier. Pas de règles hormis le shred, aucune trace hormis la tienne.',
|
||||
homeQ1: 'Organise-moi 3 jours à Barcelone',
|
||||
homeQ2: 'Trouve des spots pour débutants',
|
||||
homeQ3: 'Des événements à venir ?',
|
||||
homeQ4: 'Stats de la communauté',
|
||||
homeQ5: 'Trouve des coachs près de moi',
|
||||
homeQ6: 'Du gear à vendre ?',
|
||||
homeQ7: 'C’est quoi Nostr ?',
|
||||
homeQ8: 'C’est gratuit ?',
|
||||
homeLearnMore: 'En savoir plus',
|
||||
onboardingTitle: 'Pour commencer 🚀',
|
||||
onboardingMessage: 'Laisse-moi t’expliquer les bases ! Nostr est ton identité, Bitcoin Lightning te permet de gagner des sats pour tes contributions, et les Zaps sont des pourboires instantanés. Pose-moi n’importe quelle question pour démarrer !',
|
||||
onboardingQ1: 'Comment se connecter ?',
|
||||
onboardingQ2: 'C’est quoi Nostr ?',
|
||||
onboardingQ3: 'Comment fonctionne Nostr ?',
|
||||
onboardingQ4: 'C’est quoi Cashu ?',
|
||||
onboardingQ5: 'Comment utiliser le portefeuille Cashu ?',
|
||||
onboardingQ6: 'C’est quoi les mints ?',
|
||||
onboardingQ7: 'C’est quoi les Zaps ?',
|
||||
onboardingQ8: 'C’est quoi NWC ?',
|
||||
onboardingStart: 'Commencer à explorer',
|
||||
onboardingLogin: 'Connecte-toi pour commencer',
|
||||
labTitle: 'Bienvenue dans The Lab ! 🎓',
|
||||
labMessage: 'C’est ici que la magie opère ! Trouve des coachs qui peuvent t’apprendre de tout, du kickflip au darkslide, ou connecte-toi avec des filmers pour capturer tes meilleures sessions. Filtre par compétences, consulte leur expérience et réserve une session. Rappelle-toi — tout le monde a commencé quelque part !',
|
||||
labQ1: 'Trouver des coachs',
|
||||
labQ2: 'Trouver des filmers',
|
||||
labQ3: 'Trouver des photographes',
|
||||
labQ4: 'Trouver des monteurs vidéo',
|
||||
labQ5: 'Trouver un constructeur de ramps',
|
||||
labQ6: 'C’est quoi The Lab ?',
|
||||
labQ7: 'C’est quoi un builder ?',
|
||||
labQ8: 'Comment proposer du coaching ?',
|
||||
labLogin: 'Connecte-toi pour proposer des services',
|
||||
crewsTitle: 'Crews 🤘',
|
||||
crewsMessage: 'Les Crews sont ta famille de skate ancrée sur la carte — les personnes avec qui tu skates, pas celles que tu embauches. Chaque crew a son territoire sur la carte, ses spots, ses membres et un manifeste. Les membres confirment depuis leurs propres clés, donc la liste est légitime. Lance le tien ou trouve les tiens !',
|
||||
crewsQ1: 'C’est quoi les crews ?',
|
||||
crewsQ2: 'Comment lancer un crew ?',
|
||||
crewsQ3: 'En quoi un crew est différent de The Lab ?',
|
||||
crewsQ4: 'Comment les membres confirment ?',
|
||||
crewsQ5: 'C’est quoi Nostr ?',
|
||||
crewsQ6: 'Comment marchent les Zaps ?',
|
||||
crewsLogin: 'Connecte-toi pour créer un Crew',
|
||||
},
|
||||
supportUi: {
|
||||
keepMapFree: 'Garde la carte gratuite',
|
||||
keepMapFreeDesc: 'Pas de pubs, pas de tracking, pas de VC. Tes sats financent l’hébergement, le nœud IA et le relay.',
|
||||
thankYou: 'Merci ! ⚡',
|
||||
satsKeepMapFree: 'Tes sats gardent la carte gratuite.',
|
||||
keptFreeNext: 'Tu viens de garder SkateSpots gratuit pour le prochain skater.',
|
||||
scanToPay: 'Scanne pour payer',
|
||||
zapSkateSpots: 'Zap SkateSpots',
|
||||
payQuietly: 'Payer discrètement',
|
||||
pickAmount: 'Choisis un montant',
|
||||
enterAmount: 'Indique combien de sats tu veux envoyer.',
|
||||
couldNotStartPayment: 'Impossible de lancer le paiement.',
|
||||
customAmountAria: 'Montant personnalisé en sats',
|
||||
commentPlaceholder: 'Dis quelque chose (facultatif — Zaps publics uniquement)',
|
||||
publicZapTitle: 'Zap public avec ton commentaire',
|
||||
loginToZapTitle: 'Connecte-toi pour envoyer un Zap public',
|
||||
anonymousTitle: 'Anonyme — pas de connexion, pas de trace',
|
||||
copyLightningTitle: 'Copier l’adresse Lightning',
|
||||
copiedSuffix: '{{label}} copié',
|
||||
invoiceLabel: 'Facture',
|
||||
addressLabel: 'Adresse',
|
||||
notAPurchase: 'Soutien, pas un achat — ça n’achète rien et il n’y a pas de remboursement. Les goodies et Sasquatch Pro sont séparés. Ta position et ton identité ne sont jamais impliquées dans un paiement discret.',
|
||||
},
|
||||
statusUi: {
|
||||
quickStatus: 'Statut rapide',
|
||||
skating: 'En skate',
|
||||
skatingDesc: 'En train de skater',
|
||||
filming: 'Tournage',
|
||||
filmingDesc: 'Tourne des tricks',
|
||||
lookingForSesh: 'Cherche une session',
|
||||
lookingForSeshDesc: 'Veut skater avec d’autres',
|
||||
coaching: 'Coaching',
|
||||
coachingDesc: 'Enseigne/coache',
|
||||
chilling: 'Chill',
|
||||
chillingDesc: 'Traîne au spot',
|
||||
onMyWay: 'En route',
|
||||
onMyWayDesc: 'Se dirige vers un spot',
|
||||
takingABreak: 'Pause',
|
||||
takingABreakDesc: 'Repos/hydratation',
|
||||
doneForToday: 'Fini pour aujourd’hui',
|
||||
doneForTodayDesc: 'A fini de skater',
|
||||
},
|
||||
};
|
||||
|
||||
export default frBatch7;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,622 @@
|
|||
/** fr — batch 8. Filled by the translation pass; empty until then. */
|
||||
const frBatch8 = {};
|
||||
/** fr — batch 8. Filled by the translation pass. */
|
||||
const frBatch8 = {
|
||||
deckCostUi: {
|
||||
presetPrompt: 'Nommer ce préréglage',
|
||||
presetDefaultName: 'Préréglage {{n}}',
|
||||
summaryCopied: 'Résumé copié',
|
||||
couldNotCopy: 'Impossible de copier',
|
||||
resetConfirm: 'Réinitialiser tout aux valeurs de l’exemple ?',
|
||||
logoTooLarge: 'Logo trop volumineux (max 500 Ko)',
|
||||
loginToFill: 'Connecte-toi pour remplir depuis ton profil Nostr',
|
||||
filledFromProfile: 'Rempli depuis ton profil Nostr',
|
||||
warnRetailBelowOne: 'La marge de vente est inférieure à 1× — tu vendrais à perte.',
|
||||
warnWholesaleAboveRetail: 'La marge de gros devrait être inférieure à la marge de vente.',
|
||||
warnZeroBoards: '{{count}} ligne(s) utilisent 0 planche — le coût de cette ligne est ignoré.',
|
||||
warnFixedNoBoards: 'Des coûts mensuels fixes sont définis mais le nombre de planches/mois est 0, donc le coût d’exploitation est ignoré.',
|
||||
warnNoMaterials: 'Aucun coût de matériaux — ajoute au moins un matériau.',
|
||||
warnEquipmentOverhead: 'L’équipement + les frais généraux dépassent 60 % du coût — ce modèle suppose un gros volume ; vérifie ton nombre de planches.',
|
||||
warnOneBoard: 'Une partie de l’équipement est répartie sur une seule planche — augmente son nombre de planches pour l’amortir.',
|
||||
templateStarterName: 'Débutant loisir',
|
||||
templateStarterBlurb: 'Quelques lignes, aucun coût fixe',
|
||||
templateShopName: 'Petit atelier',
|
||||
templateShopBlurb: 'Feuille complète avec loyer et frais généraux',
|
||||
currency: 'Devise',
|
||||
noCurrencyMatches: 'Aucune devise correspondante.',
|
||||
ratesUnavailable: 'Taux en direct indisponibles — le changement ne fait que réétiqueter.',
|
||||
liveRates: 'taux BTC en direct · sats inclus',
|
||||
chipCost: 'coût',
|
||||
chipSell: 'vente',
|
||||
chipTotal: 'total',
|
||||
startFrom: 'Partir de',
|
||||
advancedToggleHint: 'Afficher les taux par opération et les chutes, la configuration par lot, la taxe et la courbe coût-quantité',
|
||||
advanced: 'Avancé',
|
||||
simple: 'Simple',
|
||||
sectionLabor: 'Main-d’œuvre',
|
||||
sectionEquipment: 'Équipement',
|
||||
sectionOperations: 'Frais d’exploitation',
|
||||
sectionMaterials: 'Matériaux',
|
||||
sectionProcesses: 'Coûts de traitement',
|
||||
sectionPackaging: 'Emballage',
|
||||
sectionMargins: 'Marges',
|
||||
subtotalLoaded: '{{value}}/h chargé',
|
||||
subtotalPerBoard: '{{value}}/planche',
|
||||
hourlyRate: 'Taux horaire ({{unit}})',
|
||||
labourBurden: 'Charges sur la main-d’œuvre (×)',
|
||||
loadedRate: 'Taux chargé',
|
||||
loadedRateHintBefore: 'Taux chargé = salaire × charges (impôts et assurances patronales sur la main-d’œuvre). Le loyer et les factures vont sous ',
|
||||
loadedRateHintAfter: ' — ne les compte pas deux fois.',
|
||||
colEquipment: 'Équipement',
|
||||
colCostUnit: 'Coût ({{unit}})',
|
||||
colCost: 'Coût',
|
||||
colSetupH: 'Installation (h)',
|
||||
colLifetimeBoards: 'Planches sur la durée de vie',
|
||||
colPerBoard: 'Par planche',
|
||||
colMaterial: 'Matériau',
|
||||
colOrderUnit: 'Commande ({{unit}})',
|
||||
colShipUnit: 'Livraison ({{unit}})',
|
||||
colBoardsOrder: 'Planches / commande',
|
||||
colOrderM: 'Commande (m)',
|
||||
colUnloadM: 'Déchargement (m)',
|
||||
colOrder: 'Commande',
|
||||
colShipping: 'Livraison',
|
||||
colOrderMin: 'Commande (min)',
|
||||
colUnloadMin: 'Déchargement (min)',
|
||||
colProcess: 'Traitement',
|
||||
colTimeM: 'Temps (m)',
|
||||
colBoardsRun: 'Planches / exécution',
|
||||
colRateHr: 'Taux/h (0 = atelier)',
|
||||
colRateHrShort: 'Taux/h',
|
||||
colScrapPct: 'Chutes %',
|
||||
colTimeMin: 'Temps (min)',
|
||||
colPackaging: 'Emballage',
|
||||
colTimeBoardM: 'Temps/planche (m)',
|
||||
colTimeBoardMin: 'Temps/planche (min)',
|
||||
colMaterialsBoardUnit: 'Matériaux/planche ({{unit}})',
|
||||
colMaterialsBoard: 'Matériaux/planche',
|
||||
equipmentPerBoard: 'Équipement par planche :',
|
||||
materialsPerBoard: 'Matériaux par planche :',
|
||||
processesPerBoard: 'Traitements par planche :',
|
||||
packagingPerBoard: 'Emballage par planche :',
|
||||
perBoard: 'Par planche :',
|
||||
addEquipment: 'Ajouter un équipement',
|
||||
addMaterial: 'Ajouter un matériau',
|
||||
addProcess: 'Ajouter un traitement',
|
||||
addPackagingStep: 'Ajouter une étape d’emballage',
|
||||
duplicate: 'Dupliquer',
|
||||
remove: 'Supprimer',
|
||||
boardsPerMonth: 'Planches / mois',
|
||||
rentPerMonth: 'Loyer / mois',
|
||||
utilitiesPerMonth: 'Charges / mois',
|
||||
subscriptionsPerMonth: 'Abonnements / mois',
|
||||
markup: 'Marge (×)',
|
||||
wholesaleMarkup: 'Marge de gros (×)',
|
||||
scrapWaste: 'Chutes / rebuts (%)',
|
||||
quantityDecks: 'Quantité (decks)',
|
||||
targetMonthlyProfit: 'Bénéfice mensuel visé ({{unit}})',
|
||||
costNoPackaging: 'Coût / planche (sans emballage)',
|
||||
costWithPackaging: 'Coût / planche (avec emballage)',
|
||||
batchSetupHours: 'Configuration par lot (h / exécution)',
|
||||
batchSetupCost: 'Coût de configuration par lot ({{unit}} / exécution)',
|
||||
taxVat: 'Taxe / TVA (%)',
|
||||
quoteTax: 'Taxe du devis',
|
||||
includedInPrice: 'Incluse dans le prix',
|
||||
addedOnTop: 'Ajoutée en plus',
|
||||
setupPerBoard: 'Configuration / planche',
|
||||
marginNoteBefore: 'Marge {{markup}}× ≈ ',
|
||||
grossMargin: '{{pct}} % de marge brute',
|
||||
marginNoteAfter: ' · les chutes de {{waste}} % sont réparties sur les bonnes planches.',
|
||||
sellingPriceNoPackaging: 'Prix de vente · sans emballage',
|
||||
sellingPriceWithPackaging: 'Prix de vente · avec emballage',
|
||||
profitPerDeck: 'Bénéfice / deck',
|
||||
wholesalePerDeck: 'Gros / deck',
|
||||
orderTotalQty: 'Total de la commande ({{qty}})',
|
||||
orderTotal: 'Total de la commande',
|
||||
breakeven: 'Seuil de rentabilité',
|
||||
breakevenPerMonth: '{{count}}/mois',
|
||||
targetDecksHint: 'Pour dégager {{amount}}/mois au-dessus des coûts fixes, vends {{decks}} decks/mois.',
|
||||
priceIncludesTax: 'Le prix inclut {{pct}} % de taxe : {{amount}} du total.',
|
||||
plusTax: 'Plus {{pct}} % de taxe : {{amount}} → {{total}} au total.',
|
||||
costVsQuantity: 'Coût selon la quantité (configuration amortie)',
|
||||
deckOne: 'deck',
|
||||
deckOther: 'decks',
|
||||
perDeckSuffix: '/ deck',
|
||||
orderSuffix: 'commande {{amount}}',
|
||||
shippingNotIncluded: 'N’inclut pas la livraison à l’acheteur.',
|
||||
clientQuoteDetails: 'Détails du devis client (pour le PDF)',
|
||||
fillFromProfileTitle: 'Remplir le nom, le site web, le NIP-05, Lightning et le npub depuis ton profil Nostr',
|
||||
fillFromProfile: 'Remplir depuis le profil',
|
||||
businessName: 'Nom de l’entreprise / atelier',
|
||||
email: 'E-mail',
|
||||
phone: 'Téléphone',
|
||||
website: 'Site web',
|
||||
address: 'Adresse',
|
||||
quoteNumber: 'Devis n°',
|
||||
nextNumber: 'Numéro suivant',
|
||||
validDays: 'Validité (jours)',
|
||||
nip05: 'NIP-05',
|
||||
lightningAddress: 'Adresse Lightning',
|
||||
nostrNpub: 'Nostr (npub)',
|
||||
depositPct: 'Acompte à verser d’avance (%)',
|
||||
deliveryTerms: 'Conditions de livraison (Incoterm, facultatif)',
|
||||
paymentMethods: 'Moyens de paiement',
|
||||
paymentTerms: 'Conditions de paiement',
|
||||
paymentDetails: 'Détails de paiement',
|
||||
notesTerms: 'Notes / conditions',
|
||||
changeLogo: 'Changer le logo',
|
||||
addLogo: 'Ajouter un logo',
|
||||
incotermNone: 'Aucun',
|
||||
incotermExw: 'EXW — enlèvement chez le vendeur',
|
||||
incotermFca: 'FCA — remis au transporteur de l’acheteur',
|
||||
incotermDap: 'DAP — livré à l’adresse de l’acheteur',
|
||||
incotermDdp: 'DDP — livré, droits acquittés',
|
||||
payMethodCash: 'Espèces',
|
||||
payMethodLightning: 'Lightning',
|
||||
payMethodCashu: 'Cashu',
|
||||
payMethodBank: 'Virement bancaire',
|
||||
payMethodCard: 'Carte',
|
||||
payMethodOther: 'Autre',
|
||||
listDeckAtPrice: 'Mettre un deck en vente à ce prix',
|
||||
getItMade: 'Le faire fabriquer — trouver un fabricant',
|
||||
savePreset: 'Enregistrer le préréglage',
|
||||
load: 'Charger',
|
||||
export: 'Exporter',
|
||||
import: 'Importer',
|
||||
reset: 'Réinitialiser',
|
||||
deletePreset: 'Supprimer le préréglage',
|
||||
exportPdfFull: 'PDF — feuille complète',
|
||||
exportPdfQuote: 'PDF — devis client',
|
||||
exportPng: 'Image PNG',
|
||||
exportXlsx: 'Classeur XLSX',
|
||||
exportCsv: 'CSV (tableur)',
|
||||
exportMarkdown: 'Markdown',
|
||||
exportJson: 'JSON (sauvegarde)',
|
||||
exportCopySummary: 'Copier le résumé',
|
||||
},
|
||||
becomeRolesUi: {
|
||||
artist: {
|
||||
seoTitle: 'Devenir Designer / Artiste - SkateSpots',
|
||||
seoDescription: 'Présente ton design et ton art skate — graphismes de planches, logos, affiches, merch et plus.',
|
||||
heading: 'Designer / Artiste',
|
||||
tagline: 'Graphismes de planches, logos, affiches, merch — mets ton art dans la scène',
|
||||
noun: 'artiste',
|
||||
rateLabel: 'Tarif',
|
||||
portfolioLabel: 'Lien portfolio / boutique',
|
||||
sectionWhatYouMake: 'Ce que tu crées',
|
||||
sectionMedium: 'Support',
|
||||
sectionSoftwareTools: 'Logiciels et outils',
|
||||
deliverablesPlaceholder: 'ex. fichiers prêts à imprimer, fichiers sources, graphismes de deck',
|
||||
turnaroundPlaceholder: 'ex. 3–5 jours',
|
||||
},
|
||||
graffiti: {
|
||||
seoTitle: 'Proposer du graffiti / des fresques - SkateSpots',
|
||||
seoDescription: 'Présente ton travail de graffiti et de fresque — pièces, fresques, art de skatepark et plus.',
|
||||
heading: 'Artiste graffiti / fresque',
|
||||
tagline: 'Pièces, fresques, art de skatepark — peins la scène',
|
||||
noun: 'artiste graffiti',
|
||||
rateLabel: 'Tarif',
|
||||
portfolioLabel: 'Lien portfolio (IG, site)',
|
||||
sectionStyle: 'Style',
|
||||
sectionMedium: 'Support',
|
||||
sectionWorkContext: 'Contexte de travail',
|
||||
crewLabel: 'Crew graffiti',
|
||||
crewPlaceholder: 'Ton crew d’écriture (facultatif)',
|
||||
crewHelper: 'Différent de ton Crew de skate — les writers avec qui tu peins.',
|
||||
surfacesPlaceholder: 'ex. béton, brique, murs autorisés',
|
||||
maxSizePlaceholder: 'ex. jusqu’à 10 m',
|
||||
},
|
||||
musician: {
|
||||
seoTitle: 'Ajouter un profil musical - SkateSpots',
|
||||
seoDescription: 'Tu fais du skate et de la musique ? Présente ton groupe ou ton projet solo — genres, instruments et liens.',
|
||||
heading: 'Musicien / Groupe',
|
||||
tagline: 'Tu fais du skate et de la musique ? Fais-toi réserver pour des démos, jams et after-parties',
|
||||
noun: 'musicien',
|
||||
rateLabel: 'Tarif de réservation',
|
||||
portfolioLabel: 'Lien site web / EPK',
|
||||
sectionGenre: 'Genre',
|
||||
sectionInstruments: 'Instruments et rôle',
|
||||
actLabel: 'Type d’acte',
|
||||
actPlaceholder: 'solo / groupe / dj / producteur',
|
||||
spotifyLabel: 'Spotify',
|
||||
spotifyPlaceholder: 'https://open.spotify.com/…',
|
||||
bandcampLabel: 'Bandcamp',
|
||||
bandcampPlaceholder: 'https://…bandcamp.com',
|
||||
soundcloudLabel: 'SoundCloud',
|
||||
soundcloudPlaceholder: 'https://soundcloud.com/…',
|
||||
youtubeLabel: 'YouTube',
|
||||
youtubePlaceholder: 'https://youtube.com/…',
|
||||
setLengthPlaceholder: 'ex. 30–45 min',
|
||||
techRiderPlaceholder: 'ex. sono, micros, backline',
|
||||
},
|
||||
judge: {
|
||||
seoTitle: 'Juger des événements de skate - SkateSpots',
|
||||
seoDescription: 'Inscris-toi comme juge d’événements de skate — Game of S.K.A.T.E., jams de best trick, contests, séries am et étapes de world tour. Fais-toi réserver pour des événements équitables et crédibles.',
|
||||
heading: 'Juge d’événements de skate',
|
||||
tagline: 'Du Game of S.K.A.T.E. au sol au World Destruction Tour — organise-le de façon équitable et crédible',
|
||||
noun: 'juge',
|
||||
rateLabel: 'Tarif journalier / honoraires',
|
||||
portfolioLabel: 'Archive des résultats / lien profil',
|
||||
sectionEventFormats: 'Formats d’événement',
|
||||
sectionSpecialty: 'Spécialité',
|
||||
sectionLevelCircuit: 'Niveau / circuit',
|
||||
eventsJudgedLabel: 'Événements jugés',
|
||||
eventsJudgedPlaceholder: 'ex. 40+ contests, 3 étapes de World Tour',
|
||||
eventsJudgedHelper: 'Événements, compétitions ou tournées notables que tu as arbitrés.',
|
||||
travelPlaceholder: 'ex. régional / national / international',
|
||||
certificationsPlaceholder: 'ex. formation nationale de jugement',
|
||||
},
|
||||
organizer: {
|
||||
seoTitle: 'Organiser des événements de skate - SkateSpots',
|
||||
seoDescription: 'Inscris-toi comme organisateur d’événements de skate — jams de rue, best trick, contests, meetups, démos et étapes de tournée. Fais-toi découvrir et réserver pour mener la session.',
|
||||
heading: 'Organisateur d’événements',
|
||||
tagline: 'Jams, contests, meetups et démos — organise la session et rassemble la scène',
|
||||
noun: 'organisateur',
|
||||
rateLabel: 'Tarif / budget d’événement',
|
||||
portfolioLabel: 'Événements passés / lien résultats',
|
||||
sectionEventTypes: 'Types d’événement',
|
||||
sectionWhatYouHandle: 'Ce que tu gères',
|
||||
sectionScale: 'Échelle',
|
||||
eventsHostedLabel: 'Événements organisés',
|
||||
eventsHostedPlaceholder: 'ex. 25 jams, 3 comps de ville',
|
||||
eventsHostedHelper: 'Événements, compétitions ou meetups notables que tu as organisés.',
|
||||
insurancePlaceholder: 'ex. responsabilité civile incluse',
|
||||
permitsPlaceholder: 'ex. permis municipaux gérés',
|
||||
},
|
||||
tattoo: {
|
||||
seoTitle: 'Devenir tatoueur - SkateSpots',
|
||||
seoDescription: 'Présente ton travail de tatouage pour la scène skate — styles, flash, custom et plus.',
|
||||
heading: 'Tatoueur',
|
||||
tagline: 'De l’encre pour la scène — flash, custom, fine line et plus',
|
||||
noun: 'tatoueur',
|
||||
rateLabel: 'Tarif / heure',
|
||||
portfolioLabel: 'Lien portfolio (IG, site)',
|
||||
sectionStyles: 'Styles',
|
||||
sectionMethod: 'Méthode',
|
||||
studioLabel: 'Studio / boutique',
|
||||
studioPlaceholder: 'Nom du studio (facultatif)',
|
||||
booksOpenLabel: 'Agenda ouvert',
|
||||
booksOpenHelper: 'Prends-tu actuellement des rendez-vous ?',
|
||||
depositPlaceholder: 'ex. 50 EUR non remboursable',
|
||||
minimumPlaceholder: 'ex. 80 EUR',
|
||||
},
|
||||
trainer: {
|
||||
seoTitle: 'Devenir coach / kiné - SkateSpots',
|
||||
seoDescription: 'Aide les skateurs à devenir forts et à rester en bonne santé — force, mobilité, prévention des blessures et récupération.',
|
||||
heading: 'Coach / kiné',
|
||||
tagline: 'Force, mobilité, prévention des blessures et récupération pour les skateurs',
|
||||
noun: 'coach',
|
||||
rateLabel: 'Tarif / séance',
|
||||
portfolioLabel: 'Lien profil / réservation',
|
||||
sectionFocus: 'Spécialité',
|
||||
sectionInjuries: 'Blessures que tu traites',
|
||||
sectionCredentialsSetting: 'Qualifications et cadre',
|
||||
credentialsPlaceholder: 'ex. diplôme de kinésithérapie, CSCS…',
|
||||
credentialsHelper: 'Indique de vraies qualifications — les skateurs font confiance aux diplômes vérifiables.',
|
||||
remoteLabel: 'À distance / en ligne',
|
||||
remoteHelper: 'Proposes-tu du coaching ou des consultations en ligne ?',
|
||||
modalitiesPlaceholder: 'ex. manuel, renforcement, dry needling',
|
||||
},
|
||||
barber: {
|
||||
seoTitle: 'Devenir coiffeur / barbier - SkateSpots',
|
||||
seoDescription: 'Présente ton salon ou ton fauteuil pour la scène skate — coupes, dégradés, tailles de barbe, couleur et plus. Fais-toi réserver par les skateurs.',
|
||||
heading: 'Barbier / coiffeur',
|
||||
tagline: 'Coupes, dégradés et tailles de barbe pour la scène — salon ou à domicile',
|
||||
noun: 'barbier',
|
||||
rateLabel: 'Prix / coupe',
|
||||
portfolioLabel: 'Galerie de coupes / lien IG',
|
||||
sectionWhatYouOffer: 'Ce que tu proposes',
|
||||
sectionSignatureStyles: 'Styles signature',
|
||||
sectionSetting: 'Cadre',
|
||||
studioLabel: 'Salon / studio',
|
||||
studioPlaceholder: 'Nom du salon ou du studio (facultatif)',
|
||||
booksOpenLabel: 'Agenda ouvert',
|
||||
booksOpenHelper: 'Prends-tu actuellement des rendez-vous ?',
|
||||
durationPlaceholder: 'ex. 30–45 min',
|
||||
},
|
||||
},
|
||||
weatherUi: {
|
||||
condition: {
|
||||
clearSky: 'Ciel dégagé',
|
||||
mainlyClear: 'Plutôt dégagé',
|
||||
partlyCloudy: 'Partiellement nuageux',
|
||||
overcast: 'Couvert',
|
||||
foggy: 'Brouillard',
|
||||
depositingRimeFog: 'Brouillard givrant déposant du givre',
|
||||
lightDrizzle: 'Bruine légère',
|
||||
moderateDrizzle: 'Bruine modérée',
|
||||
denseDrizzle: 'Bruine dense',
|
||||
lightFreezingDrizzle: 'Bruine verglaçante légère',
|
||||
denseFreezingDrizzle: 'Bruine verglaçante dense',
|
||||
slightRain: 'Pluie faible',
|
||||
moderateRain: 'Pluie modérée',
|
||||
heavyRain: 'Pluie forte',
|
||||
lightFreezingRain: 'Pluie verglaçante légère',
|
||||
heavyFreezingRain: 'Pluie verglaçante forte',
|
||||
slightSnow: 'Neige faible',
|
||||
moderateSnow: 'Neige modérée',
|
||||
heavySnow: 'Neige forte',
|
||||
snowGrains: 'Grains de neige',
|
||||
slightRainShowers: 'Averses de pluie faibles',
|
||||
moderateRainShowers: 'Averses de pluie modérées',
|
||||
violentRainShowers: 'Averses de pluie violentes',
|
||||
slightSnowShowers: 'Averses de neige faibles',
|
||||
heavySnowShowers: 'Averses de neige fortes',
|
||||
thunderstorm: 'Orage',
|
||||
thunderstormSlightHail: 'Orage avec grêle légère',
|
||||
thunderstormHeavyHail: 'Orage avec grêle forte',
|
||||
unknown: 'Inconnu',
|
||||
},
|
||||
aqi: {
|
||||
good: 'Bon',
|
||||
moderate: 'Modéré',
|
||||
unhealthySensitive: 'Mauvais pour les groupes sensibles',
|
||||
unhealthy: 'Mauvais',
|
||||
veryUnhealthy: 'Très mauvais',
|
||||
hazardous: 'Dangereux',
|
||||
},
|
||||
skateability: {
|
||||
perfect: 'Parfait',
|
||||
good: 'Bon',
|
||||
okay: 'Correct',
|
||||
poor: 'Médiocre',
|
||||
bad: 'Mauvais',
|
||||
unrideable: 'Impraticable',
|
||||
},
|
||||
reason: {
|
||||
currentlyRaining: 'Il pleut actuellement',
|
||||
raining: 'Il pleut',
|
||||
snowing: 'Il neige',
|
||||
thunderstorm: 'Orage',
|
||||
freezingTemperature: 'Température glaciale',
|
||||
veryCold: 'Très froid',
|
||||
extremelyHot: 'Extrêmement chaud',
|
||||
veryHot: 'Très chaud',
|
||||
veryStrongWind: 'Vent très fort',
|
||||
strongWind: 'Vent fort',
|
||||
moderateWind: 'Vent modéré',
|
||||
veryUnhealthyAir: 'Air très malsain',
|
||||
unhealthyAir: 'Air malsain',
|
||||
moderateAirQuality: 'Qualité de l’air modérée',
|
||||
veryHumid: 'Très humide',
|
||||
humid: 'Humide',
|
||||
extremeUv: 'UV extrêmes - mets de la crème solaire',
|
||||
highUv: 'UV élevés - protection solaire recommandée',
|
||||
perfectConditions: 'Conditions parfaites pour skater',
|
||||
},
|
||||
},
|
||||
skaterLabelsUi: {
|
||||
stance: {
|
||||
regular: 'Regular',
|
||||
goofy: 'Goofy',
|
||||
},
|
||||
style: {
|
||||
street: 'Street',
|
||||
park: 'Park',
|
||||
vert: 'Vert',
|
||||
transition: 'Transition',
|
||||
bowl: 'Bowl',
|
||||
cruising: 'Cruising',
|
||||
downhill: 'Downhill',
|
||||
freestyle: 'Freestyle',
|
||||
ledges: 'Ledges',
|
||||
stairs: 'Stairs',
|
||||
diy: 'DIY',
|
||||
},
|
||||
level: {
|
||||
grom: 'Grom',
|
||||
intermediate: 'Intermédiaire',
|
||||
advanced: 'Avancé',
|
||||
ripper: 'Ripper',
|
||||
},
|
||||
sponsor: {
|
||||
title: 'Sponsor principal',
|
||||
gold: 'Or',
|
||||
silver: 'Argent',
|
||||
partner: 'Partenaire',
|
||||
},
|
||||
},
|
||||
notifyUi: {
|
||||
activity: {
|
||||
zappedWithAmount: 'Tu as reçu {{sats}} sats',
|
||||
zapped: 'Tu as reçu un zap',
|
||||
liked: 'Quelqu’un a aimé ta publication',
|
||||
reposted: 'Quelqu’un t’a repartagé',
|
||||
mentioned: 'Quelqu’un t’a mentionné',
|
||||
replied: 'Quelqu’un t’a répondu',
|
||||
rsvp: 'Quelqu’un a confirmé sa présence à ton événement',
|
||||
eventUpdated: 'Un événement auquel tu vas a été mis à jour',
|
||||
newActivity: 'Nouvelle activité',
|
||||
tapToOpen: 'Touche pour ouvrir SkateSpots',
|
||||
},
|
||||
crew: {
|
||||
inviteTitle: 'Invitation de Crew',
|
||||
inviteBody: 'Tu es invité à rejoindre {{crew}}',
|
||||
addedTitle: 'Tu as été ajouté à un Crew',
|
||||
addedBody: '{{crew}} — confirme pour rejoindre',
|
||||
joinRequestTitle: 'Demande d’adhésion',
|
||||
joinRequestBody: 'Quelqu’un veut rejoindre {{name}}',
|
||||
},
|
||||
dm: {
|
||||
title: 'Nouveau message direct',
|
||||
body: 'Touche pour le lire',
|
||||
},
|
||||
trade: {
|
||||
confirm: 'Confirmer un échange',
|
||||
confirmed: 'Échange confirmé',
|
||||
newOffer: 'Nouvelle offre sur ton annonce',
|
||||
counter: 'Contre-offre',
|
||||
accepted: 'Offre acceptée 🎉',
|
||||
declined: 'Offre refusée',
|
||||
withdrawn: 'Offre retirée',
|
||||
},
|
||||
newsletter: {
|
||||
drop: 'Nouveau drop SkateSpots',
|
||||
},
|
||||
summary: {
|
||||
moreUpdates: '{{count}} mises à jour de plus',
|
||||
openToCatchUp: 'Ouvre SkateSpots pour te rattraper',
|
||||
},
|
||||
},
|
||||
legacyMiscUi: {
|
||||
hostingGoing: '{{count}} présents',
|
||||
hostingInterested: '{{count}} intéressés',
|
||||
hostingPostUpdate: 'Publier une mise à jour',
|
||||
hostingEdit: 'Modifier',
|
||||
hostingLoginToSee: 'Connecte-toi pour voir les événements que tu organises.',
|
||||
hostingEmptyTitle: 'Tu n’organises encore rien',
|
||||
hostingEmptyBody: 'Organise un jam, une compétition ou une session. Crée un événement et les skateurs pourront confirmer leur présence, recevoir des mises à jour et débarquer.',
|
||||
hostingCreateEvent: 'Créer un événement',
|
||||
hostingUpcoming: 'À venir · {{count}}',
|
||||
hostingPast: 'Passés · {{count}}',
|
||||
sponsorPartners: 'Partenaires',
|
||||
sponsorTitleSponsor: 'Sponsor principal',
|
||||
sponsorPlatformPartners: 'Partenaires plateforme',
|
||||
reportsUntitled: '(sans titre)',
|
||||
reportsResolveFailed: 'Impossible de résoudre l’événement signalé (il a peut-être été supprimé, ou le signalement vise un profil plutôt qu’une publication).',
|
||||
reportsLookAtIt: 'Regarder',
|
||||
reportsNoReports: 'Aucun signalement pour l’instant. Soit tout va bien, soit personne n’a trouvé le bouton.',
|
||||
statusSetYourStatus: 'Définir ton statut',
|
||||
statusSetDesc: 'Montre aux autres ce que tu fais. Ton statut sera visible sur ton profil et sur les Spots liés.',
|
||||
statusClear: 'Effacer',
|
||||
statusOrWriteOwn: 'Ou écris le tien',
|
||||
statusCustomPlaceholder: 'Qu’est-ce que tu fais ?',
|
||||
statusLinkToSpot: 'Lier à un Spot (facultatif)',
|
||||
statusSpotSelected: 'Spot sélectionné',
|
||||
statusSearchSpots: 'Rechercher des spots...',
|
||||
statusNoSpotsFound: 'Aucun spot trouvé.',
|
||||
statusSelectSpot: 'Sélectionner un spot',
|
||||
statusAutoClearAfter: 'Effacement auto après : {{time}}',
|
||||
statusExpMin: '{{count}} min',
|
||||
statusExpOneHour: '1 heure',
|
||||
statusExpHours: '{{count}} heures',
|
||||
statusExpOneDay: '1 jour',
|
||||
statusExpDays: '{{count}} jours',
|
||||
statusSlider15: '15 min',
|
||||
statusSlider1h: '1 h',
|
||||
statusSlider4h: '4 h',
|
||||
statusSlider24h: '24 h',
|
||||
statusSetting: 'Définition du statut...',
|
||||
statusSet: 'Définir le statut',
|
||||
statusSomethingWrong: 'Une erreur est survenue',
|
||||
seoProfileTitle: 'Profil - SkateSpots',
|
||||
seoViewProfile: 'Voir le profil.',
|
||||
bannerAlt: 'Bannière',
|
||||
openInCordn: 'Ouvrir dans Cordn',
|
||||
modHelp: 'Masquer publie org.skatespots.moderation / hidden ; Confirmer publie … / verified ; Annuler publie … / cleared (retour à neutre). Les trois sont des étiquettes publiques et réversibles — rien n’est jamais supprimé des relays.',
|
||||
zapNoActiveMint: 'Aucun mint Cashu actif trouvé.',
|
||||
altProfile: 'Profil',
|
||||
altCardPreview: 'Aperçu de la carte',
|
||||
altCard: 'Carte',
|
||||
altCaptured: 'Capturé',
|
||||
ariaPrevPhoto: 'Photo précédente',
|
||||
ariaNextPhoto: 'Photo suivante',
|
||||
ariaCommentOptions: 'Options de commentaire',
|
||||
ariaMessageConversation: 'Conversation de messages',
|
||||
exportTitle: 'SkateSpots — Calculateur de coût de deck',
|
||||
exportQuoteTitle: 'DEVIS',
|
||||
exportPngTitle: 'Coût du deck',
|
||||
exportMarkdownTitle: 'Calculateur de coût de deck',
|
||||
exportSectionLabor: 'Main-d’œuvre',
|
||||
exportSectionEquipment: 'Équipement',
|
||||
exportSectionOperations: 'Frais d’exploitation',
|
||||
exportSectionMaterials: 'Matériaux',
|
||||
exportSectionProcesses: 'Coûts de traitement',
|
||||
exportSectionPackaging: 'Emballage',
|
||||
exportSectionResult: 'Résultat',
|
||||
exportLabelOperations: 'Opérations',
|
||||
exportLabelProcesses: 'Traitements',
|
||||
exportKvHourlyRate: 'Taux horaire',
|
||||
exportKvLabourBurden: 'Charges sur la main-d’œuvre',
|
||||
exportKvLoadedRate: 'Taux chargé',
|
||||
exportKvEquipmentPerBoard: 'Équipement par planche',
|
||||
exportKvBoardsPerMonth: 'Planches / mois',
|
||||
exportKvRentPerMonth: 'Loyer / mois',
|
||||
exportKvUtilitiesPerMonth: 'Charges / mois',
|
||||
exportKvSubscriptionsPerMonth: 'Abonnements / mois',
|
||||
exportKvPerBoard: 'Par planche',
|
||||
exportKvMaterialsPerBoard: 'Matériaux par planche',
|
||||
exportKvProcessesPerBoard: 'Traitements par planche',
|
||||
exportKvPackagingPerBoard: 'Emballage par planche',
|
||||
exportKvMarkup: 'Marge',
|
||||
exportMarkupValue: '{{markup}}× (≈ {{pct}} % de marge brute)',
|
||||
exportKvWasteEffective: 'Chutes (effectif)',
|
||||
exportKvCostNoPack: 'Coût / planche (sans emballage)',
|
||||
exportKvCostWithPack: 'Coût / planche (avec emballage)',
|
||||
exportKvBatchSetupPerBoard: 'Configuration par lot / planche',
|
||||
exportKvTax: 'Taxe ({{pct}} %)',
|
||||
exportKvTaxIncluded: 'Taxe ({{pct}} %, incluse)',
|
||||
exportKvSellingNoPack: 'Prix de vente (sans emballage)',
|
||||
exportKvSellingWithPack: 'Prix de vente (avec emballage)',
|
||||
exportShippingNote: 'N’inclut pas la livraison à l’acheteur.',
|
||||
exportGeneratedBy: 'Généré par SkateSpots · skate-spots.org',
|
||||
exportGeneratedWith: 'Généré avec SkateSpots · skate-spots.org',
|
||||
exportDetailSetup: '+ {{hours}} h de configuration',
|
||||
exportDetailBoards: '{{boards}} planches',
|
||||
exportDetailShip: '+ {{amount}} de livraison',
|
||||
exportDetailMinutes: '{{minutes}} min',
|
||||
exportDetailPerBoards: '/ {{boards}} planches',
|
||||
exportDetailScrap: '{{pct}} % de chutes',
|
||||
exportDetailMaterials: '{{materials}} matériaux',
|
||||
exportQuoteRef: 'Réf. {{ref}}',
|
||||
exportQuoteLineItem: 'Deck de skateboard personnalisé',
|
||||
exportQuoteLineItemQty: 'Deck de skateboard personnalisé × {{qty}}',
|
||||
exportQuoteLineDesc: 'Fabriqué à la main, fini et emballé. Quantité 1.',
|
||||
exportQuoteLineDescQty: 'Fabriqué à la main, fini et emballé. {{price}} l’unité.',
|
||||
exportQuoteSubtotal: 'Sous-total',
|
||||
exportQuoteSubtotalQty: 'Sous-total ({{qty}} decks)',
|
||||
exportQuoteTax: 'Taxe / TVA ({{pct}} %)',
|
||||
exportQuoteTotal: 'Total',
|
||||
exportQuoteTotalQty: 'Total ({{qty}} decks)',
|
||||
exportQuoteIncludesTax: 'Inclut {{pct}} % de taxe ({{amount}})',
|
||||
exportQuoteDeposit: 'Acompte à verser maintenant ({{pct}} %)',
|
||||
exportQuoteBalance: 'Solde à la réalisation',
|
||||
exportQuotePayment: 'Paiement : {{value}}',
|
||||
exportQuoteLightning: 'Lightning : {{value}}',
|
||||
exportQuoteDetails: 'Détails : {{value}}',
|
||||
exportQuoteTerms: 'Conditions : {{value}}',
|
||||
exportQuoteDelivery: 'Livraison : {{value}}',
|
||||
exportQuoteValidUntil: 'N’inclut pas la livraison. Devis valable jusqu’au {{date}}.',
|
||||
exportPngSellingWith: 'PRIX DE VENTE · AVEC EMBALLAGE',
|
||||
exportPngSellingNo: 'PRIX DE VENTE · SANS EMBALLAGE',
|
||||
exportPngCostWith: 'COÛT / PLANCHE (AVEC EMBALLAGE)',
|
||||
exportPngDeposit: 'Acompte {{pct}} % : {{amount}}',
|
||||
exportXlsxSummary: 'Résumé',
|
||||
exportXlsxCurrency: 'Devise',
|
||||
exportXlsxDate: 'Date',
|
||||
exportXlsxOperationsPerBoard: 'Opérations par planche',
|
||||
exportColCost: 'Coût',
|
||||
exportColSetupH: 'Installation (h)',
|
||||
exportColBoards: 'Planches',
|
||||
exportColPerBoard: 'Par planche',
|
||||
exportColMaterial: 'Matériau',
|
||||
exportColOrderCost: 'Coût de commande',
|
||||
exportColShipping: 'Livraison',
|
||||
exportColOrderMin: 'Commande (min)',
|
||||
exportColUnloadMin: 'Déchargement (min)',
|
||||
exportColProcess: 'Traitement',
|
||||
exportColTimeMin: 'Temps (min)',
|
||||
exportColTimeBoardMin: 'Temps/planche (min)',
|
||||
exportColMaterialsBoard: 'Matériaux/planche',
|
||||
exportCopyTitle: 'Coût du deck — {{currency}}',
|
||||
exportCopyCostWith: 'Coût / planche (avec emballage) : {{amount}}',
|
||||
exportCopySellingNo: 'Prix de vente (sans emballage) : {{amount}}',
|
||||
exportCopySellingWith: 'Prix de vente (avec emballage) : {{amount}}',
|
||||
exportCopyBreakdown: 'Équipement {{equipment}} · Opérations {{operations}} · Matériaux {{materials}} · Traitements {{processes}} · Emballage {{packaging}}',
|
||||
exportMdHourlyRate: 'Taux horaire : {{value}}',
|
||||
exportMdLabourBurden: 'Charges sur la main-d’œuvre : {{value}}',
|
||||
exportMdLoadedRate: 'Taux chargé : {{value}}',
|
||||
exportMdBoardsPerMonth: 'Planches/mois : {{value}}',
|
||||
exportMdRent: 'Loyer : {{value}}',
|
||||
exportMdUtilities: 'Charges : {{value}}',
|
||||
exportMdSubscriptions: 'Abonnements : {{value}}',
|
||||
exportMdPerBoard: 'Par planche : {{value}}',
|
||||
exportMdMarkupWaste: 'Marge : {{markup}}× (≈ {{pct}} % de marge brute) · Chutes : {{waste}} %',
|
||||
exportMdCostNoPack: 'Coût/planche (sans emballage) : {{value}}',
|
||||
exportMdCostWithPack: 'Coût/planche (avec emballage) : {{value}}',
|
||||
exportMdBatchSetup: 'Configuration par lot/planche : {{value}}',
|
||||
exportMdSellingNo: 'Prix de vente (sans emballage) : {{value}}',
|
||||
exportMdSellingWith: 'Prix de vente (avec emballage) : {{value}}',
|
||||
exportMdDisclaimer: 'N’inclut pas la livraison à l’acheteur. Généré par SkateSpots.',
|
||||
},
|
||||
};
|
||||
|
||||
export default frBatch8;
|
||||
|
|
|
|||
Loading…
Reference in a new issue