aboutsummaryrefslogtreecommitdiffstats
path: root/src/locales/fr.json
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-06-24 08:59:31 -0700
committerAdam Soltys <[email protected]>2026-06-24 08:59:31 -0700
commit17acf5ec80a0c0b0acc44a6a8373e154c68d4748 (patch)
treea3fb56b85cc9cd21962ed64b084294096948d75b /src/locales/fr.json
parentf59cca61111f38963099190bdbbce9a76bc3fafe (diff)
downloadcoinosv3-17acf5ec80a0c0b0acc44a6a8373e154c68d4748.tar.gz
coinosv3-17acf5ec80a0c0b0acc44a6a8373e154c68d4748.zip
Split translations into per-language files, lazy-loaded
Only English is bundled in index.html now; the other 19 languages are emitted as dist/locales/<code>.json and fetched on demand when a visitor actually uses one (via auto-detect, the picker, or ?lang=xx). This drops index.html from ~511KB to ~318KB; a non-English visitor fetches just their one ~8-10KB locale, which the service worker then caches for offline use. t() falls back to English until a locale resolves. - i18n.js keeps only en + a loadLocale() fetcher; locale data moved to src/locales/*.json. - build.js emits dist/locales/; dev.js serves /locales/<code>.json. - Deploy hook publishes the locales/ subdir. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Diffstat (limited to 'src/locales/fr.json')
-rw-r--r--src/locales/fr.json145
1 files changed, 145 insertions, 0 deletions
diff --git a/src/locales/fr.json b/src/locales/fr.json
new file mode 100644
index 0000000..a629174
--- /dev/null
+++ b/src/locales/fr.json
@@ -0,0 +1,145 @@
+{
+ "passphrase": "Phrase secrète",
+ "howItWorks": "Comment ça marche",
+ "installApp": "Installer l’application",
+ "hiwBasicsTitle": "Les bases",
+ "hiwBasics1": "Quand vous créez un portefeuille, la page génère douze mots aléatoires. Ces mots sont la clé de votre portefeuille. Quiconque les possède peut dépenser les fonds, alors notez-les sur papier et gardez-les dans un endroit auquel vous seul avez accès.",
+ "hiwBasics2": "Si vous perdez les douze mots et n’avez pas de sauvegarde, les fonds sont perdus à jamais. Il n’y a aucun lien de réinitialisation ni personne à appeler, alors sauvegardez-les avant d’y déposer de l’argent.",
+ "hiwBasics3": "Il n’y a ni serveur ni compte. Toute l’application tient sur une seule page qui s’exécute dans votre navigateur : personne ne détient vos fonds et aucun serveur ne voit jamais vos clés. Pour afficher votre solde et votre historique, elle interroge un explorateur de blocs public (mempool.space par défaut, ou votre propre nœud si vous en configurez un dans les Réglages).",
+ "hiwBasics4": "Vous pouvez même enregistrer cette page et l’ouvrir directement depuis votre ordinateur sans aucune connexion Internet. Elle continue de fonctionner hors ligne.",
+ "hiwBasics5": "Elle respecte les standards habituels de Bitcoin (une phrase BIP39 de 12 mots et des clés SegWit natives BIP84), donc si ce site venait à disparaître, vous pourriez restaurer la même phrase dans Sparrow, Electrum ou tout autre portefeuille standard, et vos fonds y seraient.",
+ "hiwTribute": "Le nom Hal Wallet est un hommage au légendaire cypherpunk et pionnier de Bitcoin, Hal Finney (1956–2014).",
+ "signExport": "Signer et (diffuser ailleurs)",
+ "scanQr": "Scanner un QR",
+ "scanHint": "Pointez la caméra vers un code QR",
+ "scanNoCamera": "Impossible d’accéder à la caméra.",
+ "scanNoDecoder": "Le scan de QR nécessite une connexion lors de sa première utilisation.",
+ "scanUnrecognized": "Impossible de lire une adresse Bitcoin dans ce QR.",
+ "broadcastScanned": "Diffuser la transaction ?",
+ "broadcastNow": "Diffuser",
+ "scanOffline": "Vous êtes hors ligne — reconnectez-vous pour diffuser cette transaction.",
+ "loadingHistory": "Chargement des transactions…",
+ "explorer": "Explorateur de blocs",
+ "explorerDesc": "Le serveur que ce portefeuille interroge pour les soldes et l’historique. Pointez-le vers votre propre nœud pour une confidentialité maximale.",
+ "explorerUrl": "URL du serveur",
+ "explorerUrlHint": "Base REST Esplora / electrs, par ex. https://mempool.space/api",
+ "deviceSync": "Synchronisation des appareils",
+ "deviceSyncDesc": "Gardez ce portefeuille synchronisé entre vos appareils en stockant une copie chiffrée sur un relais Nostr — seul un appareil possédant votre seed peut la lire. Désactivez l’option pour tout conserver sur cet appareil.",
+ "syncAcross": "Synchroniser entre les appareils",
+ "syncOn": "Activé",
+ "syncOff": "Désactivé",
+ "relaysLabel": "Relais",
+ "relaysHint": "Une URL wss:// par ligne.",
+ "home": "Accueil",
+ "logout": "Déconnexion",
+ "createNew": "Créer",
+ "importExisting": "Importer",
+ "genIntro": "Générez une nouvelle phrase de 12 mots. Notez-la. C’est le seul moyen de récupérer ce portefeuille.",
+ "generateSeed": "Générer la phrase",
+ "writeDownWarn": "⚠ Notez ces 12 mots sur papier, dans l’ordre. Quiconque les a peut dépenser vos fonds.",
+ "copyPhrase": "Copier la phrase",
+ "regenerate": "Régénérer",
+ "verifyBackup": "Vérifier la sauvegarde",
+ "skipVerification": "Ignorer la vérification",
+ "confirmBackupIntro": "Confirmez votre sauvegarde en saisissant les mots demandés.",
+ "wordN": "Mot n° {n}",
+ "reenterPassphrase": "Ressaisir la phrase secrète",
+ "back": "← Retour",
+ "openWallet": "Ouvrir le portefeuille",
+ "wordsMismatch": "Ces mots ne correspondent pas à votre phrase. Vérifiez votre sauvegarde.",
+ "passphraseMismatch": "Cette phrase secrète ne correspond pas à celle saisie.",
+ "seedPhrase": "Phrase de récupération",
+ "seedPlaceholder": "saisissez vos mots séparés par des espaces",
+ "optionalPassphrase": "Phrase secrète (facultative)",
+ "leaveBlank": "laisser vide si non utilisée",
+ "show": "Afficher",
+ "hide": "Masquer",
+ "invalidSeed": "Phrase invalide — vérifiez l’orthographe et l’ordre des mots.",
+ "keysNote": "Les clés ne quittent jamais votre navigateur. Fonctionne hors ligne. Enregistrez cette page et ouvrez-la localement.",
+ "balance": "Solde",
+ "pending": "En attente",
+ "tabReceive": "Recevoir",
+ "tabSend": "Envoyer",
+ "tabHistory": "Historique",
+ "tabSettings": "Réglages",
+ "copyAddress": "Copier l’adresse",
+ "paymentReceived": "Paiement reçu !",
+ "tapToProceed": "Touchez n’importe où pour continuer",
+ "recipient": "Destinataire",
+ "recipients": "Destinataires",
+ "max": "Max",
+ "feeRate": "Frais",
+ "feeEconomy": "Économique",
+ "feeNormal": "Normal",
+ "feePriority": "Prioritaire",
+ "feeCustom": "Personnalisé",
+ "selectedRate": "Frais choisis : {n} sat/vB",
+ "coinSelection": "Sélection des pièces",
+ "automatic": "Automatique",
+ "manual": "Manuel",
+ "noCoins": "Aucune pièce disponible.",
+ "nSelected": "{n} sélectionnée(s)",
+ "addRecipient": "+ Ajouter un destinataire",
+ "reviewTx": "Vérifier la transaction",
+ "remove": "Retirer",
+ "enterRecipientAddr": "Saisissez une adresse de destination.",
+ "enterAddrForN": "Saisissez une adresse pour le destinataire {n}.",
+ "enterValidAmtForN": "Saisissez un montant valide pour le destinataire {n}.",
+ "selectCoin": "Sélectionnez au moins une pièce à dépenser.",
+ "networkFee": "Frais de réseau",
+ "offlineSignNote": "Hors ligne : signez maintenant, puis diffusez la transaction depuis un appareil connecté.",
+ "signBroadcast": "Signer et diffuser",
+ "signTx": "Signer la transaction",
+ "broadcastFailed": "Échec de la diffusion : {msg}",
+ "signingFailed": "Échec de la signature : {msg}",
+ "done": "Terminé",
+ "txSignedNote": "✓ Transaction signée. Diffusez le code ci-dessous depuis un appareil connecté (par ex. mempool.space → Broadcast).",
+ "transactionId": "ID de transaction",
+ "signedTxRaw": "Transaction signée (code)",
+ "copyHex": "Copier le code",
+ "downloadLabel": "Télécharger",
+ "showQrAirgap": "Afficher le QR (transfert hors ligne)",
+ "txBroadcast": "✓ Transaction diffusée !",
+ "copyTxid": "Copier l’ID de transaction",
+ "viewOnMempool": "Voir sur mempool.space ↗",
+ "noTxYet": "Aucune transaction.",
+ "received": "Reçu",
+ "sent": "Envoyé",
+ "pendingTag": "⏳ en attente",
+ "awaitingConfirmation": "en attente de confirmation",
+ "feeShort": "frais {x}",
+ "historyOffline": "L’historique est indisponible hors ligne.",
+ "status": "Statut",
+ "confirmed": "Confirmée",
+ "confirmedTag": "confirmée",
+ "pendingInMempool": "En attente (mempool)",
+ "block": "Bloc",
+ "date": "Date",
+ "copyId": "Copier l’ID",
+ "backToHistory": "← Retour à l’historique",
+ "recoveryPhrase": "Phrase de récupération",
+ "recoveryWarn": "⚠ Quiconque voit ces mots peut voler vos fonds. Assurez-vous que personne ne regarde avant de les afficher.",
+ "bip39Passphrase": "Phrase secrète",
+ "copyPassphrase": "Copier la phrase secrète",
+ "revealRecovery": "Afficher la phrase de récupération",
+ "offlineTransfer": "Transfert hors ligne",
+ "offlineTransferDesc": "Exportez vos pièces sur un appareil connecté, puis importez le fichier sur un appareil hors ligne (avec ce portefeuille + phrase) pour signer sans internet.",
+ "exportSnapshot": "⤓ Exporter l’instantané",
+ "importSnapshot": "Importer l’instantané…",
+ "rescan": "Rescanner",
+ "rescanDesc": "Votre adresse actuelle se met à jour automatiquement. Rescannez seulement si un paiement a été envoyé à une ancienne adresse (réutilisée) et n’apparaît pas.",
+ "rescanWallet": "Rescanner le portefeuille",
+ "scanning": "Analyse…",
+ "language": "Langue",
+ "offlineBanner": "Réseau inaccessible — mode hors ligne. Importez un instantané dans Réglages pour charger les pièces.",
+ "retry": "Réessayer",
+ "copied": "Copié dans le presse-papiers",
+ "snapshotExported": "Instantané exporté",
+ "importedNCoins": "{n} pièce(s) importée(s)",
+ "unmatchedSuffix": " · {n} adresse(s) hors de ce portefeuille",
+ "importFailed": "Échec de l’import : {msg}",
+ "copy": "Copier",
+ "switchUnit": "Basculer BTC / sats",
+ "footerMadeBy": "fait par",
+ "footerSourceOn": "code source sur"
+} \ No newline at end of file