diff --git a/Gruntfile.js b/Gruntfile.js index 65e831f8f..5f7b369db 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -61,10 +61,10 @@ module.exports = function(grunt) { stdin: true, }, desktopsign: { - cmd: 'gpg -u 1112CFA1 --output webkitbuilds/<%= pkg.title %>-linux.zip.sig --detach-sig webkitbuilds/<%= pkg.title %>-linux.zip && gpg -u 1112CFA1 --output webkitbuilds/<%= pkg.title %>-win.exe.sig --detach-sig webkitbuilds/<%= pkg.title %>-win.exe' + cmd: 'gpg -u 1112CFA1 --output webkitbuilds/<%= pkg.title %>-linux.zip.sig --detach-sig webkitbuilds/<%= pkg.title %>-linux.zip && gpg -u 1112CFA1 --output webkitbuilds/<%= pkg.title %>.dmg.sig --detach-sig webkitbuilds/<%= pkg.title %>.dmg ; gpg -u 1112CFA1 --output webkitbuilds/<%= pkg.title %>-win.exe.sig --detach-sig webkitbuilds/<%= pkg.title %>-win.exe' }, desktopverify: { - cmd: 'gpg --verify webkitbuilds/<%= pkg.title %>-linux.zip.sig webkitbuilds/<%= pkg.title %>-linux.zip && gpg --verify webkitbuilds/<%= pkg.title %>-win.exe.sig webkitbuilds/<%= pkg.title %>-win.exe' + cmd: 'gpg --verify webkitbuilds/<%= pkg.title %>-linux.zip.sig webkitbuilds/<%= pkg.title %>-linux.zip && gpg --verify webkitbuilds/<%= pkg.title %>.dmg.sig webkitbuilds/<%= pkg.title %>.dmg ; gpg --verify webkitbuilds/<%= pkg.title %>-win.exe.sig webkitbuilds/<%= pkg.title %>-win.exe' }, }, watch: { @@ -74,13 +74,9 @@ module.exports = function(grunt) { grunt.log.writeln('Waiting for more changes...'); }, }, - css: { - files: ['src/css/*.css'], - tasks: ['concat:css'] - }, sass: { files: ['src/sass/**/**/*.scss'], - tasks: ['sass', 'concat:css'] + tasks: ['sass'] }, main: { files: [ @@ -104,8 +100,9 @@ module.exports = function(grunt) { }, files: [{ expand: true, + flatten: true, src: ['src/sass/main.scss'], - dest: './', + dest: 'www/css/', ext: '.css' }] } @@ -118,6 +115,7 @@ module.exports = function(grunt) { angular: { src: [ 'bower_components/qrcode-generator/js/qrcode.js', + 'bower_components/qrcode-generator/js/qrcode_UTF8.js', 'bower_components/moment/min/moment-with-locales.js', 'bower_components/angular-moment/angular-moment.js', 'bower_components/ng-lodash/build/ng-lodash.js', @@ -132,7 +130,7 @@ module.exports = function(grunt) { 'angular-bitauth/angular-bitauth.js', 'angular-bitcore-wallet-client/angular-bitcore-wallet-client.js' ], - dest: 'www/lib/angular.js' + dest: 'www/lib/angular-components.js' }, js: { src: [ @@ -152,11 +150,7 @@ module.exports = function(grunt) { 'node_modules/bezier-easing/dist/bezier-easing.min.js', 'node_modules/cordova-plugin-qrscanner/dist/cordova-plugin-qrscanner-lib.min.js' ], - dest: 'www/js/copay.js' - }, - css: { - src: ['src/sass/*.css', 'src/css/*.css'], - dest: 'www/css/copay.css' + dest: 'www/js/app.js' } }, uglify: { @@ -165,8 +159,8 @@ module.exports = function(grunt) { }, prod: { files: { - 'www/js/copay.js': ['www/js/copay.js'], - 'www/lib/angular.js': ['www/lib/angular.js'] + 'www/js/app.js': ['www/js/app.js'], + 'www/lib/angular-components.js': ['www/lib/angular-components.js'] } } }, @@ -228,8 +222,8 @@ module.exports = function(grunt) { macPlist: { 'CFBundleURLTypes': [ { - 'CFBundleURLName' : 'URI Handler', - 'CFBundleURLSchemes' : ['bitcoin', '<%= pkg.name %>'] + 'CFBundleURLName': 'URI Handler', + 'CFBundleURLSchemes': ['bitcoin', '<%= pkg.name %>'] } ] } diff --git a/app-template/bitpay/appConfig.json b/app-template/bitpay/appConfig.json index 2bc965cb4..53edb5162 100644 --- a/app-template/bitpay/appConfig.json +++ b/app-template/bitpay/appConfig.json @@ -22,7 +22,7 @@ "pushSenderId": "1036948132229", "description": "Secure Bitcoin Wallet", "version": "1.2.1", - "androidVersion": "12100", + "androidVersion": "121000", "_extraCSS": null, "_enabledExtensions": { "coinbase": true, diff --git a/app-template/index.html b/app-template/index.html index 6a32429c8..f457d9310 100644 --- a/app-template/index.html +++ b/app-template/index.html @@ -6,7 +6,7 @@ - + *USERVISIBLENAME* - *PURPOSELINE* @@ -25,11 +25,11 @@ - + - + diff --git a/backupRecovery.md b/backupRecovery.md index db8f19989..12dc32e73 100644 --- a/backupRecovery.md +++ b/backupRecovery.md @@ -42,15 +42,15 @@ Copay is a Multisig HD Wallet. Copay app holds the extended private keys for the - Go to 'Create Wallet', and enter the WS at 'Advanced Options'. Select a new name for the restored wallet. Total and required number of copayers should be set to 1. - Wallet should be recreated and access to funds should be restored. - (Using WD) - - Enter the WD at 'Import Wallet' + (Using WB) + - Enter the WB at 'Import Wallet' - Wallet should be recreated and access to funds should be restored. ### Multisig wallets - Case 1: From both WS and WD, full recovery is possible. - - Enter WS or WD at 'Import wallet' in a new device. + Case 1: From both WS and WB, full recovery is possible. + - Enter WS or WB at 'Import wallet' in a new device. - Wallet access should be restored. Case 2: Basic recovery is possible using the device where the wallet is installed, pointing the the new server (Recreate Wallet feature). @@ -66,12 +66,12 @@ Copay is a Multisig HD Wallet. Copay app holds the extended private keys for the - Ask other copayers to join the wallet using the given invitation code. All copayers need to enter their WS at Join (at -> Advanced Options -> Wallet Seed). - Wallet should be recreated and access to funds should be restored. - B) One WD and a quorum of WS of the other members. - - Using the WD, import the wallet. + B) One WB and a quorum of WS of the other members. + - Using the WB, import the wallet. - Ask other copayers to import the wallet using their WS. - Wallet should be recreated and funds should be accesable - In this case, Copayers will not be able to decrypt the 'notes' field on the new Spend Proposals, because the shared secret stored at the WD is not longer known by other copayers. + In this case, Copayers will not be able to decrypt the 'notes' field on the new Spend Proposals, because the shared secret stored at the WB is not longer known by other copayers. ### Hardware wallets diff --git a/i18n/po/fr.po b/i18n/po/fr.po index 4b93aff7f..855658aa2 100644 --- a/i18n/po/fr.po +++ b/i18n/po/fr.po @@ -12,7 +12,7 @@ msgstr "" "Last-Translator: cmgustavo83\n" "Language-Team: French\n" "Language: fr\n" -"PO-Revision-Date: 2016-12-13 08:00-0500\n" +"PO-Revision-Date: 2016-12-29 07:42-0500\n" #: www/views/modals/paypro.html:34 msgid "(Trusted)" @@ -20,7 +20,7 @@ msgstr "(Fiable)" #: www/views/includes/txp.html:27 #: www/views/modals/search.html:27 -#: www/views/walletDetails.html:249 +#: www/views/walletDetails.html:266 msgid "(possible double spend)" msgstr "(double dépense possible)" @@ -32,7 +32,7 @@ msgstr "* Une proposition de paiement peut être supprimée si vous en êtes le msgid "5-star ratings help us get BitPay into more hands, and more users means more resources can be committed to the app!" msgstr "Une note de 5 étoiles permet à BitPay de gagner en popularité, et plus d'utilisateurs signifie davantage de ressources allouées à l'appli !" -#: src/js/controllers/confirm.js:454 +#: src/js/controllers/confirm.js:466 msgid "A SMS containing a confirmation code was sent to your phone." msgstr "Un SMS contenant un code de confirmation a été envoyé à votre téléphone." @@ -41,20 +41,24 @@ msgstr "Un SMS contenant un code de confirmation a été envoyé à votre télé msgid "A member of the team will review your feedback as soon as possible." msgstr "Un membre de l’équipe passera en revue votre avis dès que possible." -#: src/js/controllers/confirm.js:212 +#: src/js/controllers/confirm.js:220 msgid "A total of {{amountAboveMaxSizeStr}} were excluded. The maximum size allowed for a transaction was exceeded." msgstr "Un total de {{amountAboveMaxSizeStr}} a été exclu. La taille maximale autorisée pour une transaction a été dépassée." -#: src/js/controllers/confirm.js:206 +#: src/js/controllers/confirm.js:214 msgid "A total of {{amountBelowFeeStr}} were excluded. These funds come from UTXOs smaller than the network fee provided." msgstr "Un total de {{amountBelowFeeStr}} a été exclu. Ces fonds proviennent d'UTXOs plus petites que les frais de réseau prévus." #: src/js/controllers/preferencesAbout.js:6 -#: www/views/tab-settings.html:159 +#: www/views/tab-settings.html:149 msgid "About" msgstr "À propos" #: src/js/services/confirmDialog.js:8 +#: www/views/confirm.html:126 +#: www/views/confirm.html:134 +#: www/views/modals/txp-details.html:169 +#: www/views/modals/txp-details.html:176 msgid "Accept" msgstr "Accepter" @@ -67,7 +71,7 @@ msgstr "Acceptée" msgid "Account" msgstr "Compte" -#: www/views/join.html:71 +#: www/views/join.html:69 #: www/views/tab-create-personal.html:42 #: www/views/tab-create-shared.html:72 #: www/views/tab-import-hardware.html:19 @@ -86,7 +90,7 @@ msgstr "Ajouter un account" msgid "Add BitPay Card Account?" msgstr "Ajouter un compte BitPay Card ?" -#: www/views/tab-home.html:155 +#: www/views/tab-home.html:156 msgid "Add BitPay Visa® Card" msgstr "Ajouter une BitPay Visa® Card" @@ -107,32 +111,29 @@ msgstr "Ajouter une note" msgid "Add a Contact" msgstr "Ajouter un contact" -#: www/views/join.html:90 -#: www/views/join.html:99 -#: www/views/tab-create-personal.html:59 -#: www/views/tab-create-personal.html:67 -#: www/views/tab-create-shared.html:89 -#: www/views/tab-create-shared.html:97 -msgid "Add a Password" +#: www/views/join.html:84 +#: www/views/tab-create-personal.html:55 +#: www/views/tab-create-shared.html:85 +msgid "Add a password" msgstr "Ajouter un mot de passe" -#: www/views/join.html:92 -#: www/views/tab-create-personal.html:61 -#: www/views/tab-create-shared.html:91 +#: www/views/join.html:87 +#: www/views/tab-create-personal.html:58 +#: www/views/tab-create-shared.html:88 msgid "Add an optional password to secure the recovery phrase" msgstr "Ajouter un mot de passe optionnel pour sécuriser la phrase de récupération" -#: src/js/controllers/confirm.js:266 +#: src/js/controllers/confirm.js:274 msgid "Add description" msgstr "Ajouter une description" #: www/views/add.html:3 msgid "Add wallet" -msgstr "Ajouter portefeuille" +msgstr "Ajouter un portefeuille" #: www/views/addressbook.view.html:23 #: www/views/customAmount.html:26 -#: www/views/modals/paypro.html:25 +#: www/views/modals/paypro.html:24 #: www/views/paymentUri.html:15 msgid "Address" msgstr "Adresse" @@ -146,11 +147,11 @@ msgstr "Répertoire" msgid "Address Type" msgstr "Type d'adresse" -#: www/views/addresses.html:55 +#: www/views/addresses.html:61 msgid "Addresses With Balance" msgstr "Adresses avec un solde" -#: www/views/tab-settings.html:152 +#: www/views/tab-settings.html:142 msgid "Advanced" msgstr "Paramètres avancés" @@ -166,14 +167,18 @@ msgstr "Tout" msgid "All Addresses" msgstr "Toutes les adresses" -#: www/views/backupWarning.html:15 -msgid "All clear, let's do this" -msgstr "Tout est normal, allons-y !" +#: www/views/modals/wallet-balance.html:18 +msgid "All of your bitcoin wallet balance may not be available for immediate spending." +msgstr "Tout le solde de votre portefeuille bitcoin peut ne pas être disponible pour des dépenses immédiates." -#: www/views/tab-receive.html:38 +#: www/views/tab-receive.html:33 msgid "All signing devices must be added to this multisig wallet before bitcoin addresses can be created." msgstr "Tous les appareils de signature doivent être ajoutés à ce portefeuille multisig avant que les adresses bitcoin ne puissent être créées." +#: www/views/tab-scan.html:21 +msgid "Allow Camera Access" +msgstr "Autoriser l'accès à la caméra" + #: www/views/onboarding/notifications.html:7 msgid "Allow notifications" msgstr "Autoriser les notifications" @@ -187,10 +192,6 @@ msgstr "C'est presque terminé ! Vérifions." msgid "Alternative Currency" msgstr "Devise alternative" -#: www/views/tab-home.html:138 -msgid "Amazon.com Gift Cards" -msgstr "Cartes cadeaux Amazon.com" - #: www/views/amount.html:43 #: www/views/customAmount.html:32 #: www/views/includes/output.html:7 @@ -202,10 +203,18 @@ msgstr "Montant" msgid "Amount below minimum allowed" msgstr "Montant en dessous du minimum autorisé" +#: src/js/controllers/confirm.js:389 +msgid "Amount too big" +msgstr "Le montant est trop élevé" + #: www/views/tab-home.html:14 msgid "An update to this app is available" msgstr "Une mise à jour de cette appli est disponible" +#: src/js/controllers/tab-home.js:139 +msgid "An update to this app is available. For your security, please update to the latest version." +msgstr "Une mise à jour de cette application est disponible. Pour votre sécurité, veuillez mettre à jour vers la dernière version." + #: www/views/backupWarning.html:14 msgid "Anyone with your backup phrase can access or spend your bitcoin." msgstr "Quelqu'un disposant de votre phrase de sauvegarde peut accéder ou dépenser vos bitcoins." @@ -231,7 +240,7 @@ msgid "Are you sure you want to remove this transaction?" msgstr "Êtes-vous certain(e) de vouloir supprimer cette transaction ?" #: src/js/controllers/onboarding/backupRequest.js:16 -msgid "Are you sure you want to skip the backup?" +msgid "Are you sure you want to skip it?" msgstr "Êtes-vous sûr(e) de vouloir ignorer la sauvegarde ?" #: src/js/controllers/preferencesBitpayCard.js:7 @@ -242,8 +251,7 @@ msgstr "Êtes-vous sûr(e) de vouloir supprimer votre compte BitPay Card de cet msgid "Auditable" msgstr "Vérifiable" -#: www/views/walletDetails.html:121 -#: www/views/walletDetails.html:60 +#: www/views/modals/wallet-balance.html:42 msgid "Available" msgstr "Disponible" @@ -256,12 +264,16 @@ msgid "Average confirmation time: {{fee.nbBlocks * 1 msgstr "Temps de confirmation moyen : {{fee.nbBlocks * 10}} minutes" #: www/views/join.html:118 -#: www/views/tab-create-personal.html:85 -#: www/views/tab-create-shared.html:115 +#: www/views/tab-create-personal.html:87 +#: www/views/tab-create-shared.html:117 #: www/views/tab-import-phrase.html:46 msgid "BIP32 path for address derivation" msgstr "Chemin BIP32 pour la dérivation de l'adresse" +#: src/js/controllers/walletDetails.js:63 +msgid "BWS Error" +msgstr "Erreur BWS" + #: www/views/preferences.html:41 msgid "Backup" msgstr "Sauvegarder" @@ -272,7 +284,7 @@ msgstr "Sauvegarde requise" #: www/views/includes/backupNeededPopup.html:9 msgid "Backup now" -msgstr "Sauvegarder" +msgstr "Sauvegarder maintenant" #: www/views/onboarding/backupRequest.html:11 #: www/views/tab-export-file.html:87 @@ -295,6 +307,10 @@ msgstr "Solde par adresse" msgid "Be sure to store your recovery phrase in a secure place. If this app is deleted, your money cannot be recovered without it." msgstr "N’oubliez pas de conserver votre phrase de récupération dans un endroit sûr. Si cette application est supprimée, votre argent ne peut pas être récupéré sans elle." +#: src/js/controllers/tab-settings.js:52 +msgid "BitPay Help Center" +msgstr "Centre d’aide BitPay" + #: www/views/addressbook.add.html:38 msgid "Bitcoin Address" msgstr "Adresse bitcoin" @@ -349,7 +365,7 @@ msgstr "Diffusion de la transaction" msgid "Browser unsupported" msgstr "Navigateur non supporté" -#: www/views/tab-home.html:118 +#: www/views/tab-home.html:119 msgid "Buy & Sell Bitcoin" msgstr "Acheter & vendre des bitcoins" @@ -357,7 +373,7 @@ msgstr "Acheter & vendre des bitcoins" msgid "Buy Bitcoin" msgstr "Acheter des bitcoins" -#: www/views/tab-home.html:169 +#: www/views/tab-home.html:170 msgid "Buy an Amazon Gift Card" msgstr "Acheter une carte cadeau Amazon" @@ -365,7 +381,7 @@ msgstr "Acheter une carte cadeau Amazon" msgid "Buy and sell" msgstr "Acheter et vendre" -#: www/views/tab-home.html:162 +#: www/views/tab-home.html:163 msgid "Buy or Sell Bitcoin" msgstr "Acheter ou vendre des bitcoins" @@ -377,9 +393,9 @@ msgstr "Achat de bitcoins..." msgid "Calculating fee" msgstr "Calcul des frais" -#: src/js/controllers/confirm.js:510 +#: src/js/controllers/confirm.js:514 #: src/js/services/confirmDialog.js:9 -#: src/js/services/popupService.js:58 +#: src/js/services/popupService.js:59 #: www/views/addressbook.add.html:10 #: www/views/feedback/send.html:5 #: www/views/includes/confirm-tx.html:30 @@ -397,16 +413,12 @@ msgstr "Impossible de créer le portefeuille" msgid "Cannot join the same wallet more that once" msgstr "Impossible de rejoindre le même portefeuille plus d'une fois" -#: src/js/controllers/amazon.js:25 -msgid "Card not found" -msgstr "Carte introuvable" - #: www/views/preferencesBitpayCard.html:10 -#: www/views/tab-home.html:99 +#: www/views/tab-home.html:100 msgid "Cards" msgstr "Cartes" -#: www/views/modals/paypro.html:29 +#: www/views/modals/paypro.html:30 msgid "Certified by" msgstr "Certifié par" @@ -431,6 +443,7 @@ msgid "Clear cache" msgstr "Vider le cache" #: www/views/modals/paypro.html:4 +#: www/views/modals/wallet-balance.html:3 #: www/views/modals/wallets.html:5 msgid "Close" msgstr "Fermer" @@ -443,7 +456,7 @@ msgstr "Couleur" msgid "Commit hash" msgstr "Commit hash" -#: src/js/controllers/confirm.js:509 +#: src/js/controllers/confirm.js:513 #: src/js/controllers/copayers.js:42 #: src/js/services/confirmDialog.js:10 #: www/views/backup.html:53 @@ -458,16 +471,16 @@ msgstr "Confirmer" msgid "Confirm & Finish" msgstr "Confirmer & Terminer" -#: src/js/services/walletService.js:839 +#: src/js/services/walletService.js:828 +#: src/js/services/walletService.js:829 msgid "Confirm you new spending password" msgstr "Confirmez votre nouveau code de dépenses" -#: www/views/tx-details.html:77 +#: www/views/tx-details.html:79 msgid "Confirmations" msgstr "Confirmations" -#: www/views/walletDetails.html:122 -#: www/views/walletDetails.html:61 +#: www/views/modals/wallet-balance.html:61 msgid "Confirming" msgstr "Confirmation" @@ -483,10 +496,6 @@ msgstr "Connexion à Coinbase..." msgid "Connecting to Glidera..." msgstr "Connexion à Glidera..." -#: www/views/glideraUri.html:16 -msgid "Connecting..." -msgstr "Connexion..." - #: src/js/services/bwcError.js:53 msgid "Connection reset by peer" msgstr "Connexion réinitialisée par un pair" @@ -547,6 +556,10 @@ msgstr "Impossible d'accéder au portefeuille via le serveur. Veuillez vérifier msgid "Could not access wallet" msgstr "Impossible d’accéder au portefeuille" +#: src/js/controllers/confirm.js:383 +msgid "Could not add message to imported wallet without shared encrypting key" +msgstr "Could not add message to imported wallet without shared encrypting key" + #: src/js/controllers/modals/txpDetails.js:172 msgid "Could not broadcast payment" msgstr "Impossible de diffuser le paiement" @@ -555,7 +568,7 @@ msgstr "Impossible de diffuser le paiement" msgid "Could not build transaction" msgstr "Impossible de créer la transaction" -#: src/js/services/walletService.js:755 +#: src/js/services/walletService.js:741 msgid "Could not create address" msgstr "Impossible de créer l'adresse" @@ -571,7 +584,7 @@ msgstr "Impossible de créer en utilisant la clé publique étendue spécifiée" msgid "Could not create: Invalid wallet recovery phrase" msgstr "Impossible de créer : Phrase de récupération du portefeuille invalide" -#: src/js/controllers/import.js:79 +#: src/js/controllers/import.js:80 msgid "Could not decrypt file, check your password" msgstr "Impossible de déchiffrer le fichier, vérifiez votre mot de passe" @@ -587,7 +600,7 @@ msgstr "Impossible d'obtenir les frais dynamiques" msgid "Could not get dynamic fee for level: {{feeLevel}}" msgstr "Impossible d'obtenir les frais dynamiques pour ce choix : {{feeLevel}}" -#: src/js/controllers/confirm.js:655 +#: src/js/controllers/confirm.js:664 msgid "Could not get the destination bitcoin address" msgstr "Impossible d'obtenir l'adresse bitcoin de destination" @@ -618,7 +631,7 @@ msgstr "Impossible de rejeter le paiement" msgid "Could not remove card" msgstr "Impossible de supprimer la carte" -#: src/js/controllers/confirm.js:449 +#: src/js/controllers/confirm.js:461 msgid "Could not send confirmation code to your phone" msgstr "Impossible d'envoyer le code de confirmation à votre téléphone" @@ -626,14 +639,10 @@ msgstr "Impossible d'envoyer le code de confirmation à votre téléphone" msgid "Could not send payment" msgstr "Impossible d'envoyer le paiement" -#: src/js/controllers/tab-home.js:200 +#: src/js/controllers/tab-home.js:212 msgid "Could not update" msgstr "Impossible de mettre à jour" -#: src/js/services/walletService.js:147 -msgid "Could not update Wallet" -msgstr "Impossible de mettre à jour le portefeuille" - #: www/views/tab-create-personal.html:3 msgid "Create Personal Wallet" msgstr "Créer un portefeuille personnel" @@ -642,15 +651,13 @@ msgstr "Créer un portefeuille personnel" msgid "Create Shared Wallet" msgstr "Créer un portefeuille partagé" +#: www/views/onboarding/tour.html:46 #: www/views/tab-home.html:66 -msgid "Create a bitcoin wallet" -msgstr "Créer un portefeuille bitcoin" - #: www/views/tab-send.html:16 msgid "Create bitcoin wallet" msgstr "Créer un portefeuille bitcoin" -#: www/views/tab-create-personal.html:103 +#: www/views/tab-create-personal.html:105 msgid "Create new wallet" msgstr "Créer" @@ -658,12 +665,12 @@ msgstr "Créer" msgid "Create shared wallet" msgstr "Créer un portefeuille partagé" -#: www/views/tab-create-shared.html:133 +#: www/views/tab-create-shared.html:135 msgid "Create {{formData.requiredCopayers}}-of-{{formData.totalCopayers}} wallet" -msgstr "Créer un portefeuille {{formData.requiredCopayers}}--sur--{{formData.totalCopayers}}" +msgstr "Créer un portefeuille {{formData.requiredCopayers}}-sur-{{formData.totalCopayers}}" #: www/views/modals/txp-details.html:83 -#: www/views/tx-details.html:58 +#: www/views/tx-details.html:60 msgid "Created by" msgstr "Créée par" @@ -709,8 +716,8 @@ msgid "Deleting payment proposal" msgstr "Suppression de la proposition de paiement" #: www/views/join.html:116 -#: www/views/tab-create-personal.html:83 -#: www/views/tab-create-shared.html:113 +#: www/views/tab-create-personal.html:85 +#: www/views/tab-create-shared.html:115 #: www/views/tab-import-phrase.html:44 msgid "Derivation Path" msgstr "Chemin de dérivation" @@ -720,15 +727,18 @@ msgid "Derivation Strategy" msgstr "Stratégie de dérivation" #: www/views/modals/coinbase-tx-details.html:9 -#: www/views/modals/paypro.html:17 msgid "Details" msgstr "Détails" #: www/views/advancedSettings.html:55 -#: www/views/advancedSettings.html:71 msgid "Development Utilities" msgstr "Utilitaires de développement" +#: www/views/includes/backupNeededPopup.html:10 +#: www/views/onboarding/backupRequest.html:12 +msgid "Do it later" +msgstr "La faire plus tard" + #: www/views/tab-export-file.html:27 msgid "Do not include private key" msgstr "Ne pas inclure la clé privée" @@ -742,7 +752,7 @@ msgstr "Vous ne voyez pas votre langue sur Crowdin ? Contactez le propriétaire msgid "Download" msgstr "Télécharger" -#: www/views/addresses.html:23 +#: www/views/addresses.html:18 msgid "Each bitcoin wallet can generate billions of addresses from your 12-word backup. A new address is automatically generated and shown each time you receive a payment." msgstr "Chaque portefeuille bitcoin peut générer des milliards d’adresses depuis votre sauvegarde de 12 mots. Une nouvelle adresse est automatiquement générée et affichée à chaque fois que vous recevez un paiement." @@ -799,18 +809,12 @@ msgstr "Autorisez la caméra commencer." msgid "Enabled Integrations" msgstr "Intégrations activées" -#: www/views/join.html:86 -#: www/views/tab-create-personal.html:55 -#: www/views/tab-create-shared.html:85 -msgid "Encrypt with a Password" -msgstr "Chiffrer avec un mot de passe" - #: www/views/amount.html:4 msgid "Enter Amount" msgstr "Saisissez un montant" -#: src/js/services/walletService.js:852 -#: src/js/services/walletService.js:867 +#: src/js/services/walletService.js:842 +#: src/js/services/walletService.js:857 msgid "Enter Spending Password" msgstr "Saisissez le code de dépenses" @@ -818,11 +822,11 @@ msgstr "Saisissez le code de dépenses" msgid "Enter Two Factor for BitPay Card" msgstr "Saisissez le code à deux facteurs pour votre BitPay Card" -#: src/js/services/walletService.js:837 +#: src/js/services/walletService.js:824 msgid "Enter new spending password" msgstr "Saisissez un nouveau code de dépenses" -#: www/views/join.html:78 +#: www/views/join.html:76 #: www/views/tab-create-personal.html:48 #: www/views/tab-create-shared.html:78 msgid "Enter the recovery phrase (BIP39)" @@ -840,48 +844,44 @@ msgstr "Saisissez votre code de dépenses" #: src/js/controllers/activity.js:45 #: src/js/controllers/addressbook.js:50 #: src/js/controllers/addressbookAdd.js:30 -#: src/js/controllers/addresses.js:24 -#: src/js/controllers/addresses.js:32 +#: src/js/controllers/addresses.js:23 +#: src/js/controllers/addresses.js:31 +#: src/js/controllers/addresses.js:83 #: src/js/controllers/addresses.js:84 -#: src/js/controllers/addresses.js:85 -#: src/js/controllers/amazon.js:15 -#: src/js/controllers/amazon.js:25 -#: src/js/controllers/amazon.js:46 -#: src/js/controllers/amazon.js:66 -#: src/js/controllers/amount.js:265 -#: src/js/controllers/amount.js:272 -#: src/js/controllers/amount.js:280 -#: src/js/controllers/amount.js:309 -#: src/js/controllers/amount.js:322 -#: src/js/controllers/amount.js:329 -#: src/js/controllers/amount.js:338 +#: src/js/controllers/amount.js:253 +#: src/js/controllers/amount.js:260 +#: src/js/controllers/amount.js:268 +#: src/js/controllers/amount.js:298 +#: src/js/controllers/amount.js:311 +#: src/js/controllers/amount.js:318 +#: src/js/controllers/amount.js:327 #: src/js/controllers/bitpayCard.js:145 #: src/js/controllers/bitpayCard.js:68 #: src/js/controllers/bitpayCardIntro.js:27 -#: src/js/controllers/confirm.js:152 -#: src/js/controllers/confirm.js:165 -#: src/js/controllers/confirm.js:171 -#: src/js/controllers/confirm.js:449 -#: src/js/controllers/confirm.js:460 +#: src/js/controllers/confirm.js:160 +#: src/js/controllers/confirm.js:173 +#: src/js/controllers/confirm.js:179 +#: src/js/controllers/confirm.js:461 #: src/js/controllers/confirm.js:472 -#: src/js/controllers/confirm.js:621 -#: src/js/controllers/confirm.js:649 -#: src/js/controllers/confirm.js:655 -#: src/js/controllers/confirm.js:683 -#: src/js/controllers/confirm.js:689 -#: src/js/controllers/confirm.js:696 -#: src/js/controllers/confirm.js:703 -#: src/js/controllers/confirm.js:721 -#: src/js/controllers/confirm.js:740 -#: src/js/controllers/confirm.js:754 -#: src/js/controllers/confirm.js:797 +#: src/js/controllers/confirm.js:484 +#: src/js/controllers/confirm.js:630 +#: src/js/controllers/confirm.js:658 +#: src/js/controllers/confirm.js:664 +#: src/js/controllers/confirm.js:692 +#: src/js/controllers/confirm.js:698 +#: src/js/controllers/confirm.js:705 +#: src/js/controllers/confirm.js:712 +#: src/js/controllers/confirm.js:730 +#: src/js/controllers/confirm.js:749 +#: src/js/controllers/confirm.js:763 +#: src/js/controllers/confirm.js:815 #: src/js/controllers/copayers.js:54 -#: src/js/controllers/create.js:101 -#: src/js/controllers/create.js:129 -#: src/js/controllers/create.js:142 -#: src/js/controllers/create.js:149 -#: src/js/controllers/create.js:164 -#: src/js/controllers/create.js:182 +#: src/js/controllers/create.js:109 +#: src/js/controllers/create.js:137 +#: src/js/controllers/create.js:150 +#: src/js/controllers/create.js:157 +#: src/js/controllers/create.js:172 +#: src/js/controllers/create.js:190 #: src/js/controllers/export.js:110 #: src/js/controllers/export.js:138 #: src/js/controllers/export.js:144 @@ -894,47 +894,44 @@ msgstr "Saisissez votre code de dépenses" #: src/js/controllers/glidera.js:27 #: src/js/controllers/glidera.js:82 #: src/js/controllers/glideraUri.js:13 -#: src/js/controllers/import.js:114 -#: src/js/controllers/import.js:164 -#: src/js/controllers/import.js:192 -#: src/js/controllers/import.js:201 -#: src/js/controllers/import.js:216 -#: src/js/controllers/import.js:228 -#: src/js/controllers/import.js:239 -#: src/js/controllers/import.js:248 -#: src/js/controllers/import.js:261 -#: src/js/controllers/import.js:273 -#: src/js/controllers/import.js:283 -#: src/js/controllers/import.js:293 -#: src/js/controllers/import.js:317 -#: src/js/controllers/import.js:329 -#: src/js/controllers/import.js:50 -#: src/js/controllers/import.js:63 -#: src/js/controllers/import.js:84 -#: src/js/controllers/import.js:96 -#: src/js/controllers/join.js:108 -#: src/js/controllers/join.js:122 +#: src/js/controllers/import.js:115 +#: src/js/controllers/import.js:165 +#: src/js/controllers/import.js:193 +#: src/js/controllers/import.js:202 +#: src/js/controllers/import.js:217 +#: src/js/controllers/import.js:229 +#: src/js/controllers/import.js:240 +#: src/js/controllers/import.js:249 +#: src/js/controllers/import.js:262 +#: src/js/controllers/import.js:274 +#: src/js/controllers/import.js:284 +#: src/js/controllers/import.js:294 +#: src/js/controllers/import.js:318 +#: src/js/controllers/import.js:330 +#: src/js/controllers/import.js:51 +#: src/js/controllers/import.js:64 +#: src/js/controllers/import.js:85 +#: src/js/controllers/import.js:97 +#: src/js/controllers/join.js:115 #: src/js/controllers/join.js:129 -#: src/js/controllers/join.js:143 -#: src/js/controllers/join.js:161 -#: src/js/controllers/join.js:86 -#: src/js/controllers/modals/amazonCardDetails.js:10 -#: src/js/controllers/modals/amazonCardDetails.js:32 -#: src/js/controllers/modals/amazonCardDetails.js:40 +#: src/js/controllers/join.js:136 +#: src/js/controllers/join.js:150 +#: src/js/controllers/join.js:168 +#: src/js/controllers/join.js:93 #: src/js/controllers/modals/txpDetails.js:113 #: src/js/controllers/paperWallet.js:47 #: src/js/controllers/preferencesBitpayCard.js:16 #: src/js/controllers/preferencesDelete.js:22 #: src/js/controllers/preferencesFee.js:9 #: src/js/controllers/preferencesGlidera.js:60 -#: src/js/controllers/tab-home.js:154 -#: src/js/controllers/tab-receive.js:24 +#: src/js/controllers/tab-home.js:166 +#: src/js/controllers/tab-receive.js:23 #: src/js/controllers/tabsController.js:7 #: src/js/controllers/tx-details.js:18 msgid "Error" msgstr "Erreur" -#: src/js/controllers/confirm.js:353 +#: src/js/controllers/confirm.js:361 msgid "Error at confirm" msgstr "Erreur à la confirmation" @@ -958,13 +955,13 @@ msgstr "La limite quotidienne de 500$ par utilisateur a été dépassée" msgid "Experimental Features" msgstr "Fonctionnalités expérimentales" -#: src/js/controllers/confirm.js:311 +#: src/js/controllers/confirm.js:319 #: www/views/confirm.html:30 #: www/views/modals/txp-details.html:114 msgid "Expired" msgstr "Expiré" -#: www/views/modals/paypro.html:52 +#: www/views/modals/paypro.html:54 #: www/views/modals/txp-details.html:120 msgid "Expires" msgstr "Expire" @@ -982,7 +979,7 @@ msgstr "Exporter vers un fichier" msgid "Export wallet" msgstr "Exporter le portefeuille" -#: src/js/services/walletService.js:999 +#: src/js/services/walletService.js:969 #: www/views/tab-export-qrCode.html:9 msgid "Exporting via QR not supported for this wallet" msgstr "L'exportation via QR n'est pas supportée pour ce portefeuille" @@ -1008,16 +1005,13 @@ msgstr "Impossible d'exporter" msgid "Family vacation funds" msgstr "Fonds pour les vacances familiales" +#: www/views/confirm.html:79 #: www/views/includes/confirm-tx.html:19 #: www/views/modals/txp-details.html:95 -#: www/views/tx-details.html:71 +#: www/views/tx-details.html:73 msgid "Fee" msgstr "Frais" -#: www/views/confirm.html:79 -msgid "Fee: {{feeLevel}}" -msgstr "Frais : {{feeLevel}}" - #: src/js/controllers/feedback/send.js:23 msgid "Feedback could not be submitted. Please try again later." msgstr "Vos commentaires n'ont pas pu être envoyés. Veuillez réessayer plus tard." @@ -1041,8 +1035,8 @@ msgstr "La numérisation digitale a échoué" msgid "Finish" msgstr "Terminer" -#: www/views/tab-create-personal.html:95 -#: www/views/tab-create-shared.html:125 +#: www/views/tab-create-personal.html:97 +#: www/views/tab-create-shared.html:127 msgid "For audit purposes" msgstr "À des fins de vérification" @@ -1055,15 +1049,14 @@ msgid "French" msgstr "Français" #: www/views/confirm.html:60 -#: www/views/confirm.html:62 #: www/views/modals/txp-details.html:74 -#: www/views/tx-details.html:48 +#: www/views/tx-details.html:50 msgid "From" msgstr "De" #: www/views/tab-export-qrCode.html:5 msgid "From the destination device, go to Add wallet > Import wallet and scan this QR code" -msgstr "Depuis le périphérique de destination, allez sur « Ajouter portefeuille » > « Importer » et numérisez ce code QR" +msgstr "Depuis l'appareil de destination, allez sur « Ajouter un portefeuille » > « Importer » et numérisez ce code QR" #: src/js/services/bwcError.js:74 msgid "Funds are locked by pending spend proposals" @@ -1097,6 +1090,10 @@ msgstr "Obtenir les actualités et mises à jour de BitPay" msgid "Get started" msgstr "Commencer" +#: www/views/addressbook.html:20 +msgid "Get started by adding your first one." +msgstr "Commencez par ajouter votre premier contact." + #: src/js/services/onGoingProcess.js:38 msgid "Getting addresses..." msgstr "Obtention d'adresses..." @@ -1105,22 +1102,31 @@ msgstr "Obtention d'adresses..." msgid "Getting fee levels..." msgstr "Obtention des niveaux de frais..." -#: www/views/glidera.html:39 -msgid "Glidera Inc. (Glidera) is providing the service of buying or selling bitcoin to BitPay users. To enable this service, Glidera has registered with US Treasury Department’s FinCEN as a Money Service Business (#31000042625755). Users of BitPay must agree to the service agreement presented by Glidera prior to obtaining Glidera’s service of buying or selling bitcoin." -msgstr "Glidera Inc. (Glidera) fournit le service d’achat ou de vente de bitcoins aux utilisateurs de BitPay. Pour autoriser ce service, Glidera a été enregistré avec le FinCEN du département du Trésor des États-Unis comme une Money Service Business (#31000042625755). Les utilisateurs de BitPay doivent accepter le contrat de service présenté par Glidera avant d’obtenir le service d’achat ou de vente de bitcoins par Glidera." +#: src/js/controllers/onboarding/terms.js:23 +#: src/js/controllers/preferencesAbout.js:16 +#: src/js/controllers/preferencesLanguage.js:14 +#: src/js/controllers/tab-home.js:141 +#: src/js/controllers/tab-settings.js:55 +#: src/js/controllers/translators.js:11 +#: src/js/controllers/tx-details.js:128 +msgid "Go Back" +msgstr "Retour" #: src/js/controllers/bitpayCardIntro.js:35 #: src/js/controllers/onboarding/backupRequest.js:13 #: src/js/controllers/onboarding/backupRequest.js:19 -#: www/views/includes/backupLaterPopup.html:4 msgid "Go back" msgstr "Retour" -#: www/views/includes/backupWarningPopup.html:4 +#: www/views/backupWarning.html:15 #: www/views/includes/confirmBackupPopup.html:8 msgid "Got it" msgstr "J'ai compris" +#: www/views/onboarding/tour.html:18 +msgid "Got it →" +msgstr "J'ai compris →" + #: www/views/preferences.html:20 #: www/views/preferencesInformation.html:47 msgid "Hardware Wallet" @@ -1130,15 +1136,15 @@ msgstr "Portefeuille matériel" msgid "Hardware wallet" msgstr "Portefeuille matériel" -#: www/views/glidera.html:34 -msgid "Have the OAuth Code?" -msgstr "Vous avez le code OAuth ?" - #: www/views/tab-settings.html:27 msgid "Help & Support" msgstr "Aide & Support" -#: www/views/addresses.html:29 +#: src/js/controllers/tab-settings.js:53 +msgid "Help and support information is available at the BitPay Help Center website." +msgstr "Des informations d'assistance et de support sont disponibles sur le site internet du centre d'aide de BitPay." + +#: www/views/addresses.html:24 msgid "Hide" msgstr "Masquer" @@ -1146,7 +1152,7 @@ msgstr "Masquer" msgid "Hide Balance" msgstr "Masquer le solde" -#: www/views/join.html:48 +#: www/views/join.html:46 #: www/views/tab-create-personal.html:25 #: www/views/tab-create-shared.html:55 #: www/views/tab-export-file.html:23 @@ -1160,9 +1166,9 @@ msgstr "Masquer les options avancées" msgid "Home" msgstr "Accueil" -#: src/js/controllers/feedback/send.js:55 -#: src/js/controllers/feedback/send.js:59 -#: src/js/controllers/feedback/send.js:63 +#: src/js/controllers/feedback/send.js:56 +#: src/js/controllers/feedback/send.js:60 +#: src/js/controllers/feedback/send.js:64 msgid "How could we improve your experience?" msgstr "Comment pourrions-nous améliorer votre expérience ?" @@ -1183,10 +1189,10 @@ msgid "I have read, understood, and agree with the Terms of use." msgstr "J'ai lu, compris et suis d'accord avec les conditions d'utilisation." #: www/views/join.html:112 -#: www/views/tab-create-personal.html:79 -#: www/views/tab-create-shared.html:109 +#: www/views/tab-create-personal.html:81 +#: www/views/tab-create-shared.html:111 msgid "I have written it down" -msgstr "Je l'ai bien écrite" +msgstr "Je l'ai bien écrit" #: src/js/controllers/feedback/rateCard.js:34 msgid "I like the app" @@ -1197,7 +1203,6 @@ msgid "I think this app is terrible." msgstr "Je pense que l'appli est mauvaise." #: src/js/controllers/onboarding/backupRequest.js:12 -#: www/views/includes/backupLaterPopup.html:7 #: www/views/includes/screenshotWarningModal.html:9 msgid "I understand" msgstr "Je comprends" @@ -1210,14 +1215,6 @@ msgstr "Je comprends que si cette application est déplacée vers un autre appar msgid "I understand that my funds are held securely on this device, not by a company." msgstr "Je comprends que mes fonds sont en toute sécurité sur cet appareil et non détenus par une entreprise." -#: www/views/onboarding/backupRequest.html:12 -msgid "I'll backup my wallet later" -msgstr "Je sauvegarderai mon portefeuille plus tard" - -#: www/views/includes/backupNeededPopup.html:10 -msgid "I'll do it later" -msgstr "Je le ferai plus tard" - #: www/views/backup.html:29 msgid "I've written it down" msgstr "Je l'ai bien écrite" @@ -1230,10 +1227,6 @@ msgstr "Si ceci est activé, la carte des transactions récentes - une liste des msgid "If enabled, wallets will also try to spend unconfirmed funds. This option may cause transaction delays." msgstr "Si ceci est activé, les portefeuilles vont également essayer de dépenser des fonds non confirmés. Cette option peut entraîner des retards de transaction." -#: www/views/includes/backupLaterPopup.html:3 -msgid "If something happens to this device, this app is deleted, or your password forgotten, neither you nor Bitpay can recover your funds." -msgstr "Si quelque chose arrive à cet appareil, que cette appli est supprimée ou votre mot de passe oublié, ni vous ni Bitpay ne peuvent récupérer vos fonds." - #: src/js/controllers/onboarding/backupRequest.js:11 msgid "If this device is replaced or this app is deleted, neither you nor BitPay can recover your funds without a backup." msgstr "Si cet appareil est remplacé ou si cette appli est supprimée, ni vous ni BitPay ne peuvent récupérer vos fonds sans une sauvegarde." @@ -1261,7 +1254,7 @@ msgstr "Importer la sauvegarde" #: www/views/add.html:38 msgid "Import wallet" -msgstr "Importer" +msgstr "Importer un portefeuille" #: src/js/services/onGoingProcess.js:23 msgid "Importing Wallet..." @@ -1277,7 +1270,7 @@ msgstr "Afin de vérifier la sauvegarde de votre portefeuille, veuillez saisir v msgid "Incomplete" msgstr "Non terminé" -#: www/views/tab-receive.html:35 +#: www/views/tab-receive.html:30 msgid "Incomplete wallet" msgstr "Portefeuille non terminé" @@ -1286,7 +1279,7 @@ msgid "Incorrect address network" msgstr "Adresse réseau incorrecte" #. Trying to import a malformed wallet export QR code -#: src/js/controllers/import.js:50 +#: src/js/controllers/import.js:51 msgid "Incorrect code format" msgstr "Format du code incorrect" @@ -1300,13 +1293,13 @@ msgid "Insufficient funds for fee" msgstr "Fonds insuffisants pour les frais" #: www/views/modals/search.html:70 -#: www/views/walletDetails.html:236 +#: www/views/walletDetails.html:253 msgid "Invalid" msgstr "Invalide" -#: src/js/controllers/create.js:149 -#: src/js/controllers/import.js:293 -#: src/js/controllers/join.js:129 +#: src/js/controllers/create.js:157 +#: src/js/controllers/import.js:294 +#: src/js/controllers/join.js:136 msgid "Invalid account number" msgstr "Numéro de compte invalide" @@ -1318,9 +1311,9 @@ msgstr "Adresse invalide" msgid "Invalid data" msgstr "Données invalides" -#: src/js/controllers/create.js:129 -#: src/js/controllers/import.js:228 -#: src/js/controllers/join.js:108 +#: src/js/controllers/create.js:137 +#: src/js/controllers/import.js:229 +#: src/js/controllers/join.js:115 msgid "Invalid derivation path" msgstr "Chemin de dérivation invalide" @@ -1328,7 +1321,7 @@ msgstr "Chemin de dérivation invalide" msgid "Invitation to share a {{appName}} Wallet" msgstr "Invitation pour partager un portefeuille {{appName}}" -#: src/js/controllers/feedback/send.js:71 +#: src/js/controllers/feedback/send.js:72 msgid "Is there anything we could do better?" msgstr "Y a-t-il quelque chose que nous pourrions améliorer ?" @@ -1340,8 +1333,8 @@ msgstr "Est-ce correct ?" msgid "Is this email address correct?" msgstr "Cette adresse e-mail est-elle correcte ?" -#: www/views/addresses.html:29 -msgid "It's a good idea to avoid reusing addresses-this both protects your privacy and keeps your bitcoins secure against hypothetical attacks by quantum computers." +#: www/views/addresses.html:24 +msgid "It's a good idea to avoid reusing addresses - this both protects your privacy and keeps your bitcoins secure against hypothetical attacks by quantum computers." msgstr "C’est une bonne idée d'éviter la réutilisation des adresses. Cela fois protège votre anonymat et garde vos bitcoins en sécurité contre les attaques hypothétiques des ordinateurs quantiques." #: src/js/controllers/backup.js:76 @@ -1363,7 +1356,7 @@ msgstr "Rejoins mon portefeuille {{appName}}. Voici le code d'invitation : {{sec #: www/views/add.html:30 #: www/views/join.html:5 msgid "Join shared wallet" -msgstr "Rejoindre" +msgstr "Rejoindre un portefeuille partagé" #: src/js/services/onGoingProcess.js:24 msgid "Joining Wallet..." @@ -1394,6 +1387,10 @@ msgstr "Vérifions votre phrase de sauvegarde." msgid "Loading transaction info..." msgstr "Chargement des infos de transaction..." +#: www/views/modals/wallet-balance.html:80 +msgid "Locked" +msgstr "Verrouillé" + #: src/js/services/bwcError.js:86 msgid "Locktime in effect. Please wait to create a new spend proposal" msgstr "Locktime effectif. Veuillez patienter pour créer une nouvelle proposition de dépense" @@ -1406,6 +1403,10 @@ msgstr "Locktime effectif. Veuillez patienter pour supprimer cette proposition d msgid "Make a payment to" msgstr "Faire un paiement à" +#: www/views/onboarding/tour.html:33 +msgid "Makes sense →" +msgstr "C’est logique →" + #: src/js/controllers/modals/search.js:61 msgid "Matches:" msgstr "Correspondances :" @@ -1422,7 +1423,7 @@ msgstr "Ça peut aller" #: src/js/controllers/tx-details.js:100 #: www/views/modals/paypro.html:48 #: www/views/modals/txp-details.html:89 -#: www/views/tx-details.html:64 +#: www/views/tx-details.html:66 msgid "Memo" msgstr "Note" @@ -1448,7 +1449,8 @@ msgid "More Options" msgstr "Plus d'options" #: www/views/modals/search.html:67 -#: www/views/walletDetails.html:234 +#: www/views/tx-details.html:19 +#: www/views/walletDetails.html:251 msgid "Moved" msgstr "Déplacés" @@ -1484,7 +1486,7 @@ msgstr "Erreur de connexion réseau" msgid "New Proposal" msgstr "Nouvelle proposition" -#: src/js/controllers/addresses.js:85 +#: src/js/controllers/addresses.js:84 msgid "New address could not be generated. Please try again." msgstr "La nouvelle adresse n'a pas pu être générée. Veuillez réessayer." @@ -1492,7 +1494,7 @@ msgstr "La nouvelle adresse n'a pas pu être générée. Veuillez réessayer." msgid "New personal wallet" msgstr "Nouveau portefeuille personnel" -#: www/views/tab-home.html:146 +#: www/views/tab-home.html:147 msgid "Next steps" msgstr "Prochaines étapes" @@ -1500,7 +1502,7 @@ msgstr "Prochaines étapes" msgid "No" msgstr "Non" -#: www/views/tab-receive.html:12 +#: www/views/tab-receive.html:7 msgid "No Wallet" msgstr "Aucun portefeuille" @@ -1524,11 +1526,11 @@ msgstr "Aucune proposition en attente" msgid "No recent transactions" msgstr "Aucune transaction récente" -#: www/views/walletDetails.html:179 +#: www/views/walletDetails.html:196 msgid "No transactions yet" msgstr "Aucune transaction" -#: src/js/controllers/amount.js:309 +#: src/js/controllers/amount.js:298 msgid "No wallet found!" msgstr "Aucun portefeuille trouvé !" @@ -1548,7 +1550,7 @@ msgstr "Normaux" msgid "Not authorized" msgstr "Non autorisé" -#: src/js/controllers/confirm.js:171 +#: src/js/controllers/confirm.js:179 msgid "Not enough funds for fee" msgstr "Pas assez de fonds pour les frais" @@ -1588,7 +1590,7 @@ msgid "Now is a perfect time to assess your surroundings. Nearby windows? Hidden msgstr "C'est un bon moment pour observer autour de vous. Personne aux fenêtres ? Derrière vous ? Aucune caméra cachée ?" #: src/js/services/popupService.js:15 -#: src/js/services/popupService.js:57 +#: src/js/services/popupService.js:58 msgid "OK" msgstr "Ok" @@ -1604,7 +1606,7 @@ msgstr "OK" msgid "Official English Disclaimer" msgstr "Clause de non-responsabilité anglaise officielle" -#: src/js/controllers/feedback/send.js:58 +#: src/js/controllers/feedback/send.js:59 msgid "Oh no!" msgstr "Oh non !" @@ -1612,7 +1614,41 @@ msgstr "Oh non !" msgid "On this screen you can see all your wallets, accounts, and assets." msgstr "Sur cet écran vous pouvez voir tous vos portefeuilles, comptes et actifs." -#: www/views/tab-receive.html:41 +#: src/js/controllers/preferencesLanguage.js:13 +#: src/js/controllers/translators.js:10 +msgid "Open Crowdin" +msgstr "Ouvrir Crowdin" + +#: src/js/controllers/preferencesAbout.js:15 +msgid "Open GitHub" +msgstr "Ouvrir GitHub" + +#: src/js/controllers/preferencesAbout.js:13 +msgid "Open GitHub Project" +msgstr "Ouvrir le projet GitHub" + +#: src/js/controllers/tab-settings.js:54 +msgid "Open Help Center" +msgstr "Ouvrir le centre d'aide" + +#: src/js/controllers/tx-details.js:127 +msgid "Open Insight" +msgstr "Ouvrir Insight" + +#: www/views/tab-scan.html:22 +msgid "Open Settings" +msgstr "Ouvrir les paramètres" + +#: src/js/controllers/preferencesLanguage.js:11 +#: src/js/controllers/translators.js:8 +msgid "Open Translation Community" +msgstr "Ouvrir la communauté de traduction" + +#: src/js/controllers/onboarding/terms.js:22 +msgid "Open Website" +msgstr "Ouvrir le site internet" + +#: www/views/tab-receive.html:36 msgid "Open wallet" msgstr "Ouvrir le portefeuille" @@ -1620,16 +1656,22 @@ msgstr "Ouvrir le portefeuille" msgid "Order the BitPay Card" msgstr "Commander la BitPay Card" +#: www/views/join.html:100 +#: www/views/join.html:93 +#: www/views/tab-create-personal.html:64 +#: www/views/tab-create-personal.html:70 +#: www/views/tab-create-shared.html:100 +#: www/views/tab-create-shared.html:94 #: www/views/tab-import-file.html:18 #: www/views/tab-import-phrase.html:36 msgid "Password" msgstr "Mot de passe" -#: src/js/controllers/import.js:63 +#: src/js/controllers/import.js:64 msgid "Password required. Make sure to enter your password in advanced options" msgstr "Mot de passe requis. Veuillez saisir votre mot de passe dans les options avancées" -#: www/views/join.html:35 +#: www/views/join.html:33 msgid "Paste invitation here" msgstr "Collez l'invitation ici" @@ -1641,7 +1683,7 @@ msgstr "Collez le code texte de sauvegarde" msgid "Pay 0% fees to turn bitcoin into dollars." msgstr "Aucun frais pour échanger des bitcoins en dollars." -#: www/views/modals/paypro.html:21 +#: www/views/modals/paypro.html:18 msgid "Pay To" msgstr "Payer à" @@ -1682,7 +1724,9 @@ msgstr "Paiement reçu" msgid "Payment Rejected" msgstr "Paiement rejeté" +#: www/views/confirm.html:140 #: www/views/includes/walletActivity.html:11 +#: www/views/modals/txp-details.html:182 #: www/views/modals/txp-details.html:42 msgid "Payment Sent" msgstr "Paiement envoyé" @@ -1727,17 +1771,17 @@ msgstr "Veuillez écrire soigneusement cette phrase." msgid "Please connect a camera to get started." msgstr "Veuillez connecter une caméra pour commencer." -#: src/js/controllers/import.js:239 +#: src/js/controllers/import.js:240 msgid "Please enter the recovery phrase" msgstr "Veuillez saisir la phrase de récupération" -#: src/js/controllers/create.js:101 -#: src/js/controllers/join.js:86 +#: src/js/controllers/create.js:109 +#: src/js/controllers/join.js:93 msgid "Please enter the required fields" msgstr "Veuillez saisir les champs requis" -#: src/js/controllers/create.js:142 -#: src/js/controllers/join.js:122 +#: src/js/controllers/create.js:150 +#: src/js/controllers/join.js:129 msgid "Please enter the wallet recovery phrase" msgstr "Veuillez saisir la phrase de récupération du portefeuille" @@ -1749,11 +1793,11 @@ msgstr "Veuillez sélectionner chaque mot dans le bon ordre." msgid "Please upgrade Copay to perform this action" msgstr "Veuillez mettre à jour Copay pour effectuer cette action" -#: src/js/controllers/confirm.js:453 +#: src/js/controllers/confirm.js:465 msgid "Please, enter the code below" msgstr "Veuillez saisir le code ci-dessous" -#: src/js/controllers/import.js:201 +#: src/js/controllers/import.js:202 msgid "Please, select your backup file" msgstr "Veuillez sélectionner votre fichier de sauvegarde" @@ -1791,6 +1835,7 @@ msgstr "Proposition acceptée" #: src/js/controllers/modals/txpDetails.js:38 #: src/js/controllers/tx-details.js:64 +#: www/views/confirm.html:141 msgid "Proposal Created" msgstr "Proposition créée" @@ -1802,7 +1847,7 @@ msgstr "Proposition supprimée" msgid "Proposal Rejected" msgstr "Proposition rejetée" -#: www/views/walletDetails.html:164 +#: www/views/walletDetails.html:181 msgid "Proposals" msgstr "Propositions" @@ -1822,7 +1867,7 @@ msgstr "Code QR" msgid "Quick review!" msgstr "Revue rapide !" -#: src/js/controllers/create.js:70 +#: src/js/controllers/create.js:69 #: src/js/controllers/join.js:53 msgid "Random" msgstr "Aléatoire" @@ -1831,11 +1876,11 @@ msgstr "Aléatoire" msgid "Rate on the app store" msgstr "Évaluer dans la boutique" -#: www/views/addresses.html:43 +#: www/views/addresses.html:49 msgid "Read less" msgstr "En savoir moins" -#: www/views/addresses.html:42 +#: www/views/addresses.html:48 msgid "Read more" msgstr "En savoir plus" @@ -1845,7 +1890,8 @@ msgid "Receive" msgstr "Recevoir" #: www/views/modals/search.html:51 -#: www/views/walletDetails.html:220 +#: www/views/tx-details.html:18 +#: www/views/walletDetails.html:237 msgid "Received" msgstr "Reçus" @@ -1853,12 +1899,12 @@ msgstr "Reçus" msgid "Received Funds" msgstr "Fonds reçus" -#: www/views/walletDetails.html:242 +#: www/views/walletDetails.html:259 msgid "Receiving" msgstr "Réception" #: www/views/bitpayCard.html:55 -#: www/views/walletDetails.html:199 +#: www/views/walletDetails.html:216 msgid "Recent" msgstr "Récentes" @@ -1884,8 +1930,8 @@ msgstr "Destinataire(s)" msgid "Recovery phrase" msgstr "Phrase de récupération" -#: www/views/walletDetails.html:114 -#: www/views/walletDetails.html:35 +#: www/views/walletDetails.html:122 +#: www/views/walletDetails.html:36 msgid "Recreate" msgstr "Recréer" @@ -1922,7 +1968,7 @@ msgstr "Confirmez le code de dépenses" msgid "Request Fingerprint" msgstr "Demander l'empreinte digitale" -#: src/js/controllers/tab-receive.js:153 +#: www/views/addresses.html:30 msgid "Request Specific amount" msgstr "Demander un montant précis" @@ -1946,14 +1992,18 @@ msgstr "Récupération des informations d'entrée" msgid "Retry" msgstr "Rééssayer" +#: www/views/tab-scan.html:23 +msgid "Retry Camera" +msgstr "Réessayer la caméra" + #: www/views/includes/password.html:31 msgid "SET" msgstr "DÉFINIR" -#: www/views/addressbook.add.html:58 +#: www/views/addressbook.add.html:56 #: www/views/includes/note.html:9 #: www/views/preferencesAlias.html:21 -#: www/views/preferencesBwsUrl.html:18 +#: www/views/preferencesBwsUrl.html:23 #: www/views/preferencesNotifications.html:42 msgid "Save" msgstr "Valider" @@ -1967,11 +2017,11 @@ msgstr "Numériser" msgid "Scan QR Codes" msgstr "Numérisez des codes QR" -#: src/js/controllers/addresses.js:119 +#: www/views/addresses.html:38 msgid "Scan addresses for funds" msgstr "Analyser les adresses pour des fonds" -#: www/views/walletDetails.html:39 +#: www/views/walletDetails.html:40 msgid "Scan status finished with error" msgstr "Analyse terminée avec des erreurs" @@ -1983,7 +2033,6 @@ msgstr "Veuillez scanner votre empreinte digitale" msgid "Scanning Wallet funds..." msgstr "Analyse des fonds du portefeuille..." -#: www/views/includes/backupWarningPopup.html:2 #: www/views/includes/screenshotWarningModal.html:7 msgid "Screenshots are not secure" msgstr "Les captures d’écran ne sont pas sécurisées" @@ -2000,6 +2049,10 @@ msgstr "Recherchez ou saisissez une adresse bitcoin" msgid "Search transactions" msgstr "Rechercher des transactions" +#: www/views/preferencesAltCurrency.html:14 +msgid "Search your currency" +msgstr "Rechercher votre monnaie" + #: www/views/preferences.html:37 msgid "Security" msgstr "Sécurité " @@ -2036,7 +2089,7 @@ msgstr "Envoyer un avis" msgid "Send Money" msgstr "Envoyer de l'argent" -#: src/js/controllers/addresses.js:124 +#: www/views/allAddresses.html:14 msgid "Send addresses by email" msgstr "Envoyer les adresses par e-mail" @@ -2049,11 +2102,11 @@ msgstr "Envoyer les bitcoins" msgid "Send by email" msgstr "Envoyer par e-mail" -#: src/js/controllers/confirm.js:247 +#: src/js/controllers/confirm.js:255 msgid "Send from" msgstr "Envoyer à partir de" -#: src/js/controllers/amount.js:97 +#: www/views/includes/itemSelector.html:8 msgid "Send max amount" msgstr "Envoyer le montant maximal" @@ -2064,7 +2117,7 @@ msgstr "Nous envoyer un avis à la place" #: www/views/confirm.html:15 #: www/views/includes/txp.html:14 #: www/views/modals/txp-details.html:19 -#: www/views/walletDetails.html:241 +#: www/views/walletDetails.html:258 msgid "Sending" msgstr "Envoi" @@ -2084,13 +2137,14 @@ msgstr "Envoi du montant maximal" msgid "Sending transaction" msgstr "Envoi de la transaction" -#: src/js/controllers/confirm.js:505 +#: src/js/controllers/confirm.js:509 msgid "Sending {{amountStr}} from your {{name}} wallet" msgstr "Envoi de {{amountStr}} depuis votre portefeuille {{name}}" #: www/views/modals/search.html:60 #: www/views/modals/tx-status.html:9 -#: www/views/walletDetails.html:229 +#: www/views/tx-details.html:17 +#: www/views/walletDetails.html:246 msgid "Sent" msgstr "Envoyés" @@ -2124,7 +2178,7 @@ msgid "Settings" msgstr "Paramètres" #: www/views/customAmount.html:20 -#: www/views/tab-receive.html:70 +#: www/views/tab-receive.html:65 #: www/views/tab-settings.html:43 msgid "Share" msgstr "Partager" @@ -2150,7 +2204,7 @@ msgstr "Partagez cette invitation avec vos copayers" msgid "Shared Wallet" msgstr "Portefeuille partagé" -#: www/views/join.html:47 +#: www/views/join.html:45 #: www/views/tab-create-personal.html:24 #: www/views/tab-create-shared.html:54 #: www/views/tab-export-file.html:22 @@ -2178,10 +2232,10 @@ msgstr "Signature de la transaction" #: www/views/onboarding/backupRequest.html:6 msgid "Since only you control your money, you’ll need to save your backup phrase in case this app is deleted." -msgstr "Puisque vous êtes le seul à pouvoir contrôler votre argent, vous aurez à enregistrer votre phrase de sauvegarde au cas où cette appli est supprimée." +msgstr "Puisque vous seul contrôlez votre argent, vous devrez enregistrer votre phrase de sauvegarde au cas où cette appli est supprimée." -#: www/views/tab-create-personal.html:94 -#: www/views/tab-create-shared.html:124 +#: www/views/tab-create-personal.html:96 +#: www/views/tab-create-shared.html:126 msgid "Single Address Wallet" msgstr "Portefeuille d'adresse unique" @@ -2193,7 +2247,7 @@ msgstr "Ignorer" msgid "Spanish" msgstr "Espagnol" -#: src/js/controllers/create.js:73 +#: src/js/controllers/create.js:72 #: src/js/controllers/join.js:56 msgid "Specify Recovery Phrase..." msgstr "Spécifier la phrase de récupération..." @@ -2242,21 +2296,17 @@ msgstr "CETTE ACTION NE PEUT PAS ÊTRE ANNULÉE" msgid "Take control of your money,
get started with bitcoin." msgstr "Prenez le contrôle de votre argent,
commencez avec bitcoin." -#: www/views/walletDetails.html:128 -#: www/views/walletDetails.html:70 +#: www/views/walletDetails.html:145 +#: www/views/walletDetails.html:65 msgid "Tap and hold to show" msgstr "Appuyez et maintenez pour afficher" -#: www/views/walletDetails.html:109 -#: www/views/walletDetails.html:30 -#: www/views/walletDetails.html:40 +#: www/views/walletDetails.html:117 +#: www/views/walletDetails.html:31 +#: www/views/walletDetails.html:41 msgid "Tap to retry" msgstr "Tapotez pour réessayer" -#: www/views/tab-settings.html:142 -msgid "Tell a friend" -msgstr "En parler à un ami" - #: www/views/termsOfUse.html:3 msgid "Terms Of Use" msgstr "Conditions d'utilisation" @@ -2268,22 +2318,22 @@ msgstr "Conditions d'utilisation" msgid "Terms of Use" msgstr "Conditions d'utilisation" -#: www/views/tab-create-personal.html:90 +#: www/views/tab-create-personal.html:92 msgid "Testnet" msgstr "Testnet" #: src/js/controllers/feedback/send.js:27 -#: src/js/controllers/feedback/send.js:70 +#: src/js/controllers/feedback/send.js:71 #: www/views/feedback/complete.html:16 #: www/views/feedback/rateApp.html:4 msgid "Thank you!" msgstr "Merci !" -#: src/js/controllers/feedback/send.js:66 +#: src/js/controllers/feedback/send.js:67 msgid "Thanks!" msgstr "Merci !" -#: src/js/controllers/feedback/send.js:67 +#: src/js/controllers/feedback/send.js:68 msgid "That's exciting to hear. We'd love to earn that fifth star from you – how could we improve your experience?" msgstr "C'est intéressant à entendre. Nous aimerions obtenir une note de 5 étoiles de votre part – comment pourrions-nous améliorer votre expérience ?" @@ -2291,6 +2341,18 @@ msgstr "C'est intéressant à entendre. Nous aimerions obtenir une note de 5 ét msgid "The Ledger Chrome application is not installed" msgstr "L'application Ledger pour Chrome n'est pas installée" +#: www/views/modals/wallet-balance.html:55 +msgid "The amount of bitcoin immediately spendable from this wallet." +msgstr "Le montant des bitcoins immédiatement disponibles depuis ce portefeuille." + +#: www/views/modals/wallet-balance.html:93 +msgid "The amount of bitcoin stored in this wallet that is allocated as inputs to your pending transaction proposals. The amount is determined using unspent transaction outputs associated with this wallet and may be more than the actual amounts associated with your pending transaction proposals." +msgstr "Le montant des bitcoins stockés dans ce portefeuille qui est alloué en tant qu'entrées à vos propositions de transaction en attente. Le montant est déterminé en utilisant les sorties de transaction non dépensées associées à ce portefeuille et peut être plus important que les montants réels associés à vos propositions de transaction en attente." + +#: www/views/modals/wallet-balance.html:74 +msgid "The amount of bitcoin stored in this wallet with less than 1 blockchain confirmation." +msgstr "Le montant des bitcoins stockés dans ce portefeuille avec moins d'une confirmation blockchain." + #: www/views/tab-import-phrase.html:5 msgid "The derivation path" msgstr "Le chemin de dérivation" @@ -2303,15 +2365,19 @@ msgstr "Le taux de change varie avec le marché." msgid "The higher the fee, the greater the incentive a miner has to include that transaction in a block. Current fees are determined based on network load and the selected policy." msgstr "Plus les frais sont importants, plus les mineurs sont incités à inclure votre transaction dans un bloc. Les frais actuels sont déterminés en fonction de la charge du réseau et du choix sélectionné." -#: www/views/addresses.html:42 +#: www/views/addresses.html:48 msgid "The maximum number of consecutive unused addresses (20) has been reached. When one of your unused addresses receives a payment, a new address will be generated and shown in your Receive tab." msgstr "Le nombre maximal d’adresses inutilisées consécutives (20) a été atteint. Lorsqu'une de vos adresses inutilisées reçoit un paiement, une nouvelle adresse sera générée et affichée dans votre onglet Recevoir." +#: src/js/controllers/onboarding/terms.js:21 +msgid "The official English Terms of Service are available on the BitPay website." +msgstr "Les conditions d'utilisation officielles en anglais sont disponibles sur le site internet de BitPay." + #: www/views/tab-import-phrase.html:4 msgid "The password of the recovery phrase (if set)" msgstr "Le mot de passe de la phrase de récupération (si configuré)" -#: src/js/services/walletService.js:951 +#: src/js/services/walletService.js:934 msgid "The payment was created but could not be completed. Please try again from home screen" msgstr "Le paiement a été créé mais n'a pas pu être achevé. Veuillez réessayer depuis l'écran d'accueil" @@ -2319,9 +2385,9 @@ msgstr "Le paiement a été créé mais n'a pas pu être achevé. Veuillez rées msgid "The payment was removed by creator" msgstr "Le paiement a été supprimé par le créateur" -#: www/views/join.html:101 -#: www/views/tab-create-personal.html:69 -#: www/views/tab-create-shared.html:99 +#: www/views/join.html:88 +#: www/views/tab-create-personal.html:59 +#: www/views/tab-create-shared.html:89 #: www/views/tab-import-phrase.html:38 msgid "The recovery phrase could require a password to be imported" msgstr "La phrase de récupération pourrait demander un mot de passe pour être importée" @@ -2330,7 +2396,7 @@ msgstr "La phrase de récupération pourrait demander un mot de passe pour être msgid "The request could not be understood by the server" msgstr "La demande n'a pas été comprise par le serveur" -#: www/views/addresses.html:43 +#: www/views/addresses.html:49 msgid "The restore process will stop when 20 addresses are generated in a row which contain no funds. To safely generate more addresses, make a payment to one of the unused addresses which has already been generated." msgstr "Le processus de restauration s’arrête lorsque 20 adresses sont générées consécutivement sans qu'elles ne contiennent de fonds. Pour générer plus d'adresses en toute sécurité, effectuez un paiement à l’une des adresses inutilisées qui a déjà été générée." @@ -2338,6 +2404,10 @@ msgstr "Le processus de restauration s’arrête lorsque 20 adresses sont géné msgid "The spend proposal is not pending" msgstr "La proposition de dépense n'est pas en attente" +#: www/views/modals/wallet-balance.html:36 +msgid "The total amount of bitcoin stored in this wallet." +msgstr "Le montant total des bitcoins stockés dans ce portefeuille." + #: www/views/preferencesHistory.html:26 msgid "The transaction history and every new incoming transaction are cached in the app. This feature clean this up and synchronizes again from the server" msgstr "L’historique des transactions et chaque nouvelle transaction entrante sont mis en cache dans l’application. Cette fonctionnalité efface cela et synchronise à nouveau à partir du serveur" @@ -2350,14 +2420,14 @@ msgstr "L’URL du service de portefeuille" msgid "There are no wallets to make this payment" msgstr "Il n'y a pas de portefeuilles pour faire ce paiement" -#: src/js/controllers/import.js:192 -#: src/js/controllers/import.js:216 -#: src/js/controllers/import.js:283 +#: src/js/controllers/import.js:193 +#: src/js/controllers/import.js:217 +#: src/js/controllers/import.js:284 msgid "There is an error in the form" msgstr "Il y a une erreur dans la forme" -#: src/js/controllers/feedback/send.js:55 -#: src/js/controllers/feedback/send.js:59 +#: src/js/controllers/feedback/send.js:56 +#: src/js/controllers/feedback/send.js:60 msgid "There's obviously something we're doing wrong." msgstr "Il y a visiblement quelque chose que nous faisons mal." @@ -2369,10 +2439,6 @@ msgstr "Ces fonctionnalités ne sont pas tout à fait prêtes pour le grand publ msgid "These features make it easier to test complex functionality on all devices. They may be unstable." msgstr "Ces fonctionnalités facilitent les tests de fonctionnalités complexes sur tous les appareils. Elles peuvent être instables." -#: www/views/advancedSettings.html:73 -msgid "These utilities may be unstable. Proceed at your own risk." -msgstr "Ces utilitaires peuvent être instables. À utiliser à vos propres risques." - #: src/js/controllers/feedback/rateCard.js:37 msgid "This app is fantastic!" msgstr "Cette appli est fantastique !" @@ -2381,13 +2447,13 @@ msgstr "Cette appli est fantastique !" msgid "This app stores your bitcoin with cutting-edge security." msgstr "Cette appli conserve vos bitcoins avec une sécurité de pointe." -#: src/js/controllers/confirm.js:438 +#: src/js/controllers/confirm.js:450 msgid "This bitcoin payment request has expired." msgstr "Cette demande de paiement bitcoin a expiré." #: www/views/join.html:108 -#: www/views/tab-create-personal.html:75 -#: www/views/tab-create-shared.html:105 +#: www/views/tab-create-personal.html:77 +#: www/views/tab-create-shared.html:107 msgid "This password cannot be recovered. If the password is lost, there is no way you could recover your funds." msgstr "Ce mot de passe ne peut pas être récupéré. Si le mot de passe est perdu, il n’y a aucun moyen pour vous de récupérer vos fonds." @@ -2395,35 +2461,38 @@ msgstr "Ce mot de passe ne peut pas être récupéré. Si le mot de passe est pe msgid "This recovery phrase was created with a password. To recover this wallet both the recovery phrase and password are needed." msgstr "Cette phrase de récupération a été créée avec un mot de passe. Pour récupérer ce portefeuille, la phrase de récupération et le mot de passe sont requis." -#: www/views/walletDetails.html:113 -#: www/views/walletDetails.html:34 +#: www/views/walletDetails.html:121 +#: www/views/walletDetails.html:35 msgid "This wallet is not registered at the given Bitcore Wallet Service (BWS). You can recreate it from the local information." msgstr "Ce portefeuille n'est pas enregistré dans le Bitcore Wallet Service (BWS) donné. Vous pouvez le recréer depuis l'information locale." #: www/views/modals/txp-details.html:131 -#: www/views/tx-details.html:91 +#: www/views/tx-details.html:93 msgid "Timeline" msgstr "Chronologie" #: www/views/confirm.html:33 -#: www/views/confirm.html:61 #: www/views/includes/output.html:2 #: www/views/modals/txp-details.html:104 #: www/views/modals/txp-details.html:53 -#: www/views/tx-details.html:37 -#: www/views/tx-details.html:49 +#: www/views/tx-details.html:39 +#: www/views/tx-details.html:51 msgid "To" msgstr "À" #: www/views/tab-send.html:12 msgid "To get started, buy bitcoin or share your address. You can receive bitcoin from any wallet or service." -msgstr "Pour commencer, achetez des bitcoins ou partagez votre adresse. Vous pouvez recevoir des bitcoins par n'importe quel portefeuille ou service." +msgstr "Pour commencer, achetez des bitcoins ou partagez votre adresse. Vous pouvez recevoir des bitcoins de n'importe quel portefeuille ou service." #: www/views/tab-send.html:13 msgid "To get started, you'll need to create a bitcoin wallet and get some bitcoin." msgstr "Pour commencer, vous aurez besoin de créer un portefeuille bitcoin et d'obtenir quelques bitcoins." -#: www/views/walletDetails.html:171 +#: www/views/modals/wallet-balance.html:23 +msgid "Total" +msgstr "Total" + +#: www/views/walletDetails.html:188 msgid "Total Locked Balance" msgstr "Solde verrouillé total" @@ -2449,8 +2518,12 @@ msgstr "Historique des transactions" msgid "Transaction already broadcasted" msgstr "Transaction déjà diffusée" +#: www/views/confirm.html:142 +msgid "Transaction created" +msgstr "Transaction créée" + #: src/js/controllers/activity.js:45 -#: src/js/controllers/tab-home.js:154 +#: src/js/controllers/tab-home.js:166 #: src/js/controllers/tx-details.js:18 msgid "Transaction not found" msgstr "Transaction introuvable" @@ -2476,8 +2549,12 @@ msgstr "Convertissez des bitcoins en dollars et dépensez partout où Visa& msgid "Type the Recovery Phrase (usually 12 words)" msgstr "Saisissez la phrase de récupération (généralement 12 mots)" +#: src/js/controllers/backup.js:75 +msgid "Uh oh..." +msgstr "Oh là là..." + #: www/views/modals/search.html:36 -#: www/views/tx-details.html:79 +#: www/views/tx-details.html:81 msgid "Unconfirmed" msgstr "Non confirmée" @@ -2485,23 +2562,27 @@ msgstr "Non confirmée" msgid "Unit" msgstr "Unité" -#: www/views/walletDetails.html:165 +#: www/views/walletDetails.html:182 msgid "Unsent transactions" msgstr "Transactions non envoyées" -#: www/views/addresses.html:35 +#: www/views/addresses.html:41 msgid "Unused Addresses" msgstr "Adresses inutilisées" -#: www/views/addresses.html:41 +#: www/views/addresses.html:47 msgid "Unused Addresses Limit" msgstr "Limite des adresses inutilisées" +#: src/js/controllers/tab-home.js:138 +msgid "Update Available" +msgstr "Mise à jour disponible" + #: www/views/proposals.html:15 msgid "Updating pending proposals. Please stand by" msgstr "Mise à jour des propositions en attente. Veuillez patienter" -#: www/views/walletDetails.html:189 +#: www/views/walletDetails.html:206 msgid "Updating transaction history. Please stand by." msgstr "Mise à jour de l'historique des transactions. Veuillez patienter." @@ -2529,15 +2610,27 @@ msgstr "Version" msgid "View" msgstr "Voir" -#: www/views/addresses.html:66 +#: www/views/addresses.html:34 msgid "View All Addresses" msgstr "Voir toutes les adresses" -#: www/views/tx-details.html:117 +#: src/js/controllers/onboarding/terms.js:20 +msgid "View Terms of Service" +msgstr "Voir les conditions d'utilisation" + +#: src/js/controllers/tx-details.js:126 +msgid "View Transaction on Insight" +msgstr "Voir la transaction sur Insight" + +#: src/js/controllers/tab-home.js:140 +msgid "View Update" +msgstr "Voir la mise à jour" + +#: www/views/tx-details.html:119 msgid "View on blockchain" msgstr "Voir sur la blockchain" -#: www/views/walletDetails.html:153 +#: www/views/walletDetails.html:170 msgid "WARNING: Key derivation is not working on this device/wallet. Actions cannot be performed on this wallet." msgstr "ATTENTION : La dérivation de la clé ne fonctionne pas sur cet appareil / portefeuille. Impossible d’effectuer des actions sur ce portefeuille." @@ -2598,7 +2691,7 @@ msgstr "Informations du portefeuille" msgid "Wallet Invitation" msgstr "Invitation de portefeuille" -#: www/views/join.html:59 +#: www/views/join.html:57 #: www/views/tab-create-personal.html:35 #: www/views/tab-create-shared.html:65 msgid "Wallet Key" @@ -2620,7 +2713,7 @@ msgstr "Réseau du portefeuille" msgid "Wallet Operation" msgstr "Opérations de portefeuille" -#: www/views/join.html:76 +#: www/views/join.html:74 #: www/views/tab-create-personal.html:47 #: www/views/tab-create-shared.html:77 msgid "Wallet Recovery Phrase" @@ -2679,8 +2772,8 @@ msgstr "Nom du portefeuille" msgid "Wallet needs backup" msgstr "Le portefeuille a besoin d'une sauvegarde" -#: www/views/tab-receive.html:56 -#: www/views/walletDetails.html:145 +#: www/views/tab-receive.html:51 +#: www/views/walletDetails.html:162 msgid "Wallet not backed up" msgstr "Le portefeuille n'est pas sauvegardé" @@ -2688,7 +2781,7 @@ msgstr "Le portefeuille n'est pas sauvegardé" msgid "Wallet not found" msgstr "Portefeuille introuvable" -#: src/js/controllers/tab-home.js:199 +#: src/js/controllers/tab-home.js:211 msgid "Wallet not registered" msgstr "Portefeuille non enregistré" @@ -2723,7 +2816,11 @@ msgstr "Attention !" msgid "Warning: this transaction has unconfirmed inputs" msgstr "ATTENTION : Cette transaction a des entrées non confirmées" -#: src/js/controllers/feedback/send.js:63 +#: src/js/controllers/onboarding/backupRequest.js:10 +msgid "Watch out!" +msgstr "Méfiez-vous !" + +#: src/js/controllers/feedback/send.js:64 msgid "We'd love to do better." msgstr "Nous serions ravis de faire mieux." @@ -2731,11 +2828,11 @@ msgstr "Nous serions ravis de faire mieux." msgid "We'll confirm on the next screen." msgstr "Nous allons la confirmer sur l’écran suivant." -#: src/js/controllers/feedback/send.js:71 +#: src/js/controllers/feedback/send.js:72 msgid "We're always looking for ways to improve BitPay." msgstr "Nous cherchons toujours des moyens afin d'améliorer BitPay." -#: src/js/controllers/feedback/send.js:75 +#: src/js/controllers/feedback/send.js:76 msgid "We're always looking for ways to improve BitPay. How could we improve your experience?" msgstr "Nous cherchons toujours des moyens afin d'améliorer BitPay. Comment pourrions-nous améliorer votre expérience ?" @@ -2756,18 +2853,10 @@ msgstr "Lorsque ce portefeuille a été créé, il se nommait “{{walletNam msgid "Where would you like to receive email notifications about payments?" msgstr "Souhaitez-vous recevoir des notifications par e-mail à propos des paiements ?" -#: www/views/addresses.html:23 +#: www/views/addresses.html:18 msgid "Why?" msgstr "Pourquoi ?" -#: www/views/includes/backupLaterPopup.html:2 -msgid "Without a backup, you could lose money" -msgstr "Sans une sauvegarde, vous risquez de perdre de l'argent" - -#: src/js/controllers/onboarding/backupRequest.js:10 -msgid "Without a backup, you could lose money." -msgstr "Sans une sauvegarde, vous risquez de perdre de l'argent." - #: www/views/feedback/rateApp.html:10 msgid "Would you be willing to rate BitPay in the app store?" msgstr "Seriez-vous prêt à évaluer BitPay dans la boutique d'application ?" @@ -2778,9 +2867,9 @@ msgstr "Souhaitez-vous ajouter ce compte ({{email}}) à votre portefeuille ?" #: www/views/onboarding/notifications.html:4 msgid "Would you like to receive push notifications about payments?" -msgstr "Souhaitez-vous recevoir des notifications à propos des paiements ?" +msgstr "Souhaitez-vous recevoir des notifications relatives aux paiements ?" -#: src/js/controllers/import.js:248 +#: src/js/controllers/import.js:249 msgid "Wrong number of recovery words:" msgstr "Nombre incorrect de mots de récupération :" @@ -2794,17 +2883,26 @@ msgid "Yes" msgstr "Oui" #: src/js/controllers/onboarding/backupRequest.js:18 -msgid "Yes, skip backup" -msgstr "Oui, ignorer la sauvegarde" +msgid "Yes, skip" +msgstr "Oui, ignorer" #: src/js/controllers/onboarding/backupRequest.js:17 msgid "You can create a backup later from your wallet settings." msgstr "Vous pouvez créer une sauvegarde plus tard à partir des paramètres de votre portefeuille." +#: src/js/controllers/preferencesLanguage.js:12 +#: src/js/controllers/translators.js:9 +msgid "You can make contributions by signing up on our Crowdin community translation website. We’re looking forward to hearing from you!" +msgstr "Vous pouvez faire des contributions en vous inscrivant sur notre site internet de traduction communautaire Crowdin. Nous sommes impatients de vous y voir !" + #: www/views/tab-scan.html:16 msgid "You can scan bitcoin addresses, payment requests, paper wallets, and more." msgstr "Vous pouvez numériser des adresses bitcoin, des demandes de paiement, des portefeuilles de papier et plus." +#: src/js/controllers/preferencesAbout.js:14 +msgid "You can see the latest developments and contribute to this open source app by visiting our project on GitHub." +msgstr "Vous pouvez voir les derniers développements et contribuer à cette application open source en visitant notre projet sur GitHub." + #: www/views/onboarding/tour.html:14 msgid "You can spend bitcoin at millions of websites and stores worldwide." msgstr "Vous pouvez dépenser des bitcoins dans des millions de sites internet et de boutiques à travers le monde." @@ -2821,10 +2919,6 @@ msgstr "Vous pouvez l’échanger contre d'autres monnaies comme le dollar amér msgid "You control your bitcoin." msgstr "Vous contrôlez vos bitcoins." -#: www/views/addressbook.html:20 -msgid "You haven’t added any contacts to your address book yet. Get started by adding your first one." -msgstr "Vous n’avez pas encore ajouté de contact à votre répertoire. Commencez par en ajouter un." - #: www/views/preferencesNotifications.html:30 msgid "You'll receive email notifications about payments sent and received from your wallets." msgstr "Vous recevrez des notifications par e-mail concernant les paiements envoyés et reçus depuis vos portefeuilles." @@ -2837,6 +2931,10 @@ msgstr "Votre portefeuille bitcoin est sauvegardé !" msgid "Your bitcoin wallet is ready!" msgstr "Votre portefeuille bitcoin est prêt !" +#: www/views/feedback/send.html:42 +msgid "Your ideas, feedback, or comments" +msgstr "Vos idées, vos commentaires ou observations" + #: www/views/tab-create-shared.html:22 msgid "Your name" msgstr "Votre nom" @@ -2858,26 +2956,23 @@ msgstr "Votre code de dépenses" msgid "Your wallet is never saved to cloud storage or standard device backups." msgstr "Votre portefeuille n’est jamais enregistré en dehors de votre appareil ou dans des sauvegardes qui lui sont propres." +#: src/js/services/walletService.js:825 #: www/views/includes/password.html:39 -msgid "Your wallet key will be encrypted. The Spending Password cannot be recovered. Be sure to write it down" -msgstr "La clé de votre portefeuille sera chiffrée. Le code de dépenses ne peut pas être récupéré. N'oubliez pas de l'écrire" +msgid "Your wallet key will be encrypted. The Spending Password cannot be recovered. Be sure to write it down." +msgstr "La clé de votre portefeuille sera chiffrée. Le code de dépenses ne peut pas être récupéré. N'oubliez pas de l'écrire." #: www/views/includes/walletSelector.html:23 #: www/views/includes/wallets.html:13 #: www/views/tab-home.html:84 -#: www/views/walletDetails.html:127 -#: www/views/walletDetails.html:69 +#: www/views/walletDetails.html:144 +#: www/views/walletDetails.html:64 msgid "[Balance Hidden]" msgstr "[Solde masqué]" -#: www/views/tab-receive.html:48 +#: www/views/tab-receive.html:43 msgid "address not yet available" msgstr "adresse indisponible" -#: www/views/includes/backupWarningPopup.html:3 -msgid "if you take a screenshot, your backup may be viewed by others apps. You can make a safe backup with paper and a pen." -msgstr "si vous prenez une capture d’écran, votre sauvegarde peut être vue par d’autres applications. Vous pouvez faire une sauvegarde sécurisée avec du papier et un stylo." - #: www/views/includes/available-balance.html:8 msgid "locked by pending payments" msgstr "verrouillés par les paiements en attente" @@ -2886,19 +2981,27 @@ msgstr "verrouillés par les paiements en attente" msgid "me" msgstr "moi" +#: www/views/addressbook.add.html:32 +msgid "name@example.com" +msgstr "nom@exemple.com" + #: www/views/preferencesHistory.html:14 msgid "preparing..." msgstr "préparation..." +#: www/views/preferencesBwsUrl.html:19 +msgid "{{appName}} depends on Bitcore Wallet Service (BWS) for blockchain information, networking and Copayer synchronization. The default configuration points to https://bws.bitpay.com (BitPay's public BWS instance)." +msgstr "{{appName}} repose sur Bitcore Wallet Service (BWS) pour les informations de blockchain, le réseau et la synchronisation des Copayers. La configuration par défaut est orientée vers https://bws.bitpay.com (instance BWS publique de BitPay)." + #: www/views/includes/confirm-tx.html:23 msgid "{{feeRateStr}} of the transaction" msgstr "{{feeRateStr}} de la transaction" -#: src/js/controllers/confirm.js:185 +#: src/js/controllers/confirm.js:193 msgid "{{fee}} will be deducted for bitcoin networking fees." msgstr "{{fee}} seront déduits pour les frais de réseau Bitcoin." -#: www/views/walletDetails.html:192 +#: www/views/walletDetails.html:209 msgid "{{updatingTxHistoryProgress}} transactions downloaded" msgstr "{{updatingTxHistoryProgress}} transactions téléchargées" diff --git a/i18n/po/template.pot b/i18n/po/template.pot index 915e072c4..284ea705a 100644 --- a/i18n/po/template.pot +++ b/i18n/po/template.pot @@ -10,7 +10,7 @@ msgstr "" #: www/views/includes/txp.html:27 #: www/views/modals/search.html:27 -#: www/views/walletDetails.html:249 +#: www/views/walletDetails.html:266 msgid "(possible double spend)" msgstr "" @@ -22,7 +22,7 @@ msgstr "" msgid "5-star ratings help us get BitPay into more hands, and more users means more resources can be committed to the app!" msgstr "" -#: src/js/controllers/confirm.js:455 +#: src/js/controllers/confirm.js:466 msgid "A SMS containing a confirmation code was sent to your phone." msgstr "" @@ -31,11 +31,11 @@ msgstr "" msgid "A member of the team will review your feedback as soon as possible." msgstr "" -#: src/js/controllers/confirm.js:213 +#: src/js/controllers/confirm.js:220 msgid "A total of {{amountAboveMaxSizeStr}} were excluded. The maximum size allowed for a transaction was exceeded." msgstr "" -#: src/js/controllers/confirm.js:207 +#: src/js/controllers/confirm.js:214 msgid "A total of {{amountBelowFeeStr}} were excluded. These funds come from UTXOs smaller than the network fee provided." msgstr "" @@ -45,6 +45,10 @@ msgid "About" msgstr "" #: src/js/services/confirmDialog.js:8 +#: www/views/confirm.html:126 +#: www/views/confirm.html:134 +#: www/views/modals/txp-details.html:169 +#: www/views/modals/txp-details.html:176 msgid "Accept" msgstr "" @@ -57,7 +61,7 @@ msgstr "" msgid "Account" msgstr "" -#: www/views/join.html:71 +#: www/views/join.html:69 #: www/views/tab-create-personal.html:42 #: www/views/tab-create-shared.html:72 #: www/views/tab-import-hardware.html:19 @@ -76,7 +80,7 @@ msgstr "" msgid "Add BitPay Card Account?" msgstr "" -#: www/views/tab-home.html:155 +#: www/views/tab-home.html:156 msgid "Add BitPay Visa® Card" msgstr "" @@ -97,22 +101,19 @@ msgstr "" msgid "Add a Contact" msgstr "" -#: www/views/join.html:90 -#: www/views/join.html:99 -#: www/views/tab-create-personal.html:59 -#: www/views/tab-create-personal.html:67 -#: www/views/tab-create-shared.html:89 -#: www/views/tab-create-shared.html:97 -msgid "Add a Password" +#: www/views/join.html:84 +#: www/views/tab-create-personal.html:55 +#: www/views/tab-create-shared.html:85 +msgid "Add a password" msgstr "" -#: www/views/join.html:92 -#: www/views/tab-create-personal.html:61 -#: www/views/tab-create-shared.html:91 +#: www/views/join.html:87 +#: www/views/tab-create-personal.html:58 +#: www/views/tab-create-shared.html:88 msgid "Add an optional password to secure the recovery phrase" msgstr "" -#: src/js/controllers/confirm.js:267 +#: src/js/controllers/confirm.js:274 msgid "Add description" msgstr "" @@ -122,7 +123,7 @@ msgstr "" #: www/views/addressbook.view.html:23 #: www/views/customAmount.html:26 -#: www/views/modals/paypro.html:25 +#: www/views/modals/paypro.html:24 #: www/views/paymentUri.html:15 msgid "Address" msgstr "" @@ -136,7 +137,7 @@ msgstr "" msgid "Address Type" msgstr "" -#: www/views/addresses.html:55 +#: www/views/addresses.html:61 msgid "Addresses With Balance" msgstr "" @@ -156,14 +157,18 @@ msgstr "" msgid "All Addresses" msgstr "" -#: www/views/backupWarning.html:15 -msgid "All clear, let's do this" +#: www/views/modals/wallet-balance.html:18 +msgid "All of your bitcoin wallet balance may not be available for immediate spending." msgstr "" -#: www/views/tab-receive.html:38 +#: www/views/tab-receive.html:33 msgid "All signing devices must be added to this multisig wallet before bitcoin addresses can be created." msgstr "" +#: www/views/tab-scan.html:21 +msgid "Allow Camera Access" +msgstr "" + #: www/views/onboarding/notifications.html:7 msgid "Allow notifications" msgstr "" @@ -177,10 +182,6 @@ msgstr "" msgid "Alternative Currency" msgstr "" -#: www/views/tab-home.html:138 -msgid "Amazon.com Gift Cards" -msgstr "" - #: www/views/amount.html:43 #: www/views/customAmount.html:32 #: www/views/includes/output.html:7 @@ -192,7 +193,7 @@ msgstr "" msgid "Amount below minimum allowed" msgstr "" -#: src/js/controllers/confirm.js:382 +#: src/js/controllers/confirm.js:389 msgid "Amount too big" msgstr "" @@ -200,7 +201,7 @@ msgstr "" msgid "An update to this app is available" msgstr "" -#: src/js/controllers/tab-home.js:133 +#: src/js/controllers/tab-home.js:139 msgid "An update to this app is available. For your security, please update to the latest version." msgstr "" @@ -229,7 +230,7 @@ msgid "Are you sure you want to remove this transaction?" msgstr "" #: src/js/controllers/onboarding/backupRequest.js:16 -msgid "Are you sure you want to skip the backup?" +msgid "Are you sure you want to skip it?" msgstr "" #: src/js/controllers/preferencesBitpayCard.js:7 @@ -240,8 +241,7 @@ msgstr "" msgid "Auditable" msgstr "" -#: www/views/walletDetails.html:121 -#: www/views/walletDetails.html:60 +#: www/views/modals/wallet-balance.html:42 msgid "Available" msgstr "" @@ -254,12 +254,16 @@ msgid "Average confirmation time: {{fee.nbBlocks * 1 msgstr "" #: www/views/join.html:118 -#: www/views/tab-create-personal.html:85 -#: www/views/tab-create-shared.html:115 +#: www/views/tab-create-personal.html:87 +#: www/views/tab-create-shared.html:117 #: www/views/tab-import-phrase.html:46 msgid "BIP32 path for address derivation" msgstr "" +#: src/js/controllers/walletDetails.js:63 +msgid "BWS Error" +msgstr "" + #: www/views/preferences.html:41 msgid "Backup" msgstr "" @@ -351,7 +355,7 @@ msgstr "" msgid "Browser unsupported" msgstr "" -#: www/views/tab-home.html:118 +#: www/views/tab-home.html:119 msgid "Buy & Sell Bitcoin" msgstr "" @@ -359,7 +363,7 @@ msgstr "" msgid "Buy Bitcoin" msgstr "" -#: www/views/tab-home.html:169 +#: www/views/tab-home.html:170 msgid "Buy an Amazon Gift Card" msgstr "" @@ -367,7 +371,7 @@ msgstr "" msgid "Buy and sell" msgstr "" -#: www/views/tab-home.html:162 +#: www/views/tab-home.html:163 msgid "Buy or Sell Bitcoin" msgstr "" @@ -379,9 +383,9 @@ msgstr "" msgid "Calculating fee" msgstr "" -#: src/js/controllers/confirm.js:511 +#: src/js/controllers/confirm.js:514 #: src/js/services/confirmDialog.js:9 -#: src/js/services/popupService.js:58 +#: src/js/services/popupService.js:59 #: www/views/addressbook.add.html:10 #: www/views/feedback/send.html:5 #: www/views/includes/confirm-tx.html:30 @@ -399,16 +403,12 @@ msgstr "" msgid "Cannot join the same wallet more that once" msgstr "" -#: src/js/controllers/amazon.js:27 -msgid "Card not found" -msgstr "" - #: www/views/preferencesBitpayCard.html:10 -#: www/views/tab-home.html:99 +#: www/views/tab-home.html:100 msgid "Cards" msgstr "" -#: www/views/modals/paypro.html:29 +#: www/views/modals/paypro.html:30 msgid "Certified by" msgstr "" @@ -433,6 +433,7 @@ msgid "Clear cache" msgstr "" #: www/views/modals/paypro.html:4 +#: www/views/modals/wallet-balance.html:3 #: www/views/modals/wallets.html:5 msgid "Close" msgstr "" @@ -445,7 +446,7 @@ msgstr "" msgid "Commit hash" msgstr "" -#: src/js/controllers/confirm.js:510 +#: src/js/controllers/confirm.js:513 #: src/js/controllers/copayers.js:42 #: src/js/services/confirmDialog.js:10 #: www/views/backup.html:53 @@ -460,17 +461,16 @@ msgstr "" msgid "Confirm & Finish" msgstr "" -#: src/js/services/walletService.js:840 -#: src/js/services/walletService.js:841 +#: src/js/services/walletService.js:828 +#: src/js/services/walletService.js:829 msgid "Confirm you new spending password" msgstr "" -#: www/views/tx-details.html:77 +#: www/views/tx-details.html:79 msgid "Confirmations" msgstr "" -#: www/views/walletDetails.html:122 -#: www/views/walletDetails.html:61 +#: www/views/modals/wallet-balance.html:61 msgid "Confirming" msgstr "" @@ -486,10 +486,6 @@ msgstr "" msgid "Connecting to Glidera..." msgstr "" -#: www/views/glideraUri.html:16 -msgid "Connecting..." -msgstr "" - #: src/js/services/bwcError.js:53 msgid "Connection reset by peer" msgstr "" @@ -550,7 +546,7 @@ msgstr "" msgid "Could not access wallet" msgstr "" -#: src/js/controllers/confirm.js:376 +#: src/js/controllers/confirm.js:383 msgid "Could not add message to imported wallet without shared encrypting key" msgstr "" @@ -562,7 +558,7 @@ msgstr "" msgid "Could not build transaction" msgstr "" -#: src/js/services/walletService.js:755 +#: src/js/services/walletService.js:741 msgid "Could not create address" msgstr "" @@ -578,7 +574,7 @@ msgstr "" msgid "Could not create: Invalid wallet recovery phrase" msgstr "" -#: src/js/controllers/import.js:79 +#: src/js/controllers/import.js:80 msgid "Could not decrypt file, check your password" msgstr "" @@ -594,7 +590,7 @@ msgstr "" msgid "Could not get dynamic fee for level: {{feeLevel}}" msgstr "" -#: src/js/controllers/confirm.js:656 +#: src/js/controllers/confirm.js:664 msgid "Could not get the destination bitcoin address" msgstr "" @@ -625,7 +621,7 @@ msgstr "" msgid "Could not remove card" msgstr "" -#: src/js/controllers/confirm.js:450 +#: src/js/controllers/confirm.js:461 msgid "Could not send confirmation code to your phone" msgstr "" @@ -633,7 +629,7 @@ msgstr "" msgid "Could not send payment" msgstr "" -#: src/js/controllers/tab-home.js:206 +#: src/js/controllers/tab-home.js:212 msgid "Could not update" msgstr "" @@ -645,16 +641,13 @@ msgstr "" msgid "Create Shared Wallet" msgstr "" -#: www/views/tab-home.html:66 -msgid "Create a bitcoin wallet" -msgstr "" - #: www/views/onboarding/tour.html:46 +#: www/views/tab-home.html:66 #: www/views/tab-send.html:16 msgid "Create bitcoin wallet" msgstr "" -#: www/views/tab-create-personal.html:103 +#: www/views/tab-create-personal.html:105 msgid "Create new wallet" msgstr "" @@ -662,12 +655,12 @@ msgstr "" msgid "Create shared wallet" msgstr "" -#: www/views/tab-create-shared.html:133 +#: www/views/tab-create-shared.html:135 msgid "Create {{formData.requiredCopayers}}-of-{{formData.totalCopayers}} wallet" msgstr "" #: www/views/modals/txp-details.html:83 -#: www/views/tx-details.html:58 +#: www/views/tx-details.html:60 msgid "Created by" msgstr "" @@ -713,8 +706,8 @@ msgid "Deleting payment proposal" msgstr "" #: www/views/join.html:116 -#: www/views/tab-create-personal.html:83 -#: www/views/tab-create-shared.html:113 +#: www/views/tab-create-personal.html:85 +#: www/views/tab-create-shared.html:115 #: www/views/tab-import-phrase.html:44 msgid "Derivation Path" msgstr "" @@ -724,15 +717,18 @@ msgid "Derivation Strategy" msgstr "" #: www/views/modals/coinbase-tx-details.html:9 -#: www/views/modals/paypro.html:17 msgid "Details" msgstr "" #: www/views/advancedSettings.html:55 -#: www/views/advancedSettings.html:71 msgid "Development Utilities" msgstr "" +#: www/views/includes/backupNeededPopup.html:10 +#: www/views/onboarding/backupRequest.html:12 +msgid "Do it later" +msgstr "" + #: www/views/tab-export-file.html:27 msgid "Do not include private key" msgstr "" @@ -746,7 +742,7 @@ msgstr "" msgid "Download" msgstr "" -#: www/views/addresses.html:23 +#: www/views/addresses.html:18 msgid "Each bitcoin wallet can generate billions of addresses from your 12-word backup. A new address is automatically generated and shown each time you receive a payment." msgstr "" @@ -803,18 +799,12 @@ msgstr "" msgid "Enabled Integrations" msgstr "" -#: www/views/join.html:86 -#: www/views/tab-create-personal.html:55 -#: www/views/tab-create-shared.html:85 -msgid "Encrypt with a Password" -msgstr "" - #: www/views/amount.html:4 msgid "Enter Amount" msgstr "" -#: src/js/services/walletService.js:854 -#: src/js/services/walletService.js:869 +#: src/js/services/walletService.js:842 +#: src/js/services/walletService.js:857 msgid "Enter Spending Password" msgstr "" @@ -822,11 +812,11 @@ msgstr "" msgid "Enter Two Factor for BitPay Card" msgstr "" -#: src/js/services/walletService.js:837 +#: src/js/services/walletService.js:824 msgid "Enter new spending password" msgstr "" -#: www/views/join.html:78 +#: www/views/join.html:76 #: www/views/tab-create-personal.html:48 #: www/views/tab-create-shared.html:78 msgid "Enter the recovery phrase (BIP39)" @@ -844,48 +834,44 @@ msgstr "" #: src/js/controllers/activity.js:45 #: src/js/controllers/addressbook.js:50 #: src/js/controllers/addressbookAdd.js:30 -#: src/js/controllers/addresses.js:24 -#: src/js/controllers/addresses.js:32 +#: src/js/controllers/addresses.js:23 +#: src/js/controllers/addresses.js:31 +#: src/js/controllers/addresses.js:83 #: src/js/controllers/addresses.js:84 -#: src/js/controllers/addresses.js:85 -#: src/js/controllers/amazon.js:15 -#: src/js/controllers/amazon.js:27 -#: src/js/controllers/amazon.js:48 -#: src/js/controllers/amazon.js:68 -#: src/js/controllers/amount.js:265 -#: src/js/controllers/amount.js:272 -#: src/js/controllers/amount.js:280 -#: src/js/controllers/amount.js:309 -#: src/js/controllers/amount.js:322 -#: src/js/controllers/amount.js:329 -#: src/js/controllers/amount.js:338 +#: src/js/controllers/amount.js:253 +#: src/js/controllers/amount.js:260 +#: src/js/controllers/amount.js:268 +#: src/js/controllers/amount.js:298 +#: src/js/controllers/amount.js:311 +#: src/js/controllers/amount.js:318 +#: src/js/controllers/amount.js:327 #: src/js/controllers/bitpayCard.js:145 #: src/js/controllers/bitpayCard.js:68 #: src/js/controllers/bitpayCardIntro.js:27 -#: src/js/controllers/confirm.js:153 -#: src/js/controllers/confirm.js:166 -#: src/js/controllers/confirm.js:172 -#: src/js/controllers/confirm.js:450 +#: src/js/controllers/confirm.js:160 +#: src/js/controllers/confirm.js:173 +#: src/js/controllers/confirm.js:179 #: src/js/controllers/confirm.js:461 -#: src/js/controllers/confirm.js:473 -#: src/js/controllers/confirm.js:622 -#: src/js/controllers/confirm.js:650 -#: src/js/controllers/confirm.js:656 -#: src/js/controllers/confirm.js:684 -#: src/js/controllers/confirm.js:690 -#: src/js/controllers/confirm.js:697 -#: src/js/controllers/confirm.js:704 -#: src/js/controllers/confirm.js:722 -#: src/js/controllers/confirm.js:741 -#: src/js/controllers/confirm.js:755 -#: src/js/controllers/confirm.js:798 +#: src/js/controllers/confirm.js:472 +#: src/js/controllers/confirm.js:484 +#: src/js/controllers/confirm.js:630 +#: src/js/controllers/confirm.js:658 +#: src/js/controllers/confirm.js:664 +#: src/js/controllers/confirm.js:692 +#: src/js/controllers/confirm.js:698 +#: src/js/controllers/confirm.js:705 +#: src/js/controllers/confirm.js:712 +#: src/js/controllers/confirm.js:730 +#: src/js/controllers/confirm.js:749 +#: src/js/controllers/confirm.js:763 +#: src/js/controllers/confirm.js:815 #: src/js/controllers/copayers.js:54 -#: src/js/controllers/create.js:101 -#: src/js/controllers/create.js:129 -#: src/js/controllers/create.js:142 -#: src/js/controllers/create.js:149 -#: src/js/controllers/create.js:164 -#: src/js/controllers/create.js:182 +#: src/js/controllers/create.js:109 +#: src/js/controllers/create.js:137 +#: src/js/controllers/create.js:150 +#: src/js/controllers/create.js:157 +#: src/js/controllers/create.js:172 +#: src/js/controllers/create.js:190 #: src/js/controllers/export.js:110 #: src/js/controllers/export.js:138 #: src/js/controllers/export.js:144 @@ -898,47 +884,44 @@ msgstr "" #: src/js/controllers/glidera.js:27 #: src/js/controllers/glidera.js:82 #: src/js/controllers/glideraUri.js:13 -#: src/js/controllers/import.js:114 -#: src/js/controllers/import.js:164 -#: src/js/controllers/import.js:192 -#: src/js/controllers/import.js:201 -#: src/js/controllers/import.js:216 -#: src/js/controllers/import.js:228 -#: src/js/controllers/import.js:239 -#: src/js/controllers/import.js:248 -#: src/js/controllers/import.js:261 -#: src/js/controllers/import.js:273 -#: src/js/controllers/import.js:283 -#: src/js/controllers/import.js:293 -#: src/js/controllers/import.js:317 -#: src/js/controllers/import.js:329 -#: src/js/controllers/import.js:50 -#: src/js/controllers/import.js:63 -#: src/js/controllers/import.js:84 -#: src/js/controllers/import.js:96 -#: src/js/controllers/join.js:108 -#: src/js/controllers/join.js:122 +#: src/js/controllers/import.js:115 +#: src/js/controllers/import.js:165 +#: src/js/controllers/import.js:193 +#: src/js/controllers/import.js:202 +#: src/js/controllers/import.js:217 +#: src/js/controllers/import.js:229 +#: src/js/controllers/import.js:240 +#: src/js/controllers/import.js:249 +#: src/js/controllers/import.js:262 +#: src/js/controllers/import.js:274 +#: src/js/controllers/import.js:284 +#: src/js/controllers/import.js:294 +#: src/js/controllers/import.js:318 +#: src/js/controllers/import.js:330 +#: src/js/controllers/import.js:51 +#: src/js/controllers/import.js:64 +#: src/js/controllers/import.js:85 +#: src/js/controllers/import.js:97 +#: src/js/controllers/join.js:115 #: src/js/controllers/join.js:129 -#: src/js/controllers/join.js:143 -#: src/js/controllers/join.js:161 -#: src/js/controllers/join.js:86 -#: src/js/controllers/modals/amazonCardDetails.js:10 -#: src/js/controllers/modals/amazonCardDetails.js:32 -#: src/js/controllers/modals/amazonCardDetails.js:40 +#: src/js/controllers/join.js:136 +#: src/js/controllers/join.js:150 +#: src/js/controllers/join.js:168 +#: src/js/controllers/join.js:93 #: src/js/controllers/modals/txpDetails.js:113 #: src/js/controllers/paperWallet.js:47 #: src/js/controllers/preferencesBitpayCard.js:16 #: src/js/controllers/preferencesDelete.js:22 #: src/js/controllers/preferencesFee.js:9 #: src/js/controllers/preferencesGlidera.js:60 -#: src/js/controllers/tab-home.js:160 -#: src/js/controllers/tab-receive.js:24 +#: src/js/controllers/tab-home.js:166 +#: src/js/controllers/tab-receive.js:23 #: src/js/controllers/tabsController.js:7 #: src/js/controllers/tx-details.js:18 msgid "Error" msgstr "" -#: src/js/controllers/confirm.js:354 +#: src/js/controllers/confirm.js:361 msgid "Error at confirm" msgstr "" @@ -962,13 +945,13 @@ msgstr "" msgid "Experimental Features" msgstr "" -#: src/js/controllers/confirm.js:312 +#: src/js/controllers/confirm.js:319 #: www/views/confirm.html:30 #: www/views/modals/txp-details.html:114 msgid "Expired" msgstr "" -#: www/views/modals/paypro.html:52 +#: www/views/modals/paypro.html:54 #: www/views/modals/txp-details.html:120 msgid "Expires" msgstr "" @@ -986,7 +969,7 @@ msgstr "" msgid "Export wallet" msgstr "" -#: src/js/services/walletService.js:1000 +#: src/js/services/walletService.js:969 #: www/views/tab-export-qrCode.html:9 msgid "Exporting via QR not supported for this wallet" msgstr "" @@ -1015,7 +998,7 @@ msgstr "" #: www/views/confirm.html:79 #: www/views/includes/confirm-tx.html:19 #: www/views/modals/txp-details.html:95 -#: www/views/tx-details.html:71 +#: www/views/tx-details.html:73 msgid "Fee" msgstr "" @@ -1042,8 +1025,8 @@ msgstr "" msgid "Finish" msgstr "" -#: www/views/tab-create-personal.html:95 -#: www/views/tab-create-shared.html:125 +#: www/views/tab-create-personal.html:97 +#: www/views/tab-create-shared.html:127 msgid "For audit purposes" msgstr "" @@ -1056,9 +1039,8 @@ msgid "French" msgstr "" #: www/views/confirm.html:60 -#: www/views/confirm.html:62 #: www/views/modals/txp-details.html:74 -#: www/views/tx-details.html:48 +#: www/views/tx-details.html:50 msgid "From" msgstr "" @@ -1098,6 +1080,10 @@ msgstr "" msgid "Get started" msgstr "" +#: www/views/addressbook.html:20 +msgid "Get started by adding your first one." +msgstr "" + #: src/js/services/onGoingProcess.js:38 msgid "Getting addresses..." msgstr "" @@ -1106,14 +1092,10 @@ msgstr "" msgid "Getting fee levels..." msgstr "" -#: www/views/glidera.html:39 -msgid "Glidera Inc. (Glidera) is providing the service of buying or selling bitcoin to BitPay users. To enable this service, Glidera has registered with US Treasury Department’s FinCEN as a Money Service Business (#31000042625755). Users of BitPay must agree to the service agreement presented by Glidera prior to obtaining Glidera’s service of buying or selling bitcoin." -msgstr "" - #: src/js/controllers/onboarding/terms.js:23 -#: src/js/controllers/preferencesAbout.js:15 +#: src/js/controllers/preferencesAbout.js:16 #: src/js/controllers/preferencesLanguage.js:14 -#: src/js/controllers/tab-home.js:135 +#: src/js/controllers/tab-home.js:141 #: src/js/controllers/tab-settings.js:55 #: src/js/controllers/translators.js:11 #: src/js/controllers/tx-details.js:128 @@ -1123,11 +1105,10 @@ msgstr "" #: src/js/controllers/bitpayCardIntro.js:35 #: src/js/controllers/onboarding/backupRequest.js:13 #: src/js/controllers/onboarding/backupRequest.js:19 -#: www/views/includes/backupLaterPopup.html:4 msgid "Go back" msgstr "" -#: www/views/includes/backupWarningPopup.html:4 +#: www/views/backupWarning.html:15 #: www/views/includes/confirmBackupPopup.html:8 msgid "Got it" msgstr "" @@ -1145,19 +1126,15 @@ msgstr "" msgid "Hardware wallet" msgstr "" -#: www/views/glidera.html:34 -msgid "Have the OAuth Code?" -msgstr "" - #: www/views/tab-settings.html:27 msgid "Help & Support" msgstr "" #: src/js/controllers/tab-settings.js:53 -msgid "Help and support information is available at the BitPay Help Center website. Would you like to go there now?" +msgid "Help and support information is available at the BitPay Help Center website." msgstr "" -#: www/views/addresses.html:29 +#: www/views/addresses.html:24 msgid "Hide" msgstr "" @@ -1165,7 +1142,7 @@ msgstr "" msgid "Hide Balance" msgstr "" -#: www/views/join.html:48 +#: www/views/join.html:46 #: www/views/tab-create-personal.html:25 #: www/views/tab-create-shared.html:55 #: www/views/tab-export-file.html:23 @@ -1179,9 +1156,9 @@ msgstr "" msgid "Home" msgstr "" -#: src/js/controllers/feedback/send.js:55 -#: src/js/controllers/feedback/send.js:59 -#: src/js/controllers/feedback/send.js:63 +#: src/js/controllers/feedback/send.js:56 +#: src/js/controllers/feedback/send.js:60 +#: src/js/controllers/feedback/send.js:64 msgid "How could we improve your experience?" msgstr "" @@ -1202,8 +1179,8 @@ msgid "I have read, understood, and agree with the Terms of use." msgstr "" #: www/views/join.html:112 -#: www/views/tab-create-personal.html:79 -#: www/views/tab-create-shared.html:109 +#: www/views/tab-create-personal.html:81 +#: www/views/tab-create-shared.html:111 msgid "I have written it down" msgstr "" @@ -1216,7 +1193,6 @@ msgid "I think this app is terrible." msgstr "" #: src/js/controllers/onboarding/backupRequest.js:12 -#: www/views/includes/backupLaterPopup.html:7 #: www/views/includes/screenshotWarningModal.html:9 msgid "I understand" msgstr "" @@ -1229,14 +1205,6 @@ msgstr "" msgid "I understand that my funds are held securely on this device, not by a company." msgstr "" -#: www/views/onboarding/backupRequest.html:12 -msgid "I'll backup my wallet later" -msgstr "" - -#: www/views/includes/backupNeededPopup.html:10 -msgid "I'll do it later" -msgstr "" - #: www/views/backup.html:29 msgid "I've written it down" msgstr "" @@ -1249,10 +1217,6 @@ msgstr "" msgid "If enabled, wallets will also try to spend unconfirmed funds. This option may cause transaction delays." msgstr "" -#: www/views/includes/backupLaterPopup.html:3 -msgid "If something happens to this device, this app is deleted, or your password forgotten, neither you nor Bitpay can recover your funds." -msgstr "" - #: src/js/controllers/onboarding/backupRequest.js:11 msgid "If this device is replaced or this app is deleted, neither you nor BitPay can recover your funds without a backup." msgstr "" @@ -1296,7 +1260,7 @@ msgstr "" msgid "Incomplete" msgstr "" -#: www/views/tab-receive.html:35 +#: www/views/tab-receive.html:30 msgid "Incomplete wallet" msgstr "" @@ -1305,7 +1269,7 @@ msgid "Incorrect address network" msgstr "" #. Trying to import a malformed wallet export QR code -#: src/js/controllers/import.js:50 +#: src/js/controllers/import.js:51 msgid "Incorrect code format" msgstr "" @@ -1319,13 +1283,13 @@ msgid "Insufficient funds for fee" msgstr "" #: www/views/modals/search.html:70 -#: www/views/walletDetails.html:236 +#: www/views/walletDetails.html:253 msgid "Invalid" msgstr "" -#: src/js/controllers/create.js:149 -#: src/js/controllers/import.js:293 -#: src/js/controllers/join.js:129 +#: src/js/controllers/create.js:157 +#: src/js/controllers/import.js:294 +#: src/js/controllers/join.js:136 msgid "Invalid account number" msgstr "" @@ -1337,9 +1301,9 @@ msgstr "" msgid "Invalid data" msgstr "" -#: src/js/controllers/create.js:129 -#: src/js/controllers/import.js:228 -#: src/js/controllers/join.js:108 +#: src/js/controllers/create.js:137 +#: src/js/controllers/import.js:229 +#: src/js/controllers/join.js:115 msgid "Invalid derivation path" msgstr "" @@ -1347,7 +1311,7 @@ msgstr "" msgid "Invitation to share a {{appName}} Wallet" msgstr "" -#: src/js/controllers/feedback/send.js:71 +#: src/js/controllers/feedback/send.js:72 msgid "Is there anything we could do better?" msgstr "" @@ -1359,8 +1323,8 @@ msgstr "" msgid "Is this email address correct?" msgstr "" -#: www/views/addresses.html:29 -msgid "It's a good idea to avoid reusing addresses-this both protects your privacy and keeps your bitcoins secure against hypothetical attacks by quantum computers." +#: www/views/addresses.html:24 +msgid "It's a good idea to avoid reusing addresses - this both protects your privacy and keeps your bitcoins secure against hypothetical attacks by quantum computers." msgstr "" #: src/js/controllers/backup.js:76 @@ -1413,6 +1377,10 @@ msgstr "" msgid "Loading transaction info..." msgstr "" +#: www/views/modals/wallet-balance.html:80 +msgid "Locked" +msgstr "" + #: src/js/services/bwcError.js:86 msgid "Locktime in effect. Please wait to create a new spend proposal" msgstr "" @@ -1445,7 +1413,7 @@ msgstr "" #: src/js/controllers/tx-details.js:100 #: www/views/modals/paypro.html:48 #: www/views/modals/txp-details.html:89 -#: www/views/tx-details.html:64 +#: www/views/tx-details.html:66 msgid "Memo" msgstr "" @@ -1471,7 +1439,8 @@ msgid "More Options" msgstr "" #: www/views/modals/search.html:67 -#: www/views/walletDetails.html:234 +#: www/views/tx-details.html:19 +#: www/views/walletDetails.html:251 msgid "Moved" msgstr "" @@ -1507,7 +1476,7 @@ msgstr "" msgid "New Proposal" msgstr "" -#: src/js/controllers/addresses.js:85 +#: src/js/controllers/addresses.js:84 msgid "New address could not be generated. Please try again." msgstr "" @@ -1515,7 +1484,7 @@ msgstr "" msgid "New personal wallet" msgstr "" -#: www/views/tab-home.html:146 +#: www/views/tab-home.html:147 msgid "Next steps" msgstr "" @@ -1523,7 +1492,7 @@ msgstr "" msgid "No" msgstr "" -#: www/views/tab-receive.html:12 +#: www/views/tab-receive.html:7 msgid "No Wallet" msgstr "" @@ -1547,11 +1516,11 @@ msgstr "" msgid "No recent transactions" msgstr "" -#: www/views/walletDetails.html:179 +#: www/views/walletDetails.html:196 msgid "No transactions yet" msgstr "" -#: src/js/controllers/amount.js:309 +#: src/js/controllers/amount.js:298 msgid "No wallet found!" msgstr "" @@ -1571,7 +1540,7 @@ msgstr "" msgid "Not authorized" msgstr "" -#: src/js/controllers/confirm.js:172 +#: src/js/controllers/confirm.js:179 msgid "Not enough funds for fee" msgstr "" @@ -1611,7 +1580,7 @@ msgid "Now is a perfect time to assess your surroundings. Nearby windows? Hidden msgstr "" #: src/js/services/popupService.js:15 -#: src/js/services/popupService.js:57 +#: src/js/services/popupService.js:58 msgid "OK" msgstr "" @@ -1627,7 +1596,7 @@ msgstr "" msgid "Official English Disclaimer" msgstr "" -#: src/js/controllers/feedback/send.js:58 +#: src/js/controllers/feedback/send.js:59 msgid "Oh no!" msgstr "" @@ -1640,11 +1609,11 @@ msgstr "" msgid "Open Crowdin" msgstr "" -#: src/js/controllers/preferencesAbout.js:14 +#: src/js/controllers/preferencesAbout.js:15 msgid "Open GitHub" msgstr "" -#: src/js/controllers/preferencesAbout.js:12 +#: src/js/controllers/preferencesAbout.js:13 msgid "Open GitHub Project" msgstr "" @@ -1656,6 +1625,10 @@ msgstr "" msgid "Open Insight" msgstr "" +#: www/views/tab-scan.html:22 +msgid "Open Settings" +msgstr "" + #: src/js/controllers/preferencesLanguage.js:11 #: src/js/controllers/translators.js:8 msgid "Open Translation Community" @@ -1665,7 +1638,7 @@ msgstr "" msgid "Open Website" msgstr "" -#: www/views/tab-receive.html:41 +#: www/views/tab-receive.html:36 msgid "Open wallet" msgstr "" @@ -1673,16 +1646,22 @@ msgstr "" msgid "Order the BitPay Card" msgstr "" +#: www/views/join.html:100 +#: www/views/join.html:93 +#: www/views/tab-create-personal.html:64 +#: www/views/tab-create-personal.html:70 +#: www/views/tab-create-shared.html:100 +#: www/views/tab-create-shared.html:94 #: www/views/tab-import-file.html:18 #: www/views/tab-import-phrase.html:36 msgid "Password" msgstr "" -#: src/js/controllers/import.js:63 +#: src/js/controllers/import.js:64 msgid "Password required. Make sure to enter your password in advanced options" msgstr "" -#: www/views/join.html:35 +#: www/views/join.html:33 msgid "Paste invitation here" msgstr "" @@ -1694,7 +1673,7 @@ msgstr "" msgid "Pay 0% fees to turn bitcoin into dollars." msgstr "" -#: www/views/modals/paypro.html:21 +#: www/views/modals/paypro.html:18 msgid "Pay To" msgstr "" @@ -1735,7 +1714,9 @@ msgstr "" msgid "Payment Rejected" msgstr "" +#: www/views/confirm.html:140 #: www/views/includes/walletActivity.html:11 +#: www/views/modals/txp-details.html:182 #: www/views/modals/txp-details.html:42 msgid "Payment Sent" msgstr "" @@ -1780,17 +1761,17 @@ msgstr "" msgid "Please connect a camera to get started." msgstr "" -#: src/js/controllers/import.js:239 +#: src/js/controllers/import.js:240 msgid "Please enter the recovery phrase" msgstr "" -#: src/js/controllers/create.js:101 -#: src/js/controllers/join.js:86 +#: src/js/controllers/create.js:109 +#: src/js/controllers/join.js:93 msgid "Please enter the required fields" msgstr "" -#: src/js/controllers/create.js:142 -#: src/js/controllers/join.js:122 +#: src/js/controllers/create.js:150 +#: src/js/controllers/join.js:129 msgid "Please enter the wallet recovery phrase" msgstr "" @@ -1802,11 +1783,11 @@ msgstr "" msgid "Please upgrade Copay to perform this action" msgstr "" -#: src/js/controllers/confirm.js:454 +#: src/js/controllers/confirm.js:465 msgid "Please, enter the code below" msgstr "" -#: src/js/controllers/import.js:201 +#: src/js/controllers/import.js:202 msgid "Please, select your backup file" msgstr "" @@ -1844,6 +1825,7 @@ msgstr "" #: src/js/controllers/modals/txpDetails.js:38 #: src/js/controllers/tx-details.js:64 +#: www/views/confirm.html:141 msgid "Proposal Created" msgstr "" @@ -1855,7 +1837,7 @@ msgstr "" msgid "Proposal Rejected" msgstr "" -#: www/views/walletDetails.html:164 +#: www/views/walletDetails.html:181 msgid "Proposals" msgstr "" @@ -1875,7 +1857,7 @@ msgstr "" msgid "Quick review!" msgstr "" -#: src/js/controllers/create.js:70 +#: src/js/controllers/create.js:69 #: src/js/controllers/join.js:53 msgid "Random" msgstr "" @@ -1884,11 +1866,11 @@ msgstr "" msgid "Rate on the app store" msgstr "" -#: www/views/addresses.html:43 +#: www/views/addresses.html:49 msgid "Read less" msgstr "" -#: www/views/addresses.html:42 +#: www/views/addresses.html:48 msgid "Read more" msgstr "" @@ -1898,7 +1880,8 @@ msgid "Receive" msgstr "" #: www/views/modals/search.html:51 -#: www/views/walletDetails.html:220 +#: www/views/tx-details.html:18 +#: www/views/walletDetails.html:237 msgid "Received" msgstr "" @@ -1906,12 +1889,12 @@ msgstr "" msgid "Received Funds" msgstr "" -#: www/views/walletDetails.html:242 +#: www/views/walletDetails.html:259 msgid "Receiving" msgstr "" #: www/views/bitpayCard.html:55 -#: www/views/walletDetails.html:199 +#: www/views/walletDetails.html:216 msgid "Recent" msgstr "" @@ -1937,8 +1920,8 @@ msgstr "" msgid "Recovery phrase" msgstr "" -#: www/views/walletDetails.html:114 -#: www/views/walletDetails.html:35 +#: www/views/walletDetails.html:122 +#: www/views/walletDetails.html:36 msgid "Recreate" msgstr "" @@ -1975,7 +1958,7 @@ msgstr "" msgid "Request Fingerprint" msgstr "" -#: src/js/controllers/tab-receive.js:153 +#: www/views/addresses.html:30 msgid "Request Specific amount" msgstr "" @@ -1999,14 +1982,18 @@ msgstr "" msgid "Retry" msgstr "" +#: www/views/tab-scan.html:23 +msgid "Retry Camera" +msgstr "" + #: www/views/includes/password.html:31 msgid "SET" msgstr "" -#: www/views/addressbook.add.html:58 +#: www/views/addressbook.add.html:56 #: www/views/includes/note.html:9 #: www/views/preferencesAlias.html:21 -#: www/views/preferencesBwsUrl.html:18 +#: www/views/preferencesBwsUrl.html:23 #: www/views/preferencesNotifications.html:42 msgid "Save" msgstr "" @@ -2020,11 +2007,11 @@ msgstr "" msgid "Scan QR Codes" msgstr "" -#: src/js/controllers/addresses.js:119 +#: www/views/addresses.html:38 msgid "Scan addresses for funds" msgstr "" -#: www/views/walletDetails.html:39 +#: www/views/walletDetails.html:40 msgid "Scan status finished with error" msgstr "" @@ -2036,7 +2023,6 @@ msgstr "" msgid "Scanning Wallet funds..." msgstr "" -#: www/views/includes/backupWarningPopup.html:2 #: www/views/includes/screenshotWarningModal.html:7 msgid "Screenshots are not secure" msgstr "" @@ -2053,6 +2039,10 @@ msgstr "" msgid "Search transactions" msgstr "" +#: www/views/preferencesAltCurrency.html:14 +msgid "Search your currency" +msgstr "" + #: www/views/preferences.html:37 msgid "Security" msgstr "" @@ -2089,7 +2079,7 @@ msgstr "" msgid "Send Money" msgstr "" -#: src/js/controllers/addresses.js:124 +#: www/views/allAddresses.html:14 msgid "Send addresses by email" msgstr "" @@ -2102,11 +2092,11 @@ msgstr "" msgid "Send by email" msgstr "" -#: src/js/controllers/confirm.js:248 +#: src/js/controllers/confirm.js:255 msgid "Send from" msgstr "" -#: src/js/controllers/amount.js:97 +#: www/views/includes/itemSelector.html:8 msgid "Send max amount" msgstr "" @@ -2117,7 +2107,7 @@ msgstr "" #: www/views/confirm.html:15 #: www/views/includes/txp.html:14 #: www/views/modals/txp-details.html:19 -#: www/views/walletDetails.html:241 +#: www/views/walletDetails.html:258 msgid "Sending" msgstr "" @@ -2137,13 +2127,14 @@ msgstr "" msgid "Sending transaction" msgstr "" -#: src/js/controllers/confirm.js:506 +#: src/js/controllers/confirm.js:509 msgid "Sending {{amountStr}} from your {{name}} wallet" msgstr "" #: www/views/modals/search.html:60 #: www/views/modals/tx-status.html:9 -#: www/views/walletDetails.html:229 +#: www/views/tx-details.html:17 +#: www/views/walletDetails.html:246 msgid "Sent" msgstr "" @@ -2177,7 +2168,7 @@ msgid "Settings" msgstr "" #: www/views/customAmount.html:20 -#: www/views/tab-receive.html:70 +#: www/views/tab-receive.html:65 #: www/views/tab-settings.html:43 msgid "Share" msgstr "" @@ -2203,7 +2194,7 @@ msgstr "" msgid "Shared Wallet" msgstr "" -#: www/views/join.html:47 +#: www/views/join.html:45 #: www/views/tab-create-personal.html:24 #: www/views/tab-create-shared.html:54 #: www/views/tab-export-file.html:22 @@ -2233,8 +2224,8 @@ msgstr "" msgid "Since only you control your money, you’ll need to save your backup phrase in case this app is deleted." msgstr "" -#: www/views/tab-create-personal.html:94 -#: www/views/tab-create-shared.html:124 +#: www/views/tab-create-personal.html:96 +#: www/views/tab-create-shared.html:126 msgid "Single Address Wallet" msgstr "" @@ -2246,7 +2237,7 @@ msgstr "" msgid "Spanish" msgstr "" -#: src/js/controllers/create.js:73 +#: src/js/controllers/create.js:72 #: src/js/controllers/join.js:56 msgid "Specify Recovery Phrase..." msgstr "" @@ -2295,14 +2286,14 @@ msgstr "" msgid "Take control of your money,
get started with bitcoin." msgstr "" -#: www/views/walletDetails.html:128 -#: www/views/walletDetails.html:70 +#: www/views/walletDetails.html:145 +#: www/views/walletDetails.html:65 msgid "Tap and hold to show" msgstr "" -#: www/views/walletDetails.html:109 -#: www/views/walletDetails.html:30 -#: www/views/walletDetails.html:40 +#: www/views/walletDetails.html:117 +#: www/views/walletDetails.html:31 +#: www/views/walletDetails.html:41 msgid "Tap to retry" msgstr "" @@ -2317,22 +2308,22 @@ msgstr "" msgid "Terms of Use" msgstr "" -#: www/views/tab-create-personal.html:90 +#: www/views/tab-create-personal.html:92 msgid "Testnet" msgstr "" #: src/js/controllers/feedback/send.js:27 -#: src/js/controllers/feedback/send.js:70 +#: src/js/controllers/feedback/send.js:71 #: www/views/feedback/complete.html:16 #: www/views/feedback/rateApp.html:4 msgid "Thank you!" msgstr "" -#: src/js/controllers/feedback/send.js:66 +#: src/js/controllers/feedback/send.js:67 msgid "Thanks!" msgstr "" -#: src/js/controllers/feedback/send.js:67 +#: src/js/controllers/feedback/send.js:68 msgid "That's exciting to hear. We'd love to earn that fifth star from you – how could we improve your experience?" msgstr "" @@ -2340,6 +2331,18 @@ msgstr "" msgid "The Ledger Chrome application is not installed" msgstr "" +#: www/views/modals/wallet-balance.html:55 +msgid "The amount of bitcoin immediately spendable from this wallet." +msgstr "" + +#: www/views/modals/wallet-balance.html:93 +msgid "The amount of bitcoin stored in this wallet that is allocated as inputs to your pending transaction proposals. The amount is determined using unspent transaction outputs associated with this wallet and may be more than the actual amounts associated with your pending transaction proposals." +msgstr "" + +#: www/views/modals/wallet-balance.html:74 +msgid "The amount of bitcoin stored in this wallet with less than 1 blockchain confirmation." +msgstr "" + #: www/views/tab-import-phrase.html:5 msgid "The derivation path" msgstr "" @@ -2352,19 +2355,19 @@ msgstr "" msgid "The higher the fee, the greater the incentive a miner has to include that transaction in a block. Current fees are determined based on network load and the selected policy." msgstr "" -#: www/views/addresses.html:42 +#: www/views/addresses.html:48 msgid "The maximum number of consecutive unused addresses (20) has been reached. When one of your unused addresses receives a payment, a new address will be generated and shown in your Receive tab." msgstr "" #: src/js/controllers/onboarding/terms.js:21 -msgid "The official English Terms of Service are available on the BitPay website. Would you like to view them?" +msgid "The official English Terms of Service are available on the BitPay website." msgstr "" #: www/views/tab-import-phrase.html:4 msgid "The password of the recovery phrase (if set)" msgstr "" -#: src/js/services/walletService.js:952 +#: src/js/services/walletService.js:934 msgid "The payment was created but could not be completed. Please try again from home screen" msgstr "" @@ -2372,9 +2375,9 @@ msgstr "" msgid "The payment was removed by creator" msgstr "" -#: www/views/join.html:101 -#: www/views/tab-create-personal.html:69 -#: www/views/tab-create-shared.html:99 +#: www/views/join.html:88 +#: www/views/tab-create-personal.html:59 +#: www/views/tab-create-shared.html:89 #: www/views/tab-import-phrase.html:38 msgid "The recovery phrase could require a password to be imported" msgstr "" @@ -2383,7 +2386,7 @@ msgstr "" msgid "The request could not be understood by the server" msgstr "" -#: www/views/addresses.html:43 +#: www/views/addresses.html:49 msgid "The restore process will stop when 20 addresses are generated in a row which contain no funds. To safely generate more addresses, make a payment to one of the unused addresses which has already been generated." msgstr "" @@ -2391,6 +2394,10 @@ msgstr "" msgid "The spend proposal is not pending" msgstr "" +#: www/views/modals/wallet-balance.html:36 +msgid "The total amount of bitcoin stored in this wallet." +msgstr "" + #: www/views/preferencesHistory.html:26 msgid "The transaction history and every new incoming transaction are cached in the app. This feature clean this up and synchronizes again from the server" msgstr "" @@ -2403,14 +2410,14 @@ msgstr "" msgid "There are no wallets to make this payment" msgstr "" -#: src/js/controllers/import.js:192 -#: src/js/controllers/import.js:216 -#: src/js/controllers/import.js:283 +#: src/js/controllers/import.js:193 +#: src/js/controllers/import.js:217 +#: src/js/controllers/import.js:284 msgid "There is an error in the form" msgstr "" -#: src/js/controllers/feedback/send.js:55 -#: src/js/controllers/feedback/send.js:59 +#: src/js/controllers/feedback/send.js:56 +#: src/js/controllers/feedback/send.js:60 msgid "There's obviously something we're doing wrong." msgstr "" @@ -2422,10 +2429,6 @@ msgstr "" msgid "These features make it easier to test complex functionality on all devices. They may be unstable." msgstr "" -#: www/views/advancedSettings.html:73 -msgid "These utilities may be unstable. Proceed at your own risk." -msgstr "" - #: src/js/controllers/feedback/rateCard.js:37 msgid "This app is fantastic!" msgstr "" @@ -2434,13 +2437,13 @@ msgstr "" msgid "This app stores your bitcoin with cutting-edge security." msgstr "" -#: src/js/controllers/confirm.js:439 +#: src/js/controllers/confirm.js:450 msgid "This bitcoin payment request has expired." msgstr "" #: www/views/join.html:108 -#: www/views/tab-create-personal.html:75 -#: www/views/tab-create-shared.html:105 +#: www/views/tab-create-personal.html:77 +#: www/views/tab-create-shared.html:107 msgid "This password cannot be recovered. If the password is lost, there is no way you could recover your funds." msgstr "" @@ -2448,23 +2451,22 @@ msgstr "" msgid "This recovery phrase was created with a password. To recover this wallet both the recovery phrase and password are needed." msgstr "" -#: www/views/walletDetails.html:113 -#: www/views/walletDetails.html:34 +#: www/views/walletDetails.html:121 +#: www/views/walletDetails.html:35 msgid "This wallet is not registered at the given Bitcore Wallet Service (BWS). You can recreate it from the local information." msgstr "" #: www/views/modals/txp-details.html:131 -#: www/views/tx-details.html:91 +#: www/views/tx-details.html:93 msgid "Timeline" msgstr "" #: www/views/confirm.html:33 -#: www/views/confirm.html:61 #: www/views/includes/output.html:2 #: www/views/modals/txp-details.html:104 #: www/views/modals/txp-details.html:53 -#: www/views/tx-details.html:37 -#: www/views/tx-details.html:49 +#: www/views/tx-details.html:39 +#: www/views/tx-details.html:51 msgid "To" msgstr "" @@ -2476,7 +2478,11 @@ msgstr "" msgid "To get started, you'll need to create a bitcoin wallet and get some bitcoin." msgstr "" -#: www/views/walletDetails.html:171 +#: www/views/modals/wallet-balance.html:23 +msgid "Total" +msgstr "" + +#: www/views/walletDetails.html:188 msgid "Total Locked Balance" msgstr "" @@ -2502,8 +2508,12 @@ msgstr "" msgid "Transaction already broadcasted" msgstr "" +#: www/views/confirm.html:142 +msgid "Transaction created" +msgstr "" + #: src/js/controllers/activity.js:45 -#: src/js/controllers/tab-home.js:160 +#: src/js/controllers/tab-home.js:166 #: src/js/controllers/tx-details.js:18 msgid "Transaction not found" msgstr "" @@ -2534,7 +2544,7 @@ msgid "Uh oh..." msgstr "" #: www/views/modals/search.html:36 -#: www/views/tx-details.html:79 +#: www/views/tx-details.html:81 msgid "Unconfirmed" msgstr "" @@ -2542,19 +2552,19 @@ msgstr "" msgid "Unit" msgstr "" -#: www/views/walletDetails.html:165 +#: www/views/walletDetails.html:182 msgid "Unsent transactions" msgstr "" -#: www/views/addresses.html:35 +#: www/views/addresses.html:41 msgid "Unused Addresses" msgstr "" -#: www/views/addresses.html:41 +#: www/views/addresses.html:47 msgid "Unused Addresses Limit" msgstr "" -#: src/js/controllers/tab-home.js:132 +#: src/js/controllers/tab-home.js:138 msgid "Update Available" msgstr "" @@ -2562,7 +2572,7 @@ msgstr "" msgid "Updating pending proposals. Please stand by" msgstr "" -#: www/views/walletDetails.html:189 +#: www/views/walletDetails.html:206 msgid "Updating transaction history. Please stand by." msgstr "" @@ -2590,7 +2600,7 @@ msgstr "" msgid "View" msgstr "" -#: www/views/addresses.html:66 +#: www/views/addresses.html:34 msgid "View All Addresses" msgstr "" @@ -2598,19 +2608,19 @@ msgstr "" msgid "View Terms of Service" msgstr "" -#: src/js/controllers/tx-details.js:125 +#: src/js/controllers/tx-details.js:126 msgid "View Transaction on Insight" msgstr "" -#: src/js/controllers/tab-home.js:134 +#: src/js/controllers/tab-home.js:140 msgid "View Update" msgstr "" -#: www/views/tx-details.html:117 +#: www/views/tx-details.html:119 msgid "View on blockchain" msgstr "" -#: www/views/walletDetails.html:153 +#: www/views/walletDetails.html:170 msgid "WARNING: Key derivation is not working on this device/wallet. Actions cannot be performed on this wallet." msgstr "" @@ -2671,7 +2681,7 @@ msgstr "" msgid "Wallet Invitation" msgstr "" -#: www/views/join.html:59 +#: www/views/join.html:57 #: www/views/tab-create-personal.html:35 #: www/views/tab-create-shared.html:65 msgid "Wallet Key" @@ -2693,7 +2703,7 @@ msgstr "" msgid "Wallet Operation" msgstr "" -#: www/views/join.html:76 +#: www/views/join.html:74 #: www/views/tab-create-personal.html:47 #: www/views/tab-create-shared.html:77 msgid "Wallet Recovery Phrase" @@ -2752,8 +2762,8 @@ msgstr "" msgid "Wallet needs backup" msgstr "" -#: www/views/tab-receive.html:56 -#: www/views/walletDetails.html:145 +#: www/views/tab-receive.html:51 +#: www/views/walletDetails.html:162 msgid "Wallet not backed up" msgstr "" @@ -2761,7 +2771,7 @@ msgstr "" msgid "Wallet not found" msgstr "" -#: src/js/controllers/tab-home.js:205 +#: src/js/controllers/tab-home.js:211 msgid "Wallet not registered" msgstr "" @@ -2796,7 +2806,11 @@ msgstr "" msgid "Warning: this transaction has unconfirmed inputs" msgstr "" -#: src/js/controllers/feedback/send.js:63 +#: src/js/controllers/onboarding/backupRequest.js:10 +msgid "Watch out!" +msgstr "" + +#: src/js/controllers/feedback/send.js:64 msgid "We'd love to do better." msgstr "" @@ -2804,11 +2818,11 @@ msgstr "" msgid "We'll confirm on the next screen." msgstr "" -#: src/js/controllers/feedback/send.js:71 +#: src/js/controllers/feedback/send.js:72 msgid "We're always looking for ways to improve BitPay." msgstr "" -#: src/js/controllers/feedback/send.js:75 +#: src/js/controllers/feedback/send.js:76 msgid "We're always looking for ways to improve BitPay. How could we improve your experience?" msgstr "" @@ -2829,18 +2843,10 @@ msgstr "" msgid "Where would you like to receive email notifications about payments?" msgstr "" -#: www/views/addresses.html:23 +#: www/views/addresses.html:18 msgid "Why?" msgstr "" -#: www/views/includes/backupLaterPopup.html:2 -msgid "Without a backup, you could lose money" -msgstr "" - -#: src/js/controllers/onboarding/backupRequest.js:10 -msgid "Without a backup, you could lose money." -msgstr "" - #: www/views/feedback/rateApp.html:10 msgid "Would you be willing to rate BitPay in the app store?" msgstr "" @@ -2853,11 +2859,7 @@ msgstr "" msgid "Would you like to receive push notifications about payments?" msgstr "" -#: src/js/controllers/tx-details.js:126 -msgid "Would you like to view this transaction on the Insight blockchain explorer?" -msgstr "" - -#: src/js/controllers/import.js:248 +#: src/js/controllers/import.js:249 msgid "Wrong number of recovery words:" msgstr "" @@ -2871,7 +2873,7 @@ msgid "Yes" msgstr "" #: src/js/controllers/onboarding/backupRequest.js:18 -msgid "Yes, skip backup" +msgid "Yes, skip" msgstr "" #: src/js/controllers/onboarding/backupRequest.js:17 @@ -2887,7 +2889,7 @@ msgstr "" msgid "You can scan bitcoin addresses, payment requests, paper wallets, and more." msgstr "" -#: src/js/controllers/preferencesAbout.js:13 +#: src/js/controllers/preferencesAbout.js:14 msgid "You can see the latest developments and contribute to this open source app by visiting our project on GitHub." msgstr "" @@ -2907,10 +2909,6 @@ msgstr "" msgid "You control your bitcoin." msgstr "" -#: www/views/addressbook.html:20 -msgid "You haven’t added any contacts to your address book yet. Get started by adding your first one." -msgstr "" - #: www/views/preferencesNotifications.html:30 msgid "You'll receive email notifications about payments sent and received from your wallets." msgstr "" @@ -2952,22 +2950,22 @@ msgstr "" msgid "Your wallet key will be encrypted. The Spending Password cannot be recovered. Be sure to write it down" msgstr "" +#: src/js/services/walletService.js:825 +msgid "Your wallet key will be encrypted. The Spending Password cannot be recovered. Be sure to write it down." +msgstr "" + #: www/views/includes/walletSelector.html:23 #: www/views/includes/wallets.html:13 #: www/views/tab-home.html:84 -#: www/views/walletDetails.html:127 -#: www/views/walletDetails.html:69 +#: www/views/walletDetails.html:144 +#: www/views/walletDetails.html:64 msgid "[Balance Hidden]" msgstr "" -#: www/views/tab-receive.html:48 +#: www/views/tab-receive.html:43 msgid "address not yet available" msgstr "" -#: www/views/includes/backupWarningPopup.html:3 -msgid "if you take a screenshot, your backup may be viewed by others apps. You can make a safe backup with paper and a pen." -msgstr "" - #: www/views/includes/available-balance.html:8 msgid "locked by pending payments" msgstr "" @@ -2984,15 +2982,19 @@ msgstr "" msgid "preparing..." msgstr "" +#: www/views/preferencesBwsUrl.html:19 +msgid "{{appName}} depends on Bitcore Wallet Service (BWS) for blockchain information, networking and Copayer synchronization. The default configuration points to https://bws.bitpay.com (BitPay's public BWS instance)." +msgstr "" + #: www/views/includes/confirm-tx.html:23 msgid "{{feeRateStr}} of the transaction" msgstr "" -#: src/js/controllers/confirm.js:186 +#: src/js/controllers/confirm.js:193 msgid "{{fee}} will be deducted for bitcoin networking fees." msgstr "" -#: www/views/walletDetails.html:192 +#: www/views/walletDetails.html:209 msgid "{{updatingTxHistoryProgress}} transactions downloaded" msgstr "" diff --git a/src/js/controllers/addressbookAdd.js b/src/js/controllers/addressbookAdd.js index 15c5ae9e8..7cd72b2f7 100644 --- a/src/js/controllers/addressbookAdd.js +++ b/src/js/controllers/addressbookAdd.js @@ -10,7 +10,7 @@ angular.module('copayApp.controllers').controller('addressbookAddController', fu 'email': '' }; - $scope.onQrCodeScanned = function(data, addressbookForm) { + $scope.onQrCodeScannedAddressBook = function(data, addressbookForm) { $timeout(function() { var form = addressbookForm; if (data && form) { diff --git a/src/js/controllers/addresses.js b/src/js/controllers/addresses.js index 90cf0bb5e..fb8ba5dc0 100644 --- a/src/js/controllers/addresses.js +++ b/src/js/controllers/addresses.js @@ -1,9 +1,8 @@ 'use strict'; -angular.module('copayApp.controllers').controller('addressesController', function($scope, $stateParams, $state, $timeout, $ionicHistory, $ionicPopover, $ionicScrollDelegate, configService, popupService, gettextCatalog, ongoingProcess, lodash, profileService, walletService, platformInfo) { +angular.module('copayApp.controllers').controller('addressesController', function($scope, $stateParams, $state, $timeout, $ionicHistory, $ionicScrollDelegate, configService, popupService, gettextCatalog, ongoingProcess, lodash, profileService, walletService, platformInfo) { var UNUSED_ADDRESS_LIMIT = 5; var BALANCE_ADDRESS_LIMIT = 5; - var MENU_ITEM_HEIGHT = 55; var config; var unitName; var unitToSatoshi; @@ -100,6 +99,13 @@ angular.module('copayApp.controllers').controller('addressesController', functio }); }; + $scope.requestSpecificAmount = function() { + $state.go('tabs.receive.amount', { + customAmount: true, + toAddress: $stateParams.toAddress + }); + } + $scope.showInformation = function() { $timeout(function() { $scope.showInfo = !$scope.showInfo; @@ -114,36 +120,13 @@ angular.module('copayApp.controllers').controller('addressesController', functio }, 10); }; - $scope.showMenu = function(allAddresses, $event) { - var scanObj = { - text: gettextCatalog.getString('Scan addresses for funds'), - action: scan, - }; - - var sendAddressesObj = { - text: gettextCatalog.getString('Send addresses by email'), - action: sendByEmail, - } - - $scope.items = allAddresses ? [sendAddressesObj] : [scanObj]; - $scope.height = $scope.items.length * MENU_ITEM_HEIGHT; - - $ionicPopover.fromTemplateUrl('views/includes/menu-popover.html', { - scope: $scope - }).then(function(popover) { - $scope.menu = popover; - $scope.menu.show($event); - }); - }; - - var scan = function() { + $scope.scan = function() { walletService.startScan($scope.wallet); - $scope.menu.hide(); $ionicHistory.clearHistory(); $state.go('tabs.home'); }; - var sendByEmail = function() { + $scope.sendByEmail = function() { function formatDate(ts) { var dateObj = new Date(ts * 1000); if (!dateObj) { diff --git a/src/js/controllers/advancedSettings.js b/src/js/controllers/advancedSettings.js index 4abb4c261..2baa43fae 100644 --- a/src/js/controllers/advancedSettings.js +++ b/src/js/controllers/advancedSettings.js @@ -29,50 +29,6 @@ angular.module('copayApp.controllers').controller('advancedSettingsController', }; }; - $scope.global = $rootScope; - if (!$scope.global.developmentUtilitiesEnabled) { - $scope.global.developmentUtilitiesEnabled = { - value: false - }; - } - - $scope.toggledDevelopmentUtils = function() { - if ($scope.global.developmentUtilitiesEnabled.value) { - $log.debug('User enabled development utilities.'); - $timeout(function() { - $ionicScrollDelegate.resize(); - }, 10); - } else { - $log.debug('User disabled development utilities.'); - } - } - - $scope.activateFeedbackCard = function() { - $scope.feedbackCardActivating = true; - storageService.getFeedbackInfo(function(error, info) { - var feedbackInfo = JSON.parse(info); - // hardcoding so we can distinguish from normal operation - feedbackInfo.time = 1231006505; // genesis block time - feedbackInfo.version = window.version; - feedbackInfo.sent = false; - storageService.setFeedbackInfo(JSON.stringify(feedbackInfo), function() { - $log.debug('Activated feedback card with: ' + JSON.stringify(feedbackInfo)); - $ionicHistory.clearCache(); - $timeout(function() { - $scope.feedbackCardActivating = false; - $scope.feedbackCardActivated = true; - $timeout(function() { - $scope.feedbackCardActivated = false; - }, 10000); - }, 500); - }); - }); - } - - $scope.resetActivateFeedbackCard = function() { - $scope.feedbackCardActivated = false; - } - $scope.spendUnconfirmedChange = function() { var opts = { wallet: { diff --git a/src/js/controllers/amazon.js b/src/js/controllers/amazon.js index 402f831de..df1c8b666 100644 --- a/src/js/controllers/amazon.js +++ b/src/js/controllers/amazon.js @@ -1,7 +1,7 @@ 'use strict'; angular.module('copayApp.controllers').controller('amazonController', - function($scope, $timeout, $ionicModal, $log, lodash, amazonService, platformInfo, externalLinkService, popupService, gettextCatalog) { + function($scope, $timeout, $ionicModal, $log, $ionicScrollDelegate, lodash, amazonService, platformInfo, externalLinkService, popupService, ongoingProcess) { $scope.network = amazonService.getEnvironment(); @@ -12,7 +12,7 @@ angular.module('copayApp.controllers').controller('amazonController', var initAmazon = function() { amazonService.getPendingGiftCards(function(err, gcds) { if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err); + popupService.showAlert('Error', err); return; } $scope.giftCards = lodash.isEmpty(gcds) ? null : gcds; @@ -24,7 +24,7 @@ angular.module('copayApp.controllers').controller('amazonController', claimCode: $scope.cardClaimCode }); if (lodash.isEmpty(card)) { - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Card not found')); + popupService.showAlert('Error', 'Card not found'); return; } $scope.openCardModal(card); @@ -34,18 +34,29 @@ angular.module('copayApp.controllers').controller('amazonController', }; $scope.updatePendingGiftCards = lodash.debounce(function() { - + ongoingProcess.set('updatingGiftCards', true); amazonService.getPendingGiftCards(function(err, gcds) { + if (lodash.isEmpty(gcds)) { + $timeout(function() { + ongoingProcess.set('updatingGiftCards', false); + }, 1000); + } $timeout(function() { - $scope.giftCards = gcds; + $scope.giftCards = lodash.isEmpty(gcds) ? null : gcds; $scope.$digest(); }); + var index = 0; lodash.forEach(gcds, function(dataFromStorage) { + if (++index == Object.keys(gcds).length) { + $timeout(function() { + ongoingProcess.set('updatingGiftCards', false); + }, 1000); + } if (dataFromStorage.status == 'PENDING') { $log.debug("creating gift card"); amazonService.createGiftCard(dataFromStorage, function(err, giftCard) { if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err); + popupService.showAlert('Error', err); return; } if (giftCard.status != 'PENDING') { @@ -65,13 +76,14 @@ angular.module('copayApp.controllers').controller('amazonController', $log.debug("Saving new gift card"); amazonService.getPendingGiftCards(function(err, gcds) { if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err); + popupService.showAlert('Error', err); return; } - $scope.giftCards = gcds; + $scope.giftCards = lodash.isEmpty(gcds) ? null : gcds; $timeout(function() { $scope.$digest(); - }); + $ionicScrollDelegate.resize(); + }, 10); }); }); } else $log.debug("pending gift card not available yet"); @@ -80,7 +92,9 @@ angular.module('copayApp.controllers').controller('amazonController', }); }); - }, 1000); + }, 1000, { + 'leading': true + }); $scope.openCardModal = function(card) { $scope.card = card; @@ -92,8 +106,8 @@ angular.module('copayApp.controllers').controller('amazonController', $scope.amazonCardDetailsModal.show(); }); - $scope.$on('UpdateAmazonList', function(event) { - initAmazon(); + $scope.$on('modal.hidden', function() { + $scope.updatePendingGiftCards(); }); }; diff --git a/src/js/controllers/amount.js b/src/js/controllers/amount.js index b273bc401..250d9eec5 100644 --- a/src/js/controllers/amount.js +++ b/src/js/controllers/amount.js @@ -1,13 +1,12 @@ 'use strict'; -angular.module('copayApp.controllers').controller('amountController', function($scope, $filter, $timeout, $ionicScrollDelegate, $ionicHistory, $ionicPopover, gettextCatalog, platformInfo, lodash, configService, rateService, $stateParams, $window, $state, $log, txFormatService, ongoingProcess, bitpayCardService, popupService, bwcError, payproService, profileService, bitcore, amazonService, glideraService) { +angular.module('copayApp.controllers').controller('amountController', function($scope, $filter, $timeout, $ionicScrollDelegate, $ionicHistory, gettextCatalog, platformInfo, lodash, configService, rateService, $stateParams, $window, $state, $log, txFormatService, ongoingProcess, bitpayCardService, popupService, bwcError, payproService, profileService, bitcore, amazonService, glideraService) { var unitToSatoshi; var satToUnit; var unitDecimals; var satToBtc; var SMALL_FONT_SIZE_LIMIT = 10; var LENGTH_EXPRESSION_LIMIT = 19; - var MENU_ITEM_HEIGHT = 55; $scope.$on('$ionicView.leave', function() { angular.element($window).off('keydown'); @@ -21,7 +20,7 @@ angular.module('copayApp.controllers').controller('amountController', function($ $scope.glideraAccessToken = data.stateParams.glideraAccessToken; $scope.cardId = data.stateParams.cardId; - $scope.showMenu = $ionicHistory.backView().stateName == 'tabs.send'; + $scope.showMenu = $ionicHistory.backView() && $ionicHistory.backView().stateName == 'tabs.send'; var isWallet = data.stateParams.isWallet || 'false'; $scope.isWallet = (isWallet.toString().trim().toLowerCase() == 'true' ? true : false); $scope.toAddress = data.stateParams.toAddress; @@ -29,6 +28,7 @@ angular.module('copayApp.controllers').controller('amountController', function($ $scope.toEmail = data.stateParams.toEmail; $scope.showAlternativeAmount = !!$scope.cardId || !!$scope.isGiftCard || !!$scope.isGlidera; $scope.toColor = data.stateParams.toColor; + $scope.showSendMax = false; $scope.customAmount = data.stateParams.customAmount; @@ -71,7 +71,7 @@ angular.module('copayApp.controllers').controller('amountController', function($ var config = configService.getSync().wallet.settings; $scope.unitName = config.unitName; - $scope.alternativeIsoCode = config.alternativeIsoCode; + $scope.alternativeIsoCode = !!$scope.cardId || !!$scope.isGiftCard ? 'USD' : config.alternativeIsoCode; $scope.specificAmount = $scope.specificAlternativeAmount = ''; $scope.isCordova = platformInfo.isCordova; unitToSatoshi = config.unitToSatoshi; @@ -93,25 +93,12 @@ angular.module('copayApp.controllers').controller('amountController', function($ }, 10); }); - $scope.showSendMaxMenu = function($event) { - var sendMaxObj = { - text: gettextCatalog.getString('Send max amount'), - action: setSendMax, - }; - - $scope.items = [sendMaxObj]; - $scope.height = $scope.items.length * MENU_ITEM_HEIGHT; - - $ionicPopover.fromTemplateUrl('views/includes/menu-popover.html', { - scope: $scope - }).then(function(popover) { - $scope.menu = popover; - $scope.menu.show($event); - }); + $scope.showSendMaxMenu = function() { + $scope.showSendMax = true; }; - function setSendMax() { - $scope.menu.hide(); + $scope.sendMax = function() { + $scope.showSendMax = false; $state.transitionTo('tabs.send.confirm', { isWallet: $scope.isWallet, toAmount: null, @@ -205,11 +192,11 @@ angular.module('copayApp.controllers').controller('amountController', function($ }; function fromFiat(val) { - return parseFloat((rateService.fromFiat(val, $scope.alternativeIsoCode) * satToUnit).toFixed(unitDecimals), 10); + return parseFloat((rateService.fromFiat(val, $scope.alternativeIsoCode) * satToUnit).toFixed(unitDecimals)); }; function toFiat(val) { - return parseFloat((rateService.toFiat(val * unitToSatoshi, $scope.alternativeIsoCode)).toFixed(2), 10); + return parseFloat((rateService.toFiat(val * unitToSatoshi, $scope.alternativeIsoCode)).toFixed(2)); }; function evaluate(val) { @@ -283,6 +270,7 @@ angular.module('copayApp.controllers').controller('amountController', function($ } var stateParams = { cardId: $scope.cardId, + cardAmountUSD: amountUSD, toName: $scope.toName, toAmount: payProDetails.amount, toAddress: payProDetails.toAddress, @@ -303,7 +291,7 @@ angular.module('copayApp.controllers').controller('amountController', function($ try { uuid = profileService.getWallets({ onlyComplete: true, - network: 'livenet', + network: amazonService.getEnvironment(), })[0].id; } catch (err) { ongoingProcess.set('Preparing transaction...', false); diff --git a/src/js/controllers/confirm.js b/src/js/controllers/confirm.js index f7365ec65..f6264828a 100644 --- a/src/js/controllers/confirm.js +++ b/src/js/controllers/confirm.js @@ -31,6 +31,7 @@ angular.module('copayApp.controllers').controller('confirmController', function( var isWallet = data.stateParams.isWallet || 'false'; $scope.isWallet = (isWallet.toString().trim().toLowerCase() == 'true' ? true : false); $scope.cardId = data.stateParams.cardId; + $scope.cardAmountUSD = data.stateParams.cardAmountUSD; $scope.toAddress = data.stateParams.toAddress; $scope.toName = data.stateParams.toName; $scope.toEmail = data.stateParams.toEmail; @@ -62,9 +63,8 @@ angular.module('copayApp.controllers').controller('confirmController', function( if (!$scope.wallets || !$scope.wallets.length) { $scope.noMatchingWallet = true; - if ($scope.paypro) { - displayValues(); - } + displayValues(); + $log.warn('No ' + $scope.network + ' wallets to make the payment'); $timeout(function() { $scope.$apply(); }); @@ -106,6 +106,7 @@ angular.module('copayApp.controllers').controller('confirmController', function( } else initConfirm(); } else { if (!enoughFunds) $scope.insufficientFunds = true; + displayValues(); $log.warn('No wallet available to make the payment'); } $timeout(function() { @@ -132,9 +133,15 @@ angular.module('copayApp.controllers').controller('confirmController', function( $scope.amountStr = txFormatService.formatAmountStr(toAmount); $scope.displayAmount = getDisplayAmount($scope.amountStr); $scope.displayUnit = getDisplayUnit($scope.amountStr); - txFormatService.formatAlternativeStr(toAmount, function(v) { - $scope.alternativeAmountStr = v; - }); + if ($scope.cardAmountUSD) { + $scope.alternativeAmountStr = $filter('formatFiatAmount')($scope.cardAmountUSD) + ' USD'; + } else if ($scope.giftCardAmountUSD) { + $scope.alternativeAmountStr = $filter('formatFiatAmount')($scope.giftCardAmountUSD) + ' USD'; + } else { + txFormatService.formatAlternativeStr(toAmount, function(v) { + $scope.alternativeAmountStr = v; + }); + } if ($scope.isGlidera == 'buy') $scope.getBuyPrice(); if ($scope.isGlidera == 'sell') $scope.getSellPrice(); }; @@ -428,6 +435,10 @@ angular.module('copayApp.controllers').controller('confirmController', function( }); }; + $scope.cancel = function() { + $scope.payproModal.hide(); + }; + $scope.approve = function(onSendStatusChange) { var wallet = $scope.wallet; @@ -783,6 +794,7 @@ angular.module('copayApp.controllers').controller('confirmController', function( invoiceUrl: $scope.paypro.url, invoiceTime: giftCardInvoiceTime }; + ongoingProcess.set('creatingGiftCard', true); debounceCreate(count, dataSrc, onSendStatusChange); } }, onSendStatusChange); @@ -795,7 +807,6 @@ angular.module('copayApp.controllers').controller('confirmController', function( }); var debounceCreateGiftCard = function(count, dataSrc, onSendStatusChange) { - amazonService.createGiftCard(dataSrc, function(err, giftCard) { $log.debug("creating gift card " + count); if (err) { @@ -830,6 +841,7 @@ angular.module('copayApp.controllers').controller('confirmController', function( } amazonService.savePendingGiftCard(newData, null, function(err) { + ongoingProcess.set('creatingGiftCard', false); $log.debug("Saving new gift card with status: " + newData.status); $scope.amazonGiftCard = newData; }); diff --git a/src/js/controllers/copayers.js b/src/js/controllers/copayers.js index cc4a97c69..ab8e5e47a 100644 --- a/src/js/controllers/copayers.js +++ b/src/js/controllers/copayers.js @@ -1,10 +1,10 @@ 'use strict'; angular.module('copayApp.controllers').controller('copayersController', - function($scope, $log, $timeout, $stateParams, $state, $rootScope, $ionicHistory, $window, lodash, profileService, walletService, popupService, platformInfo, gettextCatalog, ongoingProcess) { + function($scope, $log, $timeout, $stateParams, $state, $rootScope, $ionicHistory, appConfigService, lodash, profileService, walletService, popupService, platformInfo, gettextCatalog, ongoingProcess) { - var appName = $window.appConfig.userVisibleName; - var appUrl = $window.appConfig.url; + var appName = appConfigService.userVisibleName; + var appUrl = appConfigService.url; $scope.isCordova = platformInfo.isCordova; $scope.$on("$ionicView.beforeEnter", function(event, data) { diff --git a/src/js/controllers/create.js b/src/js/controllers/create.js index ed567bf0d..a8f96c27b 100644 --- a/src/js/controllers/create.js +++ b/src/js/controllers/create.js @@ -1,7 +1,7 @@ 'use strict'; angular.module('copayApp.controllers').controller('createController', - function($scope, $rootScope, $timeout, $log, lodash, $state, $ionicScrollDelegate, $ionicHistory, profileService, configService, gettextCatalog, ledger, trezor, platformInfo, derivationPathHelper, ongoingProcess, walletService, storageService, popupService, $window) { + function($scope, $rootScope, $timeout, $log, lodash, $state, $ionicScrollDelegate, $ionicHistory, profileService, configService, gettextCatalog, ledger, trezor, platformInfo, derivationPathHelper, ongoingProcess, walletService, storageService, popupService, appConfigService) { var isChromeApp = platformInfo.isChromeApp; var isCordova = platformInfo.isCordova; @@ -80,7 +80,7 @@ angular.module('copayApp.controllers').controller('createController', */ - if ($window.appConfig.name == 'copay') { + if (appConfigService.name == 'copay') { if (n > 1 && isChromeApp) { seedOptions.push({ id: 'ledger', diff --git a/src/js/controllers/customAmount.js b/src/js/controllers/customAmount.js index ea3e56ceb..b3c17137f 100644 --- a/src/js/controllers/customAmount.js +++ b/src/js/controllers/customAmount.js @@ -18,8 +18,7 @@ angular.module('copayApp.controllers').controller('customAmountController', func $scope.finish = function() { $ionicHistory.nextViewOptions({ - disableAnimate: false, - historyRoot: true + disableAnimate: false }); $ionicHistory.goBack(-2); }; diff --git a/src/js/controllers/export.js b/src/js/controllers/export.js index bec190995..2203d2df7 100644 --- a/src/js/controllers/export.js +++ b/src/js/controllers/export.js @@ -1,7 +1,7 @@ 'use strict'; angular.module('copayApp.controllers').controller('exportController', - function($scope, $timeout, $log, $ionicHistory, $ionicScrollDelegate, backupService, walletService, storageService, profileService, platformInfo, gettextCatalog, $state, $stateParams, popupService, $window) { + function($scope, $timeout, $log, $ionicHistory, $ionicScrollDelegate, backupService, walletService, storageService, profileService, platformInfo, gettextCatalog, $state, $stateParams, popupService, appConfigService) { var wallet = profileService.getWallet($stateParams.walletId); $scope.showAdvChange = function() { @@ -191,7 +191,7 @@ angular.module('copayApp.controllers').controller('exportController', if ($scope.formData.noSignEnabled) name = name + '(No Private Key)'; - var subject = $window.appConfig.nameCase + ' Wallet Backup: ' + name; + var subject = appConfigService.nameCase + ' Wallet Backup: ' + name; var body = 'Here is the encrypted backup of the wallet ' + name + ': \n\n' + ew + '\n\n To import this backup, copy all text between {...}, including the symbols {}'; window.plugins.socialsharing.shareViaEmail( body, diff --git a/src/js/controllers/feedback/send.js b/src/js/controllers/feedback/send.js index aef8df948..1ad539a94 100644 --- a/src/js/controllers/feedback/send.js +++ b/src/js/controllers/feedback/send.js @@ -1,6 +1,6 @@ 'use strict'; -angular.module('copayApp.controllers').controller('sendController', function($scope, $state, $log, $timeout, $stateParams, $ionicNavBarDelegate, $ionicHistory, $ionicConfig, $window, gettextCatalog, popupService, configService, lodash, feedbackService, ongoingProcess) { +angular.module('copayApp.controllers').controller('sendController', function($scope, $state, $log, $timeout, $stateParams, $ionicNavBarDelegate, $ionicHistory, $ionicConfig, $window, gettextCatalog, popupService, configService, lodash, feedbackService, ongoingProcess, platformInfo) { $scope.sendFeedback = function(feedback, goHome) { @@ -42,6 +42,7 @@ angular.module('copayApp.controllers').controller('sendController', function($sc }; $scope.$on("$ionicView.beforeEnter", function(event, data) { + $scope.isCordova = platformInfo.isCordova; $scope.score = (data.stateParams && data.stateParams.score) ? parseInt(data.stateParams.score) : null; $scope.feedback = {}; diff --git a/src/js/controllers/headController.js b/src/js/controllers/headController.js index a33c2d8be..d65318799 100644 --- a/src/js/controllers/headController.js +++ b/src/js/controllers/headController.js @@ -1,7 +1,6 @@ 'use strict'; -angular.module('copayApp.controllers').controller('headController', - function($scope, $window, $log) { - $scope.appConfig = $window.appConfig; - $log.info('Running head controller:' + $window.appConfig.nameCase) - }); +angular.module('copayApp.controllers').controller('headController', function($scope, appConfigService, $log) { + $scope.appConfig = appConfigService; + $log.info('Running head controller:' + appConfigService.nameCase) +}); diff --git a/src/js/controllers/import.js b/src/js/controllers/import.js index 9c8ae8873..df1aaf62d 100644 --- a/src/js/controllers/import.js +++ b/src/js/controllers/import.js @@ -1,7 +1,7 @@ 'use strict'; angular.module('copayApp.controllers').controller('importController', - function($scope, $timeout, $log, $state, $stateParams, $ionicHistory, $ionicScrollDelegate, profileService, configService, sjcl, ledger, trezor, derivationPathHelper, platformInfo, bwcService, ongoingProcess, walletService, popupService, gettextCatalog, $window) { + function($scope, $timeout, $log, $state, $stateParams, $ionicHistory, $ionicScrollDelegate, profileService, configService, sjcl, ledger, trezor, derivationPathHelper, platformInfo, bwcService, ongoingProcess, walletService, popupService, gettextCatalog, appConfigService) { var isChromeApp = platformInfo.isChromeApp; var isDevel = platformInfo.isDevel; @@ -17,7 +17,7 @@ angular.module('copayApp.controllers').controller('importController', $scope.formData.derivationPath = derivationPathHelper.default; $scope.formData.account = 1; $scope.importErr = false; - $scope.showHardwareWallet = $window.appConfig.name == 'copay'; + $scope.showHardwareWallet = appConfigService.name == 'copay'; if ($stateParams.code) $scope.processWalletInfo($stateParams.code); @@ -238,6 +238,7 @@ angular.module('copayApp.controllers').controller('importController', if (!words) { popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Please enter the recovery phrase')); + return; } else if (words.indexOf('xprv') == 0 || words.indexOf('tprv') == 0) { return _importExtendedPrivateKey(words, opts); } else if (words.indexOf('xpub') == 0 || words.indexOf('tpuv') == 0) { diff --git a/src/js/controllers/join.js b/src/js/controllers/join.js index 8dbf6cffb..bbeebf63a 100644 --- a/src/js/controllers/join.js +++ b/src/js/controllers/join.js @@ -1,7 +1,7 @@ 'use strict'; angular.module('copayApp.controllers').controller('joinController', - function($scope, $rootScope, $timeout, $state, $ionicHistory, $ionicScrollDelegate, profileService, configService, storageService, applicationService, gettextCatalog, lodash, ledger, trezor, platformInfo, derivationPathHelper, ongoingProcess, walletService, $log, $stateParams, popupService, $window) { + function($scope, $rootScope, $timeout, $state, $ionicHistory, $ionicScrollDelegate, profileService, configService, storageService, applicationService, gettextCatalog, lodash, ledger, trezor, platformInfo, derivationPathHelper, ongoingProcess, walletService, $log, $stateParams, popupService, appConfigService) { var isChromeApp = platformInfo.isChromeApp; var isDevel = platformInfo.isDevel; @@ -33,7 +33,7 @@ angular.module('copayApp.controllers').controller('joinController', } }; - this.onQrCodeScanned = function(data) { + this.onQrCodeScannedJoin = function(data) { $scope.secret = data; if ($scope.joinForm) { $scope.joinForm.secret.$setViewValue(data); @@ -44,7 +44,7 @@ angular.module('copayApp.controllers').controller('joinController', if ($stateParams.url) { var data = $stateParams.url; data = data.replace('copay:', ''); - this.onQrCodeScanned(data); + this.onQrCodeScannedJoin(data); } var updateSeedSourceSelect = function() { @@ -63,7 +63,7 @@ angular.module('copayApp.controllers').controller('joinController', */ - if ($window.appConfig.name == 'copay') { + if (appConfigService.name == 'copay') { if (isChromeApp) { self.seedOptions.push({ id: 'ledger', diff --git a/src/js/controllers/modals/amazonCardDetails.js b/src/js/controllers/modals/amazonCardDetails.js index b567c99b1..af3778fd3 100644 --- a/src/js/controllers/modals/amazonCardDetails.js +++ b/src/js/controllers/modals/amazonCardDetails.js @@ -1,18 +1,22 @@ 'use strict'; -angular.module('copayApp.controllers').controller('amazonCardDetailsController', function($scope, $log, $timeout, bwcError, amazonService, lodash, ongoingProcess, popupService, gettextCatalog, externalLinkService) { +angular.module('copayApp.controllers').controller('amazonCardDetailsController', function($scope, $log, $timeout, $ionicScrollDelegate, bwcError, amazonService, lodash, ongoingProcess, popupService, externalLinkService) { $scope.cancelGiftCard = function() { - ongoingProcess.set('Canceling gift card...', true); + ongoingProcess.set('cancelingGiftCard', true); amazonService.cancelGiftCard($scope.card, function(err, data) { - ongoingProcess.set('Canceling gift card...', false); + ongoingProcess.set('cancelingGiftCard', false); if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), bwcError.msg(err)); + popupService.showAlert('Error', bwcError.msg(err)); return; } $scope.card.cardStatus = data.cardStatus; + $timeout(function() { + $ionicScrollDelegate.resize(); + $ionicScrollDelegate.scrollTop(); + }, 10); amazonService.savePendingGiftCard($scope.card, null, function(err) { - $scope.$emit('UpdateAmazonList'); + $scope.refreshGiftCard(); }); }); }; @@ -21,23 +25,34 @@ angular.module('copayApp.controllers').controller('amazonCardDetailsController', amazonService.savePendingGiftCard($scope.card, { remove: true }, function(err) { - $scope.$emit('UpdateAmazonList'); $scope.cancel(); }); }; $scope.refreshGiftCard = function() { + ongoingProcess.set('updatingGiftCard', true); amazonService.getPendingGiftCards(function(err, gcds) { + if (lodash.isEmpty(gcds)) { + $timeout(function() { + ongoingProcess.set('updatingGiftCard', false); + }, 1000); + } if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err); + popupService.showAlert('Error', err); return; } + var index = 0; lodash.forEach(gcds, function(dataFromStorage) { + if (++index == Object.keys(gcds).length) { + $timeout(function() { + ongoingProcess.set('updatingGiftCard', false); + }, 1000); + } if (dataFromStorage.status == 'PENDING' && dataFromStorage.invoiceId == $scope.card.invoiceId) { $log.debug("creating gift card"); amazonService.createGiftCard(dataFromStorage, function(err, giftCard) { if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), bwcError.msg(err)); + popupService.showAlert('Error', bwcError.msg(err)); return; } if (!lodash.isEmpty(giftCard)) { @@ -46,7 +61,6 @@ angular.module('copayApp.controllers').controller('amazonCardDetailsController', amazonService.savePendingGiftCard(newData, null, function(err) { $log.debug("Saving new gift card"); $scope.card = newData; - $scope.$emit('UpdateAmazonList'); $timeout(function() { $scope.$digest(); }); diff --git a/src/js/controllers/modals/paypro.js b/src/js/controllers/modals/paypro.js deleted file mode 100644 index 752a6e55e..000000000 --- a/src/js/controllers/modals/paypro.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('payproController', function($scope) { - var self = $scope.self; - - $scope.cancel = function() { - $scope.payproModal.hide(); - }; -}); diff --git a/src/js/controllers/onboarding/backupRequest.js b/src/js/controllers/onboarding/backupRequest.js index 3da3d65db..ca2de91df 100644 --- a/src/js/controllers/onboarding/backupRequest.js +++ b/src/js/controllers/onboarding/backupRequest.js @@ -7,15 +7,15 @@ angular.module('copayApp.controllers').controller('backupRequestController', fun $scope.openPopup = function() { - var title = gettextCatalog.getString('Without a backup, you could lose money.'); + var title = gettextCatalog.getString('Watch out!'); var message = gettextCatalog.getString('If this device is replaced or this app is deleted, neither you nor BitPay can recover your funds without a backup.'); var okText = gettextCatalog.getString('I understand'); var cancelText = gettextCatalog.getString('Go back'); popupService.showConfirm(title, message, okText, cancelText, function(val) { if (val) { - var title = gettextCatalog.getString('Are you sure you want to skip the backup?'); + var title = gettextCatalog.getString('Are you sure you want to skip it?'); var message = gettextCatalog.getString('You can create a backup later from your wallet settings.'); - var okText = gettextCatalog.getString('Yes, skip backup'); + var okText = gettextCatalog.getString('Yes, skip'); var cancelText = gettextCatalog.getString('Go back'); popupService.showConfirm(title, message, okText, cancelText, function(val) { if (val) { diff --git a/src/js/controllers/onboarding/disclaimer.js b/src/js/controllers/onboarding/disclaimer.js index 7609b64f5..1f428d356 100644 --- a/src/js/controllers/onboarding/disclaimer.js +++ b/src/js/controllers/onboarding/disclaimer.js @@ -5,7 +5,8 @@ angular.module('copayApp.controllers').controller('disclaimerController', functi $scope.$on("$ionicView.afterEnter", function() { startupService.ready(); }); - $scope.init = function() { + + $scope.$on("$ionicView.beforeEnter", function() { $scope.lang = uxLanguage.currentLanguage; $scope.terms = {}; $scope.accepted = {}; @@ -13,10 +14,7 @@ angular.module('copayApp.controllers').controller('disclaimerController', functi $scope.backedUp = $stateParams.backedUp; $scope.resume = $stateParams.resume; $scope.shrinkView = false; - $timeout(function() { - $scope.$apply(); - }, 1); - }; + }); $scope.confirm = function() { profileService.setDisclaimerAccepted(function(err) { diff --git a/src/js/controllers/onboarding/terms.js b/src/js/controllers/onboarding/terms.js index 7cab71203..3a7c2adf5 100644 --- a/src/js/controllers/onboarding/terms.js +++ b/src/js/controllers/onboarding/terms.js @@ -1,6 +1,6 @@ 'use strict'; -angular.module('copayApp.controllers').controller('termsController', function($scope, $log, $state, $window, uxLanguage, profileService, externalLinkService, gettextCatalog) { +angular.module('copayApp.controllers').controller('termsController', function($scope, $log, $state, appConfigService, uxLanguage, profileService, externalLinkService, gettextCatalog) { $scope.lang = uxLanguage.currentLanguage; $scope.confirm = function() { @@ -15,10 +15,10 @@ angular.module('copayApp.controllers').controller('termsController', function($s }; $scope.openExternalLink = function() { - var url = $window.appConfig.disclaimerUrl; + var url = appConfigService.disclaimerUrl; var optIn = true; var title = gettextCatalog.getString('View Terms of Service'); - var message = gettextCatalog.getString('The official English Terms of Service are available on the BitPay website. Would you like to view them?'); + var message = gettextCatalog.getString('The official English Terms of Service are available on the BitPay website.'); var okText = gettextCatalog.getString('Open Website'); var cancelText = gettextCatalog.getString('Go Back'); externalLinkService.open(url, optIn, title, message, okText, cancelText); diff --git a/src/js/controllers/onboarding/welcomeController.js b/src/js/controllers/onboarding/welcomeController.js index 1a7e3a6a6..0c76a18b6 100644 --- a/src/js/controllers/onboarding/welcomeController.js +++ b/src/js/controllers/onboarding/welcomeController.js @@ -8,13 +8,6 @@ angular.module('copayApp.controllers').controller('welcomeController', function( startupService.ready(); }); - $scope.goImport = function(code) { - $state.go('onboarding.import', { - fromOnboarding: true, - code: code - }); - }; - $scope.createProfile = function() { $log.debug('Creating profile'); profileService.createProfile(function(err) { diff --git a/src/js/controllers/preferencesAbout.js b/src/js/controllers/preferencesAbout.js index 4b71e5c7e..91a49a0d4 100644 --- a/src/js/controllers/preferencesAbout.js +++ b/src/js/controllers/preferencesAbout.js @@ -1,14 +1,14 @@ 'use strict'; angular.module('copayApp.controllers').controller('preferencesAbout', - function($scope, $window, gettextCatalog, externalLinkService) { + function($scope, $window, appConfigService, gettextCatalog, externalLinkService) { - $scope.title = gettextCatalog.getString('About') + ' ' + $window.appConfig.nameCase; + $scope.title = gettextCatalog.getString('About') + ' ' + appConfigService.nameCase; $scope.version = $window.version; $scope.commitHash = $window.commitHash; $scope.openExternalLink = function() { - var url = 'https://github.com/bitpay/' + $window.appConfig.gitHubRepoName + '/tree/' + $window.commitHash + ''; + var url = 'https://github.com/bitpay/' + appConfigService.gitHubRepoName + '/tree/' + $window.commitHash + ''; var optIn = true; var title = gettextCatalog.getString('Open GitHub Project'); var message = gettextCatalog.getString('You can see the latest developments and contribute to this open source app by visiting our project on GitHub.'); diff --git a/src/js/controllers/preferencesBwsUrl.js b/src/js/controllers/preferencesBwsUrl.js index 638219ae4..45752ee01 100644 --- a/src/js/controllers/preferencesBwsUrl.js +++ b/src/js/controllers/preferencesBwsUrl.js @@ -1,14 +1,14 @@ 'use strict'; angular.module('copayApp.controllers').controller('preferencesBwsUrlController', - function($scope, $log, $stateParams, configService, applicationService, profileService, storageService, $window) { + function($scope, $log, $stateParams, configService, applicationService, profileService, storageService, appConfigService) { $scope.success = null; var wallet = profileService.getWallet($stateParams.walletId); var walletId = wallet.credentials.walletId; var defaults = configService.getDefaults(); var config = configService.getSync(); - $scope.appName = $window.appConfig.nameCase; + $scope.appName = appConfigService.nameCase; $scope.bwsurl = { value: (config.bwsFor && config.bwsFor[walletId]) || defaults.bws.url }; diff --git a/src/js/controllers/preferencesHistory.js b/src/js/controllers/preferencesHistory.js index 06167fb4f..32f4375cc 100644 --- a/src/js/controllers/preferencesHistory.js +++ b/src/js/controllers/preferencesHistory.js @@ -1,11 +1,11 @@ 'use strict'; angular.module('copayApp.controllers').controller('preferencesHistory', - function($scope, $log, $stateParams, $timeout, $state, $ionicHistory, storageService, platformInfo, profileService, lodash, $window) { + function($scope, $log, $stateParams, $timeout, $state, $ionicHistory, storageService, platformInfo, profileService, lodash, appConfigService) { $scope.wallet = profileService.getWallet($stateParams.walletId); $scope.csvReady = false; $scope.isCordova = platformInfo.isCordova; - $scope.appName = $window.appConfig.nameCase; + $scope.appName = appConfigService.nameCase; $scope.csvHistory = function(cb) { var allTxs = []; diff --git a/src/js/controllers/preferencesNotifications.js b/src/js/controllers/preferencesNotifications.js index f273bc403..219ad82cd 100644 --- a/src/js/controllers/preferencesNotifications.js +++ b/src/js/controllers/preferencesNotifications.js @@ -1,9 +1,9 @@ 'use strict'; -angular.module('copayApp.controllers').controller('preferencesNotificationsController', function($scope, $log, $timeout, $window, lodash, configService, platformInfo, pushNotificationsService, profileService, emailService) { +angular.module('copayApp.controllers').controller('preferencesNotificationsController', function($scope, $log, $timeout, appConfigService, lodash, configService, platformInfo, pushNotificationsService, profileService, emailService) { var updateConfig = function() { var config = configService.getSync(); - $scope.appName = $window.appConfig.nameCase; + $scope.appName = appConfigService.nameCase; $scope.PNEnabledByUser = true; $scope.usePushNotifications = platformInfo.isCordova && !platformInfo.isWP; $scope.isIOSApp = platformInfo.isIOS && platformInfo.isCordova; diff --git a/src/js/controllers/tab-home.js b/src/js/controllers/tab-home.js index 5a13ca031..aac2df9bf 100644 --- a/src/js/controllers/tab-home.js +++ b/src/js/controllers/tab-home.js @@ -1,14 +1,14 @@ 'use strict'; angular.module('copayApp.controllers').controller('tabHomeController', - function($rootScope, $timeout, $scope, $state, $stateParams, $ionicModal, $ionicScrollDelegate, gettextCatalog, lodash, popupService, ongoingProcess, externalLinkService, latestReleaseService, profileService, walletService, configService, $log, platformInfo, storageService, txpModalService, $window, bitpayCardService, startupService, addressbookService, feedbackService) { + function($rootScope, $timeout, $scope, $state, $stateParams, $ionicModal, $ionicScrollDelegate, $window, gettextCatalog, lodash, popupService, ongoingProcess, externalLinkService, latestReleaseService, profileService, walletService, configService, $log, platformInfo, storageService, txpModalService, appConfigService, bitpayCardService, startupService, addressbookService, feedbackService) { var wallet; var listeners = []; var notifications = []; $scope.externalServices = {}; $scope.openTxpModal = txpModalService.open; $scope.version = $window.version; - $scope.name = $window.appConfig.nameCase; + $scope.name = appConfigService.nameCase; $scope.homeTip = $stateParams.fromOnboarding; $scope.isCordova = platformInfo.isCordova; $scope.isAndroid = platformInfo.isAndroid; @@ -43,7 +43,7 @@ angular.module('copayApp.controllers').controller('tabHomeController', } else { var feedbackInfo = JSON.parse(info); //Check if current version is greater than saved version - var currentVersion = window.version; + var currentVersion = $scope.version; var savedVersion = feedbackInfo.version; var isVersionUpdated = feedbackService.isVersionUpdated(currentVersion, savedVersion); if (!isVersionUpdated) { @@ -62,7 +62,7 @@ angular.module('copayApp.controllers').controller('tabHomeController', function initFeedBackInfo() { var feedbackInfo = {}; feedbackInfo.time = moment().unix(); - feedbackInfo.version = window.version; + feedbackInfo.version = $scope.version; feedbackInfo.sent = false; storageService.setFeedbackInfo(JSON.stringify(feedbackInfo), function() { $scope.showRateCard.value = false; diff --git a/src/js/controllers/tab-receive.js b/src/js/controllers/tab-receive.js index 3aeb9d577..a7eb191cb 100644 --- a/src/js/controllers/tab-receive.js +++ b/src/js/controllers/tab-receive.js @@ -3,7 +3,6 @@ angular.module('copayApp.controllers').controller('tabReceiveController', function($rootScope, $scope, $timeout, $log, $ionicModal, $state, $ionicHistory, $ionicPopover, storageService, platformInfo, walletService, profileService, configService, lodash, gettextCatalog, popupService, bwcError) { var listeners = []; - var MENU_ITEM_HEIGHT = 55; $scope.isCordova = platformInfo.isCordova; $scope.isNW = platformInfo.isNW; $scope.walletAddrs = {}; @@ -50,8 +49,9 @@ angular.module('copayApp.controllers').controller('tabReceiveController', functi }; $scope.showAddresses = function() { - $state.transitionTo('tabs.receive.addresses', { - walletId: $scope.wallet.credentials.walletId + $state.go('tabs.receive.addresses', { + walletId: $scope.wallet.credentials.walletId, + toAddress: $scope.addr }); }; @@ -140,31 +140,6 @@ angular.module('copayApp.controllers').controller('tabReceiveController', functi }); }; - var goRequestAmount = function() { - $scope.menu.hide(); - $state.go('tabs.receive.amount', { - customAmount: true, - toAddress: $scope.addr - }); - } - - $scope.showMenu = function(allAddresses, $event) { - var requestAmountObj = { - text: gettextCatalog.getString('Request Specific amount'), - action: goRequestAmount, - }; - - $scope.items = [requestAmountObj]; - $scope.height = $scope.items.length * MENU_ITEM_HEIGHT; - - $ionicPopover.fromTemplateUrl('views/includes/menu-popover.html', { - scope: $scope - }).then(function(popover) { - $scope.menu = popover; - $scope.menu.show($event); - }); - }; - $scope.$on("$ionicView.beforeEnter", function(event, data) { $scope.wallets = profileService.getWallets(); diff --git a/src/js/controllers/tab-send.js b/src/js/controllers/tab-send.js index 7c1ac8fc9..57b24e97b 100644 --- a/src/js/controllers/tab-send.js +++ b/src/js/controllers/tab-send.js @@ -133,13 +133,9 @@ angular.module('copayApp.controllers').controller('tabSendController', function( lodash.each(wallets, function(w) { walletService.getStatus(w, {}, function(err, status) { ++index; - if (index == wallets.length) $scope.checkingBalance = false; - if (err || !status) { + if (err && !status) { $log.error(err); - return; - } - - if (status.availableBalanceSat > 0) { + } else if (status.availableBalanceSat > 0) { $scope.hasFunds = true; $rootScope.everHasFunds = true; } @@ -148,6 +144,7 @@ angular.module('copayApp.controllers').controller('tabSendController', function( if ($scope.hasFunds != true) { $ionicScrollDelegate.freezeScroll(true); } + $scope.checkingBalance = false; $timeout(function() { $scope.$apply(); }); diff --git a/src/js/controllers/tab-settings.js b/src/js/controllers/tab-settings.js index e59dc12d9..d90570d8b 100644 --- a/src/js/controllers/tab-settings.js +++ b/src/js/controllers/tab-settings.js @@ -1,6 +1,6 @@ 'use strict'; -angular.module('copayApp.controllers').controller('tabSettingsController', function($scope, $window, $ionicModal, $log, lodash, uxLanguage, platformInfo, profileService, feeService, configService, externalLinkService, bitpayCardService, storageService, glideraService, gettextCatalog) { +angular.module('copayApp.controllers').controller('tabSettingsController', function($scope, appConfigService, $ionicModal, $log, lodash, uxLanguage, platformInfo, profileService, feeService, configService, externalLinkService, bitpayCardService, storageService, glideraService, gettextCatalog) { var updateConfig = function() { var isCordova = platformInfo.isCordova; @@ -10,13 +10,13 @@ angular.module('copayApp.controllers').controller('tabSettingsController', funct $scope.usePushNotifications = isCordova && !isWP; $scope.isCordova = isCordova; - $scope.appName = $window.appConfig.nameCase; + $scope.appName = appConfigService.nameCase; $scope.currentLanguageName = uxLanguage.getCurrentLanguageName(); $scope.feeOpts = feeService.feeOpts; $scope.currentFeeLevel = feeService.getCurrentFeeLevel(); - + $scope.wallets = profileService.getWallets(); - + configService.whenAvailable(function(config) { $scope.unitName = config.wallet.settings.unitName; $scope.selectedAlternative = { @@ -33,7 +33,7 @@ angular.module('copayApp.controllers').controller('tabSettingsController', funct if (!lodash.isEmpty(data)) { $scope.bitpayCards = true; } - }); + }); } if ($scope.glideraEnabled) { @@ -50,7 +50,7 @@ angular.module('copayApp.controllers').controller('tabSettingsController', funct var url = 'https://help.bitpay.com/bitpay-app'; var optIn = true; var title = gettextCatalog.getString('BitPay Help Center'); - var message = gettextCatalog.getString('Help and support information is available at the BitPay Help Center website. Would you like to go there now?'); + var message = gettextCatalog.getString('Help and support information is available at the BitPay Help Center website.'); var okText = gettextCatalog.getString('Open Help Center'); var cancelText = gettextCatalog.getString('Go Back'); externalLinkService.open(url, optIn, title, message, okText, cancelText); diff --git a/src/js/controllers/termOfUse.js b/src/js/controllers/termOfUse.js index 6bbc2bdf4..ddf17cd99 100644 --- a/src/js/controllers/termOfUse.js +++ b/src/js/controllers/termOfUse.js @@ -1,9 +1,9 @@ 'use strict'; angular.module('copayApp.controllers').controller('termOfUseController', - function($scope, $window, uxLanguage, externalLinkService) { + function($scope, appConfigService, uxLanguage, externalLinkService) { $scope.lang = uxLanguage.currentLanguage; - $scope.disclaimerUrl = $window.appConfig.disclaimerUrl; + $scope.disclaimerUrl = appConfigService.disclaimerUrl; $scope.openExternalLink = function(url, target) { externalLinkService.open(url, target); diff --git a/src/js/controllers/tx-details.js b/src/js/controllers/tx-details.js index f3ba54f00..109ff279f 100644 --- a/src/js/controllers/tx-details.js +++ b/src/js/controllers/tx-details.js @@ -122,8 +122,8 @@ angular.module('copayApp.controllers').controller('txDetailsController', functio var btx = $scope.btx; var url = 'https://' + ($scope.getShortNetworkName() == 'test' ? 'test-' : '') + 'insight.bitpay.com/tx/' + btx.txid; var optIn = true; - var title = gettextCatalog.getString('View Transaction on Insight'); - var message = gettextCatalog.getString('Would you like to view this transaction on the Insight blockchain explorer?'); + var title = null; + var message = gettextCatalog.getString('View Transaction on Insight'); var okText = gettextCatalog.getString('Open Insight'); var cancelText = gettextCatalog.getString('Go Back'); externalLinkService.open(url, optIn, title, message, okText, cancelText); diff --git a/src/js/directives/clickToAccept.js b/src/js/directives/clickToAccept.js index 63257e235..2127075dd 100644 --- a/src/js/directives/clickToAccept.js +++ b/src/js/directives/clickToAccept.js @@ -8,7 +8,9 @@ angular.module('copayApp.directives') transclude: true, scope: { sendStatus: '=clickSendStatus', - wallet: '=hasWalletChosen' + hasWalletChosen: '=hasWalletChosen', + insufficientFunds: '=insufficientFunds', + noMatchingWallet: '=noMatchingWallet' }, link: function(scope, element, attrs) { scope.$watch('sendStatus', function() { diff --git a/src/js/directives/itemSelector.js b/src/js/directives/itemSelector.js new file mode 100644 index 000000000..0d99c4c66 --- /dev/null +++ b/src/js/directives/itemSelector.js @@ -0,0 +1,25 @@ +'use strict'; + +angular.module('copayApp.directives') + .directive('itemSelector', function($timeout) { + return { + restrict: 'E', + templateUrl: 'views/includes/itemSelector.html', + transclude: true, + scope: { + show: '=itemSelectorShow', + onSelect: '=itemSelectorOnSelect' + }, + link: function(scope, element, attrs) { + scope.hide = function() { + scope.show = false; + }; + scope.sendMax = function() { + $timeout(function() { + scope.hide(); + }, 100); + scope.onSelect(); + }; + } + }; + }); diff --git a/src/js/routes.js b/src/js/routes.js index 278d24646..ba1c14fec 100644 --- a/src/js/routes.js +++ b/src/js/routes.js @@ -614,7 +614,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr */ .state('tabs.receive.addresses', { - url: '/addresses/:walletId', + url: '/addresses/:walletId/:toAddress', views: { 'tab-receive@tabs': { controller: 'addressesController', @@ -1031,7 +1031,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr } }) .state('tabs.bitpayCard.confirm', { - url: '/confirm/:cardId/:toAddress/:toName/:toAmount/:toEmail/:description', + url: '/confirm/:cardId/:cardAmountUSD/:toAddress/:toName/:toAmount/:toEmail/:description', views: { 'tab-home@tabs': { controller: 'confirmController', @@ -1052,7 +1052,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr } }); }) - .run(function($rootScope, $state, $location, $log, $timeout, $ionicHistory, $ionicPlatform, $window, lodash, platformInfo, profileService, uxLanguage, gettextCatalog, openURLService, storageService, scannerService) { + .run(function($rootScope, $state, $location, $log, $timeout, $ionicHistory, $ionicPlatform, $window, appConfigService, lodash, platformInfo, profileService, uxLanguage, gettextCatalog, openURLService, storageService, scannerService) { uxLanguage.init(); @@ -1171,7 +1171,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr type: "menubar" }); try { - nativeMenuBar.createMacBuiltin($window.appConfig.nameCase); + nativeMenuBar.createMacBuiltin(appConfigService.nameCase); } catch (e) { $log.debug('This is not OSX'); } diff --git a/src/js/services/appConfigService.js b/src/js/services/appConfigService.js new file mode 100644 index 000000000..d5b34c64c --- /dev/null +++ b/src/js/services/appConfigService.js @@ -0,0 +1,5 @@ +'use strict'; + +angular.module('copayApp.services').factory('appConfigService', function($window) { + return $window.appConfig; +}); diff --git a/src/js/services/backupService.js b/src/js/services/backupService.js index 165aa4a2e..2b558511a 100644 --- a/src/js/services/backupService.js +++ b/src/js/services/backupService.js @@ -1,6 +1,6 @@ 'use strict'; angular.module('copayApp.services') - .factory('backupService', function backupServiceFactory($log, $timeout, $stateParams, profileService, sjcl, $window) { + .factory('backupService', function backupServiceFactory($log, $timeout, $stateParams, profileService, sjcl, appConfigService) { var root = {}; @@ -80,7 +80,7 @@ angular.module('copayApp.services') var walletName = (wallet.alias || '') + (wallet.alias ? '-' : '') + wallet.credentials.walletName; if (opts.noSign) walletName = walletName + '-noSign' - var filename = walletName + '-' + $window.appConfig.nameCase + 'backup.aes.json'; + var filename = walletName + '-' + appConfigService.nameCase + 'backup.aes.json'; _download(ew, filename, cb) }; return root; diff --git a/src/js/services/incomingData.js b/src/js/services/incomingData.js index 1d40a3032..4b7d4ea34 100644 --- a/src/js/services/incomingData.js +++ b/src/js/services/incomingData.js @@ -1,6 +1,6 @@ 'use strict'; -angular.module('copayApp.services').factory('incomingData', function($log, $state, $window, $timeout, bitcore, $rootScope, payproService, scannerService) { +angular.module('copayApp.services').factory('incomingData', function($log, $state, $timeout, bitcore, $rootScope, payproService, scannerService, appConfigService) { var root = {}; @@ -121,17 +121,17 @@ angular.module('copayApp.services').factory('incomingData', function($log, $stat } else { goToAmountPage(data); } - } else if (data && data.indexOf($window.appConfig.name + '://glidera') === 0) { + } else if (data && data.indexOf(appConfigService.name + '://glidera') === 0) { return $state.go('uriglidera', { url: data }); - } else if (data && data.indexOf($window.appConfig.name + '://coinbase') === 0) { + } else if (data && data.indexOf(appConfigService.name + '://coinbase') === 0) { return $state.go('uricoinbase', { url: data }); - // BitPay Authentication - } else if (data && data.indexOf($window.appConfig.name + '://') === 0) { + // BitPayCard Authentication + } else if (data && data.indexOf(appConfigService.name + '://') === 0) { var secret = getParameterByName('secret', data); var email = getParameterByName('email', data); var otp = getParameterByName('otp', data); diff --git a/src/js/services/logHeader.js b/src/js/services/logHeader.js index bbf3da903..f8ba63d81 100644 --- a/src/js/services/logHeader.js +++ b/src/js/services/logHeader.js @@ -1,7 +1,7 @@ 'use strict'; angular.module('copayApp.services') - .factory('logHeader', function($window, $log, platformInfo) { - $log.info($window.appConfig.nameCase + ' v' + window.version + ' #' + window.commitHash); - $log.info('Client: '+ JSON.stringify(platformInfo) ); + .factory('logHeader', function($window, appConfigService, $log, platformInfo) { + $log.info(appConfigService.nameCase + ' v' + $window.version + ' #' + $window.commitHash); + $log.info('Client: ' + JSON.stringify(platformInfo)); return {}; }); diff --git a/src/js/services/onGoingProcess.js b/src/js/services/onGoingProcess.js index b543430ab..5319f9cf5 100644 --- a/src/js/services/onGoingProcess.js +++ b/src/js/services/onGoingProcess.js @@ -39,7 +39,11 @@ angular.module('copayApp.services').factory('ongoingProcess', function($log, $ti 'sendingByEmail': gettext('Preparing addresses...'), 'sending2faCode': gettext('Sending 2FA code...'), 'buyingBitcoin': gettext('Buying Bitcoin...'), - 'sellingBitcoin': gettext('Selling Bitcoin...') + 'sellingBitcoin': gettext('Selling Bitcoin...'), + 'updatingGiftCards': 'Updating Gift Cards...', + 'updatingGiftCard': 'Updating Gift Card...', + 'cancelingGiftCard': 'Canceling Gift Card...', + 'creatingGiftCard': 'Creating Gift Card...' }; root.clear = function() { diff --git a/src/js/services/profileService.js b/src/js/services/profileService.js index e4bef4483..d5de455b6 100644 --- a/src/js/services/profileService.js +++ b/src/js/services/profileService.js @@ -712,7 +712,7 @@ angular.module('copayApp.services') var opts = {}; opts.m = 1; opts.n = 1; - opts.network = 'livenet'; + opts.networkName = 'livenet'; root.createWallet(opts, cb); }; diff --git a/src/js/services/txFormatService.js b/src/js/services/txFormatService.js index e0a2f9bff..edf2d4315 100644 --- a/src/js/services/txFormatService.js +++ b/src/js/services/txFormatService.js @@ -1,6 +1,6 @@ 'use strict'; -angular.module('copayApp.services').factory('txFormatService', function(bwcService, rateService, configService, lodash) { +angular.module('copayApp.services').factory('txFormatService', function($filter, bwcService, rateService, configService, lodash) { var root = {}; root.Utils = bwcService.getUtils(); @@ -48,10 +48,11 @@ angular.module('copayApp.services').factory('txFormatService', function(bwcServi var config = configService.getSync().wallet.settings; var val = function() { - var v1 = rateService.toFiat(satoshis, config.alternativeIsoCode); + var v1 = parseFloat((rateService.toFiat(satoshis, config.alternativeIsoCode)).toFixed(2)); + v1 = $filter('formatFiatAmount')(v1); if (!v1) return null; - return v1.toFixed(2) + ' ' + config.alternativeIsoCode; + return v1 + ' ' + config.alternativeIsoCode; }; // Async version diff --git a/src/js/services/walletService.js b/src/js/services/walletService.js index 4546dc4af..b12f94ce8 100644 --- a/src/js/services/walletService.js +++ b/src/js/services/walletService.js @@ -12,23 +12,6 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim var errors = bwcService.getErrors(); - // UI Related - root.openStatusModal = function(type, txp, cb) { - var scope = $rootScope.$new(true); - scope.type = type; - scope.tx = txFormatService.processTx(txp); - scope.color = txp.color; - scope.cb = cb; - - $ionicModal.fromTemplateUrl('views/modals/tx-status.html', { - scope: scope, - animation: 'slide-in-up' - }).then(function(modal) { - scope.txStatusModal = modal; - scope.txStatusModal.show(); - }); - }; - var _signWithLedger = function(wallet, txp, cb) { $log.info('Requesting Ledger Chrome app to sign the transaction'); @@ -961,23 +944,10 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim if (err) return cb(bwcError.msg(err)); $rootScope.$emit('Local/TxAction', wallet.id); - var type = root.getViewStatus(wallet, broadcastedTxp); - - if (!customStatusHandler) { - root.openStatusModal(type, broadcastedTxp, function() {}); - } - return cb(null, broadcastedTxp); }); } else { $rootScope.$emit('Local/TxAction', wallet.id); - - var type = root.getViewStatus(wallet, signedTxp); - - if (!customStatusHandler) { - root.openStatusModal(type, signedTxp, function() {}); - } - return cb(null, signedTxp); } }); @@ -1053,38 +1023,6 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim } catch (e) {} } - root.getViewStatus = function(wallet, txp) { - var status = txp.status; - var type; - var INMEDIATE_SECS = 10; - - if (status == 'broadcasted') { - type = 'broadcasted'; - } else { - - var n = txp.actions.length; - var action = lodash.find(txp.actions, { - copayerId: wallet.credentials.copayerId - }); - - if (!action) { - type = 'created'; - } else if (action.type == 'accept') { - // created and accepted at the same time? - if (n == 1 && action.createdOn - txp.createdOn < INMEDIATE_SECS) { - type = 'created'; - } else { - type = 'accepted'; - } - } else if (action.type == 'reject') { - type = 'rejected'; - } else { - throw new Error('Unknown type:' + type); - } - } - return type; - }; - root.getSendMaxInfo = function(wallet, opts, cb) { opts = opts || {}; wallet.getSendMaxInfo(opts, function(err, res) { diff --git a/src/sass/ionic.scss b/src/sass/ionic.scss index 7a5597fb7..b637730f8 100644 --- a/src/sass/ionic.scss +++ b/src/sass/ionic.scss @@ -12,6 +12,8 @@ ion-tabs.ion-tabs-transparent { background: none transparent; } +ion-nav-bar.hide { display: block !important; } + // .placeholder-icon padding cannot be modified by a variable $placeholder-icon-padding: 10px; .placeholder-icon { diff --git a/src/sass/shame.scss b/src/sass/shame.scss index 4100069e0..397f0795f 100644 --- a/src/sass/shame.scss +++ b/src/sass/shame.scss @@ -165,7 +165,7 @@ input[type=number] { .input-notification { float: right; - margin-right: 10px; + margin-right: 25px; } .pr { diff --git a/src/sass/views/address-book.scss b/src/sass/views/address-book.scss index 96fefb608..e03c8456b 100644 --- a/src/sass/views/address-book.scss +++ b/src/sass/views/address-book.scss @@ -14,9 +14,43 @@ padding: 0 10px; font-size: 24px; cursor: pointer; + line-height: 155px; } - .qr-icon { - line-height: 45px; + .icon { + &.valid { + padding-top: 3px; + color: #13E5B6; + } + &.invalid { + padding-top: 3px; + color: #DF2121; + } + } + .add-address-input-group { + background-color: #fff; + .item-stacked-label { + padding: 1rem; + } + .input-label { + text-transform: uppercase; + font-size: 12px; + font-weight: bold; + } + } + .add-address-list { + .item { + color: $dark-gray; + padding-top: 1.3rem; + padding-bottom: 1.3rem; + &.item-divider { + color: $mid-gray; + padding-bottom: .5rem; + font-size: .9rem; + } + } + .item-note { + color: $light-gray; + } } } #view-address-book { diff --git a/src/sass/views/addresses.scss b/src/sass/views/addresses.scss index 5401945f7..f8bb4ced6 100644 --- a/src/sass/views/addresses.scss +++ b/src/sass/views/addresses.scss @@ -47,7 +47,6 @@ font-size: .9rem; } &.view-all { - margin: 20px 0px 20px 0px; cursor: pointer; cursor: hand; i { diff --git a/src/sass/views/confirm.scss b/src/sass/views/confirm.scss index 2372290ce..0f5288a41 100644 --- a/src/sass/views/confirm.scss +++ b/src/sass/views/confirm.scss @@ -1,4 +1,5 @@ #view-confirm { + background-color: #ffffff; @extend .deflash-blue; .icon-amazon { background-image: url("../img/icon-amazon.svg"); diff --git a/src/sass/views/includes/itemSelector.scss b/src/sass/views/includes/itemSelector.scss new file mode 100644 index 000000000..e059907a4 --- /dev/null +++ b/src/sass/views/includes/itemSelector.scss @@ -0,0 +1,61 @@ +item-selector { + + $border-color: #EFEFEF; + + .bp-action-sheet__sheet { + padding-left: 2rem; + padding-right: .75rem; + } + + .item-selector { + .option { + border: 0; + padding-right: 0; + padding-top: 0; + padding-bottom: 0; + margin-bottom: 1px; + overflow: visible; + + > i { + color: #647ce8; + padding: 0 0 5px 0; + margin-left: -5px; + + > img { + height: 39px; + width: 39px; + padding: 4px; + } + } + } + .item-selector-inner { + display: flex; + position: relative; + padding-top: 16px; + padding-bottom: 16px; + + &::after { + display: block; + position: absolute; + width: 100%; + height: 1px; + background: $border-color; + bottom: 0; + right: 0; + content: ''; + } + + .check { + padding: 0 1.2rem; + } + } + .item-selector-details { + flex-grow: 1; + + .item-selector-name { + padding-bottom: 5px; + } + } + } + +} diff --git a/src/sass/views/join.scss b/src/sass/views/join.scss index 601fff97c..15d368f9d 100644 --- a/src/sass/views/join.scss +++ b/src/sass/views/join.scss @@ -8,8 +8,20 @@ padding: 0 10px; font-size: 24px; cursor: pointer; - } - .qr-icon { line-height: 45px; } + .item-stacked-label .icon { + padding: 0px; + margin: 0px; + } + .icon { + &.valid { + padding-top: 3px; + color: #13E5B6; + } + &.invalid { + padding-top: 3px; + color: #DF2121; + } + } } diff --git a/src/sass/views/onboarding/onboard-disclaimer.scss b/src/sass/views/onboarding/onboard-disclaimer.scss index 70ceca8e3..25c824386 100644 --- a/src/sass/views/onboarding/onboard-disclaimer.scss +++ b/src/sass/views/onboarding/onboard-disclaimer.scss @@ -62,7 +62,7 @@ } .checkbox input:before, .checkbox .checkbox-icon:before { - padding: 1.1rem; + padding: 1.2rem; position: relative; background:url("../img/onboarding-checkbox-unchecked.svg") top center no-repeat; } diff --git a/src/sass/views/tab-receive.scss b/src/sass/views/tab-receive.scss index 084baed3b..14be6295e 100644 --- a/src/sass/views/tab-receive.scss +++ b/src/sass/views/tab-receive.scss @@ -117,6 +117,7 @@ transform: translate(-150%, -40%); } .item { + white-space: nowrap; padding-top: 5px; padding-bottom: 5px; font-size: .7rem; diff --git a/src/sass/views/views.scss b/src/sass/views/views.scss index 8e241aba7..351a93298 100644 --- a/src/sass/views/views.scss +++ b/src/sass/views/views.scss @@ -39,6 +39,7 @@ @import "includes/tx-details"; @import "includes/txp-details"; @import "includes/tx-status"; +@import "includes/itemSelector"; @import "includes/walletSelector"; @import "integrations/coinbase"; @import "integrations/glidera"; diff --git a/www/views/addressbook.add.html b/www/views/addressbook.add.html index 088fbf47d..8c78f5ab2 100644 --- a/www/views/addressbook.add.html +++ b/www/views/addressbook.add.html @@ -16,8 +16,8 @@
-
-
diff --git a/www/views/addressbook.html b/www/views/addressbook.html index 0442c5ea6..ba2f63c10 100644 --- a/www/views/addressbook.html +++ b/www/views/addressbook.html @@ -17,7 +17,7 @@
No contacts yet
-
You haven’t added any contacts to your address book yet. Get started by adding your first one.
+
Get started by adding your first one.
diff --git a/www/views/addresses.html b/www/views/addresses.html index b7c9a4c90..07596d3fa 100644 --- a/www/views/addresses.html +++ b/www/views/addresses.html @@ -3,11 +3,6 @@ {{'Wallet Addresses' | translate}} - - - @@ -26,11 +21,22 @@
- It's a good idea to avoid reusing addresses-this both protects your privacy and keeps your bitcoins secure against hypothetical attacks by quantum computers. Hide + It's a good idea to avoid reusing addresses - this both protects your privacy and keeps your bitcoins secure against hypothetical attacks by quantum computers. Hide
+
+ Request Specific amount + +
+
+ View All Addresses + +
+
+ Scan addresses for funds +
Unused Addresses @@ -61,11 +67,6 @@
{{w.balanceStr}}
- -
- View All Addresses - -
diff --git a/www/views/advancedSettings.html b/www/views/advancedSettings.html index bf16c767f..f6ee8f328 100644 --- a/www/views/advancedSettings.html +++ b/www/views/advancedSettings.html @@ -67,31 +67,6 @@ If enabled, the Frequently Used card - a list of the most commonly chosen recipients - will appear in the Send tab. --> -
-
Development Utilities
-
-
- These utilities may be unstable. Proceed at your own risk. -
-
- -
- Feedback Card - - - -
-
- The feedback card is displayed on the Home tab at certain times. You can activate it immediately here. -
-
- diff --git a/www/views/allAddresses.html b/www/views/allAddresses.html index 8ece9164d..8f7a1f345 100644 --- a/www/views/allAddresses.html +++ b/www/views/allAddresses.html @@ -3,17 +3,20 @@ {{'All Addresses' | translate}} - - -
+
+
+ Send addresses by email +
+ +
+
+
{{a.address}}
diff --git a/www/views/amount.html b/www/views/amount.html index 0af2b12e5..d535cb079 100644 --- a/www/views/amount.html +++ b/www/views/amount.html @@ -6,7 +6,7 @@ - @@ -120,4 +120,8 @@
+ + diff --git a/www/views/backupWarning.html b/www/views/backupWarning.html index 0f426c151..67848cca0 100644 --- a/www/views/backupWarning.html +++ b/www/views/backupWarning.html @@ -12,7 +12,7 @@
Anyone with your backup phrase can access or spend your bitcoin.
- +
diff --git a/www/views/confirm.html b/www/views/confirm.html index a3cef657d..8ad43e6f2 100644 --- a/www/views/confirm.html +++ b/www/views/confirm.html @@ -60,12 +60,18 @@ From To From -
-
diff --git a/www/views/includes/alert.html b/www/views/includes/alert.html deleted file mode 100644 index 2da1e9b3a..000000000 --- a/www/views/includes/alert.html +++ /dev/null @@ -1,9 +0,0 @@ -
diff --git a/www/views/includes/backupLaterPopup.html b/www/views/includes/backupLaterPopup.html deleted file mode 100644 index 31fd8f14b..000000000 --- a/www/views/includes/backupLaterPopup.html +++ /dev/null @@ -1,10 +0,0 @@ -
-

Without a backup, you could lose money

- If something happens to this device, this app is deleted, or your password forgotten, neither you nor Bitpay can recover your funds. - - -
diff --git a/www/views/includes/backupNeededPopup.html b/www/views/includes/backupNeededPopup.html index 5f5fc9528..7884ffc24 100644 --- a/www/views/includes/backupNeededPopup.html +++ b/www/views/includes/backupNeededPopup.html @@ -7,7 +7,7 @@ - +
diff --git a/www/views/includes/backupWarningPopup.html b/www/views/includes/backupWarningPopup.html deleted file mode 100644 index df7c0bcd9..000000000 --- a/www/views/includes/backupWarningPopup.html +++ /dev/null @@ -1,7 +0,0 @@ -
-

Screenshots are not secure

- if you take a screenshot, your backup may be viewed by others apps. You can make a safe backup with paper and a pen. - -
diff --git a/www/views/includes/clickToAccept.html b/www/views/includes/clickToAccept.html index ab24cfbd5..06807ce14 100644 --- a/www/views/includes/clickToAccept.html +++ b/www/views/includes/clickToAccept.html @@ -1,4 +1,4 @@ - - - -
- -
- - -

- - Your wallet key will be encrypted. The Spending Password cannot be recovered. Be sure to write it down - - {{error|translate}} -

diff --git a/www/views/join.html b/www/views/join.html index a62496124..da4651de2 100644 --- a/www/views/join.html +++ b/www/views/join.html @@ -25,10 +25,8 @@
- +
@@ -91,14 +89,14 @@
- - - - -
- Payment request -
+

Payment request

- -
- {{amountStr}} -
-
-
- Details +
+
+
{{displayAmount || '...'}} {{displayUnit}}
+
{{alternativeAmountStr || '...'}}
+
-
- {{'Pay To'|translate}} - {{paypro.domain}} -
-
- {{'Address'|translate}} - {{paypro.toAddress}} -
-
- {{'Certified by'|translate}} - - - - {{paypro.caName}}
- (Trusted) +
+
+ {{'Pay To'|translate}} + + {{paypro.domain}} - - - Self-signed Certificate +
+
+ {{'Address'|translate}} + + {{paypro.toAddress}} + +
+
+ {{'Certified by'|translate}} + + + + {{paypro.caName}} {{'(Trusted)' | translate}} - - {{paypro.caName}}
- WARNING: UNTRUSTED CERTIFICATE + + + Self-signed Certificate + + + {{paypro.caName}}
+ WARNING: UNTRUSTED CERTIFICATE +
- -
-
- {{'Memo'|translate}} - {{paypro.memo}} -
-
- {{'Expires'|translate}} - {{paypro.expires * 1000 | amTimeAgo }} +
+
+ {{'Memo'|translate}} + + {{paypro.memo}} + +
+
+ {{'Expires'|translate}} + + {{paypro.expires * 1000 | amTimeAgo }} + +
diff --git a/www/views/onboarding/backupRequest.html b/www/views/onboarding/backupRequest.html index fc4125ad3..a5da8f414 100644 --- a/www/views/onboarding/backupRequest.html +++ b/www/views/onboarding/backupRequest.html @@ -9,7 +9,7 @@
Your wallet is never saved to cloud storage or standard device backups.
- +
diff --git a/www/views/onboarding/disclaimer.html b/www/views/onboarding/disclaimer.html index f728ccd9e..8e29232a4 100644 --- a/www/views/onboarding/disclaimer.html +++ b/www/views/onboarding/disclaimer.html @@ -1,5 +1,5 @@ - + diff --git a/www/views/onboarding/welcome.html b/www/views/onboarding/welcome.html index 4d335f31a..98364bdac 100644 --- a/www/views/onboarding/welcome.html +++ b/www/views/onboarding/welcome.html @@ -1,6 +1,5 @@ -

Take control of your money,
get started with bitcoin.

diff --git a/www/views/paperWallet.html b/www/views/paperWallet.html index 139645165..ee9393ba7 100644 --- a/www/views/paperWallet.html +++ b/www/views/paperWallet.html @@ -31,7 +31,7 @@ slide-success-show="sendStatus === 'success'" slide-success-on-confirm="onSuccessConfirm()" slide-success-hide-on-confirm="true"> - Founds transferred + Funds transferred diff --git a/www/views/preferencesBwsUrl.html b/www/views/preferencesBwsUrl.html index 397472245..bb9928073 100644 --- a/www/views/preferencesBwsUrl.html +++ b/www/views/preferencesBwsUrl.html @@ -17,8 +17,7 @@
- {{appName}} depends on Bitcore Wallet Service (BWS) for blockchain information, networking and Copayer synchronization. - The default configuration points to https://bws.bitpay.com (BitPay's public BWS instance). + {{appName}} depends on Bitcore Wallet Service (BWS) for blockchain information, networking and Copayer synchronization. The default configuration points to https://bws.bitpay.com (BitPay's public BWS instance).
diff --git a/www/views/tab-home.html b/www/views/tab-home.html index 2cb7387dd..a0b17d7e6 100644 --- a/www/views/tab-home.html +++ b/www/views/tab-home.html @@ -63,7 +63,7 @@ - Create a bitcoin wallet + Create bitcoin wallet {{'Receive' | translate}} - - -
diff --git a/www/views/tx-details.html b/www/views/tx-details.html index 2016c75ad..7709ec4bb 100644 --- a/www/views/tx-details.html +++ b/www/views/tx-details.html @@ -1,4 +1,4 @@ - + {{title}} diff --git a/www/views/walletDetails.html b/www/views/walletDetails.html index 2a1b22670..4ec6c5d3b 100644 --- a/www/views/walletDetails.html +++ b/www/views/walletDetails.html @@ -140,7 +140,7 @@
-
+
[Balance Hidden]
Tap and hold to show @@ -273,7 +273,7 @@