From fbcc3e1bb1dcc62d478f8a1265ae097c8399ce9d Mon Sep 17 00:00:00 2001 From: Natixe Date: Fri, 5 Jan 2024 01:09:11 +0100 Subject: [PATCH 1/8] Adds French 'fr' translation for wallet and UI functions --- packages/neuron-ui/src/locales/en.json | 3 +- packages/neuron-ui/src/locales/fr.json | 1191 +++++++++++++++++ packages/neuron-ui/src/locales/zh-tw.json | 3 +- packages/neuron-ui/src/locales/zh.json | 3 +- .../src/tests/calendar/index.test.ts | 28 + packages/neuron-ui/src/utils/const.ts | 2 +- packages/neuron-ui/src/utils/i18n.ts | 2 + packages/neuron-wallet/src/locales/fr.ts | 303 +++++ packages/neuron-wallet/src/locales/i18n.ts | 2 + .../neuron-wallet/src/services/settings.ts | 2 +- 10 files changed, 1534 insertions(+), 5 deletions(-) create mode 100644 packages/neuron-ui/src/locales/fr.json create mode 100644 packages/neuron-wallet/src/locales/fr.ts diff --git a/packages/neuron-ui/src/locales/en.json b/packages/neuron-ui/src/locales/en.json index c66755a57d..e0d6782f8f 100644 --- a/packages/neuron-ui/src/locales/en.json +++ b/packages/neuron-ui/src/locales/en.json @@ -411,7 +411,8 @@ "en": "English", "en-US": "English(United States)", "zh": "中文(简体)", - "zh-TW": "中文(繁體)" + "zh-TW": "中文(繁體)", + "fr": "Français" }, "data": { "ckb-node-data": "CKB Node Config & Storage", diff --git a/packages/neuron-ui/src/locales/fr.json b/packages/neuron-ui/src/locales/fr.json new file mode 100644 index 0000000000..0a275bbf7d --- /dev/null +++ b/packages/neuron-ui/src/locales/fr.json @@ -0,0 +1,1191 @@ +{ + "translation": { + "launch-screen": { + "loading-wallets": "Chargement des portefeuilles" + }, + "contextmenu": { + "cut": "Couper", + "copy": "Copier", + "paste": "Coller", + "selectall": "Tout sélectionner" + }, + "navbar": { + "overview": "Aperçu", + "wallet": "Portefeuille", + "send": "Envoyer", + "receive": "Recevoir", + "history": "Historique", + "addresses": "Adresses", + "nervos-dao": "Nervos DAO", + "settings": "Paramètres", + "special-assets": "Actifs personnalisés", + "sync-not-start": "Synchronisation pas encore démarrée", + "connecting": "Connexion", + "experimental-functions": "Expérimental", + "s-udt": "Comptes d'actifs", + "update-neuron-with-ckb": "La version du nœud CKB ne correspond pas à Neuron (v{{ version }}), ce qui peut entraîner des problèmes de compatibilité. Veuillez mettre à jour vers la dernière version de Neuron.", + "ckb-node-compatible": "Le nœud CKB n'est pas compatible avec Neuron (v{{ version }}), veuillez vérifier avant toute opération ultérieure.", + "ckb-without-indexer": "Veuillez ajouter l'option '--indexer' pour démarrer le nœud local" + }, + "network-status": { + "tooltip": { + "block-synced": "Bloc synchronisé", + "looking-valid-target": "Recherche de la cible valide présumée", + "set-start-block-number": "Définir le numéro de bloc de départ" + }, + "migrating": "migration en cours..." + }, + "import-hardware": { + "title": { + "select-model": "Veuillez connecter votre appareil et sélectionner le modèle", + "detect-device": "Détection de l'appareil", + "name-wallet": "Nommer le portefeuille", + "choose-address": "Choisissez une adresse de l'appareil" + }, + "actions": { + "confirm": "Veuillez confirmer sur votre appareil...", + "success": "Importation réussie !", + "next": "Suivant", + "cancel": "Annuler", + "back": "Retour", + "rescan": "Rescan", + "close": "close", + "finish": "Finish Creating" + }, + "errors": { + "multi-device": "Multiple device detected. Only one device of the same model can be connected.", + "device-not-found": "No device detected. Please connect your device.", + "ckb-app-not-found": "CKB App does not open. Please open the CKB App on your device." + }, + "waiting": "Waiting for CKB app...", + "abort": "Waiting for CKB app... Action aborted", + "app-version": "CKB App v{{version}} running.", + "firmware-version": "Firmware v{{version}} detected.", + "wallet-name": "Wallet Name", + "select-model": "Select Model", + "other-device": "Other" + }, + "hardware-sign": { + "cancel": "Cancel", + "title": "Sign via hardware wallet", + "device": "Device:", + "status": { + "label": "Status:", + "connect": "Connected, ready for signing.", + "user-input": "Connected, waiting for confirmation on device...", + "disconnect": "Disconnected, please confirm device has connect and open Nervos app" + }, + "inputs": "Inputs(signing {{index}} of {{length}})", + "outputs": "Outputs({{length}})", + "actions": { + "close": "Close", + "success": "Transaction Successful!", + "rescan": "Rescan" + } + }, + "hardware-verify-address": { + "title": "Verify address via hardware wallet", + "device": "Device:", + "address": "Address:", + "verified": "Verified", + "invalid": "Invalid", + "status": { + "label": "Status:", + "connect": "Connected, ready for verifying.", + "user-input": "Connected, waiting for confirmation on device...", + "disconnect": "Disconnected, please confirm device has connect and open Nervos app" + }, + "actions": { + "close": "Close", + "reconnect": "Reconnecter", + "copy-address": "Copier l'adresse", + "verify": "Vérifier l'adresse", + "finish": "Ok" + } + }, + "offline-sign": { + "title": "Signature hors ligne", + "json-file": "Fichier JSON :", + "status": { + "label": "Statut :", + "unsigned": "Non signé", + "partially-signed": "Partiellement signé", + "signed": "Signé" + }, + "wallet": "Portefeuille :", + "content": "Contenu :", + "export": "Exporter Tx", + "sign-and-export": "Signer et exporter", + "sign-and-broadcast": "Signer et diffuser", + "actions": { + "broadcast": "Diffuser", + "sign": "Signer et exporter", + "cancel": "Annuler" + } + }, + "overview": { + "date": "Date", + "type": "Type", + "balance": "Solde", + "recent-activities": "Activités récentes", + "no-recent-activities": "Aucune activité récente", + "activity": "Activité", + "datetime": "Date et heure", + "status": "Statut", + "amount": "Montant", + "address": "Adresse", + "sent": "Envoyé", + "sending": "Envoi", + "received": "Reçu", + "receiving": "Réception", + "more": "Plus", + "copy-balance": "Copier le solde", + "create": "Créer un compte d'actif {{name}}", + "destroy": "Détruire le compte d'actif {{name}}", + "createSUDT": "Créer un compte d'actif <0>", + "destroySUDT": "Détruire le compte d'actif <0>", + "wallet-ready": "Le portefeuille est prêt, bienvenue", + "send": "Envoyer", + "receive": "Recevoir", + "locked": "Montant verrouillé", + "locked-balance": "Solde verrouillé" + }, + "wizard": { + "welcome-to-nervos-neuron": "Bienvenue sur Neuron", + "create-or-import-your-first-wallet": "Créez ou importez votre premier portefeuille", + "create-new-wallet": "Créer un portefeuille", + "import-mnemonic": "Importer la graine du portefeuille", + "import-keystore": "Importer depuis le fichier Keystore", + "import-wallet": "Importer un portefeuille", + "import-hardware-wallet": "Importer un portefeuille matériel", + "new-wallet": "Nouveau portefeuille", + "wallet-seed": "Graine du portefeuille", + "keystore": "Fichier Keystore", + "hardware-wallet": "Portefeuille matériel", + "next": "Suivant", + "back": "Retour", + "name": "Nom", + "your-wallet-seed-is": "Votre nouvelle graine de portefeuille a été générée", + "input-your-seed": "Veuillez entrer votre graine de portefeuille", + "password": "Mot de passe", + "confirm-password": "Confirmer le mot de passe", + "set-wallet-name-and-password": "Nommez votre nouveau portefeuille et choisissez un mot de passe fort pour le protéger", + "set-wallet-name": "Donnez un nom à votre nouveau portefeuille", + "set-a-strong-password-to-protect-your-wallet": "Créez un mot de passe fort pour protéger votre portefeuille", + "wallet-suffix": "Portefeuille {{suffix}}", + "write-down-seed": "Notez votre graine de portefeuille et enregistrez-la dans un endroit sûr", + "new-name": "Utilisez un nom inutilisé pour le nouveau portefeuille", + "complex-password": "Le mot de passe doit contenir entre 8 et 50 caractères, comprenant au moins trois catégories parmi les suivantes : lettres majuscules, lettres minuscules, chiffres et symboles spéciaux.", + "same-password": "Le mot de passe et la confirmation du mot de passe doivent correspondre", + "input-seed-verify": "Saisissez la graine créée pour vérification", + "no-wallet": "Pas de portefeuille ?", + "create-wallet": "Créer un portefeuille", + "repeat-password": "Répéter le mot de passe", + "finish-create": "Terminer la création", + "creating-wallet": "Le portefeuille est en cours de préparation, veuillez patienter", + "add-one": "Ajouter un autre" + }, + "import-keystore": { + "title": "Importer le fichier Keystore", + "select-file": "Choisir le fichier", + "label": { + "path": "Fichier Keystore", + "name": "Nom du portefeuille", + "password": "Mot de passe" + }, + "placeholder": { + "path": "Cliquez pour sélectionner le fichier Keystore", + "name": "Nom pour le nouveau portefeuille", + "password": "Mot de passe pour vérifier le fichier Keystore" + }, + "button": { + "back": "Retour", + "submit": "Soumettre" + } + }, + "detail": { + "more-transactions": "Plus" + }, + "send": { + "address": "Envoyer à", + "input-address": "Veuillez saisir l'adresse de réception", + "amount": "Montant (CKB)", + "input-amount": "Veuillez saisir le montant", + "send": "Envoyer", + "reset": "Réinitialiser", + "confirm-password": "Confirmer le mot de passe", + "to": "À", + "add-receiving-address": "Ajouter une adresse de réception", + "input-password-to-confirm": "Saisissez le mot de passe pour confirmer", + "scan-to-get-address": "Scanner le code QR pour lire l'adresse à laquelle envoyer", + "total-amount": "Montant total (CKB)", + "description": "Description", + "description-optional": "Veuillez saisir une description, facultatif", + "balance": "Solde", + "add-one": "Ajouter une autre", + "remove-this": "Supprimer ceci", + "fee": "Frais de transaction (CKB)", + "advanced-fee-settings": "Paramètres avancés des frais", + "price": "Prix", + "pick-price": "Choix rapide du prix", + "custom-price": "Prix personnalisé", + "slow": "Lent", + "standard": "Standard", + "fast": "Rapide", + "total-cycles": "Total des cycles RISC-V", + "scan-screen-qr-code": "Scanner le code QR à l'écran", + "set-locktime": "Définir le verrouillage temporel", + "remove-receiving-address": "Supprimer l'adresse de réception", + "remove-receiving-address-msg": "Êtes-vous sûr de vouloir supprimer l'adresse de réception sélectionnée ?", + "locktime-notice-content": "Selon la hauteur de bloc réelle, il peut y avoir des variations temporelles dans le verrouillage temporel.", + "release-on": "Libération le", + "locktime-warning": "Veuillez vous assurer que le portefeuille du destinataire peut prendre en charge le déverrouillage par expiration. (Remarque : 1. Les échanges ne prennent généralement pas en charge le déverrouillage par expiration {{extraNote}})", + "allow-use-sent-cell": "Les sorties non confirmées sont autorisées dans cette transaction.", + "submit-transaction": "Soumettre la transaction" + }, + "receive": { + "title": "Recevoir", + "address-book": "Carnet d'adresses", + "click-to-copy": "Cliquez pour copier l'adresse", + "copy-address": "Copier l'adresse", + "address-not-found": "Adresse non trouvée", + "prompt": "Neuron choisit une nouvelle adresse de réception pour une meilleure confidentialité. Veuillez consulter le carnet d'adresses si vous souhaitez utiliser une adresse de réception précédemment utilisée.", + "address-qrcode": "Code QR de l'adresse", + "address": "Adresse {{network}}", + "verify-address": "Vérifier l'adresse", + "turn-into-full-version-format": "Convertir en format version complète", + "turn-into-deprecated-format": "Convertir en format obsolète", + "save-qr-code": "Télécharger", + "copy-qr-code": "Copier" + }, + "transaction-status": { + "pending": "En attente", + "success": "Succès", + "failed": "Échec", + "confirming": "Confirmation en cours" + }, + "confirmationsCount_one": "{{count}} Confirmation", + "confirmationsCount_other": "{{count}} Confirmations", + "history": { + "title": "Historique", + "title-detail": "Détail de l'historique", + "meta": "Méta", + "type": "Type", + "date": "Date", + "timestamp": "Heure", + "amount": "Montant", + "transaction-hash": "Hash de transaction", + "send": "Envoyer", + "receive": "Recevoir", + "other": "Autre", + "more-actions": "Plus d'actions", + "detail": "Détail", + "explorer": "Explorateur", + "first": "Premier", + "previous": "Précédent", + "next": "Suivant", + "last": "Dernier", + "description": "Description", + "status": "Statut", + "blockNumber": "Numéro de bloc", + "basic-information": "Informations de base", + "search": { + "button": "Rechercher", + "placeholder": "Rechercher le hash de transaction, l'adresse ou la date (aaaa-mm-jj)" + }, + "table": { + "name": "Nom du portefeuille", + "type": "Type", + "amount": "Montant", + "timestamp": "Heure", + "status": "Statut", + "operation": "Opération" + }, + "export-history": "Exporter l'historique des transactions", + "confirmationTimes": "Confirmations", + "confirming-with-count": "{{confirmations}} Confirmations", + "view-on-explorer": "Voir sur l'explorateur", + "no-txs": "Aucun historique de transaction", + "view-in-explorer": "Voir sur l'explorateur", + "view-in-explorer-button-title": "Voir sur l'explorateur", + "view-detail": "Détail", + "view-detail-button-title": "Voir les détails", + "opening": "Ouverture", + "copy-tx-hash": "Copier le hash de la transaction", + "copy-balance": "Copier le solde", + "copy-address": "Copier l'adresse", + "create": "Créer le compte d'actif {{name}}", + "destroy": "Détruire le compte d'actif {{name}}" + }, + "transaction": { + "window-title": "Transaction : {{hash}}", + "date": "Date", + "transaction-hash": "Hash de transaction", + "block-number": "Numéro de bloc", + "goBack": "Retour", + "index": "Index", + "address": "Adresse", + "income": "Revenu", + "amount": "Montant", + "inputs": "Entrées", + "outputs": "Sorties", + "cell-from-cellbase": "De cellbase", + "lock-script": "Script de verrouillage", + "lock-script-title": "Informations sur l'adresse", + "deprecated-address-format": "Adresse au format obsolète" + }, + "addresses": { + "title": "Carnet d'adresses", + "addresses": "Adresses", + "type": "Type", + "address": "Adresse", + "identifier": "Identifiant", + "description": "Description", + "balance": "Solde", + "transactions": "TXs", + "receiving-address": "Réception", + "change-address": "Changement", + "copy-address": "Copier l'adresse", + "request-payment": "Demander un paiement", + "view-on-explorer": "Voir sur l'explorateur", + "default-description": "Aucun", + "all-address": "Toutes" + }, + "settings":{ + "title": { + "normal": "Paramètres", + "mac": "Préférences" + }, + "go-to-overview": "Aller à l'aperçu", + "setting-tabs": { + "general": "Général", + "wallets": "Wallets", + "network": "Réseau", + "data": "Données" + }, + "general": { + "show": "Afficher", + "hide": "Masquer", + "version": "Version", + "language": "Langue", + "select-language": "Sélectionner la langue", + "apply": "Appliquer" + }, + "wallet-manager": { + "edit-wallet": { + "wallet-name": "Nom du portefeuille", + "password": "Mot de passe", + "new-password": "Nouveau mot de passe", + "confirm-password": "Confirmer le mot de passe", + "edit-wallet": "Éditer le portefeuille" + }, + "edit-success": "Informations du portefeuille mises à jour avec succès", + "delete-wallet-title": "Veuillez entrer le mot de passe de {{name}}", + "password": "Mot de passe", + "wallet-detail": { + "balance": "Solde" + } + }, + "network": { + "online": "En ligne", + "offline": "Hors ligne", + "add-network": "Ajouter un réseau", + "remove-network": "Supprimer le réseau", + "remove-network-msg": "Êtes-vous sûr de vouloir supprimer le réseau sélectionné ?", + "edit-network": { + "title": "Modifier le réseau", + "rpc-url": "URL RPC", + "name": "Nom du réseau", + "input-rpc": "Veuillez entrer rpc", + "input-network": "Veuillez entrer le nom" + }, + "edit-success": "Modification réussie du réseau", + "mainnet": "Mainnet", + "testnet": "Testnet", + "lightTestnet": "Testnet léger", + "lightMainnet": "Mainnet léger", + "devnet": "Devnet", + "switch-network-type": "Basculer vers {{type}}" + }, + "locale": { + "en": "Anglais", + "en-US": "Anglais (États-Unis)", + "zh": "中文(简体)", + "zh-TW": "中文(繁體)", + "fr": "Français" + }, + "data": { + "ckb-node-data": "Configuration et stockage du nœud CKB", + "set": "Définir", + "cache": "Cache", + "clear-cache-description": "Effacez le cache si vous rencontrez des problèmes de synchronisation des données ou d'affichage du solde. Neuron effectuera une nouvelle analyse des données de bloc.", + "cache-cleared-on": "Cache actualisé le {{date}}", + "refresh": "Actualiser", + "clearing-cache": "Effacement du cache en cours, veuillez patienter", + "clear-success": "Cache effacé", + "set-path": "Définir le chemin", + "remove-ckb-data-tip": "Veuillez déplacer les données du nœud CKB de 【{{prevPath}}】 vers 【{{currentPath}}】 puis cliquer sur \"Les données ont été déplacées\" pour démarrer à partir du bloc synchronisé précédemment ; ou cliquez sur \"Synchroniser depuis le début\" pour démarrer une synchronisation complète.", + "resync-ckb-node-describe": "Attention : Synchroniser depuis le début ne supprimera pas les données du nœud CKB déjà téléchargées.", + "cancel": "Annuler", + "confirm-clear": "Confirmer", + "move-data-finish": "Les données ont été déplacées", + "re-sync": "Synchroniser depuis le début", + "disabled-set-path": "Lorsque le nœud CKB est démarré manuellement, la configuration du chemin du nœud CKB ne prend pas effet.", + "ckb-node-storage": "Stockage du nœud CKB" + } + }, + "password-request": { + "wallet-not-found": "Le portefeuille n'a pas été trouvé", + "password": "Entrez le mot de passe", + "placeholder": "Veuillez entrer le mot de passe du portefeuille", + "send": { + "title": "Soumettre la transaction" + }, + "send-nft": { + "title": "Envoyer NFT" + }, + "delete": { + "title": "Supprimer le portefeuille" + }, + "backup": { + "title": "Sauvegarder le portefeuille" + }, + "unlock": { + "title": "Veuillez entrer le mot de passe du portefeuille pour réclamer l'actif" + }, + "create-sudt-account": { + "title": "Créer un compte d'actif" + }, + "send-sudt": { + "title": "Envoyer sUDT" + }, + "transfer-to-sudt": { + "title": "Envoyer vers le compte sUDT" + }, + "send-ckb-asset": { + "title": "Envoyer CKB" + }, + "send-acp": { + "title": "Envoyer CKB" + }, + "send-acp-sudt-to-new-cell": { + "title": "Envoyer sUDT" + }, + "send-acp-ckb-to-new-cell": { + "title": "Envoyer CKB" + }, + "migrate-acp": { + "title": "Mettre à niveau les comptes d'actif" + }, + "send-cheque": { + "title": "Envoyer l'actif chèque" + }, + "withdraw-cheque": { + "title": "Retirer l'actif chèque" + }, + "claim-cheque": { + "title": "Réclamer l'actif chèque" + }, + "create-account-to-claim-cheque": { + "title": "Réclamer l'actif chèque avec un nouveau compte" + }, + "destroy-asset-account": { + "title": "Détruire le compte d'actif" + }, + "send-from-multisig": { + "title": "Envoyer du CKB depuis une adresse multisig" + }, + "send-from-multisig-need-one": { + "title": "Envoyer du CKB depuis une adresse multisig" + }, + "xpub-notice": "Pour un portefeuille en mode lecture seule, seules les transactions exportées sont prises en charge" + }, + "qrcode": { + "copy": "Copier l'image", + "save": "Enregistrer l'image" + }, + "common": { + "or": "ou", + "ok": "Ok", + "dismiss": "Rejeter", + "confirm": "Confirmer", + "open": "Ouvrir", + "cancel": "Annuler", + "save": "Enregistrer", + "toggle": { + "on": "Activé", + "off": "Désactivé" + }, + "copy-tx-hash": "Copier le hachage de transaction", + "copy-address": "Copier l'adresse", + "select": "Sélectionner", + "backup": "Sauvegarder", + "edit": "Éditer", + "delete": "Supprimer", + "click-to-edit": "Cliquez pour éditer", + "notice": "Avis", + "experimental": "Expérimental", + "close": "Fermer", + "copy": "Copier", + "copied": "Copié", + "verification-failure": "Échec de la vérification", + "back": "Retour", + "switch-to-light": "Passer en mode clair", + "switch-to-dark": "Passer en mode sombre" + }, + "notification-panel": { + "title": "Notifications" + }, + "message-types": { + "warning": "Avertissement", + "alert": "Alerte", + "success": "Succès" + }, + "messages": { + "error": "Erreur", + "unknown-error": "Erreur inconnue", + "update-wallet-successfully": "Le portefeuille a été mis à jour avec succès", + "delete-wallet-successfully": "Le portefeuille a été supprimé avec succès", + "create-network-successfully": "Le réseau a été créé avec succès", + "update-network-successfully": "Le réseau a été mis à jour avec succès", + "clear-cache-successfully": "Le cache a été effacé avec succès", + "addr-copied": "L'adresse a été copiée dans le presse-papiers", + "qrcode-copied": "Le code QR a été copié dans le presse-papiers", + "view-the-run-node-doc": "Consultez le guide dans le navigateur", + "remain-ckb-for-withdraw": "Il est conseillé de réserver quelques CKBytes pour l'opération de retrait", + "no-valid-addresses-found": "Aucune adresse valide trouvée", + "decimal-range": "La décimale doit être un entier de {{range}} (inclus)", + "experimental-message-hardware": "Il s'agit d'une fonctionnalité expérimentale. Veuillez prêter attention aux risques et l'utiliser avec précaution.", + "experimental-message": "Il s'agit d'une fonctionnalité expérimentale, elle peut changer à tout moment. Veuillez utiliser avec précaution.", + "rebuild-sync": "Pour une meilleure expérience utilisateur, Neuron a adopté un nouveau stockage, nécessitant une migration des données (estimée entre 20 et 60 minutes).\nDésolé pour le désagrément.", + "migrate-warning": "Avertissement : Le processus de migration peut échouer pour des raisons inconnues, entraînant une resynchronisation. Veuillez effectuer une sauvegarde manuelle et lancer la migration !", + "migrate-ckb-data": "Migrer", + "migrate": "Migrer", + "secp256k1/blake160-address-required": "L'adresse Secp256k1/Blake160 est requise", + "light-client-locktime-warning": "2. Le mode client léger ne prend pas en charge l'affichage des CKBytes avec un temps de verrouillage.", + "light-client-cheque-warning": "Avertissement : Le mode client léger ne prend pas en charge l'affichage des actifs Cheque.", + "fields": { + "wallet": "Portefeuille", + "name": "Nom", + "password": "Mot de passe", + "remote": "URL RPC", + "network": "Réseau", + "address": "Adresse", + "amount": "Montant", + "transaction": "Transaction", + "default-address": "Adresse par défaut", + "mnemonic": "Mnémonique", + "keystore-path": "Fichier de clés", + "keystore-name": "Nom du portefeuille", + "keystore-password": "Mot de passe", + "deposit": "Dépôt", + "account-name": "Nom du compte", + "token-name": "Nom du jeton", + "token-id": "ID du jeton", + "symbol": "Symbole", + "decimal": "Décimale" + }, + "codes": { + "-3": "", + "100": "Le montant n'est pas suffisant.", + "101": "Le montant {{amount}} CKB est trop petit, veuillez saisir un montant d'au moins {{required}} CKB.", + "102": "$t(messages.fields.{{fieldName}}) est invalide.", + "103": "Le mot de passe $t(messages.fields.keystore-password) est incorrect", + "104": "Échec de la connexion au nœud, veuillez redémarrer Neuron.", + "105": "Vous avez besoin de plus de capacités pour le changement (plus de 61 CKBytes).", + "106": "Vous avez besoin de plus de capacités pour le changement (plus de 61 CKBytes), ou faites glisser jusqu'à la fin pour envoyer tout votre solde.", + "107": "Le montant {{amount}} CKB est trop petit, le transfert avec verrouillage nécessite un montant d'au moins 69 CKB.", + "108": "L'adresse fournie n'appartient pas au portefeuille actuel. Veuillez vérifier votre portefeuille ou attendre la fin de la synchronisation.", + "109": "Solde insuffisant.", + "110": "Solde disponible insuffisant, veuillez réessayer lorsque la dernière transaction a été confirmée.", + "111": "Le portefeuille actuel n'est pas défini.", + "112": "Portefeuille {{id}} introuvable.", + "113": "La clé de stockage est invalide, veuillez vérifier l'intégrité de votre fichier.", + "114": "Le solde minimal de transfert est de {{bytes}} CKBytes.", + "115": "Vous avez besoin de plus de capacités pour le changement (plus de 61 CKBytes), ou cliquez sur le bouton 'Max' pour envoyer tout votre solde.", + "201": "$t(messages.fields.{{fieldName}}) est requis.", + "202": "$t(messages.fields.{{fieldName}}) est utilisé.", + "203": "$t(messages.fields.{{fieldName}}) doit être plus court ou égal à {{length}}", + "204": "$t(messages.fields.{{fieldName}}) est trop court, il doit être plus long ou égal à {{length}}.", + "205": "$t(messages.fields.{{fieldName}}) {{fieldValue}} est invalide.", + "206": "$t(messages.fields.{{fieldName}}) est invalide, veuillez entrer $t(messages.fields.{{fieldName}}) avec pas plus de {{length}} décimales.", + "207": "$t(messages.fields.{{fieldName}}) {{fieldValue}} est invalide, il ne peut pas être négatif.", + "208": "$t(messages.fields.{{fieldName}}) {{fieldValue}} est invalide, il doit commencer par http(s)://", + "209": "$t(messages.fields.{{fieldName}}) ne doit pas contenir d'espaces.", + "210": "\"{{value}}\" est réservé, veuillez en choisir un autre.", + "211": "Le montant ne peut pas être de 0", + "212": "$t(messages.fields.{{fieldName}}) est trop simple", + "301": "$t(messages.fields.{{fieldName}}) {{fieldValue}} ne peut pas être supprimé.", + "303": "$t(messages.fields.{{fieldName}}) est introuvable.", + "304": "La caméra n'est pas disponible ou désactivée.", + "305": "$t(messages.fields.address) ne peut pas être vide.", + "306": "Veuillez entrer une adresse principale", + "307": "Veuillez entrer une adresse de testnet", + "308": "Le montant n'est pas suffisant", + "309": "Le destinataire doit mettre à niveau son adresse de compte pour accepter davantage de transferts.", + "310": "Veuillez entrer une adresse {{tagName}}", + "402": "L'application CKB n'est pas ouverte. Veuillez ouvrir l'application CKB sur votre appareil.", + "403": "Aucun appareil détecté. Veuillez connecter votre appareil", + "404": "Plusieurs appareils détectés. Un seul appareil du même modèle peut être connecté.", + "600": "Veuillez vous assurer que la synchronisation est finalisée avant d'effectuer toute opération liée à une transaction." + } + }, + "sync": { + "synced": "Synchronisé à 100%", + "syncing": "Synchronisation {{ syncPercents }}", + "block-number": "numéro de bloc", + "syncing-balance": "La balance est en cours de mise à jour", + "slow": "La synchronisation est lente", + "sync-failed": "Échec de la synchronisation, veuillez vérifier le réseau", + "sync-not-start": "La synchronisation n'a pas encore commencé, veuillez essayer de redémarrer le portefeuille Neuron", + "connecting": "Connexion en cours" + }, + "pagination": { + "previous-page": "Page précédente", + "next-page": "Page suivante", + "first-page": "Première page", + "last-page": "Dernière page", + "page": "Page", + "selected": "Page actuelle", + "range": "{{start}} - {{end}} de {{count}}", + "page-no": "Page {{pageNo}}" + }, + "nervos-dao": { + "free": "Disponible", + "locked": "Verrouillé", + "deposit": "Dépôt", + "deposit-rules": "Règles de dépôt", + "copy-balance": "Copier le solde", + "deposit-records": "Dépôts", + "completed-records": "Terminé", + "apc": "APC actuel", + "apc-tooltip": "Taux de Compensation Annuel Actuel", + "fee": "Frais de transaction : ", + "deposit-to-nervos-dao": "Déposer dans Nervos DAO", + "withdraw-from-nervos-dao": "Retirer de Nervos DAO", + "cancel": "Annuler", + "proceed": "Procéder", + "compensation": "Compensation", + "notice-wait-time": "Remarque : Vous initiez un retrait et le retrait final devra attendre {{epochs}} époques {{blocks}} blocs (environ {{days}} jours).", + "deposit-dialog-title": "Dépôt", + "deposit-terms": "Nervos DAO nécessite 102 CKBytes pour le stockage de la cellule de dépôt, qui n'est pas rémunéré.
Veuillez consulter le <0>Nervos DAO RFC pour plus d'informations sur Nervos DAO", + "minimal-fee-required": "La capacité minimale de dépôt est de {{minimal}} CKBytes", + "compensation-accumulated": "{{blockNumber}} blocs de compensation accumulée", + "withdraw-alert": "Astuce : il ne reste que {{epochs}} époques (~{{hours}} heures) jusqu'à la fin de votre période de verrouillage actuelle. Si vous souhaitez retirer pendant cette période de verrouillage, veuillez envoyer une demande de retrait à temps. Il reste {{nextLeftEpochs}} époques (~{{days}} jours) jusqu'à la fin de votre prochaine période de verrouillage.", + "balance-not-reserved": "Ne pas réserver de CKBytes pour les futures opérations DAO (non recommandé)", + "deposit-amount": "Montant du dépôt (CKB)", + "deposit-record": { + "deposited-at": "Déposé", + "completed-at": "Terminé", + "deposit-pending": "En attente de dépôt", + "withdraw-action-label": "Retirer", + "unlock-action-label": "Déverrouiller", + "record": "Enregistrement", + "deposited": "Déposé", + "withdrawn": "Retiré", + "unlocked": "Déverrouillé", + "view-tx-detail": "Voir les détails de la transaction", + "locked-period": "Période de verrouillage", + "compensated-period": "Période de compensation", + "days-hours": "{{days}} jours {{hours}} heures", + "no-deposit": "Aucun dépôt", + "no-completed": "Aucun terminé" + }, + "compensation-period": { + "tooltip": { + "compensated-period": "Période de compensation", + "days-hours": "{{days}} jours {{hours}} heures", + "immature-for-withdraw": "Il faut au moins environ 16 heures (4 époques) pour procéder à la prochaine action", + "normal": "Le montant de la compensation est faible, le retrait n'est pas recommandé", + "suggested": "Période de retrait suggérée pour une compensation maximisée", + "ending": "Le retrait demandé peut être reporté et verrouillé pour une période supplémentaire de 30 jours", + "withdrawn": "Retiré" + }, + "stage-messages": { + "pending": "En attente...", + "immature-for-withdraw": "Les CKB ne peuvent pas être retirés pendant les {{ hours }} prochaines heures", + "immature-for-unlock": "Les CKB ne peuvent pas être déverrouillés pendant les {{ hours }} prochaines heures", + "next-compensation-cycle": "Le prochain cycle de compensation commencera dans environ {{days}} jours", + "withdrawing": "Retrait en cours...", + "compensation-cycle-will-end": "La période de compensation se termine dans environ {{days}} jours", + "compensation-cycle-has-ended": "Le cycle est terminé, les CKB sont prêts à être déverrouillés", + "unlocking": "Déverrouillage en cours..." + } + } + }, + "nervos-dao-detail": { + "tx-detail": "Détail de la transaction", + "deposited": "Déposé", + "withdrawn": "Retiré", + "unlocked": "Déverrouillé", + "basic-information": "Informations de base", + "transaction-hash": "Hachage de la transaction", + "blockNumber": "Numéro de bloc", + "datetime": "Date et heure", + "income": "Revenu", + "index": "Index", + "address": "Adresse", + "amount": "Montant", + "cell-from-cellbase": "De cellbase", + "cancel": "Annuler", + "next": "Suivant" + }, + "lock-info-dialog": { + "address-info": "Informations sur l'adresse", + "deprecated-address": "Adresse obsolète" + }, + "updates": { + "check-updates": "Vérifier les mises à jour", + "checking-updates": "Vérification en cours...", + "update-available": "Des mises à jour sont actuellement disponibles.", + "downloading-update": "Téléchargement de la mise à jour...", + "update-not-available": "Aucune mise à jour n'est actuellement disponible.", + "updates-found-do-you-want-to-update": "Une mise à jour ({{version}}) est disponible", + "install-update": "Mise à jour immédiate", + "updates-downloaded-about-to-quit-and-install": "Mise à jour téléchargée. Prêt à installer et relancer.", + "quit-and-install": "Installer et relancer" + }, + "datetime": { + "mon": { + "full": "Lundi", + "short": "Lun.", + "tag": "L" + }, + "tue": { + "full": "Mardi", + "short": "Mar.", + "tag": "M" + }, + "wed": { + "full": "Mercredi", + "short": "Mer.", + "tag": "M" + }, + "thur": { + "full": "Jeudi", + "short": "Jeu.", + "tag": "J" + }, + "fri": { + "full": "Vendredi", + "short": "Ven.", + "tag": "V" + }, + "sat": { + "full": "Samedi", + "short": "Sam.", + "tag": "S" + }, + "sun": { + "full": "Dimanche", + "short": "Dim.", + "tag": "D" + }, + "jan": { + "full": "Janvier", + "short": "Janv.", + "tag": "J" + }, + "feb": { + "full": "Février", + "short": "Fév.", + "tag": "F" + }, + "mar": { + "full": "Mars", + "short": "Mar.", + "tag": "M" + }, + "apr": { + "full": "Avril", + "short": "Avr.", + "tag": "A" + }, + "may": { + "full": "Mai", + "short": "Mai.", + "tag": "M" + }, + "june": { + "full": "Juin", + "short": "Juin.", + "tag": "J" + }, + "july": { + "full": "Juillet", + "short": "Juill.", + "tag": "J" + }, + "aug": { + "full": "Août", + "short": "Août.", + "tag": "A" + }, + "sept": { + "full": "Septembre", + "short": "Sept.", + "tag": "S" + }, + "oct": { + "full": "Octobre", + "short": "Oct.", + "tag": "O" + }, + "nov": { + "full": "Novembre", + "short": "Nov.", + "tag": "N" + }, + "dec": { + "full": "Décembre", + "short": "Déc.", + "tag": "D" + }, + "timezone": "Fuseau horaire", + "previous-month": "mois précédent", + "next-month": "mois suivant", + "start-tomorrow": "L'heure sélectionnée devrait commencer à partir de demain." + }, + "sign-and-verify": { + "window-title": "Signer ou Vérifier le message", + "sign-or-verify-message": "Signer ou Vérifier le message", + "message": "Message", + "address": "Adresse", + "signature": "Signature", + "cancel": "Annuler", + "sign": "Signer", + "verify": "Vérifier", + "password": "Mot de passe", + "confirm": "Confirmer", + "verification-success": "Vérification réussie", + "verification-failure": "Échec de la vérification", + "address-not-found": "L'adresse fournie n'appartient pas au portefeuille actuel. Veuillez vérifier votre portefeuille ou attendre la fin de la synchronisation.", + "sign-with-magic-byte": "Le message sera signé avec les octets magiques 'Nervos Message:'", + "verify-tip": "Peut être vérifié par Neuron à partir de la version 0.33.1", + "verify-old-sign-success": "Le message a été signé par Neuron avant la version 0.33.1", + "input-message": "Veuillez saisir le message", + "input-choose-address": "Veuillez saisir ou choisir une adresse", + "input-password": "Veuillez saisir le mot de passe" + }, + "special-assets": { + "title": "Actifs personnalisés", + "date": "Date", + "assets": "Actifs", + "type-script-tooltip": "Type Script", + "data-tooltip": "Données", + "user-defined-asset": "Actif non répertorié", + "user-defined-asset-tooltip": "Il s'agit d'un actif non répertorié. Neuron ne peut pas le traiter pour le moment. Veuillez utiliser un logiciel tiers pour vérifier.", + "locked-asset": "Verrouillé", + "locked-asset-tooltip": "Le paramètre de verrouillage est de {{epochs}} époques, la date de libération estimée est le {{year}}-{{month}}-{{day}} (selon la hauteur de bloc réelle en cours d'exécution, il peut y avoir des variances de temps dans le verrouillage).", + "withdraw-asset-tooltip": "L'heure de libération estimée est le {{year}}-{{month}}-{{day}} à {{hour}}:{{minute}} (selon la hauteur de bloc réelle en cours d'exécution).", + "user-defined-token-tooltip": "Migrer l'actif sUDT vers un compte d'actif sUDT", + "claim-asset": "Réclamation", + "withdraw-asset": "Retrait", + "view-details": "Voir les détails", + "release-success": "L'actif a été libéré, consultez les détails dans l'historique.", + "no-special-assets": "Aucun actif personnalisé", + "experimental": "Expérimental", + "unknown-asset": "Actif inconnu", + "transfer-nft": "Envoyer", + "user-defined-token": "Migrer", + "transfer-nft-success": "Transfert d'actifs réussi", + "migrate-sudt-success": "Conversion en nouveau compte d'actif sUDT réussie", + "send-sudt-success": "Transfert vers le compte sUDT réussi", + "unlock-success": "Actif réclamé, consultez l'historique des transactions pour plus de détails", + "withdraw-cheque-success": "Actif retiré, consultez l'historique des transactions pour plus de détails", + "claim-cheque-success": "Actif réclamé, consultez l'historique des transactions pour plus de détails" + }, + "migrate-sudt": { + "title": "Migrer vers un compte d'actif sUDT", + "choose-title": "Mode de migration", + "next": "Suivant", + "back": "Retour", + "input-token": "Veuillez saisir le nom du jeton", + "input-symbol": "Veuillez saisir le symbole", + "input-decimal": "Veuillez saisir la décimale", + "turn-into-new-account": { + "title": "Transformez en un nouveau compte d'actif sUDT", + "sub-title": "Transformez l'actif sUDT en un nouveau compte sUDT, occupe au moins 142 CKBytes", + "cancel": "Annuler", + "confirm": "Confirmer" + }, + "transfer-to-exist-account": { + "title": "Transférer vers un compte d'actif sUDT", + "sub-title": "Transférez tout le solde sUDT vers un compte sUDT existant, assurez-vous que le compte cible est actif" + }, + "cancel": "Annuler", + "confirm": "Confirmer", + "balance": "Solde", + "amount": "Montant", + "address": "Adresse" + }, + "s-udt": { + "edit-account-success": "Modification des informations du compte réussie", + "create-account-success": "Création réussie du compte d'actif", + "account-list": { + "title": "Comptes d'actifs", + "no-asset-accounts": "Aucun actif sUDT n'a été détecté", + "search": "Nom du compte, Nom du jeton ou Symbole", + "syncing": "Synchronisation en cours, les données actuelles peuvent être inexactes", + "send": "Envoyer", + "receive": "Recevoir", + "set-account-info": "Définir les informations du compte" + }, + "create-dialog": { + "create-asset-account": "Créer un compte d'actif", + "input-account-name": "Veuillez saisir le nom du compte", + "select-account-type": "Sélectionner le type de compte", + "account-name": "Nom du compte", + "sudt-account": "Compte sUDT", + "delete-failed": "Échec de la suppression de la configuration multisig, raison de l'échec : {{reason}}", + "ckb-account": "Compte CKB", + "set-token-info": "Définir les informations du jeton", + "token-id": "Identifiant du jeton", + "token-name": "Nom du jeton", + "symbol": "Symbole", + "decimal": "Décimale", + "confirm": "Confirmer", + "cancel": "Annuler", + "next": "Suivant", + "back": "Retour", + "occupy-142-ckb": "Occupe au moins 142 CKBytes", + "occupy-61-ckb": "Occupe au moins 61 CKBytes", + "input": { + "account-name": "Veuillez saisir le nom du compte", + "token-id": "Veuillez saisir l'identifiant du jeton", + "token-name": "Veuillez saisir le nom du jeton", + "symbol": "Veuillez saisir le symbole", + "decimal": "Veuillez saisir la décimale" + }, + "placeholder": { + "token-id": "L'ID du jeton est l'argument du script de type sUDT, qui est identique au hachage de verrouillage de l'émetteur du jeton." + } + }, + "send": { + "title": "Envoyer", + "address": "Envoyer à", + "address-placeholder": "Veuillez entrer l'adresse", + "input-address": "Veuillez entrer l'adresse", + "input-description": "Veuillez entrer la description, facultatif", + "amount": "Montant", + "amount-placeholder": "Veuillez entrer le montant", + "description": "Description", + "description-placeholder": "Veuillez entrer la description, facultatif", + "submit": "Soumettre", + "click-to-edit": "Cliquez pour éditer", + "cheque-address-hint": { + "label": "Verrouiller temporairement 162 CKBytes", + "tooltip": "162 CKBytes seront temporairement verrouillés pour initialiser le transfert de jeton, et seront automatiquement déverrouillés après que le jeton ait été réclamé par le destinataire." + }, + "destroy": "Détruire", + "destroy-ckb-desc": "Retournera tous les CKB de ce compte CKB Asset à votre adresse de change.", + "destroy-sudt-desc": "Retournera les CKB occupés par le compte d'actif à votre adresse de change.", + "extra-ckb-send-to-secp256": { + "label": "Envoyer 142 CKBytes supplémentaires avec {{assetName}}", + "tooltip": "142 CKBytes supplémentaires seront envoyés avec {{assetName}} pour détenir l'actif." + }, + "extra-ckb-send-to-acp": { + "label": "Envoyer {{extraCKB}} CKBytes supplémentaires pour créer un compte d'actif pour le destinataire" + }, + "extra-ckb-send-to-unknow": { + "label": "L'adresse du destinataire a un script de verrouillage inconnu, assurez-vous que le destinataire sait comment le gérer, et {{extraCKB}} CKBytes supplémentaires seront envoyés avec {{assetName}} pour détenir l'actif" + }, + "select-option": "Veuillez confirmer l'option ci-dessus avant de soumettre" + }, + "receive": { + "notation": "Accepter uniquement {{symbol}}" + }, + "update-dialog": { + "update-asset-account": "Détails du compte", + "account-name": "Nom du compte", + "token-id": "ID du jeton", + "token-name": "Nom du jeton", + "symbol": "Symbole", + "decimal": "Décimal", + "confirm": "Confirmer", + "cancel": "Annuler" + } + }, + "multisig-address": { + "window-title": "Adresses Multisig", + "search": { + "placeholder": "recherche par adresse multisig, alias" + }, + "add": { + "label": "Créer" + }, + "import": { + "label": "Importer" + }, + "export": { + "label": "Exporter" + }, + "ok": "OK", + "no-data": "Pas d'adresse multisig", + "table": { + "address": "Adresse du signataire", + "alias": "Alias", + "type": "Type", + "balance": "Solde", + "copy-address": "Copier l'adresse", + "action": "Actions", + "more": "Plus", + "sync-block": "Bloc synchronisé", + "actions": { + "info": "Info", + "send": "Envoyer", + "approve": "Approuver", + "delete": "Supprimer" + } + }, + "import-dialog": { + "actions": { + "cancel": "Annuler", + "confirm": "Confirmer" + }, + "notice": "Une seule configuration peut être importée à la fois. Si le contenu du fichier est un tableau, le premier est importé par défaut." + }, + "delete-failed": "Échec de la suppression de la configuration multisig", + "remove-multisig-address": "Supprimer l'adresse multisig", + "remove-multisig-address-msg": "Êtes-vous sûr de vouloir supprimer l'adresse multisig sélectionnée?", + "send-ckb": { + "title": "Envoyer des CKB depuis une adresse multisig", + "detail": "Envoyer des CKB depuis une adresse multisig {{m}}-sur-{{n}} : <0>", + "balance": "Solde", + "address": "Adresse", + "amount": "Montant", + "send": "Envoyer", + "cancel": "Annuler", + "export": "Exporter Tx" + }, + "multi-details": "Détails de l'adresse multisig", + "create-dialog": { + "title": "Créer une adresse multisig", + "preview-title": "L'adresse multisig a été générée", + "index": "Index", + "required": "Requis", + "signer-address": "Adresse du signataire", + "copy-address": "Copier l'adresse", + "placeholder": "Veuillez entrer {{type}}(1-255)", + "m-n": { + "title": "Veuillez entrer la configuration d'adresse multisig en mode m-sur-n où m clés privées parmi un total possible de n sont nécessaires pour déplacer l'actif.", + "m-less-equal-n": "Pour une adresse multisig m-sur-n, m ne doit pas être supérieur à n", + "m-n-required": "Veuillez entrer m/n", + "m-n-between-0-256": "m/n doit être compris entre 0 et 256" + }, + "multi-address-info": { + "title": "Veuillez entrer les signataires pour l'adresse multisig {{m}}-sur-{{n}}", + "view-title": "L'adresse multisig {{m}}-sur-{{n}}", + "ckb-address-placeholder": "Veuillez entrer l'adresse CKB" + }, + "multi-list": "Liste des signataires", + "actions": { + "cancel": "Annuler", + "back": "Retour", + "next": "Suivant", + "generate-address": "Générer l'adresse", + "confirm": "Confirmer" + }, + "duplicate-address-forbid": "L'adresse ne peut pas être dupliquée" + }, + "approve-dialog": { + "title": "Approuver avec une adresse multisig", + "detail": "Approuver avec une adresse multisig {{m}}-sur-{{n}} <0>", + "transaction": "Transaction", + "cancel": "Annuler", + "signAndExport": "Signer & Exporter", + "export": "Exporter Tx", + "signAndBroadcast": "Signer & Diffuser", + "broadcast": "Diffuser", + "content": "Contenu :", + "status": "Statut", + "signerApprove": "Manque d'approbation de {{m}} signataire(s), dont {{r}} de signataire(s) spécifié(s)", + "noRSignerApprove": "Manque d'approbation de {{m}} signataire(s)", + "signed": "Signé", + "view-concise-data": "Données concises", + "view-raw-data": "Données" + } + }, + "dropdown": { + "placeholder": "Veuillez sélectionner..." + }, + "price-switch": { + "price": "Prix", + "customPrice": "Prix personnalisé", + "errorTip": "Le prix ne peut pas être inférieur à {{minPrice}} shannons/KB, veuillez le saisir à nouveau", + "hintTip": "Le prix suggéré est de {{suggestFeeRate}} shannons/KB", + "priceColumn": "Prix {{priceValue}} shannons/KB | Frais {{feeValue}} CKB", + "fast": "Rapide", + "standard": "Standard", + "slow": "Lent", + "countDownTip": "Le prix se rafraîchira après {{countDown}} secondes", + "switchToCustomPrice": "Basculer vers un prix personnalisé", + "switchToPrice": "Basculer vers le prix" + }, + "set-start-block-number": { + "title": "Définir le numéro de bloc de départ", + "tip": "Le numéro de bloc de départ est une configuration lorsque vous utilisez le nœud CKB en mode client léger. Vous pouvez le définir et accélérer la synchronisation.", + "input-place-holder": "Veuillez entrer le numéro de bloc de départ pour la synchronisation, par exemple : 10, 100, 101", + "locate-first-tx": "Localiser la première transaction", + "view-block": "Voir le bloc" + }, + "main": { + "external-node-detected-dialog": { + "title": "Détection d'un nœud externe", + "body-tips-without-network": "\"Nœud interne\" est réservé au nœud CKB intégré, veuillez ajouter une nouvelle option réseau pour le nœud externe.", + "body-tips-with-network": "\"Nœud interne\" est réservé au nœud CKB intégré, veuillez sélectionner parmi les options réseau suivantes ou en ajouter une nouvelle pour le nœud externe.", + "add-network": "Ajouter un réseau", + "ignore-external-node": "Ignorer le nœud externe" + } + }, + "cell-manage": { + "title": "Gestion des cellules", + "wallet-balance": "Solde du portefeuille", + "table": { + "head": { + "date": "Date", + "type": "Type", + "balance": "Solde", + "status": "Statut", + "description": "Description", + "action": "Opération" + }, + "locked": "Verrouillé", + "unlocked": "Déverrouillé", + "default-description": "Aucune" + }, + "cell-detail-dialog": { + "title": "Détail de la cellule", + "capacity-used": "Capacité utilisée", + "data": "Données", + "total": "Total", + "used": "Utilisé" + }, + "locked-reason": { + "multi-locktime": "La cellule est verrouillée dans le temps et vous ne pouvez pas l'utiliser avant {{time}}.", + "multi-locktime-reached": "Le délai de verrouillage de cette cellule a expiré et vous devez la réclamer dans les actifs personnalisés avant de l'utiliser.", + "cheque-acp-multisig": "Il s'agit d'une cellule {{type}} et ne prend pas en charge le déverrouillage.", + "NFT-SUDT-DAO": "Il s'agit d'un actif {{type}} et ne prend pas en charge le déverrouillage.", + "Unknown": "Il s'agit d'un actif non répertorié, veuillez vérifier et confirmer avant de procéder." + }, + "cell-lock-dialog": { + "title": "Verrouiller la cellule", + "capacity": "Verrouiller la cellule sélectionnée {{capacity}} CKB", + "locked-cell-can-not-use": "Attention, les cellules verrouillées ne peuvent pas être utilisées" + }, + "cell-unlock-dialog": { + "title": "Déverrouiller la cellule", + "capacity": "Déverrouiller la cellule sélectionnée {{capacity}} CKB" + }, + "cell-consume-dialog": { + "title": "Consommer la cellule", + "warn-consume": "La consommation de la cellule ne conservera aucune donnée et utilisera tout le CKB. Veuillez vous assurer qu'aucune donnée importante ne doit être conservée." + }, + "enter-password": "Entrez le mot de passe", + "password-placeholder": "Veuillez entrer le mot de passe du portefeuille", + "lock": "Verrouiller", + "unlock": "Déverrouiller", + "consume": "Consommer" + } + } +} diff --git a/packages/neuron-ui/src/locales/zh-tw.json b/packages/neuron-ui/src/locales/zh-tw.json index 77fe4fc8a3..44b240120b 100644 --- a/packages/neuron-ui/src/locales/zh-tw.json +++ b/packages/neuron-ui/src/locales/zh-tw.json @@ -405,7 +405,8 @@ "en": "English", "en-US": "English(United States)", "zh": "中文(简体)", - "zh-TW": "中文(繁體)" + "zh-TW": "中文(繁體)", + "fr": "Français" }, "data": { "ckb-node-data": "節點配置和數據", diff --git a/packages/neuron-ui/src/locales/zh.json b/packages/neuron-ui/src/locales/zh.json index 8d2a559241..6a5b89f526 100644 --- a/packages/neuron-ui/src/locales/zh.json +++ b/packages/neuron-ui/src/locales/zh.json @@ -404,7 +404,8 @@ "en": "English", "en-US": "English(United States)", "zh": "中文(简体)", - "zh-TW": "中文(繁體)" + "zh-TW": "中文(繁體)", + "fr": "Français" }, "data": { "ckb-node-data": "节点配置和数据", diff --git a/packages/neuron-ui/src/tests/calendar/index.test.ts b/packages/neuron-ui/src/tests/calendar/index.test.ts index 27792b5cbc..dc5769d0c2 100644 --- a/packages/neuron-ui/src/tests/calendar/index.test.ts +++ b/packages/neuron-ui/src/tests/calendar/index.test.ts @@ -105,6 +105,11 @@ describe('Get Local Month Short Names', () => { const names = ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May.', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.'] expect(getLocalMonthShortNames('en')).toEqual(names) }) + + it('French', () => { + const names = ['Jan.', 'Fév.', 'Mar.', 'Avr.', 'Mai.', 'Jui.', 'Juil.', 'Aoû.', 'Sep.', 'Oct.', 'Nov.', 'Déc.'] + expect(getLocalMonthShortNames('fr')).toEqual(names) + }) }) describe('Get Local Month Names', () => { @@ -130,6 +135,24 @@ describe('Get Local Month Names', () => { ] expect(getLocalMonthNames('en')).toEqual(names) }) + + it('French', () => { + const names = [ + 'Janvier', + 'Février', + 'Mars', + 'Avril', + 'Mai', + 'Juin', + 'Juillet', + 'Août', + 'Septembre', + 'Octobre', + 'Novembre', + 'Décembre', + ] + expect(getLocalMonthNames('fr')).toEqual(names) + }) }) describe('Get Local Week Names', () => { @@ -143,6 +166,11 @@ describe('Get Local Week Names', () => { expect(getLocalWeekNames('en')).toEqual(names) }) + it('French', () => { + const names = ['S', 'M', 'T', 'W', 'T', 'F', 'S'] + expect(getLocalWeekNames('fr')).toEqual(names) + }) + it('Traditional Chinese', () => { const names = ['日', '一', '二', '三', '四', '五', '六'] expect(getLocalWeekNames('zh-TW')).toEqual(names) diff --git a/packages/neuron-ui/src/utils/const.ts b/packages/neuron-ui/src/utils/const.ts index 95db79fe67..624cf75931 100644 --- a/packages/neuron-ui/src/utils/const.ts +++ b/packages/neuron-ui/src/utils/const.ts @@ -49,7 +49,7 @@ export const DEFAULT_SUDT_FIELDS = { CKBSymbol: 'CKB', CKBDecimal: '8', } -export const LOCALES = ['zh', 'zh-TW', 'en', 'en-US'] as const +export const LOCALES = ['zh', 'zh-TW', 'en', 'en-US', 'fr'] as const // address property export const SHORT_ADDR_LENGTH = 46 diff --git a/packages/neuron-ui/src/utils/i18n.ts b/packages/neuron-ui/src/utils/i18n.ts index 28ebef475d..e422f4364d 100644 --- a/packages/neuron-ui/src/utils/i18n.ts +++ b/packages/neuron-ui/src/utils/i18n.ts @@ -5,10 +5,12 @@ import { getLocale } from 'services/remote' import zh from 'locales/zh.json' import en from 'locales/en.json' import zhTW from 'locales/zh-tw.json' +import fr from 'locales/fr.json' i18n.use(initReactI18next).init({ resources: { en, + fr, zh, 'zh-TW': zhTW, }, diff --git a/packages/neuron-wallet/src/locales/fr.ts b/packages/neuron-wallet/src/locales/fr.ts new file mode 100644 index 0000000000..c64dc8dcb9 --- /dev/null +++ b/packages/neuron-wallet/src/locales/fr.ts @@ -0,0 +1,303 @@ +export default { + translation: { + keywords: { + wallet: 'Portefeuille', + password: 'Mot de passe', + 'wallet-name': 'Nom du portefeuille', + }, + 'application-menu': { + neuron: { + about: 'À propos de {{app}}', + preferences: 'Préférences...', + 'check-updates': 'Vérifier les mises à jour...', + quit: 'Quitter {{app}}', + }, + wallet: { + label: 'Portefeuille', + select: 'Sélectionner un portefeuille', + 'create-new': 'Créer un nouveau portefeuille', + import: 'Importer un portefeuille', + backup: 'Sauvegarder le portefeuille actuel', + 'export-xpubkey': 'Exporter la clé publique étendue', + delete: 'Supprimer le portefeuille actuel', + 'change-password': 'Changer de mot de passe', + 'import-mnemonic': 'Importer la graine du portefeuille', + 'import-keystore': 'Importer depuis le fichier Keystore', + 'import-xpubkey': 'Importer la clé publique étendue', + 'import-hardware': 'Importer un portefeuille matériel', + }, + edit: { + label: 'Édition', + cut: 'Couper', + copy: 'Copier', + paste: 'Coller', + selectall: 'Sélectionner tout', + }, + tools: { + label: 'Outils', + 'sign-and-verify': 'Signer/Vérifier le message', + 'multisig-address': 'Adresses multisig', + 'offline-sign': 'Signature hors ligne', + 'clear-sync-data': 'Effacer toutes les données synchronisées', + }, + window: { + label: 'Fenêtre', + minimize: 'Réduire', + close: 'Fermer la fenêtre', + }, + help: { + label: 'Aide', + 'nervos-website': 'Site Web de Nervos', + 'source-code': 'Code source', + 'report-issue': 'Signaler un problème', + 'contact-us': 'Contactez-nous', + 'contact-us-message': + '> Veuillez ajouter les informations de débogage exportées via "Menu" -> "Aide" -> "Exporter les informations de débogage".', + documentation: 'Documentation', + settings: 'Paramètres', + 'export-debug-info': 'Exporter les informations de débogage', + }, + develop: { + develop: 'Développer', + 'force-reload': 'Forcer le rechargement', + reload: 'Recharger', + 'toggle-dev-tools': 'Basculer les outils de développement', + }, + }, + services: { + transactions: 'Transactions', + wallets: 'Portefeuilles', + }, + messages: { + 'failed-to-load-networks': 'Échec du chargement des réseaux.', + 'Networks-will-be-reset': 'Les réseaux seront réinitialisés.', + 'wallet-password-less-than-min-length': + 'Le mot de passe doit comporter au moins {{minPasswordLength}} caractères.', + 'wallet-password-more-than-max-length': + "Le mot de passe doit comporter jusqu'à {{maxPasswordLength}} caractères.", + 'wallet-password-letter-complexity': + 'Le mot de passe doit contenir une combinaison de lettres majuscules et minuscules, de chiffres et de caractères spéciaux.', + 'current-wallet-not-set': "Le portefeuille actuel n'est pas défini.", + 'incorrect-password': 'Le mot de passe est incorrect', + 'invalid-address': "L'adresse {{address}} n'est pas valide.", + 'codehash-not-loaded': "Le codehash n'est pas chargé.", + 'wallet-not-found': 'Le portefeuille {{id}} est introuvable.', + 'failed-to-create-mnemonic': 'Échec de la création de la mnémonique.', + 'network-not-found': "Le réseau de l'ID {{id}} n'a pas été trouvé.", + 'invalid-name': "Le nom {{field}} n'est pas valide.", + 'default-network-unremovable': 'Le réseau par défaut est irréparable.', + 'lack-of-default-network': 'Manque de réseau par défaut.', + 'current-network-not-set': "Le RPC du nœud CKB actuel n'a pas été défini.", + 'transaction-not-found': 'La transaction {{hash}} est introuvable.', + 'is-required': '{{field}} est requis.', + 'invalid-format': '{{field}} est dans un format invalide.', + 'used-name': 'Le nom {{field}} est utilisé, veuillez en choisir un autre.', + 'missing-required-argument': 'Argument requis manquant.', + 'save-keystore': 'Sauvegarder le fichier Keystore.', + 'save-extended-public-key': 'Sauvegarder la clé publique étendue.', + 'import-extended-public-key': 'Importer la clé publique étendue.', + 'invalid-mnemonic': "La graine du portefeuille n'est pas valide, veuillez la vérifier à nouveau.", + 'unsupported-cipher': 'Chiffrement non pris en charge.', + 'capacity-not-enough': 'Solde insuffisant.', + 'capacity-not-enough-for-change': + 'Vous avez besoin de plus de capacités pour la monnaie de rendu (plus de 61 CKBytes).', + 'capacity-not-enough-for-change-by-transfer': + 'Vous avez besoin de plus de capacités pour la monnaie de rendu (plus de 61 CKBytes), ou cliquez sur le bouton "Max" pour envoyer tout votre solde.', + 'live-capacity-not-enough': + 'Solde disponible insuffisant, veuillez réessayer lorsque la dernière transaction a été confirmée.', + 'capacity-too-small': 'Le solde de transfert minimal est de {{bytes}} CKBytes.', + 'should-be-type-of': '{{field}} doit être de type {{type}}.', + 'invalid-keystore': "Le fichier Keystore n'est pas valide, veuillez vérifier l'intégrité de votre fichier.", + 'invalid-json': "Fichier JSON non valide, veuillez vérifier l'intégrité de votre fichier.", + 'cell-is-not-yet-live': 'Veuillez attendre que la dernière transaction soit confirmée par la chaîne.', + 'transaction-is-not-committed-yet': + 'Impossible de trouver les cellules requises sur la chaîne, veuillez vous assurer que les transactions liées ont été confirmées.', + 'mainnet-address-required': "{{address}} n'est pas une adresse du réseau principal.", + 'testnet-address-required': "{{address}} n'est pas une adresse du réseau de test.", + 'address-not-found': + "L'adresse donnée ne fait pas partie du portefeuille actuel. Veuillez vérifier votre portefeuille ou attendre la fin de la synchronisation.", + 'target-output-not-found': "Il n'y a pas de portefeuille de compte associé à cette adresse.", + 'acp-same-account': 'Le compte de paiement et le compte de réception ne doivent pas être les mêmes.', + 'device-sign-canceled': + 'Vous avez annulé la demande de signature. Sinon, assurez-vous que l\'application Nervos sur votre appareil a la configuration "autoriser les données de contrat" activée', + 'connect-device-failed': "L'appareil ne peut pas être connecté, veuillez vérifier votre connexion.", + 'unsupported-manufacturer': 'Les appareils de {{manufacturer}} ne sont pas encore pris en charge.', + 'wallet-not-supported-function': 'Ce portefeuille ne prend pas en charge la fonction {name}.', + 'invalid-transaction-file': 'Fichier de transaction non valide.', + 'offline-sign-failed': 'Échec de la signature, veuillez vérifier si vous signez avec le bon portefeuille.', + 'multisig-script-prefix-error': 'La configuration multisig est erronée', + 'multisig-config-not-exist': "La configuration multisig n'existe pas", + 'multisig-config-exist': 'La configuration multisig existe déjà', + 'multisig-config-address-error': "Le paramètre d'adresse de la configuration multisig est incorrect", + 'multisig-config-need-error': 'La génération de transactions multisig nécessite une configuration multisig', + 'transaction-no-input-parameter': "Il manque un paramètre requis à l'entrée de la cellule de requête", + 'migrate-sudt-no-type': "La cellule de migration n'a pas de script de type", + 'multisig-not-signed': 'Des signatures partielles manquent pour les transactions multisig', + 'multisig-lock-hash-mismatch': "L'adresse multisig actuelle ne correspond pas à la transaction à approuver", + 'sudt-acp-have-data': 'Le compte acp sUDT à détruire contient une certaine quantité', + 'no-match-address-for-sign': 'Aucune adresse correspondante trouvée', + 'target-lock-error': "Le compte d'actifs CKB ne peut être transféré qu'à l'adresse secp256k1 ou acp", + 'no-exist-ckb-node-data': + "{{path}} n'a pas de configuration et de stockage de nœud CKB, appuyez sur Confirmer pour synchroniser à partir de zéro", + 'light-client-sudt-acp-error': + "Le mode client léger ne prend pas en charge l'envoi d'actifs vers le compte d'actifs d'autrui", + }, + messageBox: { + button: { + confirm: 'OK', + discard: 'Annuler', + }, + 'clear-sync-data': { + title: 'Effacer toutes les données synchronisées', + message: + 'Effacer toutes les données synchronisées supprimera toutes les données locales synchronisées et resynchronisera les données sur la chaîne. La synchronisation complète peut prendre beaucoup de temps.', + }, + 'send-capacity': { + title: 'Envoyer la transaction', + }, + 'remove-network': { + title: 'Supprimer le réseau', + message: 'Le réseau {{name}} (adresse : {{address}}) sera supprimé.', + alert: "C'est le réseau actuel. En le supprimant, la connexion passera au réseau par défaut", + }, + 'remove-wallet': { + title: 'Supprimer le portefeuille', + password: 'Mot de passe', + }, + 'backup-keystore': { + title: 'Sauvegarder le fichier Keystore', + password: 'Mot de passe', + }, + transaction: { + title: 'Transaction : {{hash}}', + }, + 'sign-and-verify': { + title: 'Signer/Vérifier le message', + }, + 'multisig-address': { + title: 'Adresses multisig', + }, + 'ckb-dependency': { + title: 'Nœud CKB inclus', + message: 'Dépendance requise', + detail: `Les nœuds réseau dans Neuron dépendent de composants C++, veuillez donc installer la dernière version de Microsoft Visual C++ Redistributable pour x64 pour garantir le bon fonctionnement du logiciel.`, + buttons: { + 'install-and-exit': 'Installer et quitter', + }, + }, + 'acp-migration': { + title: "Mise à niveau du compte d'actif", + message: "Mise à niveau du compte d'actif", + detail: + "Récemment, notre équipe de sécurité a identifié une vulnérabilité potentielle dans le script expérimental du compte d'actif. Nous avons déployé un nouveau script de compte d'actif avec une correction sur le réseau principal, et tous les futurs comptes d'actif utiliseront la nouvelle version. Nous vous recommandons de les mettre à niveau pour utiliser le nouveau script.", + buttons: { + migrate: 'Mise à niveau sécurisée maintenant', + skip: 'Je connais les risques, je mettrai à niveau plus tard', + }, + }, + 'acp-migration-completed': { + title: 'Félicitations ! Vous avez terminé la mise à niveau sécurisée.', + message: 'Félicitations ! Vous avez terminé la mise à niveau sécurisée.', + buttons: { + ok: 'OK', + }, + }, + 'hard-fork-migrate': { + message: + "Afin de s'adapter à la dernière version de CKB, Neuron va resynchroniser les données sur la chaîne, et la synchronisation complète peut prendre un certain temps.", + }, + 'mail-us': { + message: + 'Veuillez nous envoyer un courriel avec les informations de débogage exportées par "Menu" -> "Aide" -> "Exporter les informations de débogage".', + 'open-client': 'Ouvrir le client de messagerie', + 'fail-message': + 'Impossible de lancer le client de messagerie. Veuillez copier l\'adresse e-mail, ajouter les informations de débogage exportées par "Menu" -> "Aide" -> "Exporter les informations de débogage" et nous les envoyer.', + 'copy-mail-addr': "Copier l'adresse e-mail", + }, + 'migrate-failed': { + title: 'Échec de la migration', + message: + "Échec de la migration. Appuyez sur OK pour supprimer les anciennes données et resynchroniser à partir de zéro, ou cliquez sur Annuler pour migrer ultérieurement en relançant Neuron. Raison de l'échec de la migration : {{ reason }}", + buttons: { + ok: 'OK', + cancel: 'Annuler', + }, + }, + }, + prompt: { + password: { + label: 'Entrez votre mot de passe', + submit: 'Soumettre', + cancel: 'Annuler', + }, + }, + updater: { + 'update-not-available': "Aucune mise à jour n'est actuellement disponible.", + }, + common: { + yes: 'Oui', + no: 'Non', + ok: 'OK', + cancel: 'Annuler', + error: 'Erreur', + }, + 'export-debug-info': { + 'export-debug-info': 'Exporter les informations de débogage', + 'debug-info-exported': 'Les informations de débogage ont été exportées vers {{ file }}', + }, + about: { + 'app-version': '{{name}} Version : {{version}}', + 'ckb-client-version': 'Version du client CKB : {{version}}', + 'ckb-light-client-version': 'Version légère du client CKB : {{version}}', + }, + settings: { + title: { + normal: 'Paramètres', + mac: 'Préférences', + }, + }, + 'export-transactions': { + 'export-transactions': "Exporter l'historique des transactions", + 'export-success': 'Les transactions ont été exportées', + 'transactions-exported': '{{total}} enregistrements de transactions ont été exportés vers {{file}}', + column: { + time: 'Heure', + 'block-number': 'Numéro de bloc', + 'tx-hash': 'Hachage de transaction', + 'tx-type': 'Type de transaction', + amount: 'Montant de CKB', + 'udt-amount': 'Montant UDT', + description: 'Description', + }, + 'tx-type': { + send: 'Envoyer', + receive: 'Recevoir', + 'create-asset-account': "Créer un compte d'actif {{name}}", + 'destroy-asset-account': "Détruire le compte d'actif {{name}}", + }, + }, + 'offline-signature': { + 'export-transaction': 'Exporter la transaction au format JSON', + 'transaction-exported': 'La transaction a été exportée vers {{filePath}}.', + 'load-transaction': 'Charger le fichier de transaction', + }, + 'multisig-config': { + 'import-config': 'Importer une configuration multisig', + 'export-config': 'Exporter une configuration multisig', + 'config-exported': 'Les configurations multisig ont été exportées vers {{filePath}}.', + 'import-duplicate': 'Veuillez vérifier les configurations en double', + 'import-result': 'Importations réussies {{success}}, échecs {{fail}}.{{failCheck}}', + 'confirm-delete': 'Confirmer la suppression de la configuration multisig ?', + 'approve-tx': 'Confirmer la transaction multisig', + 'delete-actions': { + ok: 'Confirmer', + cancel: 'Annuler', + }, + }, + 'open-in-explorer': { + title: "Voir dans l'explorateur CKB", + transaction: 'transaction', + message: "Voir {{type}} {{key}} dans l'explorateur CKB", + }, + }, +} diff --git a/packages/neuron-wallet/src/locales/i18n.ts b/packages/neuron-wallet/src/locales/i18n.ts index a7a9a69335..882ba31cfd 100644 --- a/packages/neuron-wallet/src/locales/i18n.ts +++ b/packages/neuron-wallet/src/locales/i18n.ts @@ -2,10 +2,12 @@ import i18n from 'i18next' import zh from './zh' import en from './en' import zhTW from './zh-tw' +import fr from './fr' i18n.init({ resources: { en, + fr, zh, 'zh-TW': zhTW, }, diff --git a/packages/neuron-wallet/src/services/settings.ts b/packages/neuron-wallet/src/services/settings.ts index 02629f021e..89f82f35d6 100644 --- a/packages/neuron-wallet/src/services/settings.ts +++ b/packages/neuron-wallet/src/services/settings.ts @@ -9,7 +9,7 @@ import { LIGHT_CLIENT_MAINNET, LIGHT_CLIENT_TESTNET } from '../utils/const' const { app } = env -export const locales = ['zh', 'zh-TW', 'en', 'en-US'] as const +export const locales = ['zh', 'zh-TW', 'en', 'en-US', 'fr'] as const export type Locale = (typeof locales)[number] const settingKeys = { ckbDataPath: 'ckbDataPath', From 79f4a58cab44265b881734df6d7b7816edbf0520 Mon Sep 17 00:00:00 2001 From: Keith Date: Fri, 5 Jan 2024 11:26:38 +0900 Subject: [PATCH 2/8] chore: exclude fr.ts and fr.json from typos checking --- _typos.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_typos.toml b/_typos.toml index 369e09719d..78683d1960 100644 --- a/_typos.toml +++ b/_typos.toml @@ -6,4 +6,4 @@ numer = "numer" lastest = "lastest" [files] -extend-exclude = ["CHANGELOG.md", "**/migrations/*.ts"] +extend-exclude = ["CHANGELOG.md", "**/migrations/*.ts", "**/fr.{ts,json}"] From f813a5339a6b578a91b44a8260ae8aa96e61925f Mon Sep 17 00:00:00 2001 From: Natixe Date: Fri, 5 Jan 2024 17:01:53 +0100 Subject: [PATCH 3/8] Small improvement in language --- packages/neuron-ui/.storybook/electron.js | 2 +- packages/neuron-ui/src/locales/fr.json | 162 +++++++++--------- .../src/tests/calendar/index.test.ts | 2 +- packages/neuron-ui/tsconfig.json | 2 +- packages/neuron-wallet/src/locales/fr.ts | 38 ++-- .../neuron-wallet/src/services/settings.ts | 1 + .../tests/services/setting.test.ts | 2 + 7 files changed, 106 insertions(+), 103 deletions(-) diff --git a/packages/neuron-ui/.storybook/electron.js b/packages/neuron-ui/.storybook/electron.js index 78003d8100..9978d578ce 100644 --- a/packages/neuron-ui/.storybook/electron.js +++ b/packages/neuron-ui/.storybook/electron.js @@ -1,5 +1,5 @@ const sendSyncValues = { - 'get-locale': 'zh', + 'get-locale': ('zh', 'fr'), 'get-version': '0.103.1', } diff --git a/packages/neuron-ui/src/locales/fr.json b/packages/neuron-ui/src/locales/fr.json index 0a275bbf7d..e2350aac55 100644 --- a/packages/neuron-ui/src/locales/fr.json +++ b/packages/neuron-ui/src/locales/fr.json @@ -1,7 +1,7 @@ { "translation": { "launch-screen": { - "loading-wallets": "Chargement des portefeuilles" + "loading-wallets": "Chargement des Wallets" }, "contextmenu": { "cut": "Couper", @@ -11,7 +11,7 @@ }, "navbar": { "overview": "Aperçu", - "wallet": "Portefeuille", + "wallet": "Wallet", "send": "Envoyer", "receive": "Recevoir", "history": "Historique", @@ -39,7 +39,7 @@ "title": { "select-model": "Veuillez connecter votre appareil et sélectionner le modèle", "detect-device": "Détection de l'appareil", - "name-wallet": "Nommer le portefeuille", + "name-wallet": "Nommer le Wallet", "choose-address": "Choisissez une adresse de l'appareil" }, "actions": { @@ -49,37 +49,37 @@ "cancel": "Annuler", "back": "Retour", "rescan": "Rescan", - "close": "close", - "finish": "Finish Creating" + "close": "fermer", + "finish": "fin de la création" }, "errors": { - "multi-device": "Multiple device detected. Only one device of the same model can be connected.", - "device-not-found": "No device detected. Please connect your device.", - "ckb-app-not-found": "CKB App does not open. Please open the CKB App on your device." - }, - "waiting": "Waiting for CKB app...", - "abort": "Waiting for CKB app... Action aborted", - "app-version": "CKB App v{{version}} running.", - "firmware-version": "Firmware v{{version}} detected.", - "wallet-name": "Wallet Name", - "select-model": "Select Model", - "other-device": "Other" + "multi-device" : "Plusieurs appareils détectés. Un seul appareil du même modèle peut être connecté", + "device-not-found" : "Aucun appareil n'a été détecté. Veuillez connecter votre appareil.", + "ckb-app-not-found" : "L'application CKB ne s'ouvre pas. Veuillez ouvrir l'application CKB sur votre appareil." + }, + "waiting" : "Waiting for CKB app...", + "abort" : "En attente de l'application CKB... Action annulée", + "app-version" : "CKB App v{{version}} en cours d'exécution", + "firmware-version" : "Firmware v{{version}} détecté", + "wallet-name" : "Nom du portefeuille", + "select-model" : "Select Model", + "other-device" : "Other" }, "hardware-sign": { - "cancel": "Cancel", - "title": "Sign via hardware wallet", - "device": "Device:", - "status": { - "label": "Status:", - "connect": "Connected, ready for signing.", - "user-input": "Connected, waiting for confirmation on device...", - "disconnect": "Disconnected, please confirm device has connect and open Nervos app" + "annuler" : "Annuler", + "title" : "Signer via le portefeuille matériel", + "device" : "Device :", + "status" : { + "label" : "Status :", + "connect" : "Connected, ready for signing", + "user-input" : "Connected, waiting for confirmation on device...", + "disconnect" : "Déconnecté, veuillez confirmer que l'appareil est connecté et ouvrir l'application Nervos" }, "inputs": "Inputs(signing {{index}} of {{length}})", "outputs": "Outputs({{length}})", "actions": { - "close": "Close", - "success": "Transaction Successful!", + "close": "Fermer", + "success": "Transaction réussie !", "rescan": "Rescan" } }, @@ -90,13 +90,13 @@ "verified": "Verified", "invalid": "Invalid", "status": { - "label": "Status:", - "connect": "Connected, ready for verifying.", - "user-input": "Connected, waiting for confirmation on device...", - "disconnect": "Disconnected, please confirm device has connect and open Nervos app" + "label" : "Status :", + "connect" : "Connecté, prêt pour la vérification", + "user-input" : "Connected, waiting for confirmation on device...", + "disconnect" : "Déconnecté, veuillez confirmer que l'appareil est connecté et ouvrir l'application Nervos" }, "actions": { - "close": "Close", + "close": "Fermer", "reconnect": "Reconnecter", "copy-address": "Copier l'adresse", "verify": "Vérifier l'adresse", @@ -112,7 +112,7 @@ "partially-signed": "Partiellement signé", "signed": "Signé" }, - "wallet": "Portefeuille :", + "wallet": "Wallet :", "content": "Contenu :", "export": "Exporter Tx", "sign-and-export": "Signer et exporter", @@ -144,7 +144,7 @@ "destroy": "Détruire le compte d'actif {{name}}", "createSUDT": "Créer un compte d'actif <0>", "destroySUDT": "Détruire le compte d'actif <0>", - "wallet-ready": "Le portefeuille est prêt, bienvenue", + "wallet-ready": "Le Wallet est prêt, bienvenue", "send": "Envoyer", "receive": "Recevoir", "locked": "Montant verrouillé", @@ -152,37 +152,37 @@ }, "wizard": { "welcome-to-nervos-neuron": "Bienvenue sur Neuron", - "create-or-import-your-first-wallet": "Créez ou importez votre premier portefeuille", - "create-new-wallet": "Créer un portefeuille", - "import-mnemonic": "Importer la graine du portefeuille", + "create-or-import-your-first-wallet": "Créez ou importez votre premier Wallet", + "create-new-wallet": "Créer un Wallet", + "import-mnemonic": "Importer la graine du Wallet", "import-keystore": "Importer depuis le fichier Keystore", - "import-wallet": "Importer un portefeuille", - "import-hardware-wallet": "Importer un portefeuille matériel", - "new-wallet": "Nouveau portefeuille", - "wallet-seed": "Graine du portefeuille", + "import-wallet": "Importer un Wallet", + "import-hardware-wallet": "Importer un Wallet matériel", + "new-wallet": "Nouveau Wallet", + "wallet-seed": "Graine du Wallet", "keystore": "Fichier Keystore", - "hardware-wallet": "Portefeuille matériel", + "hardware-wallet": "Wallet matériel", "next": "Suivant", "back": "Retour", "name": "Nom", - "your-wallet-seed-is": "Votre nouvelle graine de portefeuille a été générée", - "input-your-seed": "Veuillez entrer votre graine de portefeuille", + "your-wallet-seed-is": "Votre nouvelle graine de Wallet a été générée", + "input-your-seed": "Veuillez entrer votre graine de Wallet", "password": "Mot de passe", "confirm-password": "Confirmer le mot de passe", - "set-wallet-name-and-password": "Nommez votre nouveau portefeuille et choisissez un mot de passe fort pour le protéger", - "set-wallet-name": "Donnez un nom à votre nouveau portefeuille", - "set-a-strong-password-to-protect-your-wallet": "Créez un mot de passe fort pour protéger votre portefeuille", - "wallet-suffix": "Portefeuille {{suffix}}", - "write-down-seed": "Notez votre graine de portefeuille et enregistrez-la dans un endroit sûr", - "new-name": "Utilisez un nom inutilisé pour le nouveau portefeuille", + "set-wallet-name-and-password": "Nommez votre nouveau Wallet et choisissez un mot de passe fort pour le protéger", + "set-wallet-name": "Donnez un nom à votre nouveau Wallet", + "set-a-strong-password-to-protect-your-wallet": "Créez un mot de passe fort pour protéger votre Wallet", + "wallet-suffix": "Wallet {{suffix}}", + "write-down-seed": "Notez votre graine de Wallet et enregistrez-la dans un endroit sûr", + "new-name": "Utilisez un nom inutilisé pour le nouveau Wallet", "complex-password": "Le mot de passe doit contenir entre 8 et 50 caractères, comprenant au moins trois catégories parmi les suivantes : lettres majuscules, lettres minuscules, chiffres et symboles spéciaux.", "same-password": "Le mot de passe et la confirmation du mot de passe doivent correspondre", "input-seed-verify": "Saisissez la graine créée pour vérification", - "no-wallet": "Pas de portefeuille ?", - "create-wallet": "Créer un portefeuille", + "no-wallet": "Pas de Wallet ?", + "create-wallet": "Créer un Wallet", "repeat-password": "Répéter le mot de passe", "finish-create": "Terminer la création", - "creating-wallet": "Le portefeuille est en cours de préparation, veuillez patienter", + "creating-wallet": "Le Wallet est en cours de préparation, veuillez patienter", "add-one": "Ajouter un autre" }, "import-keystore": { @@ -190,12 +190,12 @@ "select-file": "Choisir le fichier", "label": { "path": "Fichier Keystore", - "name": "Nom du portefeuille", + "name": "Nom du Wallet", "password": "Mot de passe" }, "placeholder": { "path": "Cliquez pour sélectionner le fichier Keystore", - "name": "Nom pour le nouveau portefeuille", + "name": "Nom pour le nouveau Wallet", "password": "Mot de passe pour vérifier le fichier Keystore" }, "button": { @@ -239,7 +239,7 @@ "remove-receiving-address-msg": "Êtes-vous sûr de vouloir supprimer l'adresse de réception sélectionnée ?", "locktime-notice-content": "Selon la hauteur de bloc réelle, il peut y avoir des variations temporelles dans le verrouillage temporel.", "release-on": "Libération le", - "locktime-warning": "Veuillez vous assurer que le portefeuille du destinataire peut prendre en charge le déverrouillage par expiration. (Remarque : 1. Les échanges ne prennent généralement pas en charge le déverrouillage par expiration {{extraNote}})", + "locktime-warning": "Veuillez vous assurer que le Wallet du destinataire peut prendre en charge le déverrouillage par expiration. (Remarque : 1. Les échanges ne prennent généralement pas en charge le déverrouillage par expiration {{extraNote}})", "allow-use-sent-cell": "Les sorties non confirmées sont autorisées dans cette transaction.", "submit-transaction": "Soumettre la transaction" }, @@ -294,7 +294,7 @@ "placeholder": "Rechercher le hash de transaction, l'adresse ou la date (aaaa-mm-jj)" }, "table": { - "name": "Nom du portefeuille", + "name": "Nom du Wallet", "type": "Type", "amount": "Montant", "timestamp": "Heure", @@ -373,13 +373,13 @@ }, "wallet-manager": { "edit-wallet": { - "wallet-name": "Nom du portefeuille", + "wallet-name": "Nom du Wallet", "password": "Mot de passe", "new-password": "Nouveau mot de passe", "confirm-password": "Confirmer le mot de passe", - "edit-wallet": "Éditer le portefeuille" + "edit-wallet": "Éditer le Wallet" }, - "edit-success": "Informations du portefeuille mises à jour avec succès", + "edit-success": "Informations du Wallet mises à jour avec succès", "delete-wallet-title": "Veuillez entrer le mot de passe de {{name}}", "password": "Mot de passe", "wallet-detail": { @@ -435,9 +435,9 @@ } }, "password-request": { - "wallet-not-found": "Le portefeuille n'a pas été trouvé", + "wallet-not-found": "Le Wallet n'a pas été trouvé", "password": "Entrez le mot de passe", - "placeholder": "Veuillez entrer le mot de passe du portefeuille", + "placeholder": "Veuillez entrer le mot de passe du Wallet", "send": { "title": "Soumettre la transaction" }, @@ -445,13 +445,13 @@ "title": "Envoyer NFT" }, "delete": { - "title": "Supprimer le portefeuille" + "title": "Supprimer le Wallet" }, "backup": { - "title": "Sauvegarder le portefeuille" + "title": "Sauvegarder le Wallet" }, "unlock": { - "title": "Veuillez entrer le mot de passe du portefeuille pour réclamer l'actif" + "title": "Veuillez entrer le mot de passe du Wallet pour réclamer l'actif" }, "create-sudt-account": { "title": "Créer un compte d'actif" @@ -498,7 +498,7 @@ "send-from-multisig-need-one": { "title": "Envoyer du CKB depuis une adresse multisig" }, - "xpub-notice": "Pour un portefeuille en mode lecture seule, seules les transactions exportées sont prises en charge" + "xpub-notice": "Pour un Wallet en mode lecture seule, seules les transactions exportées sont prises en charge" }, "qrcode": { "copy": "Copier l'image", @@ -544,8 +544,8 @@ "messages": { "error": "Erreur", "unknown-error": "Erreur inconnue", - "update-wallet-successfully": "Le portefeuille a été mis à jour avec succès", - "delete-wallet-successfully": "Le portefeuille a été supprimé avec succès", + "update-wallet-successfully": "Le Wallet a été mis à jour avec succès", + "delete-wallet-successfully": "Le Wallet a été supprimé avec succès", "create-network-successfully": "Le réseau a été créé avec succès", "update-network-successfully": "Le réseau a été mis à jour avec succès", "clear-cache-successfully": "Le cache a été effacé avec succès", @@ -565,7 +565,7 @@ "light-client-locktime-warning": "2. Le mode client léger ne prend pas en charge l'affichage des CKBytes avec un temps de verrouillage.", "light-client-cheque-warning": "Avertissement : Le mode client léger ne prend pas en charge l'affichage des actifs Cheque.", "fields": { - "wallet": "Portefeuille", + "wallet": "Wallet", "name": "Nom", "password": "Mot de passe", "remote": "URL RPC", @@ -576,7 +576,7 @@ "default-address": "Adresse par défaut", "mnemonic": "Mnémonique", "keystore-path": "Fichier de clés", - "keystore-name": "Nom du portefeuille", + "keystore-name": "Nom du Wallet", "keystore-password": "Mot de passe", "deposit": "Dépôt", "account-name": "Nom du compte", @@ -595,11 +595,11 @@ "105": "Vous avez besoin de plus de capacités pour le changement (plus de 61 CKBytes).", "106": "Vous avez besoin de plus de capacités pour le changement (plus de 61 CKBytes), ou faites glisser jusqu'à la fin pour envoyer tout votre solde.", "107": "Le montant {{amount}} CKB est trop petit, le transfert avec verrouillage nécessite un montant d'au moins 69 CKB.", - "108": "L'adresse fournie n'appartient pas au portefeuille actuel. Veuillez vérifier votre portefeuille ou attendre la fin de la synchronisation.", + "108": "L'adresse fournie n'appartient pas au Wallet actuel. Veuillez vérifier votre Wallet ou attendre la fin de la synchronisation.", "109": "Solde insuffisant.", "110": "Solde disponible insuffisant, veuillez réessayer lorsque la dernière transaction a été confirmée.", - "111": "Le portefeuille actuel n'est pas défini.", - "112": "Portefeuille {{id}} introuvable.", + "111": "Le Wallet actuel n'est pas défini.", + "112": "Wallet {{id}} introuvable.", "113": "La clé de stockage est invalide, veuillez vérifier l'intégrité de votre fichier.", "114": "Le solde minimal de transfert est de {{bytes}} CKBytes.", "115": "Vous avez besoin de plus de capacités pour le changement (plus de 61 CKBytes), ou cliquez sur le bouton 'Max' pour envoyer tout votre solde.", @@ -637,7 +637,7 @@ "syncing-balance": "La balance est en cours de mise à jour", "slow": "La synchronisation est lente", "sync-failed": "Échec de la synchronisation, veuillez vérifier le réseau", - "sync-not-start": "La synchronisation n'a pas encore commencé, veuillez essayer de redémarrer le portefeuille Neuron", + "sync-not-start": "La synchronisation n'a pas encore commencé, veuillez essayer de redémarrer le Wallet Neuron", "connecting": "Connexion en cours" }, "pagination": { @@ -783,7 +783,7 @@ }, "jan": { "full": "Janvier", - "short": "Janv.", + "short": "Jan.", "tag": "J" }, "feb": { @@ -808,22 +808,22 @@ }, "june": { "full": "Juin", - "short": "Juin.", + "short": "Jui.", "tag": "J" }, "july": { "full": "Juillet", - "short": "Juill.", + "short": "Juil.", "tag": "J" }, "aug": { "full": "Août", - "short": "Août.", + "short": "Aoû.", "tag": "A" }, "sept": { "full": "Septembre", - "short": "Sept.", + "short": "Sep.", "tag": "S" }, "oct": { @@ -859,7 +859,7 @@ "confirm": "Confirmer", "verification-success": "Vérification réussie", "verification-failure": "Échec de la vérification", - "address-not-found": "L'adresse fournie n'appartient pas au portefeuille actuel. Veuillez vérifier votre portefeuille ou attendre la fin de la synchronisation.", + "address-not-found": "L'adresse fournie n'appartient pas au Wallet actuel. Veuillez vérifier votre Wallet ou attendre la fin de la synchronisation.", "sign-with-magic-byte": "Le message sera signé avec les octets magiques 'Nervos Message:'", "verify-tip": "Peut être vérifié par Neuron à partir de la version 0.33.1", "verify-old-sign-success": "Le message a été signé par Neuron avant la version 0.33.1", @@ -1140,7 +1140,7 @@ }, "cell-manage": { "title": "Gestion des cellules", - "wallet-balance": "Solde du portefeuille", + "wallet-balance": "Solde du Wallet", "table": { "head": { "date": "Date", @@ -1182,7 +1182,7 @@ "warn-consume": "La consommation de la cellule ne conservera aucune donnée et utilisera tout le CKB. Veuillez vous assurer qu'aucune donnée importante ne doit être conservée." }, "enter-password": "Entrez le mot de passe", - "password-placeholder": "Veuillez entrer le mot de passe du portefeuille", + "password-placeholder": "Veuillez entrer le mot de passe du Wallet", "lock": "Verrouiller", "unlock": "Déverrouiller", "consume": "Consommer" diff --git a/packages/neuron-ui/src/tests/calendar/index.test.ts b/packages/neuron-ui/src/tests/calendar/index.test.ts index dc5769d0c2..35a1099746 100644 --- a/packages/neuron-ui/src/tests/calendar/index.test.ts +++ b/packages/neuron-ui/src/tests/calendar/index.test.ts @@ -167,7 +167,7 @@ describe('Get Local Week Names', () => { }) it('French', () => { - const names = ['S', 'M', 'T', 'W', 'T', 'F', 'S'] + const names = ['D', 'L', 'M', 'M', 'J', 'V', 'S'] expect(getLocalWeekNames('fr')).toEqual(names) }) diff --git a/packages/neuron-ui/tsconfig.json b/packages/neuron-ui/tsconfig.json index e7acb114a4..e4bd302f22 100644 --- a/packages/neuron-ui/tsconfig.json +++ b/packages/neuron-ui/tsconfig.json @@ -24,4 +24,4 @@ "include": [ "src" ] -} +} \ No newline at end of file diff --git a/packages/neuron-wallet/src/locales/fr.ts b/packages/neuron-wallet/src/locales/fr.ts index c64dc8dcb9..a9fbb0d389 100644 --- a/packages/neuron-wallet/src/locales/fr.ts +++ b/packages/neuron-wallet/src/locales/fr.ts @@ -1,9 +1,9 @@ export default { translation: { keywords: { - wallet: 'Portefeuille', + wallet: 'Wallet', password: 'Mot de passe', - 'wallet-name': 'Nom du portefeuille', + 'wallet-name': 'Nom du Wallet', }, 'application-menu': { neuron: { @@ -13,18 +13,18 @@ export default { quit: 'Quitter {{app}}', }, wallet: { - label: 'Portefeuille', - select: 'Sélectionner un portefeuille', - 'create-new': 'Créer un nouveau portefeuille', - import: 'Importer un portefeuille', - backup: 'Sauvegarder le portefeuille actuel', + label: 'Wallet', + select: 'Sélectionner un Wallet', + 'create-new': 'Créer un nouveau Wallet', + import: 'Importer un Wallet', + backup: 'Sauvegarder le Wallet actuel', 'export-xpubkey': 'Exporter la clé publique étendue', - delete: 'Supprimer le portefeuille actuel', + delete: 'Supprimer le Wallet actuel', 'change-password': 'Changer de mot de passe', - 'import-mnemonic': 'Importer la graine du portefeuille', + 'import-mnemonic': 'Importer la graine du Wallet', 'import-keystore': 'Importer depuis le fichier Keystore', 'import-xpubkey': 'Importer la clé publique étendue', - 'import-hardware': 'Importer un portefeuille matériel', + 'import-hardware': 'Importer un Wallet matériel', }, edit: { label: 'Édition', @@ -66,7 +66,7 @@ export default { }, services: { transactions: 'Transactions', - wallets: 'Portefeuilles', + wallets: 'Wallets', }, messages: { 'failed-to-load-networks': 'Échec du chargement des réseaux.', @@ -77,11 +77,11 @@ export default { "Le mot de passe doit comporter jusqu'à {{maxPasswordLength}} caractères.", 'wallet-password-letter-complexity': 'Le mot de passe doit contenir une combinaison de lettres majuscules et minuscules, de chiffres et de caractères spéciaux.', - 'current-wallet-not-set': "Le portefeuille actuel n'est pas défini.", + 'current-wallet-not-set': "Le Wallet actuel n'est pas défini.", 'incorrect-password': 'Le mot de passe est incorrect', 'invalid-address': "L'adresse {{address}} n'est pas valide.", 'codehash-not-loaded': "Le codehash n'est pas chargé.", - 'wallet-not-found': 'Le portefeuille {{id}} est introuvable.', + 'wallet-not-found': 'Le Wallet {{id}} est introuvable.', 'failed-to-create-mnemonic': 'Échec de la création de la mnémonique.', 'network-not-found': "Le réseau de l'ID {{id}} n'a pas été trouvé.", 'invalid-name': "Le nom {{field}} n'est pas valide.", @@ -96,7 +96,7 @@ export default { 'save-keystore': 'Sauvegarder le fichier Keystore.', 'save-extended-public-key': 'Sauvegarder la clé publique étendue.', 'import-extended-public-key': 'Importer la clé publique étendue.', - 'invalid-mnemonic': "La graine du portefeuille n'est pas valide, veuillez la vérifier à nouveau.", + 'invalid-mnemonic': "La graine du Wallet n'est pas valide, veuillez la vérifier à nouveau.", 'unsupported-cipher': 'Chiffrement non pris en charge.', 'capacity-not-enough': 'Solde insuffisant.', 'capacity-not-enough-for-change': @@ -115,16 +115,16 @@ export default { 'mainnet-address-required': "{{address}} n'est pas une adresse du réseau principal.", 'testnet-address-required': "{{address}} n'est pas une adresse du réseau de test.", 'address-not-found': - "L'adresse donnée ne fait pas partie du portefeuille actuel. Veuillez vérifier votre portefeuille ou attendre la fin de la synchronisation.", - 'target-output-not-found': "Il n'y a pas de portefeuille de compte associé à cette adresse.", + "L'adresse donnée ne fait pas partie du Wallet actuel. Veuillez vérifier votre Wallet ou attendre la fin de la synchronisation.", + 'target-output-not-found': "Il n'y a pas de Wallet de compte associé à cette adresse.", 'acp-same-account': 'Le compte de paiement et le compte de réception ne doivent pas être les mêmes.', 'device-sign-canceled': 'Vous avez annulé la demande de signature. Sinon, assurez-vous que l\'application Nervos sur votre appareil a la configuration "autoriser les données de contrat" activée', 'connect-device-failed': "L'appareil ne peut pas être connecté, veuillez vérifier votre connexion.", 'unsupported-manufacturer': 'Les appareils de {{manufacturer}} ne sont pas encore pris en charge.', - 'wallet-not-supported-function': 'Ce portefeuille ne prend pas en charge la fonction {name}.', + 'wallet-not-supported-function': 'Ce Wallet ne prend pas en charge la fonction {name}.', 'invalid-transaction-file': 'Fichier de transaction non valide.', - 'offline-sign-failed': 'Échec de la signature, veuillez vérifier si vous signez avec le bon portefeuille.', + 'offline-sign-failed': 'Échec de la signature, veuillez vérifier si vous signez avec le bon Wallet.', 'multisig-script-prefix-error': 'La configuration multisig est erronée', 'multisig-config-not-exist': "La configuration multisig n'existe pas", 'multisig-config-exist': 'La configuration multisig existe déjà', @@ -161,7 +161,7 @@ export default { alert: "C'est le réseau actuel. En le supprimant, la connexion passera au réseau par défaut", }, 'remove-wallet': { - title: 'Supprimer le portefeuille', + title: 'Supprimer le Wallet', password: 'Mot de passe', }, 'backup-keystore': { diff --git a/packages/neuron-wallet/src/services/settings.ts b/packages/neuron-wallet/src/services/settings.ts index 89f82f35d6..11ba63e0f4 100644 --- a/packages/neuron-wallet/src/services/settings.ts +++ b/packages/neuron-wallet/src/services/settings.ts @@ -32,6 +32,7 @@ export default class SettingsService extends Store { return res as Locale } return res?.startsWith('zh') ? 'zh' : 'en' + return res?.startsWith('fr') ? 'fr' : 'en' } set locale(lng: Locale) { diff --git a/packages/neuron-wallet/tests/services/setting.test.ts b/packages/neuron-wallet/tests/services/setting.test.ts index 7d8c55e117..96f760ddac 100644 --- a/packages/neuron-wallet/tests/services/setting.test.ts +++ b/packages/neuron-wallet/tests/services/setting.test.ts @@ -72,7 +72,9 @@ describe('SettingsService', () => { }) it('set', () => { SettingsService.getInstance().locale = 'zh' + SettingsService.getInstance().locale = 'fr' expect(writeSyncMock).toBeCalledWith('locale', 'zh') + expect(writeSyncMock).toBeCalledWith('locale', 'fr') expect(updateApplicationMenuMock).toHaveBeenCalled() }) it('set exception', () => { From 9906aab73009cf1ed7061a23385cb8c203ded5a2 Mon Sep 17 00:00:00 2001 From: Natixe Date: Fri, 5 Jan 2024 18:02:15 +0100 Subject: [PATCH 4/8] Last major touch-up for a beautiful wallet armony Checking line by line, everything's OK! --- packages/neuron-ui/src/locales/fr.json | 70 ++++++++++++------------ packages/neuron-wallet/src/locales/fr.ts | 10 ++-- 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/packages/neuron-ui/src/locales/fr.json b/packages/neuron-ui/src/locales/fr.json index e2350aac55..e7445298cc 100644 --- a/packages/neuron-ui/src/locales/fr.json +++ b/packages/neuron-ui/src/locales/fr.json @@ -23,9 +23,9 @@ "connecting": "Connexion", "experimental-functions": "Expérimental", "s-udt": "Comptes d'actifs", - "update-neuron-with-ckb": "La version du nœud CKB ne correspond pas à Neuron (v{{ version }}), ce qui peut entraîner des problèmes de compatibilité. Veuillez mettre à jour vers la dernière version de Neuron.", - "ckb-node-compatible": "Le nœud CKB n'est pas compatible avec Neuron (v{{ version }}), veuillez vérifier avant toute opération ultérieure.", - "ckb-without-indexer": "Veuillez ajouter l'option '--indexer' pour démarrer le nœud local" + "update-neuron-with-ckb": "La version du noeud CKB ne correspond pas à Neuron (v{{ version }}), ce qui peut entraîner des problèmes de compatibilité. Veuillez mettre à jour vers la dernière version de Neuron.", + "ckb-node-compatible": "Le noeud CKB n'est pas compatible avec Neuron (v{{ version }}), veuillez vérifier avant toute opération ultérieure.", + "ckb-without-indexer": "Veuillez ajouter l'option '--indexer' pour démarrer le noeud local" }, "network-status": { "tooltip": { @@ -63,16 +63,16 @@ "firmware-version" : "Firmware v{{version}} détecté", "wallet-name" : "Nom du portefeuille", "select-model" : "Select Model", - "other-device" : "Other" + "other-device" : "Autres" }, "hardware-sign": { "annuler" : "Annuler", "title" : "Signer via le portefeuille matériel", - "device" : "Device :", + "device" : "Appareil :", "status" : { "label" : "Status :", - "connect" : "Connected, ready for signing", - "user-input" : "Connected, waiting for confirmation on device...", + "connect" : "Connecté, prêt à signer", + "user-input" : "Connecté, en attente de confirmation sur l'appareil...", "disconnect" : "Déconnecté, veuillez confirmer que l'appareil est connecté et ouvrir l'application Nervos" }, "inputs": "Inputs(signing {{index}} of {{length}})", @@ -85,14 +85,14 @@ }, "hardware-verify-address": { "title": "Verify address via hardware wallet", - "device": "Device:", + "device": "Appareil:", "address": "Address:", - "verified": "Verified", + "verified": "Vérifié", "invalid": "Invalid", "status": { "label" : "Status :", "connect" : "Connecté, prêt pour la vérification", - "user-input" : "Connected, waiting for confirmation on device...", + "user-input" : "Connecté, en attente de confirmation sur l'appareil...", "disconnect" : "Déconnecté, veuillez confirmer que l'appareil est connecté et ouvrir l'application Nervos" }, "actions": { @@ -361,7 +361,7 @@ "general": "Général", "wallets": "Wallets", "network": "Réseau", - "data": "Données" + "data": "Data" }, "general": { "show": "Afficher", @@ -415,7 +415,7 @@ "fr": "Français" }, "data": { - "ckb-node-data": "Configuration et stockage du nœud CKB", + "ckb-node-data": "Configuration & stockage du noeud CKB", "set": "Définir", "cache": "Cache", "clear-cache-description": "Effacez le cache si vous rencontrez des problèmes de synchronisation des données ou d'affichage du solde. Neuron effectuera une nouvelle analyse des données de bloc.", @@ -424,14 +424,14 @@ "clearing-cache": "Effacement du cache en cours, veuillez patienter", "clear-success": "Cache effacé", "set-path": "Définir le chemin", - "remove-ckb-data-tip": "Veuillez déplacer les données du nœud CKB de 【{{prevPath}}】 vers 【{{currentPath}}】 puis cliquer sur \"Les données ont été déplacées\" pour démarrer à partir du bloc synchronisé précédemment ; ou cliquez sur \"Synchroniser depuis le début\" pour démarrer une synchronisation complète.", - "resync-ckb-node-describe": "Attention : Synchroniser depuis le début ne supprimera pas les données du nœud CKB déjà téléchargées.", + "remove-ckb-data-tip": "Veuillez déplacer les données du noeud CKB de 【{{prevPath}}】 vers 【{{currentPath}}】 puis cliquer sur \"Les données ont été déplacées\" pour démarrer à partir du bloc synchronisé précédemment ; ou cliquez sur \"Synchroniser depuis le début\" pour démarrer une synchronisation complète.", + "resync-ckb-node-describe": "Attention : Synchroniser depuis le début ne supprimera pas les données du noeud CKB déjà téléchargées.", "cancel": "Annuler", "confirm-clear": "Confirmer", "move-data-finish": "Les données ont été déplacées", "re-sync": "Synchroniser depuis le début", - "disabled-set-path": "Lorsque le nœud CKB est démarré manuellement, la configuration du chemin du nœud CKB ne prend pas effet.", - "ckb-node-storage": "Stockage du nœud CKB" + "disabled-set-path": "Lorsque le noeud CKB est démarré manuellement, la configuration du chemin du noeud CKB ne prend pas effet.", + "ckb-node-storage": "Stockage du noeud CKB" } }, "password-request": { @@ -580,8 +580,8 @@ "keystore-password": "Mot de passe", "deposit": "Dépôt", "account-name": "Nom du compte", - "token-name": "Nom du jeton", - "token-id": "ID du jeton", + "token-name": "Nom du token", + "token-id": "ID du token", "symbol": "Symbole", "decimal": "Décimale" }, @@ -591,7 +591,7 @@ "101": "Le montant {{amount}} CKB est trop petit, veuillez saisir un montant d'au moins {{required}} CKB.", "102": "$t(messages.fields.{{fieldName}}) est invalide.", "103": "Le mot de passe $t(messages.fields.keystore-password) est incorrect", - "104": "Échec de la connexion au nœud, veuillez redémarrer Neuron.", + "104": "Échec de la connexion au noeud, veuillez redémarrer Neuron.", "105": "Vous avez besoin de plus de capacités pour le changement (plus de 61 CKBytes).", "106": "Vous avez besoin de plus de capacités pour le changement (plus de 61 CKBytes), ou faites glisser jusqu'à la fin pour envoyer tout votre solde.", "107": "Le montant {{amount}} CKB est trop petit, le transfert avec verrouillage nécessite un montant d'au moins 69 CKB.", @@ -900,7 +900,7 @@ "choose-title": "Mode de migration", "next": "Suivant", "back": "Retour", - "input-token": "Veuillez saisir le nom du jeton", + "input-token": "Veuillez saisir le nom du token", "input-symbol": "Veuillez saisir le symbole", "input-decimal": "Veuillez saisir la décimale", "turn-into-new-account": { @@ -925,7 +925,7 @@ "account-list": { "title": "Comptes d'actifs", "no-asset-accounts": "Aucun actif sUDT n'a été détecté", - "search": "Nom du compte, Nom du jeton ou Symbole", + "search": "Nom du compte, Nom du token ou Symbole", "syncing": "Synchronisation en cours, les données actuelles peuvent être inexactes", "send": "Envoyer", "receive": "Recevoir", @@ -939,9 +939,9 @@ "sudt-account": "Compte sUDT", "delete-failed": "Échec de la suppression de la configuration multisig, raison de l'échec : {{reason}}", "ckb-account": "Compte CKB", - "set-token-info": "Définir les informations du jeton", - "token-id": "Identifiant du jeton", - "token-name": "Nom du jeton", + "set-token-info": "Définir les informations du token", + "token-id": "Identifiant du token", + "token-name": "Nom du token", "symbol": "Symbole", "decimal": "Décimale", "confirm": "Confirmer", @@ -952,13 +952,13 @@ "occupy-61-ckb": "Occupe au moins 61 CKBytes", "input": { "account-name": "Veuillez saisir le nom du compte", - "token-id": "Veuillez saisir l'identifiant du jeton", - "token-name": "Veuillez saisir le nom du jeton", + "token-id": "Veuillez saisir l'identifiant du token", + "token-name": "Veuillez saisir le nom du token", "symbol": "Veuillez saisir le symbole", "decimal": "Veuillez saisir la décimale" }, "placeholder": { - "token-id": "L'ID du jeton est l'argument du script de type sUDT, qui est identique au hachage de verrouillage de l'émetteur du jeton." + "token-id": "L'ID du token est l'argument du script de type sUDT, qui est identique au hachage de verrouillage de l'émetteur du token." } }, "send": { @@ -975,7 +975,7 @@ "click-to-edit": "Cliquez pour éditer", "cheque-address-hint": { "label": "Verrouiller temporairement 162 CKBytes", - "tooltip": "162 CKBytes seront temporairement verrouillés pour initialiser le transfert de jeton, et seront automatiquement déverrouillés après que le jeton ait été réclamé par le destinataire." + "tooltip": "162 CKBytes seront temporairement verrouillés pour initialiser le transfert de token, et seront automatiquement déverrouillés après que le token ait été réclamé par le destinataire." }, "destroy": "Détruire", "destroy-ckb-desc": "Retournera tous les CKB de ce compte CKB Asset à votre adresse de change.", @@ -998,8 +998,8 @@ "update-dialog": { "update-asset-account": "Détails du compte", "account-name": "Nom du compte", - "token-id": "ID du jeton", - "token-name": "Nom du jeton", + "token-id": "ID du token", + "token-name": "Nom du token", "symbol": "Symbole", "decimal": "Décimal", "confirm": "Confirmer", @@ -1124,18 +1124,18 @@ }, "set-start-block-number": { "title": "Définir le numéro de bloc de départ", - "tip": "Le numéro de bloc de départ est une configuration lorsque vous utilisez le nœud CKB en mode client léger. Vous pouvez le définir et accélérer la synchronisation.", + "tip": "Le numéro de bloc de départ est une configuration lorsque vous utilisez le noeud CKB en mode client léger. Vous pouvez le définir et accélérer la synchronisation.", "input-place-holder": "Veuillez entrer le numéro de bloc de départ pour la synchronisation, par exemple : 10, 100, 101", "locate-first-tx": "Localiser la première transaction", "view-block": "Voir le bloc" }, "main": { "external-node-detected-dialog": { - "title": "Détection d'un nœud externe", - "body-tips-without-network": "\"Nœud interne\" est réservé au nœud CKB intégré, veuillez ajouter une nouvelle option réseau pour le nœud externe.", - "body-tips-with-network": "\"Nœud interne\" est réservé au nœud CKB intégré, veuillez sélectionner parmi les options réseau suivantes ou en ajouter une nouvelle pour le nœud externe.", + "title": "Détection d'un noeud externe", + "body-tips-without-network": "\"Noeud interne\" est réservé au noeud CKB intégré, veuillez ajouter une nouvelle option réseau pour le noeud externe.", + "body-tips-with-network": "\"Noeud interne\" est réservé au noeud CKB intégré, veuillez sélectionner parmi les options réseau suivantes ou en ajouter une nouvelle pour le noeud externe.", "add-network": "Ajouter un réseau", - "ignore-external-node": "Ignorer le nœud externe" + "ignore-external-node": "Ignorer le noeud externe" } }, "cell-manage": { diff --git a/packages/neuron-wallet/src/locales/fr.ts b/packages/neuron-wallet/src/locales/fr.ts index a9fbb0d389..892de7cb34 100644 --- a/packages/neuron-wallet/src/locales/fr.ts +++ b/packages/neuron-wallet/src/locales/fr.ts @@ -87,7 +87,7 @@ export default { 'invalid-name': "Le nom {{field}} n'est pas valide.", 'default-network-unremovable': 'Le réseau par défaut est irréparable.', 'lack-of-default-network': 'Manque de réseau par défaut.', - 'current-network-not-set': "Le RPC du nœud CKB actuel n'a pas été défini.", + 'current-network-not-set': "Le RPC du noeud CKB actuel n'a pas été défini.", 'transaction-not-found': 'La transaction {{hash}} est introuvable.', 'is-required': '{{field}} est requis.', 'invalid-format': '{{field}} est dans un format invalide.', @@ -138,7 +138,7 @@ export default { 'no-match-address-for-sign': 'Aucune adresse correspondante trouvée', 'target-lock-error': "Le compte d'actifs CKB ne peut être transféré qu'à l'adresse secp256k1 ou acp", 'no-exist-ckb-node-data': - "{{path}} n'a pas de configuration et de stockage de nœud CKB, appuyez sur Confirmer pour synchroniser à partir de zéro", + "{{path}} n'a pas de configuration et de stockage de noeud CKB, appuyez sur Confirmer pour synchroniser à partir de zéro", 'light-client-sudt-acp-error': "Le mode client léger ne prend pas en charge l'envoi d'actifs vers le compte d'actifs d'autrui", }, @@ -178,9 +178,9 @@ export default { title: 'Adresses multisig', }, 'ckb-dependency': { - title: 'Nœud CKB inclus', + title: 'Noeud CKB inclus', message: 'Dépendance requise', - detail: `Les nœuds réseau dans Neuron dépendent de composants C++, veuillez donc installer la dernière version de Microsoft Visual C++ Redistributable pour x64 pour garantir le bon fonctionnement du logiciel.`, + detail: `Les noeuds réseau dans Neuron dépendent de composants C++, veuillez donc installer la dernière version de Microsoft Visual C++ Redistributable pour x64 pour garantir le bon fonctionnement du logiciel.`, buttons: { 'install-and-exit': 'Installer et quitter', }, @@ -263,7 +263,7 @@ export default { column: { time: 'Heure', 'block-number': 'Numéro de bloc', - 'tx-hash': 'Hachage de transaction', + 'tx-hash': 'hash de transaction', 'tx-type': 'Type de transaction', amount: 'Montant de CKB', 'udt-amount': 'Montant UDT', From bc58cd5a42614642364906054f022a24dcaaef08 Mon Sep 17 00:00:00 2001 From: Natixe Date: Sat, 6 Jan 2024 18:59:53 +0100 Subject: [PATCH 5/8] Update utils.ts --- packages/neuron-ui/src/widgets/Calendar/utils.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/neuron-ui/src/widgets/Calendar/utils.ts b/packages/neuron-ui/src/widgets/Calendar/utils.ts index 4a55b8602c..c3f6cc1368 100644 --- a/packages/neuron-ui/src/widgets/Calendar/utils.ts +++ b/packages/neuron-ui/src/widgets/Calendar/utils.ts @@ -113,3 +113,13 @@ export const getLocalWeekNames = (lang: string) => { const formatter = new Intl.DateTimeFormat(lang, { weekday: 'narrow' }) return Array.from({ length: 7 }, (_, i) => formatter.format(new Date(Date.UTC(2023, 0, 1 + i)))) } + +const englishMonthShortNames = getLocalMonthShortNames('en') +const frenchMonthShortNames = getLocalMonthShortNames('fr') +const chineseMonthShortNames = getLocalMonthShortNames('zh') + + +console.log(englishMonthShortNames); // Output: ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May.', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.'] +console.log(frenchMonthShortNames); // Output: ['janv..', 'févr..', 'mars.', 'avr..', 'mai.', 'juin.', 'juil..', 'août.', 'sept..', 'oct..', 'nov..', 'déc..'] +console.log(chineseMonthShortNames); // Output: ['1月.', '2月.', '3月.', '4月.', '5月.', '6月.', '7月.', '8月.', '9月.', '10月.', '11月.', '12月.'] + From 4b514dcc1f7586a0ad2c8f80d93b1292a231bd09 Mon Sep 17 00:00:00 2001 From: Natixe Date: Sat, 6 Jan 2024 19:09:25 +0100 Subject: [PATCH 6/8] Update index.test.ts --- .../src/tests/calendar/index.test.ts | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/packages/neuron-ui/src/tests/calendar/index.test.ts b/packages/neuron-ui/src/tests/calendar/index.test.ts index 35a1099746..cf7e24dea2 100644 --- a/packages/neuron-ui/src/tests/calendar/index.test.ts +++ b/packages/neuron-ui/src/tests/calendar/index.test.ts @@ -107,7 +107,7 @@ describe('Get Local Month Short Names', () => { }) it('French', () => { - const names = ['Jan.', 'Fév.', 'Mar.', 'Avr.', 'Mai.', 'Jui.', 'Juil.', 'Aoû.', 'Sep.', 'Oct.', 'Nov.', 'Déc.'] + const names = ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'] expect(getLocalMonthShortNames('fr')).toEqual(names) }) }) @@ -117,7 +117,6 @@ describe('Get Local Month Names', () => { const names = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'] expect(getLocalMonthNames('zh')).toEqual(names) }) - it('English', () => { const names = [ 'January', @@ -138,18 +137,18 @@ describe('Get Local Month Names', () => { it('French', () => { const names = [ - 'Janvier', - 'Février', - 'Mars', - 'Avril', - 'Mai', - 'Juin', - 'Juillet', - 'Août', - 'Septembre', - 'Octobre', - 'Novembre', - 'Décembre', + 'janvier', + 'février', + 'mars', + 'avril', + 'mai', + 'juin', + 'juillet', + 'août', + 'septembre', + 'octobre', + 'novembre', + 'décembre', ] expect(getLocalMonthNames('fr')).toEqual(names) }) From 00d6bbd5df7fb0961d888b644880f6a779d3fbba Mon Sep 17 00:00:00 2001 From: Natixe Date: Sun, 7 Jan 2024 19:48:25 +0100 Subject: [PATCH 7/8] Patch --- packages/neuron-ui/src/widgets/Calendar/utils.ts | 10 ---------- packages/neuron-wallet/src/services/settings.ts | 1 - 2 files changed, 11 deletions(-) diff --git a/packages/neuron-ui/src/widgets/Calendar/utils.ts b/packages/neuron-ui/src/widgets/Calendar/utils.ts index c3f6cc1368..4a55b8602c 100644 --- a/packages/neuron-ui/src/widgets/Calendar/utils.ts +++ b/packages/neuron-ui/src/widgets/Calendar/utils.ts @@ -113,13 +113,3 @@ export const getLocalWeekNames = (lang: string) => { const formatter = new Intl.DateTimeFormat(lang, { weekday: 'narrow' }) return Array.from({ length: 7 }, (_, i) => formatter.format(new Date(Date.UTC(2023, 0, 1 + i)))) } - -const englishMonthShortNames = getLocalMonthShortNames('en') -const frenchMonthShortNames = getLocalMonthShortNames('fr') -const chineseMonthShortNames = getLocalMonthShortNames('zh') - - -console.log(englishMonthShortNames); // Output: ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May.', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.'] -console.log(frenchMonthShortNames); // Output: ['janv..', 'févr..', 'mars.', 'avr..', 'mai.', 'juin.', 'juil..', 'août.', 'sept..', 'oct..', 'nov..', 'déc..'] -console.log(chineseMonthShortNames); // Output: ['1月.', '2月.', '3月.', '4月.', '5月.', '6月.', '7月.', '8月.', '9月.', '10月.', '11月.', '12月.'] - diff --git a/packages/neuron-wallet/src/services/settings.ts b/packages/neuron-wallet/src/services/settings.ts index 11ba63e0f4..89f82f35d6 100644 --- a/packages/neuron-wallet/src/services/settings.ts +++ b/packages/neuron-wallet/src/services/settings.ts @@ -32,7 +32,6 @@ export default class SettingsService extends Store { return res as Locale } return res?.startsWith('zh') ? 'zh' : 'en' - return res?.startsWith('fr') ? 'fr' : 'en' } set locale(lng: Locale) { From 5d1718f6e38e27ae16535bbd266d65b2b8df03a8 Mon Sep 17 00:00:00 2001 From: Natixe <49234582+Natixe@users.noreply.github.com> Date: Mon, 8 Jan 2024 19:48:55 +0100 Subject: [PATCH 8/8] Update packages/neuron-ui/tsconfig.json Co-authored-by: Chen Yu --- packages/neuron-ui/tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/neuron-ui/tsconfig.json b/packages/neuron-ui/tsconfig.json index e4bd302f22..e7acb114a4 100644 --- a/packages/neuron-ui/tsconfig.json +++ b/packages/neuron-ui/tsconfig.json @@ -24,4 +24,4 @@ "include": [ "src" ] -} \ No newline at end of file +}