diff --git a/Gruntfile.js b/Gruntfile.js deleted file mode 100644 index 049f8696e..000000000 --- a/Gruntfile.js +++ /dev/null @@ -1,283 +0,0 @@ -'use strict'; - -module.exports = function(grunt) { - - require('load-grunt-tasks')(grunt); - - // Project Configuration - grunt.initConfig({ - pkg: grunt.file.readJSON('package.json'), - exec: { - appConfig: { - command: 'node ./util/buildAppConfig.js' - }, - externalServices: { - command: 'node ./util/buildExternalServices.js' - }, - clean: { - command: 'rm -Rf bower_components node_modules' - }, - cordovaclean: { - command: 'make -C cordova clean' - }, - macos: { - command: 'sh webkitbuilds/build-macos.sh sign' - }, - coveralls: { - command: 'cat coverage/report-lcov/lcov.info |./node_modules/coveralls/bin/coveralls.js' - }, - chrome: { - command: 'make -C chrome-app ' - }, - wpinit: { - command: 'make -C cordova wp-init', - }, - wpcopy: { - command: 'make -C cordova wp-copy', - }, - iosdebug: { - command: 'npm run build:ios', - }, - ios: { - command: 'npm run build:ios-release', - }, - xcode: { - command: 'npm run open:ios', - }, - androiddebug: { - command: 'npm run build:android', - }, - android: { - command: 'npm run build:android-release', - }, - androidrun: { - command: 'npm run run:android && npm run log:android', - }, - androidbuild: { - command: 'cd cordova/project && cordova build android --release', - }, - androidsign: { - command: 'rm -f cordova/project/platforms/android/build/outputs/apk/android-release-signed-aligned.apk; jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ../copay.keystore -signedjar cordova/project/platforms/android/build/outputs/apk/android-release-signed.apk cordova/project/platforms/android/build/outputs/apk/android-release-unsigned.apk copay_play && ../android-sdk-macosx/build-tools/21.1.1/zipalign -v 4 cordova/project/platforms/android/build/outputs/apk/android-release-signed.apk cordova/project/platforms/android/build/outputs/apk/android-release-signed-aligned.apk ', - 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 %>.exe.sig --detach-sig webkitbuilds/<%= pkg.title %>.exe' - }, - desktopverify: { - cmd: 'gpg --verify webkitbuilds/<%= pkg.title %>-linux.zip.sig webkitbuilds/<%= pkg.title %>-linux.zip; gpg --verify webkitbuilds/<%= pkg.title %>.exe.sig webkitbuilds/<%= pkg.title %>.exe' - }, - osxsign: { - cmd: 'gpg -u 1112CFA1 --output webkitbuilds/<%= pkg.title %>.dmg.sig --detach-sig webkitbuilds/<%= pkg.title %>.dmg' - }, - }, - watch: { - options: { - dateFormat: function(time) { - grunt.log.writeln('The watch finished in ' + time + 'ms at ' + (new Date()).toString()); - grunt.log.writeln('Waiting for more changes...'); - }, - }, - sass: { - files: ['src/sass/**/**/*.scss'], - tasks: ['sass'] - }, - main: { - files: [ - 'src/js/init.js', - 'src/js/app.js', - 'src/js/directives/*.js', - 'src/js/filters/*.js', - 'src/js/routes.js', - 'src/js/services/*.js', - 'src/js/models/*.js', - 'src/js/controllers/**/*.js' - ], - tasks: ['concat:js'] - }, - gettext: { - files: [ - 'i18n/po/*.po', - 'i18n/po/*.pot' - ], - tasks: ['nggettext_compile','concat'] - }, - }, - sass: { - dist: { - options: { - style: 'compact', - sourcemap: 'none' - }, - files: [{ - expand: true, - flatten: true, - src: ['src/sass/main.scss'], - dest: 'www/css/', - ext: '.css' - }] - } - }, - concat: { - options: { - sourceMap: false, - sourceMapStyle: 'link' // embed, link, inline - }, - 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', - 'bower_components/angular-qrcode/angular-qrcode.js', - 'bower_components/angular-gettext/dist/angular-gettext.js', - 'bower_components/ng-csv/build/ng-csv.js', - 'bower_components/ionic-toast/dist/ionic-toast.bundle.min.js', - 'bower_components/angular-clipboard/angular-clipboard.js', - 'bower_components/angular-md5/angular-md5.js', - 'bower_components/angular-mocks/angular-mocks.js', - 'bower_components/ngtouch/src/ngTouch.js', - 'angular-bitauth/angular-bitauth.js', - 'angular-bitcore-wallet-client/angular-bitcore-wallet-client.js' - ], - dest: 'www/lib/angular-components.js' - }, - js: { - src: [ - 'src/js/app.js', - 'src/js/routes.js', - 'src/js/directives/*.js', - 'src/js/filters/*.js', - 'src/js/models/*.js', - 'src/js/services/*.js', - 'src/js/controllers/**/*.js', - 'src/js/translations.js', - 'src/js/appConfig.js', - 'src/js/externalServices.js', - 'src/js/init.js', - 'src/js/trezor-url.js', - 'bower_components/trezor-connect/connect.js', - 'node_modules/bezier-easing/dist/bezier-easing.min.js', - 'node_modules/cordova-plugin-qrscanner/dist/cordova-plugin-qrscanner-lib.min.js' - ], - dest: 'www/js/app.js' - } - }, - uglify: { - options: { - mangle: false - }, - prod: { - files: { - 'www/js/app.js': ['www/js/app.js'], - 'www/lib/angular-components.js': ['www/lib/angular-components.js'] - } - } - }, - nggettext_extract: { - pot: { - files: { - 'i18n/po/template.pot': [ - 'www/index.html', - 'www/views/**/*.html', - 'src/js/routes.js', - 'src/js/services/*.js', - 'src/js/controllers/**/*.js' - ] - } - }, - }, - nggettext_compile: { - all: { - options: { - module: 'copayApp' - }, - files: { - 'src/js/translations.js': ['i18n/po/*.po'] - } - }, - }, - copy: { - ionic_fonts: { - expand: true, - flatten: true, - src: 'bower_components/ionic/release/fonts/ionicons.*', - dest: 'www/fonts/' - }, - ionic_js: { - expand: true, - flatten: true, - src: 'bower_components/ionic/release/js/ionic.bundle.min.js', - dest: 'www/lib/' - }, - linux: { - files: [{ - expand: true, - cwd: 'webkitbuilds/', - src: ['.desktop', '../www/img/app/favicon.ico', '../resources/<%= pkg.name %>/linux/512x512.png'], - dest: 'webkitbuilds/<%= pkg.title %>/linux64/', - flatten: true, - filter: 'isFile' - }], - } - }, - nwjs: { - options: { - appName: '<%= pkg.title %>', - platforms: ['win64', 'osx64', 'linux64'], - buildDir: './webkitbuilds', - version: '0.19.5', - macIcns: './resources/<%= pkg.name %>/mac/app.icns', - exeIco: './www/img/app/logo.ico', - macPlist: { - 'CFBundleURLTypes': [ - { - 'CFBundleURLName': 'URI Handler', - 'CFBundleURLSchemes': ['bitcoin', '<%= pkg.name %>'] - } - ] - } - }, - src: ['./package.json', './www/**/*'] - }, - compress: { - linux: { - options: { - archive: './webkitbuilds/<%= pkg.title %>-linux.zip' - }, - expand: true, - cwd: './webkitbuilds/<%= pkg.title %>/linux64/', - src: ['**/*'], - dest: '<%= pkg.title %>-linux/' - } - }, - browserify: { - dist: { - files: { - 'angular-bitcore-wallet-client/angular-bitcore-wallet-client.js': ['angular-bitcore-wallet-client/index.js'], - 'angular-bitauth/angular-bitauth.js': ['angular-bitauth/index.js'] - }, - } - } - }); - - grunt.registerTask('default', ['nggettext_compile', 'exec:appConfig', 'exec:externalServices', 'browserify', 'sass', 'concat', 'copy:ionic_fonts', 'copy:ionic_js']); - grunt.registerTask('prod', ['default', 'uglify']); - grunt.registerTask('translate', ['nggettext_extract']); - grunt.registerTask('desktop', ['prod', 'nwjs', 'copy:linux', 'compress:linux']); - grunt.registerTask('osx', ['prod', 'nwjs', 'exec:macos', 'exec:osxsign']); - grunt.registerTask('osx-debug', ['default', 'nwjs']); - grunt.registerTask('chrome', ['exec:chrome']); - grunt.registerTask('wp', ['prod', 'exec:wp']); - grunt.registerTask('wp-copy', ['default', 'exec:wpcopy']); - grunt.registerTask('wp-init', ['default', 'exec:wpinit']); - grunt.registerTask('ios', ['exec:ios']); - grunt.registerTask('ios-debug', ['exec:iosdebug']); - grunt.registerTask('ios-run', ['exec:xcode']); - grunt.registerTask('cordovaclean', ['exec:cordovaclean']); - grunt.registerTask('android-debug', ['exec:androiddebug', 'exec:androidrun']); - grunt.registerTask('android', ['exec:android']); - grunt.registerTask('android-release', ['prod', 'exec:android', 'exec:androidsign']); - grunt.registerTask('desktopsign', ['exec:desktopsign', 'exec:desktopverify']); - -}; diff --git a/angular-bitauth/index.js b/angular-bitauth/index.js deleted file mode 100644 index cb6ebaa2e..000000000 --- a/angular-bitauth/index.js +++ /dev/null @@ -1,18 +0,0 @@ -var bitauthModule = angular.module('bitauthModule', []); -var bitauth = require('../node_modules/bitauth'); - -bitauthModule.constant('MODULE_VERSION', '1.0.0'); - -bitauthModule.provider("bitauthService", function() { - var provider = {}; - - provider.$get = function() { - var service = {}; - - service = bitauth; - - return service; - }; - - return provider; -}); diff --git a/angular-bitcore-wallet-client/index.js b/angular-bitcore-wallet-client/index.js deleted file mode 100644 index 0765b6df0..000000000 --- a/angular-bitcore-wallet-client/index.js +++ /dev/null @@ -1,50 +0,0 @@ -var bwcModule = angular.module('bwcModule', []); -var Client = require('../node_modules/bitcore-wallet-client'); - -bwcModule.constant('MODULE_VERSION', '1.0.0'); - -bwcModule.provider("bwcService", function() { - var provider = {}; - - provider.$get = function() { - var service = {}; - - service.getBitcore = function() { - return Client.Bitcore; - }; - - service.getErrors = function() { - return Client.errors; - }; - - service.getSJCL = function() { - return Client.sjcl; - }; - - service.buildTx = Client.buildTx; - service.parseSecret = Client.parseSecret; - service.Client = Client; - - service.getUtils = function() { - return Client.Utils; - }; - - service.getClient = function(walletData, opts) { - opts = opts || {}; - - //note opts use `bwsurl` all lowercase; - var bwc = new Client({ - baseUrl: opts.bwsurl || 'https://bws.bitpay.com/bws/api', - verbose: opts.verbose, - timeout: 100000, - transports: ['polling'], - }); - if (walletData) - bwc.import(walletData, opts); - return bwc; - }; - return service; - }; - - return provider; -}); diff --git a/app-template/.desktop b/app-template/.desktop deleted file mode 100644 index ea5bb0424..000000000 --- a/app-template/.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Type=Application -Version=*VERSION* -Name=*USERVISIBLENAME* -Comment=*PURPOSELINE* -Exec=*PACKAGENAME* -Icon=icon-256.png -Terminal=false -Categories=Finance -X-Ubuntu-Touch=true -X-Ubuntu-StageHint=SideStage diff --git a/app-template/apply.js b/app-template/apply.js deleted file mode 100755 index 1aaee94de..000000000 --- a/app-template/apply.js +++ /dev/null @@ -1,115 +0,0 @@ -#!/usr/bin/env node - -'use strict'; - -// - -var templates = { - 'package-template.json': '/', - 'index.html': 'www/', - 'config-template.xml': '/', - 'ionic.config.json': '/', - '.desktop': 'webkitbuilds/', - 'setup-win.iss': 'webkitbuilds/', - 'build-macos.sh': 'webkitbuilds/', - 'manifest.json': 'chrome-app/', - // 'bower.json': '/', -}; -var configDir = process.argv[2] || 'copay'; -var JSONheader = ' { ' + "\n" + ' "//":"Changes to this file will be overwritten",' + "\n" + ' "//":" Modify it in the app-template directory", ' + "\n"; - -var MakefileHeader = "# PLEASE! Do not edit this file directly \n# Modify it at app-template/\n"; - -var fs = require('fs-extra'); -var path = require('path'); - -var configBlob = fs.readFileSync(configDir + '/appConfig.json', 'utf8'); -var config = JSON.parse(configBlob, 'utf8'); - -///////////////// -console.log('Applying ' + config.nameCase + ' template'); - -Object.keys(templates).forEach(function(k) { - var targetDir = templates[k]; - console.log(' # ' + k + ' => ' + targetDir); - - var content = fs.readFileSync(k, 'utf8'); - - - if (k.indexOf('.json') > 0) { - content = content.replace('{', JSONheader); - - } else if (k.indexOf('Makefile') >= 0) { - content = MakefileHeader + content; - } - - - Object.keys(config).forEach(function(k) { - if (k.indexOf('_') == 0) return; - - var r = new RegExp("\\*" + k.toUpperCase() + "\\*", "g"); - content = content.replace(r, config[k]); - }); - - var r = new RegExp("\\*[A-Z]{3,30}\\*", "g"); - var s = content.match(r); - if (s) { - console.log('UNKNOWN VARIABLE', s); - process.exit(1); - } - - if (k === 'config-template.xml') { - k = 'config.xml'; - } else if (k === 'package-template.json') { - k = 'package.json'; - } - - if (!fs.existsSync('../' + targetDir)) { - fs.mkdirSync('../' + targetDir); - } - fs.writeFileSync('../' + targetDir + k, content, 'utf8'); -}); - -///////////////// -console.log('Copying ' + configDir + '/appConfig.json' + ' to root'); -configBlob = configBlob.replace('{', JSONheader); -fs.writeFileSync('../appConfig.json', configBlob, 'utf8'); - -//////////////// -var externalServices; -try { - var confName = configDir.toUpperCase(); - var externalServicesConf = confName + '_EXTERNAL_SERVICES_CONFIG_LOCATION'; - console.log('Looking for ' + externalServicesConf + '...'); - if (typeof process.env[externalServicesConf] !== 'undefined') { - var location = process.env[externalServicesConf] - if (location.charAt(0) === '~') { - location = location.replace(/^\~/, process.env.HOME || process.env.USERPROFILE); - } - console.log('Found at: ' + location); - console.log('Copying ' + location + ' to root'); - externalServices = fs.readFileSync(location, 'utf8'); - } else { - throw externalServicesConf + ' environment variable not set.'; - } -} catch (err) { - console.log(err); - externalServices = '{}'; - console.log('External services not configured'); -} -fs.writeFileSync('../externalServices.json', externalServices, 'utf8'); - -function copyDir(from, to) { - console.log('Copying dir ' + from + ' to ' + to); - if (fs.existsSync(to)) fs.removeSync(to); // remove previous app directory - if (!fs.existsSync(from)) return; // nothing to do - fs.copySync(from, to); -} - -// Push Notification -fs.copySync(configDir + '/GoogleService-Info.plist', '../GoogleService-Info.plist'); -fs.copySync(configDir + '/google-services.json', '../google-services.json'); - -copyDir(configDir + '/img', '../www/img/app'); -copyDir(configDir + '/sass', '../src/sass/app'); -console.log("apply.js finished. \n\n"); diff --git a/app-template/bitpay/GoogleService-Info.plist b/app-template/bitpay/GoogleService-Info.plist deleted file mode 100644 index 507efcdbe..000000000 --- a/app-template/bitpay/GoogleService-Info.plist +++ /dev/null @@ -1,40 +0,0 @@ - - - - - AD_UNIT_ID_FOR_BANNER_TEST - ca-app-pub-3940256099942544/2934735716 - AD_UNIT_ID_FOR_INTERSTITIAL_TEST - ca-app-pub-3940256099942544/4411468910 - CLIENT_ID - 149194066736-nrekra78jvd1cqakh0l69bpbgmj05j81.apps.googleusercontent.com - REVERSED_CLIENT_ID - com.googleusercontent.apps.149194066736-nrekra78jvd1cqakh0l69bpbgmj05j81 - API_KEY - AIzaSyAygvOaO5hmkL2Vze66yVAGU2QhcoTyZFA - GCM_SENDER_ID - 149194066736 - PLIST_VERSION - 1 - BUNDLE_ID - com.bitpay.wallet - PROJECT_ID - bitpay-wallet - STORAGE_BUCKET - bitpay-wallet.appspot.com - IS_ADS_ENABLED - - IS_ANALYTICS_ENABLED - - IS_APPINVITE_ENABLED - - IS_GCM_ENABLED - - IS_SIGNIN_ENABLED - - GOOGLE_APP_ID - 1:149194066736:ios:64dc8a200f13f9ee - DATABASE_URL - https://bitpay-wallet.firebaseio.com - - \ No newline at end of file diff --git a/app-template/bitpay/appConfig.json b/app-template/bitpay/appConfig.json deleted file mode 100644 index bcaec906b..000000000 --- a/app-template/bitpay/appConfig.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "packageName": "bitpay", - "packageDescription": "Secure Bitcoin Wallet", - "packageNameId": "com.bitpay.wallet", - "statusBarColor": "#1e3186", - "userVisibleName": "BitPay", - "purposeLine": "Secure Bitcoin Wallet", - "bundleName": "wallet", - "appUri": "bitpay", - "name": "bitpay", - "nameNoSpace": "bitpay", - "nameCase": "BitPay", - "nameCaseNoSpace": "BitPay", - "gitHubRepoName": "copay", - "gitHubRepoUrl": "git://github.com/bitpay/copay.git", - "gitHubRepoBugs": "https://github.com/bitpay/copay/issues", - "disclaimerUrl": "", - "url": "https://bitpay.com", - "appDescription": "Secure Bitcoin Wallet", - "winAppName": "BitPayWallet", - "WindowsStoreIdentityName": "18C7659D.BitPaySecureBitcoinWallet", - "WindowsStoreDisplayName": "BitPay - Secure Bitcoin Wallet", - "windowsAppId": "2d1002d7-ee34-4f60-bd29-0c871ba0c195", - "pushSenderId": "1036948132229", - "description": "Secure Bitcoin Wallet", - "version": "3.7.0", - "androidVersion": "370000", - "_extraCSS": null, - "_enabledExtensions": { - "coinbase": true, - "glidera": true, - "debitcard": true, - "amazon": true - } -} diff --git a/app-template/bitpay/google-services.json b/app-template/bitpay/google-services.json deleted file mode 100644 index ccce4a633..000000000 --- a/app-template/bitpay/google-services.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "project_info": { - "project_number": "149194066736", - "firebase_url": "https://bitpay-wallet.firebaseio.com", - "project_id": "bitpay-wallet", - "storage_bucket": "bitpay-wallet.appspot.com" - }, - "client": [ - { - "client_info": { - "mobilesdk_app_id": "1:149194066736:android:64dc8a200f13f9ee", - "android_client_info": { - "package_name": "com.bitpay.wallet" - } - }, - "oauth_client": [ - { - "client_id": "149194066736-1gf0d9nk288dke5jdiuj8unkplhl8nco.apps.googleusercontent.com", - "client_type": 3 - } - ], - "api_key": [ - { - "current_key": "AIzaSyCZ8nyjRBe-0Lyur0LjO-SOkjv32uNQKy0" - } - ], - "services": { - "analytics_service": { - "status": 1 - }, - "appinvite_service": { - "status": 1, - "other_platform_oauth_client": [] - }, - "ads_service": { - "status": 2 - } - } - } - ], - "configuration_version": "1" -} diff --git a/app-template/bitpay/img/128x128.png b/app-template/bitpay/img/128x128.png deleted file mode 100755 index 0a03f7ed3..000000000 Binary files a/app-template/bitpay/img/128x128.png and /dev/null differ diff --git a/app-template/bitpay/img/16x16.png b/app-template/bitpay/img/16x16.png deleted file mode 100755 index 973de1c65..000000000 Binary files a/app-template/bitpay/img/16x16.png and /dev/null differ diff --git a/app-template/bitpay/img/24x24.png b/app-template/bitpay/img/24x24.png deleted file mode 100755 index 7ec13aba4..000000000 Binary files a/app-template/bitpay/img/24x24.png and /dev/null differ diff --git a/app-template/bitpay/img/256x256.png b/app-template/bitpay/img/256x256.png deleted file mode 100755 index c2d0ac1d8..000000000 Binary files a/app-template/bitpay/img/256x256.png and /dev/null differ diff --git a/app-template/bitpay/img/32x32.png b/app-template/bitpay/img/32x32.png deleted file mode 100755 index 74816f940..000000000 Binary files a/app-template/bitpay/img/32x32.png and /dev/null differ diff --git a/app-template/bitpay/img/48x48.png b/app-template/bitpay/img/48x48.png deleted file mode 100755 index 1544ac1f1..000000000 Binary files a/app-template/bitpay/img/48x48.png and /dev/null differ diff --git a/app-template/bitpay/img/64x64.png b/app-template/bitpay/img/64x64.png deleted file mode 100755 index ed9b64f6c..000000000 Binary files a/app-template/bitpay/img/64x64.png and /dev/null differ diff --git a/app-template/bitpay/img/96x96.png b/app-template/bitpay/img/96x96.png deleted file mode 100755 index 8d473f1c8..000000000 Binary files a/app-template/bitpay/img/96x96.png and /dev/null differ diff --git a/app-template/bitpay/img/favicon.ico b/app-template/bitpay/img/favicon.ico deleted file mode 100644 index 166c0bcaf..000000000 Binary files a/app-template/bitpay/img/favicon.ico and /dev/null differ diff --git a/app-template/bitpay/img/icon.png b/app-template/bitpay/img/icon.png deleted file mode 100644 index 92b75419a..000000000 Binary files a/app-template/bitpay/img/icon.png and /dev/null differ diff --git a/app-template/bitpay/img/logo-negative.svg b/app-template/bitpay/img/logo-negative.svg deleted file mode 100644 index d325ec632..000000000 --- a/app-template/bitpay/img/logo-negative.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/app-template/bitpay/img/logo.ico b/app-template/bitpay/img/logo.ico deleted file mode 100644 index f91c730f2..000000000 Binary files a/app-template/bitpay/img/logo.ico and /dev/null differ diff --git a/app-template/bitpay/img/logo.svg b/app-template/bitpay/img/logo.svg deleted file mode 100644 index bae45745c..000000000 --- a/app-template/bitpay/img/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/app-template/bitpay/sass/overrides.scss b/app-template/bitpay/sass/overrides.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/app-template/build-macos.sh b/app-template/build-macos.sh deleted file mode 100755 index 5f09bd0b2..000000000 --- a/app-template/build-macos.sh +++ /dev/null @@ -1,184 +0,0 @@ -#!/bin/bash - -SHOULD_SIGN=$1 -if [ "$SHOULD_SIGN" ] -then - echo "Will sign the APP" -fi - -# by Andy Maloney -# http://asmaloney.com/2013/07/howto/packaging-a-mac-os-x-application-using-a-dmg/ - -# make sure we are in the correct dir when we double-click a .command file -dir=${0%/*} -if [ -d "$dir" ]; then - cd "$dir" -fi - -# set up your app name, architecture, and background image file name -APP_NAME="*USERVISIBLENAME*" -rm dmg-background.tiff -ln -s ../resources/*PACKAGENAME*/mac/dmg-background.tiff dmg-background.tiff -rm volume-icon.icns -ln -s ../resources/*PACKAGENAME*/mac/volume-icon.icns volume-icon.icns -DMG_VOLUME_ICON="volume-icon.icns" -DMG_BACKGROUND_IMG="dmg-background.tiff" - -PATH_NAME="${APP_NAME}/osx64/" -# you should not need to change these -APP_EXE="${PATH_NAME}${APP_NAME}.app/Contents/MacOS/nwjs" - -VOL_NAME="${APP_NAME}" -DMG_TMP="${VOL_NAME}-temp.dmg" -DMG_FINAL="${VOL_NAME}.dmg" -STAGING_DIR="tmp" - -# Check the background image DPI and convert it if it isn't 72x72 -_BACKGROUND_IMAGE_DPI_H=`sips -g dpiHeight ${DMG_BACKGROUND_IMG} | grep -Eo '[0-9]+\.[0-9]+'` -_BACKGROUND_IMAGE_DPI_W=`sips -g dpiWidth ${DMG_BACKGROUND_IMG} | grep -Eo '[0-9]+\.[0-9]+'` - -if [ $(echo " $_BACKGROUND_IMAGE_DPI_H != 72.0 " | bc) -eq 1 -o $(echo " $_BACKGROUND_IMAGE_DPI_W != 72.0 " | bc) -eq 1 ]; then - echo "WARNING: The background image's DPI is not 72. This will result in distorted backgrounds on Mac OS X 10.7+." - echo " I will convert it to 72 DPI for you." - - _DMG_BACKGROUND_TMP="${DMG_BACKGROUND_IMG%.*}"_dpifix."${DMG_BACKGROUND_IMG##*.}" - - sips -s dpiWidth 72 -s dpiHeight 72 ${DMG_BACKGROUND_IMG} --out ${_DMG_BACKGROUND_TMP} - - DMG_BACKGROUND_IMG="${_DMG_BACKGROUND_TMP}" -fi - -# clear out any old data -rm -rf "${STAGING_DIR}" "${DMG_TMP}" "${DMG_FINAL}" - -# copy over the stuff we want in the final disk image to our staging dir -mkdir -p "${STAGING_DIR}" -cp -rpf "${PATH_NAME}${APP_NAME}.app" "${STAGING_DIR}" -# ... cp anything else you want in the DMG - documentation, etc. - -pushd "${STAGING_DIR}" - -popd - -# Fix size to 250MB -SIZE=250 - -if [ $? -ne 0 ]; then - echo "Error: Cannot compute size of staging dir" - exit - fi - -# Sign Code (MATIAS) -if [ $SHOULD_SIGN ] -then - echo "Signing ${APP_NAME} DMG" - - export IDENTITY="3rd Party Mac Developer Application: BitPay, Inc. (884JRH5R93)" - - # not need for 'out of app store' distribution (?) -# export PARENT_PLIST=parent.plist -# export CHILD_PLIST=child.plist - export APP_PATH=${STAGING_DIR}/${APP_NAME}.app - - codesign --deep -s "${IDENTITY}" $APP_PATH"/Contents/Versions/52.0.2743.82/nwjs Helper.app" && echo "Sign 1" - codesign --deep -s "${IDENTITY}" $APP_PATH"/Contents/Versions/52.0.2743.82/nwjs Framework.framework/Resources/app_mode_loader.app" && echo "Sign 2" - codesign --deep -s "${IDENTITY}" $APP_PATH && echo "Sign 3" - echo "Signing Done" - -fi - -# create the temp DMG file -hdiutil create -srcfolder "${STAGING_DIR}" -volname "${VOL_NAME}" -fs HFS+ \ - -fsargs "-c c=64,a=16,e=16" -format UDRW -megabytes ${SIZE} "${DMG_TMP}" - -echo "Created DMG: ${DMG_TMP}" - -# mount it and save the device -DEVICE=$(hdiutil attach -readwrite -noverify "${DMG_TMP}" | \ - egrep '^/dev/' | sed 1q | awk '{print $1}') - -sleep 2 - -# add a link to the Applications dir -echo "Adding link to /Applications" -pushd /Volumes/"${VOL_NAME}" -# We name the symlink with a *non-breaking space* to avoid displaying extra text -ln -s /Applications " " # <- not your ordinary space -popd - -# "bless" the folder to open it in Finder automatically when the volume is mounted -echo "Blessing disk image" -bless --folder /Volumes/"${VOL_NAME}" --openfolder /Volumes/"${VOL_NAME}" - -# add a background image -echo "Adding background to disk image" -mkdir /Volumes/"${VOL_NAME}"/.background -cp "${DMG_BACKGROUND_IMG}" /Volumes/"${VOL_NAME}"/.background/ - -echo "Adding volume icon to disk image" -# we install this here to avoid trying to install it on linux or windows, where -# it fails to install -npm install fileicon -# use fileicon node_module -cp "${DMG_VOLUME_ICON}" /Volumes/"${VOL_NAME}"/.VolumeIcon.icns -`npm bin`/fileicon set /Volumes/"${VOL_NAME}"/ /Volumes/"${VOL_NAME}"/.VolumeIcon.icns - -# tell the Finder to resize the window, set the background, -# change the icon size, place the icons in the right position, etc. -echo "Designing the unboxing experience..." -WINDOW_X=400 -WINDOW_Y=100 -WINDOW_WIDTH=500 -WINDOW_HEIGHT=375 -ICON_SIZE=100 -ICON_LR_PADDING=140 -ICON_Y=185 - -WINDOW_RIGHT=$(expr $WINDOW_X + $WINDOW_WIDTH) -WINDOW_BOTTOM=$(expr $WINDOW_Y + $WINDOW_HEIGHT) -RIGHT_ICON_PADDING_RIGHT=$(expr $WINDOW_WIDTH - $ICON_LR_PADDING) -HIDE_X=100 # no need to exceed WINDOW_WIDTH – will only create another scrollbar -HIDE_Y=$(expr $WINDOW_HEIGHT + $ICON_SIZE) - -echo ' - tell application "Finder" - tell disk "'${VOL_NAME}'" - open - set current view of container window to icon view - set toolbar visible of container window to false - set statusbar visible of container window to false - set the bounds of container window to {'${WINDOW_X}', '${WINDOW_Y}', '${WINDOW_RIGHT}', '${WINDOW_BOTTOM}'} - set viewOptions to the icon view options of container window - set arrangement of viewOptions to not arranged - set icon size of viewOptions to '${ICON_SIZE}' - set background picture of viewOptions to file ".background:'${DMG_BACKGROUND_IMG}'" - set position of item "'${APP_NAME}'.app" of container window to {'${ICON_LR_PADDING}', '${ICON_Y}'} - set position of item " " of container window to {'${RIGHT_ICON_PADDING_RIGHT}', '${ICON_Y}'} - set position of item ".background" of container window to {'${HIDE_X}', '${HIDE_Y}'} - set position of item ".VolumeIcon.icns" of container window to {'${HIDE_X}', '${HIDE_Y}'} - set position of item ".fseventsd" of container window to {'${HIDE_X}', '${HIDE_Y}'} - set position of item "Icon?" of container window to {'${HIDE_X}', '${HIDE_Y}'} - close - open - update without registering applications - delay 2 - end tell - end tell -' | osascript - -sync - -# unmount it -hdiutil detach "${DEVICE}" - -# now make the final image a compressed disk image -echo "Creating compressed image" -hdiutil convert "${DMG_TMP}" -format UDZO -imagekey zlib-level=9 -o "${DMG_FINAL}" - -# clean up -rm -rf "${DMG_TMP}" -rm -rf "${STAGING_DIR}" - -echo 'Done.' - -exit diff --git a/app-template/config-template.xml b/app-template/config-template.xml deleted file mode 100644 index 86117d6d3..000000000 --- a/app-template/config-template.xml +++ /dev/null @@ -1,157 +0,0 @@ - - - *USERVISIBLENAME* - - *PURPOSELINE* - - - BitPay Inc. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app-template/copay/GoogleService-Info.plist b/app-template/copay/GoogleService-Info.plist deleted file mode 100644 index 977ffeb62..000000000 --- a/app-template/copay/GoogleService-Info.plist +++ /dev/null @@ -1,40 +0,0 @@ - - - - - AD_UNIT_ID_FOR_BANNER_TEST - ca-app-pub-3940256099942544/2934735716 - AD_UNIT_ID_FOR_INTERSTITIAL_TEST - ca-app-pub-3940256099942544/4411468910 - CLIENT_ID - 149194066736-tukkdahsck00842frm4l7c2r04bhhj4l.apps.googleusercontent.com - REVERSED_CLIENT_ID - com.googleusercontent.apps.149194066736-tukkdahsck00842frm4l7c2r04bhhj4l - API_KEY - AIzaSyAygvOaO5hmkL2Vze66yVAGU2QhcoTyZFA - GCM_SENDER_ID - 149194066736 - PLIST_VERSION - 1 - BUNDLE_ID - com.bitpay.copay - PROJECT_ID - bitpay-wallet - STORAGE_BUCKET - bitpay-wallet.appspot.com - IS_ADS_ENABLED - - IS_ANALYTICS_ENABLED - - IS_APPINVITE_ENABLED - - IS_GCM_ENABLED - - IS_SIGNIN_ENABLED - - GOOGLE_APP_ID - 1:149194066736:ios:6de8942b48fea047 - DATABASE_URL - https://bitpay-wallet.firebaseio.com - - \ No newline at end of file diff --git a/app-template/copay/appConfig.json b/app-template/copay/appConfig.json deleted file mode 100644 index 1301a4d67..000000000 --- a/app-template/copay/appConfig.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "packageName": "copay", - "packageDescription": "Copay Bitcoin Wallet", - "packageNameId": "com.bitpay.copay", - "statusBarColor": "#192c3a", - "userVisibleName": "Copay", - "purposeLine": "Copay Bitcoin Wallet", - "bundleName": "copay", - "appUri": "copay", - "name": "copay", - "nameNoSpace": "copay", - "nameCase": "Copay", - "nameCaseNoSpace": "Copay", - "gitHubRepoName": "copay", - "gitHubRepoUrl": "git://github.com/bitpay/copay.git", - "gitHubRepoBugs": "https://github.com/bitpay/copay/issues", - "disclaimerUrl": "https://copay.io/disclaimer", - "url": "https://copay.io", - "appDescription": "Copay Bitcoin Wallet", - "winAppName": "CopayWallet", - "WindowsStoreIdentityName": "18C7659D.Copay-SecureBitcoinWallet", - "WindowsStoreDisplayName": "Copay - Secure Bitcoin Wallet", - "windowsAppId": "804636ee-b017-4cad-8719-e58ac97ffa5c", - "pushSenderId": "1036948132229", - "description": "A Secure Bitcoin Wallet", - "version": "3.7.0", - "androidVersion": "370000", - "_extraCSS": null, - "_enabledExtensions": { - "coinbase": true, - "glidera": true, - "amazon": true - } -} diff --git a/app-template/copay/google-services.json b/app-template/copay/google-services.json deleted file mode 100644 index 8b14cdb70..000000000 --- a/app-template/copay/google-services.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "project_info": { - "project_number": "149194066736", - "firebase_url": "https://bitpay-wallet.firebaseio.com", - "project_id": "bitpay-wallet", - "storage_bucket": "bitpay-wallet.appspot.com" - }, - "client": [ - { - "client_info": { - "mobilesdk_app_id": "1:149194066736:android:6de8942b48fea047", - "android_client_info": { - "package_name": "com.bitpay.copay" - } - }, - "oauth_client": [ - { - "client_id": "149194066736-1gf0d9nk288dke5jdiuj8unkplhl8nco.apps.googleusercontent.com", - "client_type": 3 - } - ], - "api_key": [ - { - "current_key": "AIzaSyCZ8nyjRBe-0Lyur0LjO-SOkjv32uNQKy0" - } - ], - "services": { - "analytics_service": { - "status": 1 - }, - "appinvite_service": { - "status": 1, - "other_platform_oauth_client": [] - }, - "ads_service": { - "status": 2 - } - } - } - ], - "configuration_version": "1" -} diff --git a/app-template/copay/img/128x128.png b/app-template/copay/img/128x128.png deleted file mode 100755 index e2a715a69..000000000 Binary files a/app-template/copay/img/128x128.png and /dev/null differ diff --git a/app-template/copay/img/16x16.png b/app-template/copay/img/16x16.png deleted file mode 100755 index 66a7f6960..000000000 Binary files a/app-template/copay/img/16x16.png and /dev/null differ diff --git a/app-template/copay/img/24x24.png b/app-template/copay/img/24x24.png deleted file mode 100755 index f857b2562..000000000 Binary files a/app-template/copay/img/24x24.png and /dev/null differ diff --git a/app-template/copay/img/256x256.png b/app-template/copay/img/256x256.png deleted file mode 100755 index 8f2f6d5c9..000000000 Binary files a/app-template/copay/img/256x256.png and /dev/null differ diff --git a/app-template/copay/img/32x32.png b/app-template/copay/img/32x32.png deleted file mode 100755 index 6111d3120..000000000 Binary files a/app-template/copay/img/32x32.png and /dev/null differ diff --git a/app-template/copay/img/48x48.png b/app-template/copay/img/48x48.png deleted file mode 100755 index b8206bd53..000000000 Binary files a/app-template/copay/img/48x48.png and /dev/null differ diff --git a/app-template/copay/img/64x64.png b/app-template/copay/img/64x64.png deleted file mode 100755 index 87985f3e4..000000000 Binary files a/app-template/copay/img/64x64.png and /dev/null differ diff --git a/app-template/copay/img/96x96.png b/app-template/copay/img/96x96.png deleted file mode 100755 index 047a88431..000000000 Binary files a/app-template/copay/img/96x96.png and /dev/null differ diff --git a/app-template/copay/img/backup-warning.svg b/app-template/copay/img/backup-warning.svg deleted file mode 100644 index a44e1e82a..000000000 --- a/app-template/copay/img/backup-warning.svg +++ /dev/null @@ -1,29 +0,0 @@ - - - - backup-warning - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app-template/copay/img/favicon.ico b/app-template/copay/img/favicon.ico deleted file mode 100644 index e2f92139d..000000000 Binary files a/app-template/copay/img/favicon.ico and /dev/null differ diff --git a/app-template/copay/img/icon-bitcoin.svg b/app-template/copay/img/icon-bitcoin.svg deleted file mode 100644 index 3733702c6..000000000 --- a/app-template/copay/img/icon-bitcoin.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - icon-bitcoin - Created with Sketch. - - - - - - - - \ No newline at end of file diff --git a/app-template/copay/img/icon.png b/app-template/copay/img/icon.png deleted file mode 100644 index cba4cf27a..000000000 Binary files a/app-template/copay/img/icon.png and /dev/null differ diff --git a/app-template/copay/img/logo-negative.png b/app-template/copay/img/logo-negative.png deleted file mode 100644 index 522d1420f..000000000 Binary files a/app-template/copay/img/logo-negative.png and /dev/null differ diff --git a/app-template/copay/img/logo-negative.svg b/app-template/copay/img/logo-negative.svg deleted file mode 100644 index ab7e62a89..000000000 --- a/app-template/copay/img/logo-negative.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - Artboard 1 - Created with Sketch. - - - - - - - - - - - - - \ No newline at end of file diff --git a/app-template/copay/img/logo.ico b/app-template/copay/img/logo.ico deleted file mode 100644 index 32a1d2291..000000000 Binary files a/app-template/copay/img/logo.ico and /dev/null differ diff --git a/app-template/copay/img/logo.png b/app-template/copay/img/logo.png deleted file mode 100644 index 01fe6c0bd..000000000 Binary files a/app-template/copay/img/logo.png and /dev/null differ diff --git a/app-template/copay/img/logo.svg b/app-template/copay/img/logo.svg deleted file mode 100644 index 9f404535a..000000000 --- a/app-template/copay/img/logo.svg +++ /dev/null @@ -1,50 +0,0 @@ - - - -download 3 -Created with Sketch. - - - - - - - - - - diff --git a/app-template/copay/img/onboarding/push-notifications.svg b/app-template/copay/img/onboarding/push-notifications.svg deleted file mode 100644 index 829ee9427..000000000 --- a/app-template/copay/img/onboarding/push-notifications.svg +++ /dev/null @@ -1,46 +0,0 @@ - - - - push-notifications - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app-template/copay/img/onboarding/tour-control.svg b/app-template/copay/img/onboarding/tour-control.svg deleted file mode 100644 index 7a49991b1..000000000 --- a/app-template/copay/img/onboarding/tour-control.svg +++ /dev/null @@ -1,47 +0,0 @@ - - - - tour-control - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app-template/copay/img/onboarding/tour-currency.svg b/app-template/copay/img/onboarding/tour-currency.svg deleted file mode 100644 index 85854559f..000000000 --- a/app-template/copay/img/onboarding/tour-currency.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - tour-currency - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app-template/copay/img/onboarding/tour-phone.svg b/app-template/copay/img/onboarding/tour-phone.svg deleted file mode 100644 index 9386356db..000000000 --- a/app-template/copay/img/onboarding/tour-phone.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - onboarding-tour-phone - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app-template/copay/img/tab-icons/ico-home-selected.svg b/app-template/copay/img/tab-icons/ico-home-selected.svg deleted file mode 100644 index e82f00cfc..000000000 --- a/app-template/copay/img/tab-icons/ico-home-selected.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - diff --git a/app-template/copay/img/tab-icons/ico-home.svg b/app-template/copay/img/tab-icons/ico-home.svg deleted file mode 100644 index 4297cf20c..000000000 --- a/app-template/copay/img/tab-icons/ico-home.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - diff --git a/app-template/copay/img/tab-icons/ico-receive-selected.svg b/app-template/copay/img/tab-icons/ico-receive-selected.svg deleted file mode 100644 index 9fe052f9e..000000000 --- a/app-template/copay/img/tab-icons/ico-receive-selected.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/app-template/copay/img/tab-icons/ico-receive.svg b/app-template/copay/img/tab-icons/ico-receive.svg deleted file mode 100644 index aab9aec69..000000000 --- a/app-template/copay/img/tab-icons/ico-receive.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - diff --git a/app-template/copay/img/tab-icons/ico-scan-selected.svg b/app-template/copay/img/tab-icons/ico-scan-selected.svg deleted file mode 100644 index e3b2472ea..000000000 --- a/app-template/copay/img/tab-icons/ico-scan-selected.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - diff --git a/app-template/copay/img/tab-icons/ico-scan.svg b/app-template/copay/img/tab-icons/ico-scan.svg deleted file mode 100644 index ea08ae0f0..000000000 --- a/app-template/copay/img/tab-icons/ico-scan.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - diff --git a/app-template/copay/img/tab-icons/ico-send-selected.svg b/app-template/copay/img/tab-icons/ico-send-selected.svg deleted file mode 100644 index 6a01b3335..000000000 --- a/app-template/copay/img/tab-icons/ico-send-selected.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/app-template/copay/img/tab-icons/ico-send.svg b/app-template/copay/img/tab-icons/ico-send.svg deleted file mode 100644 index a5020691d..000000000 --- a/app-template/copay/img/tab-icons/ico-send.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - diff --git a/app-template/copay/img/tab-icons/ico-settings-selected.svg b/app-template/copay/img/tab-icons/ico-settings-selected.svg deleted file mode 100644 index 01883277b..000000000 --- a/app-template/copay/img/tab-icons/ico-settings-selected.svg +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - diff --git a/app-template/copay/img/tab-icons/ico-settings.svg b/app-template/copay/img/tab-icons/ico-settings.svg deleted file mode 100644 index 605bdb2fc..000000000 --- a/app-template/copay/img/tab-icons/ico-settings.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - diff --git a/app-template/copay/sass/overrides.scss b/app-template/copay/sass/overrides.scss deleted file mode 100644 index 109541cc6..000000000 --- a/app-template/copay/sass/overrides.scss +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copay Distribution SCSS overrides - */ - -/* Colors */ -$v-primary-color: #192c3a; -$v-secondary-color: #31465b; -$v-accent-color: #1abb9b; - -$v-text-primary-color: #192c3a; -$v-text-secondary-color: #c2c9d1; -$v-text-accent-color: #1abb9b; - -$v-success-color: #1abb9b; -$v-warning-color: #bb331a; - -/* Theme */ -$v-default-wallet-color-index: 6; -$v-top-tabs-color: $v-accent-color; -$v-wallet-backup-phrase-color: $v-text-primary-color; -$v-wallet-backup-select-phrase-color: $v-secondary-color; -$v-wallet-backup-select-word-bg: $v-accent-color; -$v-wallet-backup-select-word-color: $v-text-primary-color; -$v-wallet-backup-select-word-disabled-color: $v-accent-color; -$v-tou-bg: $v-secondary-color; -$v-tou-color: $v-text-secondary-color; -$v-icon-border-radius: 3px; -$v-bitcoin-icon: url('../img/app/icon-bitcoin.svg'); - -$v-button-primary-outline-active-color: $v-text-primary-color; - -$v-button-secondary-bg: $v-secondary-color; -$v-button-secondary-color: $v-accent-color; -$v-button-secondary-active-bg: darken($v-secondary-color, 10%); -$v-button-secondary-clear-color: $v-accent-color; -$v-button-secondary-outline-border: $v-accent-color; -$v-button-secondary-outline-color: $v-accent-color; -$v-button-secondary-outline-active-bg: darken($v-accent-color, 10%); -$v-button-secondary-outline-active-color: $v-accent-color; - -/* Slide */ - -$v-slide-bg-color: $v-accent-color; -$v-slider-bg-color: #069074; -$v-slide-text-color: #FFFFFF; - -/* Onboarding */ -$v-onboarding-welcome-bg: none; -$v-onboarding-color: $v-text-secondary-color; -$v-onboarding-bar-header-color: $v-text-primary-color; -$v-onboarding-bar-header-button-color: $v-accent-color; - -$v-onboarding-tour-phone-bg: url(../img/app/onboarding/tour-phone.svg); -$v-onboarding-tour-currency-bg: url(../img/app/onboarding/tour-currency.svg); -$v-onboarding-tour-control-bg: url(../img/app/onboarding/tour-control.svg); -$v-onboarding-push-notification-bg: url(../img/app/onboarding/push-notifications.svg); -$v-onboarding-backup-warning-bg: url(../img/app/backup-warning.svg); - -$v-onboarding-button-back-color: $v-accent-color; - -$v-onboarding-button-secondary-bg: $v-secondary-color; -$v-onboarding-button-secondary-color: $v-accent-color; -$v-onboarding-button-secondary-active-bg: darken($v-secondary-color, 10%); -$v-onboarding-button-secondary-clear-color: $v-accent-color; -$v-onboarding-button-secondary-outline-border: $v-accent-color; -$v-onboarding-button-secondary-outline-color: $v-accent-color; -$v-onboarding-button-secondary-outline-active-bg: darken($v-accent-color, 10%); -$v-onboarding-button-secondary-outline-active-color: $v-accent-color; - -/* Main tabs */ -$v-tab-home-selected-icon: url('../img/app/tab-icons/ico-home-selected.svg'); -$v-tab-receive-selected-icon: url('../img/app/tab-icons/ico-receive-selected.svg'); -$v-tab-settings-selected-icon: url('../img/app/tab-icons/ico-settings-selected.svg'); -$v-tab-scan-selected-icon: url('../img/app/tab-icons/ico-scan-selected.svg'); -$v-tab-send-selected-icon: url('../img/app/tab-icons/ico-send-selected.svg'); diff --git a/app-template/index.html b/app-template/index.html deleted file mode 100644 index f457d9310..000000000 --- a/app-template/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - *USERVISIBLENAME* - *PURPOSELINE* - - - - - -
- -
- - - - - - - - - - - - - - diff --git a/app-template/ionic.config.json b/app-template/ionic.config.json deleted file mode 100644 index a4147056b..000000000 --- a/app-template/ionic.config.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "*USERVISIBLENAME*", - "app_id": "com.bitpay.*BUNDLENAME*" -} diff --git a/app-template/manifest.json b/app-template/manifest.json deleted file mode 100644 index 78eabf8a9..000000000 --- a/app-template/manifest.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "manifest_version": 2, - "name": "*PACKAGENAME*", - "description": "*DESCRIPTION*", - "version": "*VERSION*", - "permissions": [ - "storage", - "unlimitedStorage", - "notifications", - "videoCapture", - "webview" - ], - "app": { - "background": { - "scripts": ["initial.js"] - } - }, - "icons": { - "128": "img/icon-chrome-128.png" - } -} diff --git a/app-template/package-template.json b/app-template/package-template.json deleted file mode 100644 index d9ebdd18a..000000000 --- a/app-template/package-template.json +++ /dev/null @@ -1,127 +0,0 @@ -{ - "name": "*PACKAGENAME*", - "description": "*DESCRIPTION*", - "author": "BitPay", - "version": "*VERSION*", - "keywords": [ - "bitcoin", - "wallet", - "bitpay", - "copay", - "multisignature", - "bitcore" - ], - "main": "www/index.html", - "title": "*USERVISIBLENAME*", - "window": { - "title": "*USERVISIBLENAME* - *PURPOSELINE*", - "icon": "www/img/app/icon.png", - "toolbar": false, - "show": true, - "visible": true, - "resizable": true, - "frame": true, - "width": 400, - "height": 650, - "min_width": 400, - "max_width": 800, - "min_height": 650, - "position": "center", - "fullscreen": false - }, - "webkit": { - "page-cache": false, - "java": false, - "plugin": false - }, - "dom_storage_quota": 200, - "id": "jid1-x7bV5evAaI1P9Q", - "homepage": "*URL*", - "license": "MIT", - "repository": { - "url": "*GITHUBREPOURL*", - "type": "git" - }, - "bugs": { - "url": "*GITHUBREPOBUGS*" - }, - "engines": { - "node": "6", - "npm": "3" - }, - "dependencies": { - "adm-zip": "^0.4.7", - "angular": "1.4.6", - "angular-mocks": "1.4.10", - "bezier-easing": "^2.0.3", - "bhttp": "^1.2.1", - "bitauth": "^0.2.1", - "bitcore-wallet-client": "5.3.0", - "bower": "^1.7.9", - "cordova-android": "5.1.1", - "cordova-custom-config": "^3.0.5", - "cordova-plugin-qrscanner": "^2.5.0", - "coveralls": "^2.11.9", - "express": "^4.11.2", - "fs": "0.0.2", - "fs-extra": "^0.30.0", - "grunt-angular-gettext": "^2.2.3", - "grunt-browserify": "^5.0.0", - "grunt-cli": "^1.2.0", - "grunt-contrib-compress": "^1.3.0", - "grunt-contrib-concat": "^1.0.1", - "grunt-contrib-copy": "^1.0.0", - "grunt-contrib-uglify": "^2.0.0", - "grunt-contrib-watch": "^1.0.0", - "grunt-exec": "^1.0.0", - "grunt-nw-builder": "^2.0.3", - "grunt-sass": "^1.2.0", - "load-grunt-tasks": "^3.5.0", - "shelljs": "^0.3.0" - }, - "scripts": { - "postinstall": "bower install", - "start": "npm run build:www && ionic serve --nolivereload --nogulp -s --address 0.0.0.0", - "start:ios": "npm run build:www && npm run build:ios && npm run open:ios", - "start:android": "npm run build:www && npm run build:android && npm run run:android", - "start:windows": "npm run build:www && npm run build:windows", - "start:desktop": "npm start", - "watch": "grunt watch", - "build:www": "grunt", - "build:www-release": "grunt prod", - "build:ios": "cordova prepare ios && cordova build ios --debug", - "build:android": "cordova prepare android && cordova build android --debug", - "build:windows": "cordova prepare windows && cordova build windows -- --arch=\"ARM\"", - "build:ios-release": "cordova prepare ios && cordova build ios --release", - "build:android-release": "cordova prepare android && cordova build android --release", - "build:windows-release": "cordova prepare windows && cordova build windows --release --arch=\"ARM\"", - "build:desktop": "grunt desktop", - "build:osx": "grunt osx", - "open:ios": "open platforms/ios/*.xcodeproj", - "open:android": "open -a open -a /Applications/Android\\ Studio.app platforms/android", - "final:www": "npm run build:www-release", - "final:ios": "npm run final:www && npm run build:ios-release && npm run open:ios", - "final:android": "npm run final:www && npm run build:android-release && npm run sign:android && npm run run:android-release", - "final:windows": "npm run final:www && npm run build:windows-release", - "final:desktop": "npm run build:desktop && npm run build:osx", - "run:android": "cordova run android --device", - "run:android-release": "cordova run android --device --release", - "log:android": "adb logcat | grep chromium", - "sign:android": "rm -f platforms/android/build/outputs/apk/android-release-signed-aligned.apk; jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ../copay.keystore -signedjar platforms/android/build/outputs/apk/android-release-signed.apk platforms/android/build/outputs/apk/android-release-unsigned.apk copay_play && ../android-sdk-macosx/build-tools/25.0.3/zipalign -v 4 platforms/android/build/outputs/apk/android-release-signed.apk platforms/android/build/outputs/apk/android-release-signed-aligned.apk", - "apply:copay": "npm i fs-extra && cd app-template && node apply.js copay && npm i && cordova prepare", - "apply:bitpay": "npm i fs-extra && cd app-template && node apply.js bitpay && npm i && cordova prepare", - "test": "echo \"no package tests configured\"", - "clean": "trash platforms && trash plugins && cordova prepare", - "unstage-package": "git reset package.json", - "clean-all": "git clean -dfx" - }, - "devDependencies": { - "cordova": "^6.3.1", - "grunt": "^1.0.1", - "ionic": "^2.1.0", - "trash-cli": "^1.4.0", - "lodash": "^4.3.0", - "pre-commit": "^1.1.3" - }, - "pre-commit": "unstage-package" -} diff --git a/app-template/setup-win.iss b/app-template/setup-win.iss deleted file mode 100755 index f9dbac910..000000000 --- a/app-template/setup-win.iss +++ /dev/null @@ -1,57 +0,0 @@ -; Script generated by the Inno Setup Script Wizard. -; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! - -#define MyAppName "*USERVISIBLENAME*" -#define MyAppVersion "*VERSION*" -#define MyAppPublisher "BitPay" -#define MyAppURL "*URL*" -#define MyAppExeName "*USERVISIBLENAME*.exe" -#define AppId "*WINDOWSAPPID*" - -[Setup] -AppId={#AppId} -AppName={#MyAppName} -AppVersion={#MyAppVersion} -;AppVerName={#MyAppName} {#MyAppVersion} -AppPublisher={#MyAppPublisher} -AppPublisherURL={#MyAppURL} -AppSupportURL={#MyAppURL} -AppUpdatesURL={#MyAppURL} -DefaultDirName={pf}\{#MyAppName} -DefaultGroupName={#MyAppName} -OutputBaseFilename=*USERVISIBLENAME* -OutputDir=./ -Compression=lzma -SolidCompression=yes -[Languages] -Name: "english"; MessagesFile: "compiler:Default.isl" -Name: "french"; MessagesFile: "compiler:Languages\French.isl" -Name: "japanese"; MessagesFile: "compiler:Languages\Japanese.isl" -Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl" - -[Tasks] -Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked - -[Files] -Source: "*USERVISIBLENAME*\win64\*USERVISIBLENAME*.exe"; DestDir: "{app}"; Flags: ignoreversion -Source: "*USERVISIBLENAME*\win64\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs -Source: "../www/img/app/logo.ico"; DestDir: "{app}"; DestName: "icon.ico"; Flags: ignoreversion -; NOTE: Don't use "Flags: ignoreversion" on any shared system files - -[Icons] -Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; WorkingDir: "{app}"; IconFilename: "{app}/icon.ico" -Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; IconFilename: "{app}/icon.ico"; Tasks: desktopicon - -[Run] -Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent - -[Registry] -Root: HKCR; Subkey: "bitcoin"; ValueType: "string"; ValueData: "URL:Bitcoin Custom Protocol"; Flags: uninsdeletekey -Root: HKCR; Subkey: "bitcoin"; ValueType: "string"; ValueName: "URL Protocol"; ValueData: "" -Root: HKCR; Subkey: "bitcoin\DefaultIcon"; ValueType: "string"; ValueData: "{app}\{#MyAppExeName},0" -Root: HKCR; Subkey: "bitcoin\shell\open\command"; ValueType: "string"; ValueData: """{app}\{#MyAppExeName}"" ""%1""" - -Root: HKCR; Subkey: "*APPURI*"; ValueType: "string"; ValueData: "URL:*USERVISIBLENAME* Custom Protocol"; Flags: uninsdeletekey -Root: HKCR; Subkey: "*APPURI*"; ValueType: "string"; ValueName: "URL Protocol"; ValueData: "" -Root: HKCR; Subkey: "*APPURI*\DefaultIcon"; ValueType: "string"; ValueData: "{app}\{#MyAppExeName},0" -Root: HKCR; Subkey: "*APPURI*\shell\open\command"; ValueType: "string"; ValueData: """{app}\{#MyAppExeName}"" ""%1""" diff --git a/backupRecovery.md b/backupRecovery.md deleted file mode 100644 index 956dac197..000000000 --- a/backupRecovery.md +++ /dev/null @@ -1,92 +0,0 @@ - - -# Copay Backup and Restore Notes - -## Description - -Copay is a Multisig HD Wallet. Copay app holds the extended private keys for the wallet. The private key never leaves the device, so for accessing a wallet funds it is necesary to have the device or a backup of the wallet. - -## Definitions - -### Backup Formats: - * Wallet recovery phrase (RP): 12 words mnemonic backup (available from Copay v1.2+). The 12 words are used as wallet seed, following BIP39 specification. The wallet RP may require a passphrase to recreate the wallet (if one was specified at creation time). - * Wallet Backup (WB): Exported data from Copay, containing an AES encrypted JSON with many wallet parameters (like extended private key, wallet name, extended public keys of copayers, etc. See #export-format). This data can be created from Copay v1.2+ (Settings -> Advanced -> Export) and it was the default backup format on previous Copay versions. WB can be a file (standard format for Copay desktop versions) or a text (standard for Copay mobile versions). - -### Backup recovery cases - * Case 1: Lost of device holding the wallet - * Case 2: Change to a new Bitcore Wallet Service (BWS) - * Case 3: Lost device + new Bitcore Wallet Service - -### Wallet Recovery Scope - * Basic Recovery: Wallet access is restored. It is possible to see wallet balance and past transactions. It is possible to send and receive payments. - * Full Recovery: All the features of Partial Recovery + wallet name, copayer names are recovered, past payment proposal metadata (who signed, and notes) are recovered. - -## Wallet Restore Scenarios - -### Non-multisig wallets - - Case 1: From both RP and WB, full recovery is possible. - - Enter the RP or the 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 to the new server (Recreate wallet feature). - - Point to the new server (Settings -> Bitcore Wallet Service). - - If the wallet is not registered at the new Wallet service, a 'Recreate' button will appear at wallet's home. Click it to recreate the wallet. - - Wallet should be recreated and access to funds should be restored. - - If the wallet existed, it may be necessary to rescan Wallet's addresses for funds (from Settings -> Advanced -> Scan Addresses for Funds) - - Case 3: From both Backup Words and Backup file, basic recovery is possible. - (Using RP) - - Enter the RP at 'Import Wallet' - If the error "This wallet is not registered at the wallet service" appears: - - Go to 'Create Wallet', and enter the RP 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 WB) - - Enter the WB at 'Import Wallet' - - Wallet should be recreated and access to funds should be restored. - - -### Multisig wallets - - Case 1: From both RP and WB, full recovery is possible. - - Enter RP 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). - - Point to the new server (Settings -> Advanced -> Wallet Service URL). - - If the wallet is not registered at the new Wallet service, a 'Recreate' button will appear at wallet's home. Click it to recreate the wallet. - - Wallet should be recreated and access to funds should be restored. - - If the wallet existed, it may be necessary to rescan Wallet's addresses for funds (from Settings -> Advanced -> Wallet information -> Scan Addresses for Funds) - - Case 3: Basic recovery is possible using: - - A) RP of all copayers in the wallet - - Enter one RP at Create (at the Advanced option section). Note that the wallet configuration (M-of-N and network paramenters) needs to match the parameters that where entered when the wallet was first created. Wallet name and copayer nicknames need to be entered also, but there is no need for them to match the original wallet setup. - - Ask other copayers to join the wallet using the given invitation code. All copayers need to enter their RP at Join (at -> Advanced Options -> Wallet Seed). - - Wallet should be recreated and access to funds should be restored. - - B) One WB and a quorum of RP of the other members. - - Using the WB, import the wallet. - - Ask other copayers to import the wallet using their RP. - - 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 WB is not longer known by other copayers. - - -### Hardware wallets - -In case hardware based wallet is created and then the hardware device is lost, it is possible, using Copay, to access the funds in case the hardware device seed (mnemonic) is available. - -In order to recover a hardware wallet you need to enter the RP in - Create or the Join wallet -> Advance options -> specify RP. - -You can select the account you need to import and select if the wallet is multisig or not thru the `derivation path`: Copay uses `m/48'` for multisignature hardware wallets, and `m/44'` for all the other wallet types. The format is the following: - - m/XX'/'/ - -For harward wallets, `coin_type` is always `0`. - -For example, if you need to import a non-multisignatured wallet, account 8, you should enter: `m/44'/0'/8'` -Note that TREZOR use 1-based account numbers, so if your are trying for example to recover TREZOR multisig account #8, you should enter `m/48'/0'/7'`. - diff --git a/baseDerivation.md b/baseDerivation.md deleted file mode 100644 index e238e4f4c..000000000 --- a/baseDerivation.md +++ /dev/null @@ -1,28 +0,0 @@ - -Copay accepts three base derivation paths: - - * m/44' - * m/48' (only used for MULTISIGNATURE, HARDWARE Wallets) - * m/45' (deprecated and it is only supported for old wallets) - -Both m/44 and m/48 follow the BIP44 standard: - -m/XX'/'/ - -Supported cointypes are: 0: Livenet, and 1: Testnet - -If you need to import a wallet from a mnemonic using an account different -from the default (0), use, for example: - - m/44'/0'/11' - -to import account 11. - -In case you have a multisignature wallet originally created from a hardware device, and you had loose access to the device, you will need to enter the 24 mnemonic backup (from the device) and a path like: - - - m/48'/0'/8' - -for a multisignature wallet, account 8. - -Finally, note that TREZOR use 1-based account numbers, so if your are trying for example to recover TREZOR multisig account #8, you should enter `m/48'/0'/7'`. diff --git a/bower.json b/bower.json deleted file mode 100644 index 1547d384f..000000000 --- a/bower.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "copay", - "keywords": [ - "copay", - "wallet", - "multisignature", - "bitcore" - ], - "dependencies": { - "angular-mocks": "1.4.10", - "angular-gettext": "2.2.1", - "angular-moment": "0.10.1", - "angular-qrcode": "bitpay/angular-qrcode#~6.3.0", - "ionic": "https://github.com/ionic-team/ionic-v1.git", - "moment": "2.10.3", - "ng-lodash": "0.2.3", - "qrcode-decoder-js": "*", - "trezor-connect": "~1.1.3", - "ng-csv": "~0.3.6", - "ionic-toast": "^0.4.1", - "angular-clipboard": "^1.4.2", - "angular-md5": "^0.1.10", - "ngtouch": "^1.0.1" - }, - "resolutions": { - "angular": "1.5.3", - "ionic": "1b7414faba" - } -} diff --git a/build.json b/build.json deleted file mode 100644 index 921006b10..000000000 --- a/build.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "windows": { - "debug": { - "packageCertificateKeyFile": "platforms\\windows\\CordovaApp_TemporaryKey.pfx" - }, - "release": { - "packageThumbprint": "ABCABCABCABC123123123123", - "publisherId": "CN=F89609D1-EB3E-45FD-A58A-C2E3895FCE7B" - } - } -} \ No newline at end of file diff --git a/chrome-app/Makefile b/chrome-app/Makefile deleted file mode 100644 index 70fc175ff..000000000 --- a/chrome-app/Makefile +++ /dev/null @@ -1,27 +0,0 @@ -# Configs -BUILDDIR=build -ZIPFILE=copay-chrome-extension.zip - -INCLUDE=$(shell cat ./include) -INITIAL=./initial.js -BASE=$(CURDIR) - - -all: $(ZIPFILE) - -dir: - rm -rf $(BUILDDIR) - mkdir -p $(BUILDDIR) - cp manifest.json $(BUILDDIR)/manifest.json - cp -vf $(INITIAL) $(BUILDDIR) - -files: - cd ../www && rsync -rLRv --exclude-from $(BASE)/exclude $(INCLUDE) $(BASE)/$(BUILDDIR) && cd - - cd .. && rsync -rLRv ./bower_components/trezor-connect/chrome/* $(BASE)/$(BUILDDIR)/ && cd - - - -$(ZIPFILE): dir files - cd $(BUILDDIR) - rm -f $(ZIPFILE) - zip -qr $(ZIPFILE) "`basename $(BUILDDIR)`" - @echo "** The Chrome Extension is ready at copay-chrome-extension.zip" diff --git a/chrome-app/exclude b/chrome-app/exclude deleted file mode 100644 index 2d4d75de3..000000000 --- a/chrome-app/exclude +++ /dev/null @@ -1,11 +0,0 @@ -../cordova -../covergae -../bower_components -../browser_extensions -../node_modules -../po -../src -../util -../.git -../test -../.* diff --git a/chrome-app/include b/chrome-app/include deleted file mode 100644 index 22d904fd4..000000000 --- a/chrome-app/include +++ /dev/null @@ -1,10 +0,0 @@ -./index.html -./cordova.js -./css/*.css -./fonts/* -./img/* -./img/**/* -./js/*.js -./lib/*.js -./views/*.html -./views/**/*.html diff --git a/chrome-app/initial.js b/chrome-app/initial.js deleted file mode 100644 index 0ff1298cf..000000000 --- a/chrome-app/initial.js +++ /dev/null @@ -1,8 +0,0 @@ -chrome.app.runtime.onLaunched.addListener(function() { - chrome.app.window.create('index.html', { - 'bounds': { - 'width': 400, - 'height': 600 - } - }); -}); diff --git a/chrome-app/tile.png b/chrome-app/tile.png deleted file mode 100644 index d457fa2bf..000000000 Binary files a/chrome-app/tile.png and /dev/null differ diff --git a/i18n/crowdin_download.js b/i18n/crowdin_download.js deleted file mode 100644 index 61e6f8928..000000000 --- a/i18n/crowdin_download.js +++ /dev/null @@ -1,248 +0,0 @@ -#!/usr/bin/env node - -'use strict'; - -if (process.argv[2]) { - var no_build = (process.argv[2].toLowerCase() == '--nobuild') - if (no_build == false) { - console.log('Incorrect arg. Please use --nobuild if you would like to download without api key.'); - process.exit(1); - }; -} else { - var no_build = false; - console.log('\n' + - 'Please note: If you do not have the crowdin API key and would like to download the ' + - 'translations without building anyways, please make sure your English files are the same ' + - 'version as crowdin, and then run this script with --nobuild\n\n' + - 'eg. "node crowdin_download.js --nobuild"\n\n'); -}; - -var fs = require('fs'); -var path = require('path'); -var https = require('https'); -var AdmZip = require('adm-zip'); - -var crowdin_identifier = 'copay' - -var local_file_name2 = path.join(__dirname, 'docs/appstore_en.txt') -var local_file_name3 = path.join(__dirname, 'docs/updateinfo_en.txt') - -try { - fs.statSync(local_file_name2); - fs.statSync(local_file_name3); -} -catch (e) { - console.log('\n### ABORTING ### One of the following files does not exist:\n' + local_file_name2 + '\n' + local_file_name3); - process.exit(1); -} - -try { - // obtain the crowdin api key - var crowdin_api_key = fs.readFileSync(path.join(__dirname, 'crowdin_api_key.txt'), 'utf8') -} catch (e) { - console.log('### ERROR ### You do not have the crowdin api key in ./crowdin_api_key.txt'); - process.exit(1); -}; - -if (no_build == false) { // Reminder: Any changes to the script below must also be made to the else clause and vice versa. - - // This call will tell the server to generate a new zip file for you based on most recent translations. - https.get('https://api.crowdin.com/api/project/' + crowdin_identifier + '/export?key=' + crowdin_api_key, function(res) { - - console.log('Export Got response: ' + res.statusCode); - - res.on('data', function(chunk) { - var resxml = chunk.toString('utf8'); - console.log(resxml); - - if (resxml.indexOf('status="skipped"') >= 0) { - console.log('Translation build was skipped due to either:\n' + - '1. No changes since last translation build, or\n' + - '2. API limit of once per 30 minutes has not been waited.\n\n' + - 'Since we can not guarantee that translations have been built properly, this script will end here.\n' + - 'Log in to Copay\'s Crowdin Settings and click the "Build Project" button to assure it is built recently, and then run this ' + - 'script again with the --nobuild arg to download translations without checking if built.'); - process.exit(1); - }; - - // Download most recent translations for all languages. - https.get('https://crowdin.com/download/project/' + crowdin_identifier + '.zip', function(res) { - var data = [], dataLen = 0; - - res.on('data', function(chunk) { - data.push(chunk); - dataLen += chunk.length; - }).on('end', function() { - var buf = new Buffer(dataLen); - for (var i=0, len = data.length, pos = 0; i < len; i++) { - data[i].copy(buf, pos); - pos += data[i].length; - }; - var zip = new AdmZip(buf); - zip.extractAllTo('./', true); - console.log('Done extracting ZIP file.'); - - var files = fs.readdirSync('./docs'); - - for (var i in files) { - debugger; - if (files[i].slice(0,9) == 'appstore_' && files[i].slice(-4) == '.txt' && files[i] != 'appstore_en.txt') { - var english_file = fs.readFileSync(local_file_name2, 'utf8'); - var compare_file = fs.readFileSync(path.join(__dirname, 'docs/' + files[i]), 'utf8') - english_file = english_file.replace(/\r\n/g, '\n'); - compare_file = compare_file.replace(/\r\n/g, '\n'); - if (compare_file == english_file) { - fs.unlinkSync(path.join(__dirname, 'docs/' + files[i])); - }; - }; - if (files[i].slice(0,11) == 'updateinfo_' && files[i].slice(-4) == '.txt' && files[i] != 'updateinfo_en.txt') { - var english_file = fs.readFileSync(local_file_name3, 'utf8'); - var compare_file = fs.readFileSync(path.join(__dirname, 'docs/' + files[i]), 'utf8') - english_file = english_file.replace(/\r\n/g, '\n'); - compare_file = compare_file.replace(/\r\n/g, '\n'); - if (compare_file == english_file) { - fs.unlinkSync(path.join(__dirname, 'docs/' + files[i])); - }; - }; - }; - - console.log('Cleaned out completely untranslated appstore docs.'); - - var files = fs.readdirSync('./po'); - - for (var i in files) { - if (files[i] != 'template.pot') { - var po_file = fs.readFileSync(path.join(__dirname, 'po/' + files[i]), 'utf8'); - var po_array = po_file.split('\n'); - for (var j in po_array) { - if (po_array[j].slice(0,5) == 'msgid') { - var source_text = po_array[j].slice(5); - } else if (po_array[j].slice(0,6) == 'msgstr') { - var translate_text = po_array[j].slice(6); - // if a line is not == English, it means there is translation. Keep this file. - if (source_text != translate_text) { - // erase email addresses of last translator for privacy - po_file = po_file.replace(/ <.+@.+\..+>/, '') - fs.writeFileSync(path.join(__dirname, 'po/' + files[i]), po_file); - - // split the file into 3 parts, before locale, locale, and after locale. - var lang_pos = po_file.search('"Language: ') + 11; - var po_start = po_file.slice(0,lang_pos); - var po_locale = po_file.slice(lang_pos,lang_pos + 5); - var po_end = po_file.slice(lang_pos + 5); - - // check for underscore, if it's there, only take the first 2 letters and reconstruct the po file. - if (po_locale.search('_') > 0) { - fs.writeFileSync(path.join(__dirname, 'po/' + files[i]), po_start + po_locale.slice(0,2) + po_end); - po_start = ''; - po_locale = ''; - po_end = ''; - }; - break; - }; - }; - if (j == po_array.length - 1) { // All strings are exactly identical to English. Delete po file. - fs.unlinkSync(path.join(__dirname, 'po/' + files[i])); - }; - }; - }; - }; - - console.log('Cleaned out completely untranslated po files.'); - - }); - }); - }); - }).on('error', function(e) { - console.log('Export Got error: ' + e.message); - }); - -} else { // Reminder: Any changes to the script below must also be made to the above and vice versa. - - // Download most recent translations for all languages. - https.get('https://api.crowdin.com/api/project/' + crowdin_identifier + '/download/all.zip?key=' + crowdin_api_key, function(res) { - var data = [], dataLen = 0; - - res.on('data', function(chunk) { - data.push(chunk); - dataLen += chunk.length; - }).on('end', function() { - var buf = new Buffer(dataLen); - for (var i=0, len = data.length, pos = 0; i < len; i++) { - data[i].copy(buf, pos); - pos += data[i].length; - }; - var zip = new AdmZip(buf); - zip.extractAllTo('./', true); - console.log('Done extracting ZIP file.'); - - var files = fs.readdirSync('./docs'); - - for (var i in files) { - if (files[i].slice(0,9) == 'appstore_' && files[i].slice(-4) == '.txt' && files[i] != 'appstore_en.txt') { - var english_file = fs.readFileSync(local_file_name2, 'utf8'); - var compare_file = fs.readFileSync(path.join(__dirname, 'docs/' + files[i]), 'utf8') - english_file = english_file.replace(/\r\n/g, '\n'); - compare_file = compare_file.replace(/\r\n/g, '\n'); - if (compare_file == english_file) { - fs.unlinkSync(path.join(__dirname, 'docs/' + files[i])); - }; - }; - if (files[i].slice(0,11) == 'updateinfo_' && files[i].slice(-4) == '.txt' && files[i] != 'updateinfo_en.txt') { - var english_file = fs.readFileSync(local_file_name3, 'utf8'); - var compare_file = fs.readFileSync(path.join(__dirname, 'docs/' + files[i]), 'utf8') - english_file = english_file.replace(/\r\n/g, '\n'); - compare_file = compare_file.replace(/\r\n/g, '\n'); - if (compare_file == english_file) { - fs.unlinkSync(path.join(__dirname, 'docs/' + files[i])); - }; - }; - }; - - console.log('Cleaned out completely untranslated appstore docs.'); - - var files = fs.readdirSync('./po'); - - for (var i in files) { - if (files[i] != 'template.pot') { - var po_file = fs.readFileSync(path.join(__dirname, 'po/' + files[i]), 'utf8'); - var po_array = po_file.split('\n'); - for (var j in po_array) { - if (po_array[j].slice(0,5) == 'msgid') { - var source_text = po_array[j].slice(5); - } else if (po_array[j].slice(0,6) == 'msgstr') { - var translate_text = po_array[j].slice(6); - // if a line is not == English, it means there is translation. Keep this file. - if (source_text != translate_text) { - // erase email addresses of last translator for privacy - po_file = po_file.replace(/ <.+@.+\..+>/, '') - fs.writeFileSync(path.join(__dirname, 'po/' + files[i]), po_file); - - // split the file into 3 parts, before locale, locale, and after locale. - var lang_pos = po_file.search('"Language: ') + 11; - var po_start = po_file.slice(0,lang_pos); - var po_locale = po_file.slice(lang_pos,lang_pos + 5); - var po_end = po_file.slice(lang_pos + 5); - - // check for underscore, if it's there, only take the first 2 letters and reconstruct the po file. - if (po_locale.search('_') > 0) { - fs.writeFileSync(path.join(__dirname, 'po/' + files[i]), po_start + po_locale.slice(0,2) + po_end); - po_start = ''; - po_locale = ''; - po_end = ''; - }; - break; - }; - }; - if (j == po_array.length - 1) { // All strings are exactly identical to English. Delete po file. - fs.unlinkSync(path.join(__dirname, 'po/' + files[i])); - }; - }; - }; - }; - - console.log('Cleaned out completely untranslated po files.'); - - }); - }); -}; diff --git a/i18n/crowdin_update.js b/i18n/crowdin_update.js deleted file mode 100644 index b69d276ec..000000000 --- a/i18n/crowdin_update.js +++ /dev/null @@ -1,67 +0,0 @@ -#!/usr/bin/env node - -'use strict'; - -var fs = require('fs'); -var path = require('path'); -var https = require('https'); -var bhttp = require('bhttp'); - -var crowdin_identifier = 'copay' - -var local_file_name1 = path.join(__dirname, 'po/template.pot') - -// Similar to Github, normalize all line breaks to CRLF so that different people -// using different OSes to update does not constantly swith format back and forth. -var local_file1_text = fs.readFileSync(local_file_name1, 'utf8'); -local_file1_text = local_file1_text.replace(/\r\n/g, '\n'); -local_file1_text = local_file1_text.replace(/\n/g, '\r\n'); -fs.writeFileSync(local_file_name1, local_file1_text); - -var local_file1 = fs.createReadStream(local_file_name1) - -var local_file_name2 = path.join(__dirname, 'docs/appstore_en.txt') - -var local_file2_text = fs.readFileSync(local_file_name2, 'utf8'); -local_file2_text = local_file2_text.replace(/\r\n/g, '\n'); -local_file2_text = local_file2_text.replace(/\n/g, '\r\n'); -fs.writeFileSync(local_file_name2, local_file2_text); - -var local_file2 = fs.createReadStream(local_file_name2) - -var local_file_name3 = path.join(__dirname, 'docs/updateinfo_en.txt') - -var local_file3_text = fs.readFileSync(local_file_name3, 'utf8'); -local_file3_text = local_file3_text.replace(/\r\n/g, '\n'); -local_file3_text = local_file3_text.replace(/\n/g, '\r\n'); -fs.writeFileSync(local_file_name3, local_file3_text); - -var local_file3 = fs.createReadStream(local_file_name3) - -// obtain the crowdin api key -var crowdin_api_key = fs.readFileSync(path.join(__dirname, 'crowdin_api_key.txt')) - //console.log('api key: ' + crowdin_api_key); - -if (crowdin_api_key != '') { - - var payload = { - 'files[template.pot]': local_file1, - 'files[appstore/appstore_en.txt]': local_file2, - 'files[appstore/updateinfo_en.txt]': local_file3 - }; - - bhttp.post('https://api.crowdin.com/api/project/' + crowdin_identifier + '/update-file?key=' + crowdin_api_key, payload, {}, function(err, response) { - if (!err) console.log('\nResponse from update file call:\n', response.body.toString()); - else console.log('\nError from update file call:\n', err.toString()); - - // This call will tell the server to generate a new zip file for you based on most recent translations. - https.get('https://api.crowdin.com/api/project/' + crowdin_identifier + '/export?key=' + crowdin_api_key, function(res) { - console.log('Export Got response: ' + res.statusCode); - res.on('data', function(chunk) { - console.log(chunk.toString('utf8')); - }); - }).on('error', function(e) { - console.log('Export Got error: ' + e.message); - }); - }) -}; diff --git a/i18n/docs/appstore_de.txt b/i18n/docs/appstore_de.txt deleted file mode 100644 index c023f338c..000000000 --- a/i18n/docs/appstore_de.txt +++ /dev/null @@ -1,23 +0,0 @@ -Sichere Bitcoins zu eigenen Bedingungen, mit einem quelloffenen Gemeinschaftswallet (elektronische Brieftasche mit Mehrfachunterschriften) von BitPay. -Copay Nutzer können ihre Beträge individuell speichern oder ihre Finanzen mit anderen Nutzern in Gemeinschaftswallets teilen, die je nach Einstellung mehrere Bestätigungen (elektronische Unterschriften) benötigen und so nichtautorisierte Zahlungen verhindern. Ein paar Einsatzmöglichkeiten, wie ein solches Wallet mit anderen Copayern genutzt werden kann: - -Ansparen von Beträgen für Urlaub oder gemeinsame Anschaffungen (z.B. mit Freunden) -Überwachung von Ausgaben und Einkünften der Familie. -Organisation der Ausgaben in Firmen, Vereinen oder Organisationen. - -Folgende Funktionen wurden in diese Version von Copay eingebaut um ein Bitcoin Wallet anzubieten, das keine Kompromisse in Sicherheit oder Zugänglichkeit eingeht: - -Anlage und Verwaltung von mehreren Wallets innerhalb der Anwendung -Intiutive mehrfachunterschriften Sicherheit für persönliche und geteilete Wallets -Einfache Ausgabenvorschläge für geteilte Walltes und Gruppenzahlungen -Hierarchische deterministische(HD) Adresserzeugung und Sicherung der Wallets -Gerätebasierte Sicherheit: Alle privaten Schlüssel werden auf dem Gerät und nicht in der Cloud gespreichert -Unterstützung von Bitcoin Testnet Wallets -Gleichzeitiger Zugriff über alle wichtigen mobilen Systeme und Desktop-Plattformen -Zahlungsprotokoll (BIP70-BIP73) Unterstützung: Leicht identifizierbare Zahlungsanforderungen und nachvollziehbare sichere Bitcoinzahlungen. -Unterstützung von 150+ verschiedenen Währungen und Stückelung in BTC oder bits -E-Mail Benachrichtigung für Zahlungen und Transaktionen -Anpasspare Wallets: Eigene Namen und Hintergrundfarben -Unterstützung von 9 Sprachen (EN, CS, FR, DE, IT, ES, JA, PL, RU) - -Copay ist eine kostenlose und quelloffene Software, die auf nicht firmeneigenen Servern läuft und es somit nicht nötig ist, sich auf ein bestimmtes Unternehmen und dessen kontinuierliche Unterstützung zu verlassen. Jeder hat die Möglichkeit den Quelltext zu überprüfen oder auf GitHub (https://github.com/bitpay/copay) eigene Änderungen beizutragen und an der Weiterentwicklung mitzuwirken. diff --git a/i18n/docs/appstore_en.txt b/i18n/docs/appstore_en.txt deleted file mode 100644 index bdcad6673..000000000 --- a/i18n/docs/appstore_en.txt +++ /dev/null @@ -1,23 +0,0 @@ -Secure bitcoin on your own terms with an open source, multisignature wallet from BitPay. -Copay users can hold funds individually or share finances securely with other users with multisignature wallets, which prevent unauthorized payments by requiring multiple approvals. Here are some ways Copay can be used with others: - -To save for vacations or joint purchases with friends -To track family spending and allowances -To manage business, club, or organization funds and expenses - -We built the following features into this version of Copay for a bitcoin wallet that doesn't compromise on security or accessibility: - -Multiple wallet creation and management in-app -Intuitive multisignature security for personal or shared wallets -Easy spending proposal flow for shared wallets and group payments -Hierarchical deterministic (HD) address generation and wallet backups -Device-based security: all private keys are stored locally, not in the cloud -Support for Bitcoin testnet wallets -Synchronous access across all major mobile and desktop platforms -Payment protocol (BIP70-BIP73) support: easily-identifiable payment requests and verifiably secure bitcoin payments -Support for 150+ currency pricing options and unit denomination in BTC or bits -Email notifications for payments and transfers -Customizable wallet naming and background colors -9 supported languages (EN, CS, FR, DE, IT, ES, JA, PL, RU) - -Copay is free and open source software run on non-proprietary servers, so there's no need to rely on any company for continuous support. Anyone can review or contribute to Copay's source code on GitHub (https://github.com/bitpay/copay). diff --git a/i18n/docs/appstore_es.txt b/i18n/docs/appstore_es.txt deleted file mode 100644 index a6c21a287..000000000 --- a/i18n/docs/appstore_es.txt +++ /dev/null @@ -1,23 +0,0 @@ -Asegura tus bitcoin con tus propias reglas con el monedero de código abierto, multifirma de BitPay. -Los usuario de Copay pueden mantener sus fondos individuales o compartir sus finanzas de forma segura con otros usuarios utilizando monederos multifirmas, que previenen de pagos sin autorización al requerir múltiples aprobaciones. Estas son algunas formas en que puede ser utilizado Copay con otros usuarios: - -Ahorrar para vacaciones o compras conjuntas con amigos -Controlar los gastos familiares -Manejar los fondos y gastos de negocios, clubes y organizaciones. - -Construimos las siguientes características en esta versión de Copay que no compromete la seguridad ni la accesibilidad: - -Creación y manejo de múltiples monederos dentro de la misma aplicación -Seguridad multifirma intuitiva para monederos personales y compartidos -Sencillo flujo de propuesta de gastos para monederos compartidos y grupos de pagos -Generación de direcciones HD (Hierarchical deterministic) y copias de seguridad -Seguridad basada en el dispositivo: todas las claves privadas se guardan localmente, no en la nube -Soporta monederos bitcoin en testnet -Acceso sincrónico desde las principales plataformas móviles y de escritorio -Soporte al protocolo de pago (BIP70-BIP73): solicitudes de pagos fácilmente identificable y verificables como pago seguro en bitcoin -Soporte a más de 150 precios de monedas y unidades de denominación en BTC o bits -Notificaciones por email de pagos y transferencias -Monederos con nombres y colores de fondo personalizables -Soporte en 9 idiomas (EN, CS, FR, DE, IT, ES, JA, PL, RU) - -Copay es un software gratuito y de código abierto que funciona en servidores no-propietarios, por lo que no es necesario confiar en una empresa para soporte continuo. Cualquier persona puede revisar y contribuir al código fuente de Copay en GitHub (https://github.com/bitpay/copay). diff --git a/i18n/docs/appstore_fr.txt b/i18n/docs/appstore_fr.txt deleted file mode 100644 index ee6ef4bc1..000000000 --- a/i18n/docs/appstore_fr.txt +++ /dev/null @@ -1,23 +0,0 @@ -Sécurisez vos bitcoins selon vos conditions avec un portefeuille open source et multi-signatures par BitPay. -Les utilisateurs de Copay peuvent détenir leurs fonds de manière individuelle, ou partager leurs finances de manière sécurisée avec les autres utilisateurs en utilisant des portefeuilles multi-signatures, ce qui empêche les paiements non autorisés en exigeant des approbations multiples. Voici quelques exemples d'utilisation que vous pouvez avoir avec Copay et avec d'autres utilisateurs : - -• Économiser pour des vacances ou partager des frais avec des amis. -• Suivre des dépenses et remboursements familiaux. -• Gérer des fonds et des dépenses pour une entreprise, un club ou une organisation. - -Nous avons développé les fonctionnalités suivantes dans cette version de Copay pour un portefeuille bitcoin qui ne fait pas de compromis sur la sécurité ou sur l'accessibilité : - -• Création et gestion de portefeuilles multiples. -• Sécurité de multi-signatures intuitive pour les portefeuilles personnels ou partagés. -• Demande de paiement facile pour les portefeuilles partagés et pour les paiements de groupe. -• Génération d'adresse déterministe hiérarchique (HD) et sauvegardes de portefeuilles. -• Sécurité basée sur l'appareil : toutes les clés privées sont stockées localement, pas dans le cloud. -• Prise en charge des portefeuilles bitcoin testnet. -• Accès synchrone sur toutes les principales plateformes mobiles et de bureau. -• Prise en charge de Payment protocol (BIP70-BIP73) : demandes de paiement facilement identifiables et paiements bitcoins sécurisés et vérifiables. -• Prise en charge de plus de 150 devises et dénomination d'unité en BTC ou en bits. -• Notifications e-mail pour les paiements et les transferts. -• Nom de portefeuille et couleurs de fond personnalisables. -• 9 langues prises en charge (EN, CS, FR, DE, IT, ES, JA, PL, RU) - -Copay est un logiciel gratuit et open source qui tourne sur des serveurs non-propriétaires, il n'y a donc pas besoin de compter sur une entreprise pour un support continuel. N'importe qui peut examiner ou contribuer au code source de Copay sur GitHub (https://github.com/bitpay/copay). diff --git a/i18n/docs/appstore_it.txt b/i18n/docs/appstore_it.txt deleted file mode 100644 index e96d5b20e..000000000 --- a/i18n/docs/appstore_it.txt +++ /dev/null @@ -1,23 +0,0 @@ -Metti al sicuro i tuoi bitcoins, alle tue condizioni, con un portafoglio open source e multifirma realizzato da BitPay. -Gli utenti Copay possono gestire i propri fondi individualmente, o condividerli in maniera sicura con altri utenti grazie ai portafogli multifirma, che prevengono pagamenti non autorizzati richiedendo più approvazioni. Ecco alcuni modi per utilizzare Copay con altre persone: - -Per rismarmiare soldi per le vacanze o per acquisti congiunti con gli amici -Per tenere traccia di spese familiari o indennità -Per gestire i fondi e le spese di aziende, club, or organizzazioni - -In questa versione di Copay abbiamo realizzato le seguenti funzioni per un portafoglio bitcoin che non comprometta sicurezza o accessibilità: - -Creazione e gestione integrata di portafogli multipli -Sicurezza multifirma intuitiva per portafogli personali o condivisi -Proposte di pagamento facili da iniziare per portafogli condivisi e pagamenti di gruppo -Generazione di portafogli gerarchici deterministici (HD) e funzionalità di backup -Sicurezza integrata nel dispositivo: tutte le chiave private sono memorizzate localmente, non nel cloud -Supporto per portafogli della testnet Bitcoin -Accesso sincrono in tutte le piattaforme mobile e desktop -Supporto per il protocollo di pagamento (BIP70-BIP73): richieste di pagamento facilmente identificabili e pagamenti bitcoin sicuri e verificabili -Supporto per 150+ valute e denominazione in BTC o bits -Notifiche email per pagamenti o trasferimenti -Colori di sfondo e nomi dei portafogli personalizzabli -9 lingue supportate (EN, CS, FR, DE, IT, ES, JA, PL, RU) - -Copay è un software gratuito e open source che non dipende da server proprietari, pertanto il supporto del software non dipende da nessuna azienda. Chiunque può rivedere o contribuire al codice sorgente di Copay su GitHub (https://github.com/bitpay/copay). diff --git a/i18n/docs/appstore_ja.txt b/i18n/docs/appstore_ja.txt deleted file mode 100644 index d9b012456..000000000 --- a/i18n/docs/appstore_ja.txt +++ /dev/null @@ -1,23 +0,0 @@ -ビットコインにおける高度なセキュリティーを手軽に扱えるオープンソースマルチシグネチャウォレットです。 -Copayは個人のご利用はもちろんのこと、複数人によるウォレット管理の権限分散も簡単なウォレットソフトを通してご活用いただけます。 例えば: - -友達との旅行や買い物のために透明性抜群の環境で貯蓄したい時 -家族のお小遣いや日常の家計簿管理がしたい時 -ビジネス・クラブ・団体の資金や財産管理を透明な管理分散がしたい時 - -下記の機能でセキュリティーも利便性も妥協しない最高のウォレットをCopayでご提供させていただきました: - -■ 複数のウォレットの作成・管理がアプリ内で管理可能 -■ マルチシグネチャのウォレット分散管理でも個人ウォレットでも使いやすさ抜群 -■ 送金の提案・承認・却下の流れが非常に直感的で分散管理が簡単 -■ 階級的決定性ウォレット(HDウォレット)でアドレス生成とバックアップ管理をしているためバックアップは永久に各参加者1回ずつのみ -■ 端末に依存するセキュリティー、秘密鍵が全て端末に保管され、サーバに送ることは無い -■ ビットコインの開発テスト用ネットワークにも対応 -■ メジャーなプラットフォーム全てに対応 (Windows, Mac, Linux, Android, iPhone, Windows Phone) -■ ペイメントプロトコルにも対応(BIP 70-73)、暗号通信と証明書を使ったマーチャントとの安全なペイメントの実現 -■ 世界中の150個以上の通貨の表示に対応、自国通貨との為替レートを計算する必要なし。ビットコインの単位も BTC と bits にも対応 -■ ペイメントや提案のメール通知も可能 -■ ウォレットごとの背景色設定や通称設定も可能でカスタマイズ性抜群 -■ 9ヶ国語対応 (英日仏西伊独捷葡露) - -Copayは永久無料でオープンソースのソフトです。サーバーもオープンソースなので、独自運用や法人の利用やソース流用は許可します。 ソースをご覧の際に間違いなどが見つかった場合、Githubにてご報告・ソース修正のプルリクエストなどをお願いします。(https://github.com/bitpay/copay) diff --git a/i18n/docs/appstore_pl.txt b/i18n/docs/appstore_pl.txt deleted file mode 100644 index daa31e7e8..000000000 --- a/i18n/docs/appstore_pl.txt +++ /dev/null @@ -1,23 +0,0 @@ -Bezpieczne bitcoiny na twoich własnych warunkach, z elektronicznym portfelem open source z multipodpisami od BitPay. -Użytkownicy Copay mogą posiadać fundusze indywidualnie lub bezpiecznie dzielić je z innymi użytkownikami w portfelach z multipodpisami, które uniemożliwiają nieautoryzowane płatności wymagając wielu potwierdzeń. Oto kilka sposobów, jak portfele Copay mogą być używane w połączeniu z innymi użytkownikami: - -Oszczędzanie na wakacje lub wspólne zakupy z przyjaciółmi -Monitorowanie wydatków i dochodów rodzinnych -Zarządzanie wydatkami firm, klubów lub organizacji - -Stworzyliśmy następujące funkcje portfela bitcoin w tej wersji Copay, które nie zagrażają bezpieczeństwu lub dostępności: - -Tworzenie i zarządzanie wieloma portfelami w aplikacji -Intuicyjne bezpieczeństwo dzięki multipodpisom dla portfeli prywatnych i współdzielonych -Proste zlecenia płatności dla współdzielonych portfeli i płatności grupowych -Protokół HD (Hierarchical deterministic) do generowania adresów i kopii zapasowych portfela -Zabezpieczenia: wszystkie klucze prywatne przechowywane lokalnie, a nie w chmurze -Wsparcie dla Bitcoin testnet wallets -Jednoczesny dostęp ze wszystkich głównych platform mobilnych i stacjonarnych -Wsparcie protokołów płatności (BIP70-BIP73): łatwe do zidentyfikowania wnioski o płatność i bezpieczne, weryfikowalne płatności bitcoin -Wsparcie dla wyświetlania ponad 150 walut w jednostkach BTC lub bit -Powiadomienia o płatnościach i transferach za pośrednictwem poczty elektronicznej -Konfigurowanie nazwy i koloru tła portfela -9 obsługiwanych języków (EN, CS, FR, DE, IT, ES, JA, PL, RU) - -Copay jest bezpłatnym oprogramowaniem open source, które działa na niezastrzeżonych serwerach, nie jest zatem konieczne, aby opierać się na konkretnej firmie w celu jego dalszego wsparcia. Każdy ma możliwość sprawdzenia kodu źródłowego i zgłoszenia propozycji zmian w Copay na GitHub (https://github.com/bitpay/copay). diff --git a/i18n/docs/appstore_pt.txt b/i18n/docs/appstore_pt.txt deleted file mode 100644 index b29564823..000000000 --- a/i18n/docs/appstore_pt.txt +++ /dev/null @@ -1,23 +0,0 @@ -Armazene bitcoin com seus próprios termos com uma carteira de multi-assinaturas, open source, do BitPay. -Usuários Copay podem manter fundos individualmente ou compartilhar finanças seguramente com outros usuários por meio de carteiras multi-assinadas, que previnem pagamentos não autorizados por meio de múltiplas aprovações. Algumas formas que a Copay pode ser usada com outros: - -Para economizar para férias ou juntar compras com amigos -Para rastrear despesas familiares e descontos -Para gerenciar negócios, clube ou organizar saldos e despesas - -Nós construímos as seguintes funcionalidades nesta versão da Copay para uma carteira bitcoin que não comprometa segurança ou acessibilidade: - -Criação de múltiplas carteiras com gerenciamento no aplicativo -Segurança de multi-assinaturas intuitiva para carteiras pessoais ou compartilhadas -Fácil fluxo de propostas de gastos para carteiras compartilhadas e pagamentos agrupados -Geração de endereço Hierarchical deterministic (HD) e backups de carteiras -Segurança baseada em dispositivo: todas as chaves privadas são armazenadas localmente e não na nuvem -Suporte para carteiras de testes na Bitcoin testnet -Acesso síncrono entre todas as principais plataformas móveis e desktops -Suporte a protocolo de pagamento (BIP70-BIP73): solicitações de pagamento facilmente identificadas e pagamentos seguros em bitcoins verificáveis -Suporte para mais de 150 opções de moedas e denominação de unidades em BTC ou bits -Notificações por e-mail para pagamentos e transferências -Nomes e cores de fundo customizáveis para carteiras -9 idiomas suportados (EN, CS, FR, DE, IT, ES, JA, PL, RU) - -Copay é gratuito e um software livre rodando em servidores não-proprietários, que não precisa de nenhuma empresa para o suporte contínuo. Qualquer um pode revisar ou contribuir para o código-fonte da Copay no GitHub (https://github.com/bitpay/copay). diff --git a/i18n/docs/appstore_ru.txt b/i18n/docs/appstore_ru.txt deleted file mode 100644 index a994845a9..000000000 --- a/i18n/docs/appstore_ru.txt +++ /dev/null @@ -1,23 +0,0 @@ -Обезопасьте биткойны на своих условиях кошельком от BitPay с открытым исходным кодом и мультиподписью. -Пользователи Copay могут хранить средства самостоятельно или безопасно управлять средствами совместно с помощью кошельков с мультиподписью, которые предотвращают несанкционированный платежи, требуя несколько одобрений. Вот некоторые способы того, как Copay может быть использован совместно: - -Накопить на отпуск или совершать покупки вместе с друзьями -Отслеживать семейные траты и карманные деньги -Управлять средствами и расходами бизнеса, клуба, или организации - -Мы встроили следующие функции в эту версию Copay - биткойн-кошелька, который не идёт на компромиссы в отношении безопасности или доступности: - -Создание и управление множеством кошельков внутри приложения -Интуитивно-понятная реализация мультиподписи, для большей безопасности личных или совместных кошельков -Легкий процесс трат в совместных кошельках и для групповых платежей -Иерархически-детерминированная (HD) генерация адресов и бэкакоп кошельков -Безопасность на основе устройств: все закрытые ключи хранятся локально, а не в облаке -Поддержка кошельков Bitcoin testnet -Синхронный доступ со всех основных мобильных и настольных платформ -Поддержка платежных протоколов (BIP70-BIP73): легко идентифицируемые платежные запросы и проверяемо-безопасные биткойн-платежи -Поддержка отображения баланса в более чем 150 валютах, а так же поддержка деноминирования в BTC или bits -Уведомления о платежах и переводах по email -Настраиваемые названия и фоновые цвета кошельков -9 поддерживаемых языков (EN, CS, FR, DE, IT, ES, JA, PL, RU) - -Copay бесплатен и является программным обеспечением с открытым исходным кодом, запускаемым на не-проприетарных серверах, поэтому нет необходимости полагаться на какую-либо компанию и её постоянную поддержку. Любой может просмотреть и сделать предложение по изменению исходного кода Copay на GitHub (https://github.com/bitpay/copay). diff --git a/i18n/docs/appstore_zh.txt b/i18n/docs/appstore_zh.txt deleted file mode 100644 index ba192ca09..000000000 --- a/i18n/docs/appstore_zh.txt +++ /dev/null @@ -1,23 +0,0 @@ -采用 BitPay 开放源码的多重签名钱包,根据自己的条件保管比特币。 -Copay 户可以单独保管资金或与通过使用多重签名钱包与其他用户一起安全共同保管财政,由于需要多个用户批准,因此可防止未经授权的付款。 以下是 Copay 可与其他人共同使用的方法: - -与好友为假期旅游而储蓄或一起购物 -跟踪家庭开支和津贴 -可用来管理商务,团体,或集团的收支 - -我们在此版本的 Copay 建立以下功能,使 Copay 钱包从不妥协于安全性和可访问性: - -应用程序的多个钱包创建和管理 -个人或共享钱包的直观多重签名安全 -共享钱包和团体支付简单易用 -分层确定性(HD)地址生成和钱包备份 -基于设备的安全:所有私钥都存储在本地,而不是在云中 -支持 testnet 比特币钱包 -支持所有主要移动端和桌面平台的同步访问 -支持支付协议(BIP70-BIP73):容易辨认的付款请求和可验证的安全比特币支付 -支持 150 + 货币定价及比特币的面值单位 -电子邮件通知比特币的支付和转移 -可自定义的钱包名和背景颜色 -支持 9 种语言 (EN, CS, FR, DE, IT, ES, JA, PL, RU) - -Copay 是自由和开放源码软件,在非专有服务器上运行,因此无需依靠任何公司以提供永续支持。 任何人都可以查看或对位于 GitHub (https://github.com/bitpay/copay) 的 Copay 源代码作出贡献。 diff --git a/i18n/docs/updateinfo_de.txt b/i18n/docs/updateinfo_de.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/i18n/docs/updateinfo_en.txt b/i18n/docs/updateinfo_en.txt deleted file mode 100644 index 8b1378917..000000000 --- a/i18n/docs/updateinfo_en.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/i18n/docs/updateinfo_es.txt b/i18n/docs/updateinfo_es.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/i18n/docs/updateinfo_fr.txt b/i18n/docs/updateinfo_fr.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/i18n/docs/updateinfo_it.txt b/i18n/docs/updateinfo_it.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/i18n/docs/updateinfo_ja.txt b/i18n/docs/updateinfo_ja.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/i18n/docs/updateinfo_pl.txt b/i18n/docs/updateinfo_pl.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/i18n/docs/updateinfo_pt.txt b/i18n/docs/updateinfo_pt.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/i18n/docs/updateinfo_ru.txt b/i18n/docs/updateinfo_ru.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/i18n/docs/updateinfo_zh.txt b/i18n/docs/updateinfo_zh.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/i18n/po/de.po b/i18n/po/de.po deleted file mode 100644 index dddbd89c1..000000000 --- a/i18n/po/de.po +++ /dev/null @@ -1,3359 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Project-Id-Version: copay\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: crowdin.com\n" -"X-Crowdin-Project: copay\n" -"X-Crowdin-Language: de\n" -"X-Crowdin-File: template.pot\n" -"Last-Translator: cmgustavo83\n" -"Language-Team: German\n" -"Language: de\n" -"PO-Revision-Date: 2017-07-18 13:18-0400\n" - -#: www/views/modals/paypro.html:34 -msgid "(Trusted)" -msgstr "(Vertraut)" - -#: www/views/includes/txp.html:23 -#: www/views/includes/walletHistory.html:64 -msgid "(possible double spend)" -msgstr "(mögliche Doppelausgabe)" - -#: www/views/modals/txp-details.html:161 -msgid "* A payment proposal can be deleted if 1) you are the creator, and no other copayer has signed, or 2) 24 hours have passed since the proposal was created." -msgstr "* Ein Zahlungsvorschlag kann gelöscht werden, wenn 1) Du diesen erzeugt hast und noch kein anderer Copayer unterschrieben hat, oder 2) 24 Stunden vergangen sind, seit der Vorschlag erstellt wurde." - -#: www/views/tx-details.html:84 -msgid "- {{btx.feeRateStr}} of the transaction" -msgstr "- {{btx.feeRateStr}}ของธุรกรรม" - -#: www/views/modals/txp-details.html:104 -msgid "- {{tx.feeRateStr}} of the transaction" -msgstr "" - -#: www/views/feedback/rateApp.html:7 -msgid "5-star ratings help us get {{appName}} into more hands, and more users means more resources can be committed to the app!" -msgstr "Eine 5-Sterne Bewertung hilft uns, {{appName}} unter die Leute zu bringen. Und mehr Nutzer bedeuten, dass uns mehr Ressourcen für die App-Entwicklung zur Verfügung stehen!" - -#: src/js/controllers/feedback/send.js:27 -#: www/views/feedback/complete.html:21 -msgid "A member of the team will review your feedback as soon as possible." -msgstr "Ein Mitarbeiter wird Ihr Feedback so bald wie möglich überprüfen." - -#: src/js/controllers/confirm.js:351 -msgid "A total of {{amountAboveMaxSizeStr}} were excluded. The maximum size allowed for a transaction was exceeded." -msgstr "Insgesamt wurden {{amountAboveMaxSizeStr}} ausgeschlossen. Die maximale Größe für eine Transaktion wurde überschritten." - -#: src/js/controllers/confirm.js:345 -msgid "A total of {{amountBelowFeeStr}} were excluded. These funds come from UTXOs smaller than the network fee provided." -msgstr "Insgesamt wurden {{amountBelowFeeStr}} ausgeschlossen. Diese Gelder stammen aus UTXOs, die kleiner sind als die Netzwerkgebühr." - -#: src/js/controllers/preferencesAbout.js:6 -#: www/views/tab-settings.html:156 -msgid "About" -msgstr "Über" - -#: src/js/controllers/modals/txpDetails.js:56 -#: src/js/controllers/tx-details.js:62 -msgid "Accepted" -msgstr "Akzeptiert" - -#: www/views/preferencesInformation.html:66 -msgid "Account" -msgstr "Benutzerkonto" - -#: www/views/join.html:69 -#: www/views/tab-create-personal.html:43 -#: www/views/tab-create-shared.html:72 -#: www/views/tab-import-hardware.html:19 -msgid "Account Number" -msgstr "Kontonummer" - -#: www/views/preferencesBitpayServices.html:23 -msgid "Accounts" -msgstr "Konten" - -#: www/views/bitpayCard.html:56 -msgid "Activity" -msgstr "Aktivität" - -#: src/js/services/bitpayAccountService.js:83 -msgid "Add Account" -msgstr "Konto hinzufügen" - -#: src/js/services/bitpayAccountService.js:69 -msgid "Add BitPay Account?" -msgstr "BitPay-Konto hinzufügen?" - -#: www/views/addressbook.add.html:4 -#: www/views/addressbook.html:22 -msgid "Add Contact" -msgstr "Kontakt hinzufügen" - -#: www/views/bitpayCard.html:28 -msgid "Add Funds" -msgstr "Guthaben aufladen" - -#: www/views/confirm.html:96 -msgid "Add Memo" -msgstr "Notiz hinzufügen" - -#: www/views/join.html:84 -#: www/views/tab-create-personal.html:57 -#: www/views/tab-create-shared.html:86 -msgid "Add a password" -msgstr "Passwort festlegen" - -#: www/views/includes/accountSelector.html:27 -msgid "Add account" -msgstr "Konto hinzufügen" - -#: www/views/join.html:87 -#: www/views/tab-create-personal.html:60 -#: www/views/tab-create-shared.html:89 -msgid "Add an optional password to secure the recovery phrase" -msgstr "Ein optionales Passwort zur Sicherung der Wiederherstellungsphrase hinzufügen" - -#: www/views/includes/incomingDataMenu.html:41 -msgid "Add as a contact" -msgstr "" - -#: src/js/controllers/confirm.js:374 -msgid "Add description" -msgstr "Beschreibung hinzufügen" - -#: www/views/topup.html:6 -msgid "Add funds" -msgstr "" - -#: src/js/services/bitpayAccountService.js:78 -msgid "Add this BitPay account ({{email}})?" -msgstr "" - -#: www/views/add.html:3 -msgid "Add wallet" -msgstr "Wallet hinzufügen" - -#: www/views/addressbook.view.html:26 -#: www/views/customAmount.html:28 -#: www/views/modals/paypro.html:24 -msgid "Address" -msgstr "Adresse" - -#: www/views/addressbook.html:6 -#: www/views/tab-settings.html:13 -msgid "Address Book" -msgstr "Addressbuch" - -#: www/views/preferencesInformation.html:35 -msgid "Address Type" -msgstr "Adresstyp" - -#: www/views/addresses.html:64 -msgid "Addresses With Balance" -msgstr "Adressen mit Guthaben" - -#: www/views/tab-settings.html:149 -msgid "Advanced" -msgstr "Erweitert" - -#: www/views/advancedSettings.html:3 -msgid "Advanced Settings" -msgstr "Erweiterte Einstellungen" - -#: www/views/bitpayCard.html:62 -msgid "All" -msgstr "Alle" - -#: www/views/allAddresses.html:3 -msgid "All Addresses" -msgstr "Alle Adressen" - -#: www/views/modals/wallet-balance.html:18 -msgid "All of your bitcoin wallet balance may not be available for immediate spending." -msgstr "Möglicherweise kann nicht ihr gesamtes Bitcoin Guthaben sofort ausgegeben werden." - -#: www/views/tab-receive.html:25 -msgid "All signing devices must be added to this multisig wallet before bitcoin addresses can be created." -msgstr "Alle unterzeichnenden Geräte müssen zu dieser Multi-Signatur Wallet hinzugefügt werden, bevor Bitcoin-Adressen erstellt werden können." - -#: www/views/tab-scan.html:21 -msgid "Allow Camera Access" -msgstr "Kamerazugriff erlauben" - -#: www/views/onboarding/notifications.html:7 -msgid "Allow notifications" -msgstr "Benachrichtigungen erlauben" - -#: www/views/onboarding/disclaimer.html:14 -msgid "Almost done! Let's review." -msgstr "Fast fertig! Fassen wir zusammen." - -#: www/views/preferencesAltCurrency.html:4 -#: www/views/tab-settings.html:74 -msgid "Alternative Currency" -msgstr "Alternative Währung" - -#: src/js/controllers/buyAmazon.js:97 -msgid "Amazon.com is not available at this moment. Please try back later." -msgstr "" - -#: www/views/amount.html:44 -#: www/views/customAmount.html:34 -#: www/views/includes/output.html:7 -msgid "Amount" -msgstr "Betrag" - -#: src/js/services/bwcError.js:110 -msgid "Amount below minimum allowed" -msgstr "Betrag unter zulässigem Minimum" - -#: src/js/controllers/confirm.js:191 -msgid "Amount too big" -msgstr "Betrag zu hoch" - -#: www/views/includes/walletHistory.html:31 -msgid "Amount too low to spend" -msgstr "" - -#: src/js/controllers/tab-home.js:147 -msgid "An update to this app is available. For your security, please update to the latest version." -msgstr "Ein Aktualisierung für diese App ist verfügbar. Zu Ihrer Sicherheit bitte auf die neueste Version aktualisieren." - -#: www/views/backupWarning.html:14 -msgid "Anyone with your backup phrase can access or spend your bitcoin." -msgstr "Jeder mit Ihrer Wiederherstellungsphrase hat Zugriff auf ihre Bitcoins und kann diese ausgeben." - -#: www/views/addresses.html:94 -msgid "Approximate Bitcoin network fee to transfer wallet's balance (with normal priority)" -msgstr "" - -#: www/views/backupWarning.html:10 -msgid "Are you being watched?" -msgstr "Werden Sie beobachtet?" - -#: src/js/controllers/preferencesExternal.js:15 -msgid "Are you being watched? Anyone with your recovery phrase can access or spend your bitcoin." -msgstr "Werden Sie beobachtet? Jeder der Ihre Wiederherstellungsphrase kennt, kann auf Ihre Bitcoin zugreifen und diese ausgeben." - -#: src/js/controllers/copayers.js:56 -msgid "Are you sure you want to cancel and delete this wallet?" -msgstr "Wollen Sie wirklich abbrechen und dieses Wallet löschen?" - -#: src/js/controllers/addressbookView.js:24 -msgid "Are you sure you want to delete this contact?" -msgstr "" - -#: src/js/controllers/preferencesDelete.js:26 -msgid "Are you sure you want to delete this wallet?" -msgstr "Soll das Wallet wirklich gelöscht werden?" - -#: src/js/controllers/modals/txpDetails.js:148 -msgid "Are you sure you want to reject this transaction?" -msgstr "Wollen Sie wirklich diese Transaktion ablehnen?" - -#: src/js/controllers/modals/txpDetails.js:165 -msgid "Are you sure you want to remove this transaction?" -msgstr "Wollen Sie wirklich diese Transaktion löschen?" - -#: src/js/controllers/onboarding/backupRequest.js:23 -msgid "Are you sure you want to skip it?" -msgstr "Sind Sie sicher dass Sie es überspringen möchten?" - -#: www/views/modals/bitpay-card-confirmation.html:4 -msgid "Are you sure you would like to log out of your BitPay Card account?" -msgstr "" - -#: src/js/controllers/preferencesBitpayCard.js:7 -#: src/js/controllers/preferencesBitpayServices.js:20 -msgid "Are you sure you would like to remove your BitPay Card ({{lastFourDigits}}) from this device?" -msgstr "Sind Sie sicher, dass Sie Ihre BitPay-Karte ({{lastFourDigits}}) von diesem Gerät entfernen möchten?" - -#: www/views/includes/walletInfo.html:5 -msgid "Auditable" -msgstr "Prüffähig" - -#: www/views/modals/wallet-balance.html:42 -msgid "Available" -msgstr "Verfügbar" - -#: www/views/includes/available-balance.html:3 -msgid "Available Balance" -msgstr "Verfügbarer Gesamtbetrag" - -#: www/views/modals/chooseFeeLevel.html:24 -#: www/views/preferencesFee.html:15 -msgid "Average confirmation time" -msgstr "Durchschnittliche Bestätigungzeit" - -#: www/views/join.html:140 -#: www/views/tab-create-personal.html:111 -#: www/views/tab-create-shared.html:140 -#: www/views/tab-import-phrase.html:48 -msgid "BIP32 path for address derivation" -msgstr "BIP32 Pfad für die Adressen-Ableitung" - -#: www/views/preferences.html:34 -msgid "Backup" -msgstr "Sicherung" - -#: www/views/includes/backupNeededPopup.html:7 -msgid "Backup Needed" -msgstr "Backup wird benötigt" - -#: src/js/controllers/lockSetup.js:87 -msgid "Backup all livenet wallets before using this function" -msgstr "Sichern Sie alle Livenet Wallets, bevor Sie diese Funktion nutzen" - -#: www/views/preferences.html:36 -#: www/views/tab-settings.html:120 -msgid "Backup needed" -msgstr "Backup benötigt" - -#: www/views/includes/backupNeededPopup.html:9 -msgid "Backup now" -msgstr "Jetzt sichern" - -#: www/views/onboarding/backupRequest.html:11 -#: www/views/tab-export-file.html:89 -msgid "Backup wallet" -msgstr "Sicherung der Wallet" - -#: src/js/controllers/lockSetup.js:84 -msgid "Backup your wallet before using this function" -msgstr "Sichern Sie ihr Wallet, bevor Sie diese Funktion nutzen" - -#: src/js/services/profileService.js:430 -msgid "Bad wallet invitation" -msgstr "Ungültige Einladung" - -#: www/views/preferencesInformation.html:96 -msgid "Balance By Address" -msgstr "Guthaben nach Adresse" - -#: www/views/includes/confirmBackupPopup.html:7 -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 "Achten Sie darauf Ihre Wiederherstellungsphrase an einem sicheren Ort abzulegen. Ihr Geld kann nicht ohne dieser Phrase wiederhergestellt werden falls die App deinstalliert wird." - -#: www/views/preferencesBitpayServices.html:9 -msgid "BitPay Visa® Cards" -msgstr "BitPay Visa® Karten" - -#: www/views/addressbook.add.html:38 -#: www/views/includes/incomingDataMenu.html:29 -msgid "Bitcoin Address" -msgstr "Bitcoin-Adresse" - -#: www/views/modals/chooseFeeLevel.html:4 -#: www/views/preferencesFee.html:4 -#: www/views/tab-settings.html:85 -msgid "Bitcoin Network Fee Policy" -msgstr "Bitcoin-Netzwerk Gebührenübersicht" - -#: www/views/tab-settings.html:63 -msgid "Bitcoin Unit" -msgstr "Bitcoin-Einheit" - -#: www/views/onboarding/tour.html:31 -msgid "Bitcoin is a currency." -msgstr "Bitcoin ist eine Währung." - -#: www/views/onboarding/disclaimer.html:15 -msgid "Bitcoin is different – it cannot be safely held with a bank or web service." -msgstr "Bitcoins sind anders – sie können nicht sicher in einer Bank oder einem Onlinedienst aufbewahrt werden." - -#: www/views/onboarding/tour.html:18 -msgid "Bitcoin is secure,
digital money." -msgstr "Bitcoin ist sicheres,
digitales Geld." - -#: www/views/preferencesFee.html:11 -msgid "Bitcoin transactions include a fee collected by miners on the network." -msgstr "Bitcoin Transaktionen enthalten eine Gebühr für die \"Miners\" im Netzwerk." - -#: www/views/buyAmazon.html:108 -msgid "Bought {{amountUnitStr}}" -msgstr "" - -#: www/views/modals/txp-details.html:36 -msgid "Broadcast Payment" -msgstr "Zahlung übermitteln" - -#: src/js/controllers/modals/txpDetails.js:58 -#: src/js/controllers/tx-details.js:64 -msgid "Broadcasted" -msgstr "Gesendet" - -#: src/js/services/onGoingProcess.js:11 -msgid "Broadcasting transaction" -msgstr "Übermittlung der Transaktion" - -#: www/views/unsupported.html:6 -msgid "Browser unsupported" -msgstr "Browser wird nicht unterstützt" - -#: www/views/buyAmazon.html:5 -msgid "Buy" -msgstr "" - -#: www/views/includes/buyAndSellCard.html:3 -msgid "Buy & Sell Bitcoin" -msgstr "Kaufe & Verkaufe Bitcoins" - -#: www/views/tab-send.html:35 -msgid "Buy Bitcoin" -msgstr "Kaufe Bitcoins" - -#: src/js/controllers/buyAmazon.js:332 -msgid "Buy from" -msgstr "" - -#: src/js/services/onGoingProcess.js:40 -msgid "Buying Bitcoin..." -msgstr "Kaufe Bitcoins..." - -#: src/js/services/onGoingProcess.js:12 -msgid "Calculating fee" -msgstr "Mining-Fee Berechnung" - -#: src/js/controllers/buyAmazon.js:311 -#: src/js/controllers/confirm.js:495 -#: src/js/controllers/topup.js:285 -#: src/js/services/popupService.js:62 -#: src/js/services/popupService.js:73 -#: www/views/addressbook.add.html:10 -#: www/views/feedback/send.html:5 -#: www/views/includes/incomingDataMenu.html:22 -#: www/views/includes/incomingDataMenu.html:54 -#: www/views/includes/incomingDataMenu.html:73 -#: www/views/includes/incomingDataMenu.html:97 -#: www/views/includes/note.html:6 -#: www/views/modals/bitpay-card-confirmation.html:8 -#: www/views/modals/confirmation.html:13 -msgid "Cancel" -msgstr "Abbruch" - -#: www/views/copayers.html:36 -msgid "Cancel invitation" -msgstr "" - -#: src/js/controllers/onboarding/tour.js:52 -msgid "Cannot Create Wallet" -msgstr "Wallet kann nicht erstellt werden" - -#: src/js/services/profileService.js:426 -msgid "Cannot join the same wallet more that once" -msgstr "An einem Wallet kann nicht mehrfach teilgenommen werden" - -#: www/views/includes/bitpayCardsCard.html:2 -msgid "Cards" -msgstr "Karten" - -#: www/views/modals/paypro.html:30 -msgid "Certified by" -msgstr "Zertifiziert von" - -#: www/views/preferencesExternal.html:19 -msgid "Check installation and retry." -msgstr "Installation überprüfen und wiederholen." - -#: www/views/tab-import-file.html:4 -msgid "Choose a backup file from your computer" -msgstr "Bitte eine Sicherungsdatei vom Computer wählen" - -#: www/views/modals/wallets.html:9 -msgid "Choose your destination wallet" -msgstr "Wählen Sie Ihre Ziel-Wallet" - -#: www/views/modals/wallets.html:10 -msgid "Choose your source wallet" -msgstr "Wählen Sie Ihre Quell-Wallet" - -#: www/views/backup.html:54 -msgid "Clear" -msgstr "Leeren" - -#: www/views/preferencesHistory.html:24 -msgid "Clear cache" -msgstr "Cache leeren" - -#: src/js/controllers/modals/txpDetails.js:34 -msgid "Click" -msgstr "Klick" - -#: www/views/customAmount.html:4 -#: www/views/modals/paypro.html:4 -#: www/views/modals/pin.html:3 -#: www/views/modals/search.html:3 -#: www/views/modals/wallet-balance.html:3 -#: www/views/modals/wallets.html:5 -msgid "Close" -msgstr "Schließen" - -#: www/views/preferences.html:22 -msgid "Color" -msgstr "Farbe" - -#: www/views/preferencesAbout.html:21 -msgid "Commit hash" -msgstr "Hash übertragen" - -#: www/views/preferences.html:48 -msgid "Complete the backup process to use this option" -msgstr "Beenden Sie den Backupvorgang um diese Option zu nutzen" - -#: www/views/bitpayCard.html:93 -msgid "Completed" -msgstr "" - -#: src/js/controllers/buyAmazon.js:309 -#: src/js/controllers/confirm.js:494 -#: src/js/controllers/copayers.js:55 -#: src/js/controllers/topup.js:283 -#: www/views/backup.html:53 -#: www/views/backup.html:72 -#: www/views/confirm.html:4 -#: www/views/onboarding/collectEmail.html:32 -msgid "Confirm" -msgstr "Bestätigen" - -#: www/views/modals/terms.html:26 -#: www/views/onboarding/disclaimer.html:44 -msgid "Confirm & Finish" -msgstr "Bestätigen & Beenden" - -#: www/views/buyAmazon.html:90 -msgid "Confirm purchase" -msgstr "" - -#: www/views/modals/pin.html:10 -msgid "Confirm your PIN" -msgstr "PIN bestätigen" - -#: src/js/services/walletService.js:1034 -msgid "Confirm your new spending password" -msgstr "Bestätigen Sie Ihr neues Passwort" - -#: www/views/tx-details.html:98 -msgid "Confirmations" -msgstr "Bestätigungen" - -#: www/views/bitpayCard.html:68 -#: www/views/modals/wallet-balance.html:61 -msgid "Confirming" -msgstr "Bestätigen" - -#: www/views/bitpayCardIntro.html:37 -msgid "Connect my BitPay Card" -msgstr "Verbinde meine BitPay-Karte" - -#: src/js/services/onGoingProcess.js:13 -msgid "Connecting to Coinbase..." -msgstr "Verbinde mit Coinbase..." - -#: src/js/services/onGoingProcess.js:14 -msgid "Connecting to Glidera..." -msgstr "Verbinde mit Glidera..." - -#: src/js/services/bwcError.js:53 -msgid "Connection reset by peer" -msgstr "Verbindung von Peer zurückgesetzt" - -#: www/views/tab-send.html:45 -msgid "Contacts" -msgstr "Kontakte" - -#: www/views/onboarding/notifications.html:9 -msgid "Continue" -msgstr "Weiter" - -#: www/views/preferencesLanguage.html:26 -msgid "Contribute Translations" -msgstr "Übersetzungen beitragen" - -#: src/js/services/bwcError.js:62 -msgid "Copayer already in this wallet" -msgstr "Copayer nimmt bereits teil" - -#: src/js/services/bwcError.js:77 -msgid "Copayer already voted on this spend proposal" -msgstr "Copayer hat schon für diesen Zahlungsvorschlag angestimmt" - -#: src/js/services/bwcError.js:107 -msgid "Copayer data mismatch" -msgstr "Copayer Datenkonflikt" - -#: www/views/includes/walletActivity.html:2 -msgid "Copayer joined" -msgstr "Copayer beigetreten" - -#: www/views/preferencesInformation.html:88 -msgid "Copayer {{$index}}" -msgstr "Copayer {{$index}}" - -#: src/js/controllers/copayers.js:79 -#: src/js/controllers/export.js:193 -#: www/views/includes/copyToClipboard.html:4 -msgid "Copied to clipboard" -msgstr "In die Zwischenablage kopiert" - -#: www/views/tab-export-file.html:94 -msgid "Copy this text as it is to a safe place (notepad or email)" -msgstr "Diesen Text an einem sichern Ort einfügen (Notepad oder E-Mail)" - -#: www/views/includes/incomingDataMenu.html:51 -#: www/views/includes/incomingDataMenu.html:70 -#: www/views/includes/incomingDataMenu.html:94 -#: www/views/preferencesLogs.html:10 -#: www/views/tab-export-file.html:78 -msgid "Copy to clipboard" -msgstr "In die Zwischenablage kopieren" - -#: www/views/tab-import-phrase.html:2 -msgid "Could not access the wallet at the server. Please check:" -msgstr "Kein Zugriff auf Wallet des Servers. Überprüfen Sie bitte:" - -#: src/js/controllers/buyAmazon.js:101 -msgid "Could not access to Amazon.com" -msgstr "" - -#: src/js/services/profileService.js:493 -msgid "Could not access wallet" -msgstr "Auf Wallet konnte nicht zugegriffen werden" - -#: src/js/controllers/confirm.js:185 -msgid "Could not add message to imported wallet without shared encrypting key" -msgstr "Nachricht kann nicht an die importierte Wallet hinzugefügt werden ohne einem gemeinsamen Verschlüsselungsschlüssel" - -#: src/js/controllers/modals/txpDetails.js:193 -msgid "Could not broadcast payment" -msgstr "Zahlung konnte nicht gesendet werden" - -#: src/js/services/bwcError.js:41 -msgid "Could not build transaction" -msgstr "Transaktion konnte nicht erstellt werden" - -#: src/js/services/walletService.js:857 -msgid "Could not create address" -msgstr "Adresse konnte nicht erstellt werden" - -#: src/js/controllers/topup.js:91 -msgid "Could not create the invoice" -msgstr "" - -#: src/js/controllers/buyAmazon.js:163 -#: src/js/controllers/topup.js:141 -msgid "Could not create transaction" -msgstr "" - -#: src/js/services/profileService.js:342 -msgid "Could not create using the specified extended private key" -msgstr "Erzeugung mit erweiterten privaten Schlüssel nicht möglich" - -#: src/js/services/profileService.js:353 -msgid "Could not create using the specified extended public key" -msgstr "Erzeugung mit dem angegebenen erweiterten öffentlichen Schlüssel nicht möglich" - -#: src/js/services/profileService.js:335 -msgid "Could not create: Invalid wallet recovery phrase" -msgstr "Wallet-Wiederherstellungsphrase nicht gültig" - -#: src/js/controllers/import.js:99 -msgid "Could not decrypt file, check your password" -msgstr "Datei konnte nicht entschlüsselt werden, bitte das Passwort überprüfen" - -#: src/js/controllers/modals/txpDetails.js:175 -msgid "Could not delete payment proposal" -msgstr "Zahlungsvorschlag konnte nicht gelöscht werden" - -#: src/js/services/feeService.js:72 -msgid "Could not get dynamic fee" -msgstr "Dynamische Gebühr konnten nicht abgerufen werden" - -#: src/js/services/feeService.js:42 -msgid "Could not get dynamic fee for level: {{feeLevel}}" -msgstr "Dynamische Gebühr für den Level konnte nicht abgerufen werden: {{feeLevel}}" - -#: src/js/controllers/modals/feeLevels.js:113 -msgid "Could not get fee levels" -msgstr "" - -#: src/js/controllers/buyAmazon.js:121 -#: src/js/controllers/topup.js:99 -msgid "Could not get the invoice" -msgstr "" - -#: src/js/controllers/bitpayCard.js:66 -msgid "Could not get transactions" -msgstr "Transaktionen konnten nicht gefunden werden" - -#: src/js/services/profileService.js:595 -#: src/js/services/profileService.js:629 -#: src/js/services/profileService.js:652 -msgid "Could not import" -msgstr "Import nicht möglich" - -#: src/js/services/profileService.js:564 -msgid "Could not import. Check input file and spending password" -msgstr "Import nicht möglich. Bitte Datei und Berechtigungscode überprüfen" - -#: src/js/services/profileService.js:439 -msgid "Could not join wallet" -msgstr "Beteiligung am Wallet nicht möglich" - -#: src/js/controllers/modals/txpDetails.js:155 -msgid "Could not reject payment" -msgstr "Zahlung konnte nicht abgelehnt werden" - -#: src/js/controllers/preferencesBitpayServices.js:33 -msgid "Could not remove account" -msgstr "Konto konnte nicht entfernt werden" - -#: src/js/controllers/preferencesBitpayCard.js:20 -#: src/js/controllers/preferencesBitpayServices.js:50 -msgid "Could not remove card" -msgstr "Karte konnte nicht gelöscht werden" - -#: src/js/services/walletService.js:776 -msgid "Could not save preferences on the server" -msgstr "Die Einstellungen konnten nicht am Server gespeichert werden" - -#: src/js/controllers/modals/txpDetails.js:141 -msgid "Could not send payment" -msgstr "Zahlung kann nicht gesendet werden" - -#: src/js/controllers/buyAmazon.js:323 -#: src/js/controllers/topup.js:297 -msgid "Could not send transaction" -msgstr "" - -#: www/views/walletDetails.html:199 -msgid "Could not update transaction history" -msgstr "Die Transaktionshistorie konnte nicht aktualisiert werden" - -#: src/js/controllers/addresses.js:34 -#: src/js/controllers/addresses.js:42 -#: src/js/controllers/copayers.js:30 -#: src/js/controllers/walletDetails.js:78 -msgid "Could not update wallet" -msgstr "Wallet konnte nicht aktualisiert werden" - -#: www/views/tab-create-personal.html:3 -msgid "Create Personal Wallet" -msgstr "Erstelle eine persönliche Wallet" - -#: www/views/tab-create-shared.html:3 -msgid "Create Shared Wallet" -msgstr "Erstelle eine gemeinsame Wallet" - -#: www/views/onboarding/tour.html:51 -#: www/views/tab-home.html:77 -#: www/views/tab-send.html:36 -msgid "Create bitcoin wallet" -msgstr "Erstelle Bitcoin-Wallet" - -#: www/views/tab-create-personal.html:129 -msgid "Create new wallet" -msgstr "Neues Wallet erzeugen" - -#: www/views/add.html:22 -msgid "Create shared wallet" -msgstr "Erstelle gemeinsame Wallet" - -#: www/views/tab-create-shared.html:158 -msgid "Create {{formData.requiredCopayers}}-of-{{formData.totalCopayers}} wallet" -msgstr "Ein {{formData.requiredCopayers}}-von-{{formData.totalCopayers}} Wallet erzeugen" - -#: www/views/modals/txp-details.html:83 -#: www/views/tx-details.html:62 -msgid "Created by" -msgstr "Erstellt von" - -#: src/js/services/onGoingProcess.js:18 -msgid "Creating Wallet..." -msgstr "Wallet erstellen..." - -#: src/js/services/onGoingProcess.js:17 -msgid "Creating transaction" -msgstr "Transaktion erstellen" - -#: www/views/modals/chooseFeeLevel.html:34 -#: www/views/preferencesFee.html:20 -msgid "Current fee rate for this policy" -msgstr "Aktuelle Gebühr für dieses Verfahren" - -#: src/js/services/feeService.js:15 -msgid "Custom" -msgstr "" - -#: www/views/customAmount.html:9 -msgid "Custom Amount" -msgstr "Benutzerdefinierter Betrag" - -#: src/js/controllers/preferencesFee.js:84 -msgid "Custom Fee" -msgstr "" - -#: www/views/modals/txp-details.html:89 -#: www/views/tx-details.html:68 -msgid "Date" -msgstr "Datum" - -#: www/views/preferencesDeleteWallet.html:21 -msgid "Delete" -msgstr "Löschen" - -#: www/views/modals/txp-details.html:166 -msgid "Delete Payment Proposal" -msgstr "Zahlungsvorschlag löschen" - -#: www/views/preferencesAdvanced.html:33 -#: www/views/preferencesDeleteWallet.html:3 -msgid "Delete Wallet" -msgstr "Wallet löschen" - -#: www/views/copayers.html:59 -msgid "Delete it and create a new one" -msgstr "Löschen und neues Wallet erzeugen" - -#: src/js/services/onGoingProcess.js:19 -msgid "Deleting Wallet..." -msgstr "Wallet wird gelöscht..." - -#: src/js/services/onGoingProcess.js:28 -msgid "Deleting payment proposal" -msgstr "Lösche Zahlungsvorschlag" - -#: www/views/join.html:138 -#: www/views/tab-create-personal.html:109 -#: www/views/tab-create-shared.html:138 -#: www/views/tab-import-phrase.html:46 -msgid "Derivation Path" -msgstr "Ableitungsstruktur" - -#: www/views/preferencesInformation.html:41 -msgid "Derivation Strategy" -msgstr "Ableitungstrategie" - -#: www/views/buyAmazon.html:39 -#: www/views/topup.html:45 -msgid "Details" -msgstr "" - -#: src/js/controllers/lockSetup.js:9 -#: src/js/controllers/tab-settings.js:60 -msgid "Disabled" -msgstr "Deaktiviert" - -#: www/views/includes/backupNeededPopup.html:10 -#: www/views/onboarding/backupRequest.html:12 -msgid "Do it later" -msgstr "Später erledigen" - -#: www/views/tab-export-file.html:29 -msgid "Do not include private key" -msgstr "Den privaten Schlüssel nicht einbeziehen" - -#: www/views/preferencesLanguage.html:21 -msgid "Don't see your language on Crowdin? Contact the Owner on Crowdin! We'd love to support your language." -msgstr "Wird deine Sprache auf Crowdin nicht angezeigt? Kontaktiere den Support von Crowdin, denn wir würden deine Sprache gerne hinzufügen." - -#: www/views/tab-export-file.html:59 -#: www/views/tab-home.html:22 -msgid "Download" -msgstr "Herunterladen" - -#: www/views/addresses.html:19 -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 "Jede Bitcoin-Wallet kann Milliarden von Adressen aus Ihrem 12-Wort Backup erzeugen. Jedesmal wenn Sie eine Zahlung erhalten wird neue Adresse automatisch generiert und dargestellten." - -#: src/js/services/feeService.js:13 -msgid "Economy" -msgstr "Wirtschaftlich" - -#: www/views/onboarding/collectEmail.html:27 -msgid "Edit" -msgstr "" - -#: www/views/addressbook.add.html:29 -#: www/views/addressbook.view.html:22 -msgid "Email" -msgstr "E-Mail" - -#: www/views/preferencesNotifications.html:42 -msgid "Email Address" -msgstr "E-Mail Adresse" - -#: src/js/services/bwcError.js:122 -msgid "Empty addresses limit reached. New addresses cannot be generated." -msgstr "Obergrenze für leere Adressen erreicht. Neue Adressen können nicht generiert werden." - -#: www/views/tab-scan.html:19 -msgid "Enable camera access in your device settings to get started." -msgstr "Aktiviere den Kamerazugriff in Ihren Geräteeinstellungen." - -#: www/views/preferencesNotifications.html:29 -msgid "Enable email notifications" -msgstr "Aktiviere E-Mail Benachrichtigung" - -#: www/views/preferencesNotifications.html:12 -msgid "Enable push notifications" -msgstr "Pushbenachrichtigungen aktivieren" - -#: www/views/tab-scan.html:18 -msgid "Enable the camera to get started." -msgstr "Aktivieren Sie die Kamera um loszulegen." - -#: www/views/amount.html:4 -msgid "Enter Amount" -msgstr "Betrag eingeben" - -#: src/js/services/walletService.js:1048 -#: src/js/services/walletService.js:1063 -msgid "Enter Spending Password" -msgstr "Berechtigungscode eingeben" - -#: src/js/services/bitpayAccountService.js:110 -msgid "Enter Two Factor for your BitPay account" -msgstr "Eingabe des Zwei-Faktor-Authentifizierungs-Codes für das BitPay Konto" - -#: www/views/modals/chooseFeeLevel.html:41 -msgid "Enter custom fee" -msgstr "" - -#: src/js/services/walletService.js:1030 -msgid "Enter new spending password" -msgstr "Neuen Berechtigungscode eingeben" - -#: www/views/join.html:76 -#: www/views/tab-create-personal.html:49 -#: www/views/tab-create-shared.html:78 -msgid "Enter the recovery phrase (BIP39)" -msgstr "Wiederherstellungsphrase eingeben (BIP39)" - -#: www/views/onboarding/collectEmail.html:13 -msgid "Enter your email" -msgstr "" - -#: www/views/backup.html:62 -msgid "Enter your password" -msgstr "Passwort eingeben" - -#. Trying to import a malformed wallet export QR code -#: src/js/controllers/activity.js:45 -#: src/js/controllers/addressbookAdd.js:30 -#: src/js/controllers/addressbookView.js:29 -#: src/js/controllers/addresses.js:130 -#: src/js/controllers/addresses.js:131 -#: src/js/controllers/bitpayCard.js:66 -#: src/js/controllers/bitpayCardIntro.js:40 -#: src/js/controllers/bitpayCardIntro.js:81 -#: src/js/controllers/buyAmazon.js:23 -#: src/js/controllers/buyAmazon.js:34 -#: src/js/controllers/confirm.js:276 -#: src/js/controllers/copayers.js:67 -#: src/js/controllers/create.js:155 -#: src/js/controllers/create.js:168 -#: src/js/controllers/create.js:175 -#: src/js/controllers/create.js:197 -#: src/js/controllers/create.js:204 -#: src/js/controllers/create.js:222 -#: src/js/controllers/export.js:109 -#: src/js/controllers/export.js:115 -#: src/js/controllers/export.js:126 -#: src/js/controllers/export.js:154 -#: src/js/controllers/export.js:160 -#: src/js/controllers/export.js:171 -#: src/js/controllers/export.js:47 -#: src/js/controllers/export.js:53 -#: src/js/controllers/feedback/send.js:23 -#: src/js/controllers/import.js:104 -#: src/js/controllers/import.js:116 -#: src/js/controllers/import.js:134 -#: src/js/controllers/import.js:185 -#: src/js/controllers/import.js:213 -#: src/js/controllers/import.js:222 -#: src/js/controllers/import.js:237 -#: src/js/controllers/import.js:249 -#: src/js/controllers/import.js:260 -#: src/js/controllers/import.js:270 -#: src/js/controllers/import.js:294 -#: src/js/controllers/import.js:307 -#: src/js/controllers/import.js:317 -#: src/js/controllers/import.js:327 -#: src/js/controllers/import.js:351 -#: src/js/controllers/import.js:364 -#: src/js/controllers/import.js:70 -#: src/js/controllers/import.js:83 -#: src/js/controllers/join.js:121 -#: src/js/controllers/join.js:135 -#: src/js/controllers/join.js:142 -#: src/js/controllers/join.js:165 -#: src/js/controllers/join.js:173 -#: src/js/controllers/join.js:191 -#: src/js/controllers/modals/feeLevels.js:10 -#: src/js/controllers/modals/txpDetails.js:134 -#: src/js/controllers/paperWallet.js:47 -#: src/js/controllers/preferencesBitpayCard.js:20 -#: src/js/controllers/preferencesBitpayServices.js:33 -#: src/js/controllers/preferencesBitpayServices.js:50 -#: src/js/controllers/preferencesDelete.js:37 -#: src/js/controllers/preferencesExternal.js:20 -#: src/js/controllers/tab-home.js:174 -#: src/js/controllers/tab-send.js:132 -#: src/js/controllers/tabsController.js:36 -#: src/js/controllers/tabsController.js:7 -#: src/js/controllers/topup.js:20 -#: src/js/controllers/topup.js:31 -#: src/js/controllers/tx-details.js:102 -#: src/js/services/incomingData.js:98 -msgid "Error" -msgstr "Fehler" - -#: src/js/controllers/confirm.js:447 -msgid "Error at confirm" -msgstr "Fehler beim bestätigen" - -#: src/js/controllers/buyAmazon.js:178 -msgid "Error creating gift card" -msgstr "" - -#: src/js/controllers/buyAmazon.js:93 -msgid "Error creating the invoice" -msgstr "" - -#: src/js/services/profileService.js:396 -msgid "Error creating wallet" -msgstr "Fehler beim Erstellen des Wallets" - -#: src/js/controllers/confirm.js:266 -msgid "Error getting SendMax information" -msgstr "" - -#: src/js/controllers/buyAmazon.js:135 -#: src/js/controllers/topup.js:113 -msgid "Error in Payment Protocol" -msgstr "" - -#: src/js/controllers/bitpayCardIntro.js:14 -msgid "Error pairing BitPay Account" -msgstr "" - -#: src/js/controllers/paperWallet.js:41 -msgid "Error scanning funds:" -msgstr "Fehler beim Ermitteln des Guthaben:" - -#: src/js/controllers/paperWallet.js:91 -msgid "Error sweeping wallet:" -msgstr "Fehler beim Leeren der Wallet:" - -#: src/js/controllers/bitpayCardIntro.js:20 -msgid "Error updating Debit Cards" -msgstr "Fehler beim Aktualisieren der Debitkarten" - -#: src/js/services/bwcError.js:143 -msgid "Exceeded daily limit of $500 per user" -msgstr "Tageslimit von $500 pro Benutzer überschritten" - -#: src/js/controllers/confirm.js:411 -#: www/views/confirm.html:27 -#: www/views/modals/txp-details.html:121 -msgid "Expired" -msgstr "Abgelaufen" - -#: www/views/modals/paypro.html:54 -#: www/views/modals/txp-details.html:127 -msgid "Expires" -msgstr "Gültig bis" - -#: www/views/preferencesAdvanced.html:21 -msgid "Export Wallet" -msgstr "Wallet exportieren" - -#: www/views/preferencesHistory.html:11 -#: www/views/preferencesHistory.html:14 -msgid "Export to file" -msgstr "In eine Datei exportieren" - -#: www/views/export.html:3 -msgid "Export wallet" -msgstr "Wallet exportieren" - -#: src/js/services/walletService.js:1175 -#: www/views/tab-export-qrCode.html:9 -msgid "Exporting via QR not supported for this wallet" -msgstr "Für diese Wallet ist Export per QR nicht unterstützt" - -#: www/views/preferencesInformation.html:83 -msgid "Extended Public Keys" -msgstr "Erweiterte öffentliche Schlüssel" - -#: src/js/services/onGoingProcess.js:20 -msgid "Extracting Wallet information..." -msgstr "" - -#: src/js/controllers/export.js:115 -#: src/js/controllers/export.js:126 -#: src/js/controllers/export.js:160 -#: src/js/controllers/export.js:171 -#: www/views/tab-export-file.html:4 -msgid "Failed to export" -msgstr "Fehler beim Exportieren" - -#: www/views/tab-create-personal.html:14 -#: www/views/tab-create-shared.html:14 -msgid "Family vacation funds" -msgstr "Familienurlaub" - -#: www/views/tx-details.html:81 -msgid "Fee" -msgstr "Gebühr" - -#: www/views/modals/chooseFeeLevel.html:73 -msgid "Fee level" -msgstr "" - -#: src/js/controllers/modals/feeLevels.js:101 -msgid "Fee level is not defined" -msgstr "" - -#: www/views/confirm.html:81 -#: www/views/modals/txp-details.html:101 -msgid "Fee:" -msgstr "" - -#: src/js/controllers/feedback/send.js:23 -msgid "Feedback could not be submitted. Please try again later." -msgstr "Feedback konnte nicht abgeschickt werden. Bitte versuchen Sie es später erneut." - -#: src/js/services/onGoingProcess.js:42 -msgid "Fetching BitPay Account..." -msgstr "BitPay Konto abrufen..." - -#: src/js/services/onGoingProcess.js:21 -msgid "Fetching payment information" -msgstr "" - -#: www/views/export.html:14 -#: www/views/import.html:16 -msgid "File/Text" -msgstr "Datei/Text" - -#: src/js/services/fingerprintService.js:43 -#: src/js/services/fingerprintService.js:48 -msgid "Finger Scan Failed" -msgstr "Abtasten des Fingerabdrucks gescheitert" - -#: src/js/controllers/feedback/send.js:34 -#: www/views/feedback/complete.html:7 -msgid "Finish" -msgstr "Beenden" - -#: www/views/tab-create-personal.html:121 -#: www/views/tab-create-shared.html:150 -msgid "For audit purposes" -msgstr "Zur Kontrolle" - -#: src/js/controllers/topup.js:306 -#: www/views/buyAmazon.html:29 -#: www/views/confirm.html:65 -#: www/views/modals/txp-details.html:74 -#: www/views/topup.html:34 -#: www/views/tx-details.html:52 -msgid "From" -msgstr "Von" - -#: src/js/controllers/bitpayCardIntro.js:71 -msgid "From BitPay account" -msgstr "Von BitPay Konto" - -#: www/views/tab-import-phrase.html:54 -msgid "From Hardware Wallet" -msgstr "" - -#: www/views/tab-export-qrCode.html:5 -msgid "From the destination device, go to Add wallet > Import wallet and scan this QR code" -msgstr "Gehen Sie auf Wallet Hinzufügen > Wallet Importieren von dem Zielgerät und scannen Sie diesen QR-Code" - -#: src/js/services/bwcError.js:74 -msgid "Funds are locked by pending spend proposals" -msgstr "Beträge sind durch ausstehende Zahlungsvorschläge gesperrt" - -#: www/views/paperWallet.html:16 -msgid "Funds found:" -msgstr "Betrag gefunden:" - -#: www/views/topup.html:49 -msgid "Funds to be added" -msgstr "" - -#: www/views/paperWallet.html:53 -msgid "Funds transferred" -msgstr "Betrag übermittelt" - -#: www/views/topup.html:103 -msgid "Funds were added to debit card" -msgstr "" - -#: www/views/paperWallet.html:22 -msgid "Funds will be transferred to" -msgstr "Beträge werden überwiesen an" - -#: www/views/tab-receive.html:51 -msgid "Generate new address" -msgstr "" - -#: src/js/services/onGoingProcess.js:22 -msgid "Generating .csv file..." -msgstr "CSV-Datei erzeugen..." - -#: src/js/services/onGoingProcess.js:37 -msgid "Generating new address..." -msgstr "Neue Adresse erzeugen..." - -#: www/views/bitpayCardIntro.html:23 -msgid "Get local cash anywhere you go, from any Visa® compatible ATM. ATM bank fees may apply." -msgstr "Erhalten Sie Bargeld überall von einem Visa® kompatiblen Bankomaten. Es fallen eventuell Bankomatgebühren an." - -#: www/views/onboarding/collectEmail.html:15 -msgid "Get news and updates from BitPay" -msgstr "Erhalten Sie Neuigkeiten und Aktualisierungen von BitPay" - -#: www/views/bitpayCard.html:49 -#: www/views/onboarding/welcome.html:8 -msgid "Get started" -msgstr "Los geht’s" - -#: www/views/addressbook.html:20 -msgid "Get started by adding your first one." -msgstr "Starten Sie indem Sie ihr erstes hinzufügen." - -#: src/js/services/onGoingProcess.js:23 -msgid "Getting fee levels..." -msgstr "Entgelt-Level werden abgerufen..." - -#: www/views/buyAmazon.html:43 -msgid "Gift card" -msgstr "" - -#: src/js/controllers/buyAmazon.js:203 -msgid "Gift card expired" -msgstr "" - -#: www/views/buyAmazon.html:111 -msgid "Gift card generated and ready to use." -msgstr "" - -#: src/js/controllers/bitpayCard.js:114 -#: src/js/controllers/bitpayCard.js:124 -#: 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:149 -#: src/js/controllers/tab-settings.js:48 -#: src/js/controllers/tx-details.js:176 -msgid "Go Back" -msgstr "Zurück" - -#: src/js/controllers/onboarding/backupRequest.js:20 -#: src/js/controllers/onboarding/backupRequest.js:26 -#: src/js/services/bitpayAccountService.js:84 -msgid "Go back" -msgstr "Zurück" - -#: www/views/backupWarning.html:15 -#: www/views/includes/confirmBackupPopup.html:8 -#: www/views/onboarding/tour.html:23 -msgid "Got it" -msgstr "Habe verstanden" - -#: www/views/preferencesInformation.html:47 -#: www/views/preferencesInformation.html:53 -msgid "Hardware Wallet" -msgstr "Hardware-Wallet" - -#: www/views/preferencesExternal.html:18 -msgid "Hardware not connected." -msgstr "Hardware nicht verbunden." - -#: www/views/import.html:20 -msgid "Hardware wallet" -msgstr "Hardware-Wallet" - -#: www/views/tab-settings.html:20 -msgid "Help & Support" -msgstr "Hilfe & Support" - -#: src/js/controllers/bitpayCard.js:112 -#: src/js/controllers/tab-settings.js:46 -msgid "Help and support information is available at the website." -msgstr "Hilfe und Support-Informationen gibt es auf der Website." - -#: www/views/addresses.html:25 -msgid "Hide" -msgstr "Verstecken" - -#: www/views/preferences.html:27 -msgid "Hide Balance" -msgstr "Guthaben Verstecken" - -#: www/views/advancedSettings.html:29 -msgid "Hide Next Steps Card" -msgstr "Nächste Schritte der Karte ausblenden" - -#: www/views/join.html:46 -#: www/views/tab-create-personal.html:26 -#: www/views/tab-create-shared.html:55 -#: www/views/tab-export-file.html:25 -#: www/views/tab-import-file.html:28 -#: www/views/tab-import-hardware.html:31 -#: www/views/tab-import-phrase.html:33 -msgid "Hide advanced options" -msgstr "Erweiterte Optionen ausblenden" - -#: www/views/tabs.html:3 -msgid "Home" -msgstr "Start" - -#: src/js/controllers/feedback/send.js:61 -#: src/js/controllers/feedback/send.js:65 -#: src/js/controllers/feedback/send.js:69 -msgid "How could we improve your experience?" -msgstr "Wie können wir Ihre Zufriedenheit verbessern?" - -#: www/views/feedback/rateCard.html:3 -msgid "How do you like {{appName}}?" -msgstr "Wie gefällt Ihnen {{appName}}?" - -#: src/js/controllers/feedback/rateCard.js:29 -msgid "I don't like it" -msgstr "Das gefällt mir nicht" - -#: www/views/onboarding/disclaimer.html:43 -msgid "I have read, understood, and agree to the Terms of Use." -msgstr "Ich habe die Nutzungsbedingungen gelesen, verstanden und stimme ihnen zu." - -#: www/views/modals/terms.html:22 -msgid "I have read, understood, and agree with the Terms of use." -msgstr "Ich habe die Nutzungsbedingungen gelesen und stimme ihnen zu." - -#: www/views/join.html:134 -#: www/views/tab-create-personal.html:105 -#: www/views/tab-create-shared.html:134 -msgid "I have written it down" -msgstr "Ich habe es aufgeschrieben" - -#: src/js/controllers/feedback/rateCard.js:35 -msgid "I like the app" -msgstr "Mir gefällt die App" - -#: src/js/controllers/feedback/rateCard.js:26 -msgid "I think this app is terrible." -msgstr "Diese App ist furchtbar." - -#: src/js/controllers/onboarding/backupRequest.js:19 -#: www/views/includes/screenshotWarningModal.html:9 -msgid "I understand" -msgstr "Ich verstehe" - -#: www/views/onboarding/disclaimer.html:21 -msgid "I understand that if this app is moved to another device or deleted, my bitcoin can only be recovered with the backup phrase." -msgstr "Ich verstehe, dass wenn diese App auf ein anderes Gerät verschoben oder gelöscht wird, meine Bitcoins nur mit der Wiederherstellungsphrase wiederhergestellt werden können." - -#: www/views/onboarding/disclaimer.html:18 -msgid "I understand that my funds are held securely on this device, not by a company." -msgstr "Ich verstehe, dass mein Geld auf diesem Gerät und nicht von einem Unternehmen gesichert wird." - -#: www/views/backup.html:29 -msgid "I've written it down" -msgstr "Ich habe es aufgeschrieben" - -#: www/views/preferences.html:45 -msgid "If enabled, all sensitive information (private key and recovery phrase) and actions (spending and exporting) associated with this wallet will be protected." -msgstr "Wenn aktiviert, werden alle vertraulichen Informationen (private Schlüssel und Wiederherstellungs Satz) und die zugeordneten Aktionen (Ausgaben und Exporte) des Wallets geschützt." - -#: www/views/advancedSettings.html:22 -msgid "If enabled, the Recent Transactions card - a list of transactions occuring across all wallets - will appear in the Home tab." -msgstr "Wenn aktiviert wird die \"Kürzlich Ausgeführte Transaktionen\" Karte - eine Liste von Transaktionen aller Wallets - in der Registerkarte \"Start\" erscheinen." - -#: www/views/advancedSettings.html:13 -msgid "If enabled, wallets will also try to spend unconfirmed funds. This option may cause transaction delays." -msgstr "Wenn aktiviert werden Wallets auch versuchen unbestätigtes Vermögen auszugeben. Diese Option kann zu Transaktionsverzögerungen führen." - -#: src/js/controllers/onboarding/backupRequest.js:18 -msgid "If this device is replaced or this app is deleted, neither you nor BitPay can recover your funds without a backup." -msgstr "Wenn dieses Gerät ersetzt oder diese App gelöscht wird, so können weder Sie noch BitPay Ihr Geld ohne eine Sicherung wiederherstellen." - -#: www/views/feedback/complete.html:23 -msgid "If you have additional feedback, please let us know by tapping the \"Send feedback\" option in the Settings tab." -msgstr "Wenn Sie zusätzliches Feedback haben, so lassen Sie uns es wissen indem Sie auf die Option \"Feedback senden\" in der Registerkarte \"Einstellungen\" drücken." - -#: www/views/includes/screenshotWarningModal.html:8 -msgid "If you take a screenshot, your backup may be viewed by other apps. You can make a safe backup with physical paper and a pen." -msgstr "Wenn Sie einen Screenshot erstellen, kann die Sicherung von anderen Apps angesehen werden. Sie können ein sicheres Backup mit Papier und Stift erstellen." - -#: www/views/tab-import-hardware.html:42 -#: www/views/tab-import-phrase.html:77 -msgid "Import" -msgstr "Import" - -#: www/views/import.html:3 -msgid "Import Wallet" -msgstr "Wallet importieren" - -#: www/views/tab-import-file.html:39 -msgid "Import backup" -msgstr "Importiere Sicherung" - -#: www/views/add.html:38 -msgid "Import wallet" -msgstr "Wallet importieren" - -#: src/js/services/onGoingProcess.js:24 -msgid "Importing Wallet..." -msgstr "Wallet wird importiert..." - -#: www/views/backup.html:65 -msgid "In order to verify your wallet backup, please type your password." -msgstr "Um die Sicherung der Wallet zu überprüfen, geben Sie bitte Ihr Passwort ein." - -#: www/views/includes/walletItem.html:11 -#: www/views/includes/walletSelector.html:18 -#: www/views/tab-home.html:90 -#: www/views/tab-settings.html:117 -msgid "Incomplete" -msgstr "Unvollständig" - -#: www/views/tab-receive.html:22 -msgid "Incomplete wallet" -msgstr "Unvollständige Wallet" - -#: www/views/modals/pin.html:12 -msgid "Incorrect PIN, try again." -msgstr "Falscher PIN, bitte erneut versuchen." - -#. Trying to import a malformed wallet export QR code -#: src/js/controllers/import.js:70 -msgid "Incorrect code format" -msgstr "QR code hat falsches Format" - -#: src/js/services/bwcError.js:113 -msgid "Incorrect network address" -msgstr "" - -#: src/js/controllers/confirm.js:112 -#: src/js/controllers/confirm.js:275 -#: src/js/services/bwcError.js:44 -msgid "Insufficient funds" -msgstr "Nicht ausreichendes Guthaben" - -#: src/js/controllers/topup.js:164 -#: src/js/controllers/topup.js:176 -#: src/js/services/bwcError.js:71 -msgid "Insufficient funds for fee" -msgstr "Nicht ausreichendes Guthaben für die Gebühr" - -#: www/views/includes/walletHistory.html:49 -msgid "Invalid" -msgstr "Ungültig" - -#: src/js/controllers/buyAmazon.js:136 -#: src/js/controllers/topup.js:114 -msgid "Invalid URL" -msgstr "" - -#: src/js/controllers/create.js:175 -#: src/js/controllers/import.js:327 -#: src/js/controllers/join.js:142 -msgid "Invalid account number" -msgstr "Ungültige Kontonummer" - -#: src/js/services/bwcError.js:119 -msgid "Invalid address" -msgstr "Ungültige Adresse" - -#: src/js/controllers/tabsController.js:7 -msgid "Invalid data" -msgstr "Ungültige Daten" - -#: src/js/controllers/create.js:155 -#: src/js/controllers/import.js:249 -#: src/js/controllers/join.js:121 -msgid "Invalid derivation path" -msgstr "Ungültige Ableitungsstruktur" - -#: src/js/controllers/copayers.js:90 -msgid "Invitation to share a {{appName}} Wallet" -msgstr "Einladung um eine {{appName}} Wallet zu teilen" - -#: www/views/buyAmazon.html:49 -#: www/views/topup.html:56 -msgid "Invoice Fee" -msgstr "" - -#: src/js/controllers/feedback/send.js:79 -msgid "Is there anything we could do better?" -msgstr "Gibt es etwas, das wir besser machen können?" - -#: www/views/backup.html:47 -msgid "Is this correct?" -msgstr "Ist das richtig?" - -#: www/views/onboarding/collectEmail.html:22 -msgid "Is this email address correct?" -msgstr "Ist diese E-Mail Adresse korrekt?" - -#: www/views/addresses.html:25 -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 "Es ist eine gute Idee Adressen nicht wiederzuverwenden - dies schützt Ihre Privatsphäre und hält Ihre Bitcoins vor hypothetischen Angriffen durch Quanten-Computern sicher." - -#: src/js/controllers/backup.js:76 -msgid "It's important that you write your backup phrase down correctly. If something happens to your wallet, you'll need this backup to recover your money. Please review your backup and try again." -msgstr "Es ist wichtig dass Sie Ihre Wiederherstellungsphrase korrekt aufschreiben. Wenn etwas mit Ihrer Wallet passiert benötigen Sie diese Sicherung um Ihr Geld wiederherstellen zu können. Bitte überprüfen Sie Ihre Sicherung und versuchen Sie es erneut." - -#: www/views/join.html:148 -msgid "Join" -msgstr "Teilnehmen" - -#: src/js/controllers/copayers.js:85 -msgid "Join my {{appName}} Wallet. Here is the invitation code: {{secret}} You can download {{appName}} for your phone or desktop at {{appUrl}}" -msgstr "Meiner {{appName}} Wallet beitreten. Hier ist der Einladungs-Code: {{secret}} Sie können {{appName}} für Ihr Telefon oder Desktop auf {{appUrl}} herunterladen" - -#: www/views/add.html:30 -#: www/views/join.html:5 -msgid "Join shared wallet" -msgstr "Gemeinschaftliches Wallet" - -#: src/js/services/onGoingProcess.js:25 -msgid "Joining Wallet..." -msgstr "Teilnahme am Wallet einrichten..." - -#: www/views/onboarding/tour.html:22 -msgid "Just scan the code to pay." -msgstr "Scannen Sie einfach den Code um zu zahlen." - -#: src/js/services/bwcError.js:116 -msgid "Key already associated with an existing wallet" -msgstr "Schlüssel ist bereits mit einem existierenden Wallet verbunden" - -#: www/views/preferencesLanguage.html:4 -#: www/views/tab-settings.html:53 -msgid "Language" -msgstr "Sprache" - -#: www/views/bitpayCard.html:61 -msgid "Last Month" -msgstr "Letzter Monat" - -#: www/views/backup.html:36 -msgid "Let's verify your backup phrase." -msgstr "Überprüfen Sie Ihre Wiederherstellungsphrase." - -#: www/views/addresses.html:45 -#: www/views/allAddresses.html:14 -msgid "Loading addresses..." -msgstr "Lade Adressen..." - -#: src/js/services/onGoingProcess.js:35 -msgid "Loading transaction info..." -msgstr "Transaktionen werden geladen..." - -#: www/views/tab-settings.html:95 -msgid "Lock App" -msgstr "App sperren" - -#: src/js/controllers/lockSetup.js:23 -msgid "Lock by Fingerprint" -msgstr "Mit Fingerabdruck sperren" - -#: src/js/controllers/lockSetup.js:14 -msgid "Lock by PIN" -msgstr "Mit PIN sperren" - -#: www/views/modals/wallet-balance.html:80 -msgid "Locked" -msgstr "Gesperrt" - -#: src/js/services/bwcError.js:86 -msgid "Locktime in effect. Please wait to create a new spend proposal" -msgstr "Zeitsperre aktiv. Bitte mit neuem Zahlungsvorschlag warten" - -#: src/js/services/bwcError.js:89 -msgid "Locktime in effect. Please wait to remove this spend proposal" -msgstr "Zeitsperre aktiv. Bitte auf die Entfernung des Zahlungsvorschlags warten" - -#: www/views/modals/bitpay-card-confirmation.html:14 -msgid "Log out" -msgstr "" - -#: www/views/addresses.html:87 -msgid "Low amount inputs" -msgstr "" - -#: www/views/includes/walletHistory.html:27 -msgid "Low fees" -msgstr "Niedrige Gebühren" - -#: www/views/onboarding/tour.html:38 -msgid "Makes sense" -msgstr "Macht Sinn" - -#: src/js/controllers/modals/search.js:61 -msgid "Matches:" -msgstr "Übereinstimmungen:" - -#: www/views/includes/copayers.html:4 -#: www/views/preferencesInformation.html:79 -msgid "Me" -msgstr "Ich" - -#: src/js/controllers/feedback/rateCard.js:32 -msgid "Meh - it's alright" -msgstr "Meh - ist in Ordnung" - -#: src/js/controllers/tx-details.js:148 -#: www/views/modals/paypro.html:48 -#: www/views/modals/txp-details.html:95 -#: www/views/tx-details.html:74 -msgid "Memo" -msgstr "Notiz" - -#: www/views/modals/txp-details.html:133 -msgid "Merchant Message" -msgstr "Händlernachricht" - -#: src/js/services/bwcError.js:134 -msgid "Missing parameter" -msgstr "Angabe fehlt" - -#: src/js/services/bwcError.js:32 -msgid "Missing private keys to sign" -msgstr "Zum Signieren fehlen die privaten Schlüssel" - -#: www/views/preferences.html:60 -#: www/views/preferencesAdvanced.html:3 -msgid "More Options" -msgstr "Weitere Optionen" - -#: www/views/includes/walletHistory.html:47 -#: www/views/tx-details.html:19 -msgid "Moved" -msgstr "Verschoben" - -#: src/js/controllers/tx-details.js:114 -msgid "Moved Funds" -msgstr "Guthaben verschoben" - -#: www/views/modals/txp-details.html:57 -msgid "Multiple recipients" -msgstr "Mehrere Empfänger" - -#: www/views/tab-import-phrase.html:8 -msgid "NOTE: To import a wallet from a 3rd party software, please go to Add Wallet > Create Wallet, and specify the Recovery Phrase there." -msgstr "Hinweis: Um eine Brieftasche aus einer 3rd-Party-Software zu importieren, gehen Sie bitte auf Wallet Hinzufügen > Wallet Importieren, und geben Sie die Wiederhestellungsphrase ein." - -#: www/views/addressbook.add.html:21 -#: www/views/addressbook.view.html:18 -#: www/views/preferences.html:15 -#: www/views/preferencesAlias.html:17 -msgid "Name" -msgstr "Name" - -#: www/views/buyAmazon.html:55 -#: www/views/topup.html:63 -msgid "Network Fee" -msgstr "" - -#: src/js/services/bwcError.js:47 -msgid "Network error" -msgstr "Netzwerkfehler" - -#: www/views/includes/walletActivity.html:43 -msgid "New Proposal" -msgstr "Neuer Vorschlag" - -#: src/js/controllers/addresses.js:131 -msgid "New address could not be generated. Please try again." -msgstr "Neue Adresse konnte nicht erstellt werden. Bitte versuche es erneut." - -#: www/views/add.html:14 -msgid "New personal wallet" -msgstr "Neue persönliche Wallet" - -#: www/views/includes/nextSteps.html:3 -msgid "Next steps" -msgstr "Nächste Schritte" - -#: www/views/tab-receive.html:16 -msgid "No Wallet" -msgstr "Keine Wallet" - -#: src/js/controllers/buyAmazon.js:114 -msgid "No access key defined" -msgstr "" - -#: www/views/onboarding/backupRequest.html:5 -msgid "No backup, no bitcoin." -msgstr "Keine Sicherung, keine Bitcoins." - -#: www/views/addressbook.html:19 -msgid "No contacts yet" -msgstr "Noch keine Kontakte" - -#: www/views/preferencesExternal.html:12 -msgid "No hardware information available." -msgstr "Keine Hardwareinformationen verfügbar." - -#: www/views/tab-import-hardware.html:3 -msgid "No hardware wallets supported on this device" -msgstr "Hardware-Wallets werden auf diesem Gerät nicht unterstützt" - -#: www/views/proposals.html:24 -msgid "No pending proposals" -msgstr "Keine ausstehenden Vorschläge" - -#: www/views/activity.html:25 -msgid "No recent transactions" -msgstr "Keine aktuellen Transaktionen" - -#: src/js/controllers/buyAmazon.js:43 -#: src/js/controllers/topup.js:46 -msgid "No signing proposal: No private key" -msgstr "" - -#: www/views/walletDetails.html:193 -msgid "No transactions yet" -msgstr "Noch keine Transaktionen" - -#: src/js/controllers/preferencesDelete.js:15 -msgid "No wallet found" -msgstr "Kein Wallet gefunden" - -#: src/js/controllers/preferencesDelete.js:8 -msgid "No wallet selected" -msgstr "Kein Wallet ausgewählt" - -#: src/js/controllers/buyAmazon.js:298 -#: src/js/controllers/confirm.js:83 -#: src/js/controllers/topup.js:263 -msgid "No wallets available" -msgstr "" - -#: www/views/paperWallet.html:47 -msgid "No wallets available to receive funds" -msgstr "Keine Wallet verfügbar um Guthaben zu erhalten" - -#: src/js/services/feeService.js:12 -msgid "Normal" -msgstr "Normal" - -#: src/js/services/bwcError.js:80 -msgid "Not authorized" -msgstr "Nicht berechtigt" - -#: src/js/controllers/confirm.js:276 -msgid "Not enough funds for fee" -msgstr "Das Guthaben reicht nicht für die Gebühr" - -#: www/views/onboarding/tour.html:50 -msgid "Not even BitPay can access it." -msgstr "Nicht einmal BitPay kann darauf zugreifen." - -#: src/js/controllers/paperWallet.js:47 -msgid "Not funds found" -msgstr "Kein Guthaben gefunden" - -#: www/views/feedback/rateApp.html:3 -#: www/views/onboarding/notifications.html:8 -msgid "Not now" -msgstr "Nicht jetzt" - -#: www/views/includes/output.html:15 -msgid "Note" -msgstr "Notiz" - -#: www/views/modals/wallets.html:25 -msgid "Notice: only 1-1 (single signature) wallets can be used for sell bitcoin" -msgstr "Hinweis: nur 1-1 (Einzelunterschrift) Wallets können verwendet werden um Bitcoins zu verkaufen" - -#: www/views/preferencesNotifications.html:3 -#: www/views/tab-settings.html:46 -msgid "Notifications" -msgstr "Benachrichtigungen" - -#: www/views/onboarding/collectEmail.html:9 -msgid "Notifications by email" -msgstr "" - -#: www/views/tx-details.html:117 -msgid "Notify me if confirmed" -msgstr "" - -#: www/views/preferencesNotifications.html:24 -msgid "Notify me when transactions are confirmed" -msgstr "" - -#: www/views/includes/backupNeededPopup.html:8 -msgid "Now is a good time to backup your wallet. If this device is lost, it is impossible to access your funds without a backup." -msgstr "Jetzt ist ein guter Zeitpunkt um Ihre Wallet zu sichern. Wenn das Gerät verloren geht ist es unmöglich ohne eine Sicherung auf Ihr Geld zuzugreifen." - -#: www/views/backupWarning.html:11 -msgid "Now is a perfect time to assess your surroundings. Nearby windows? Hidden cameras? Shoulder-spies?" -msgstr "Jetzt ist die perfekte Zeit um Ihre Umgebung zu überprüfen. In der Nähe eines Fensters? Versteckte Kameras? Schulter-Spione?" - -#: src/js/controllers/buyAmazon.js:310 -#: src/js/controllers/topup.js:284 -#: src/js/services/popupService.js:16 -#: src/js/services/popupService.js:52 -#: src/js/services/popupService.js:61 -#: src/js/services/popupService.js:72 -#: www/views/modals/chooseFeeLevel.html:6 -msgid "OK" -msgstr "OK" - -#: www/views/modals/tx-status.html:12 -#: www/views/modals/tx-status.html:24 -#: www/views/modals/tx-status.html:36 -#: www/views/modals/tx-status.html:46 -msgid "OKAY" -msgstr "Okay" - -#: www/views/modals/terms.html:15 -msgid "Official English Disclaimer" -msgstr "Offizieller englischer Haftungsausschluss" - -#: src/js/controllers/feedback/send.js:64 -msgid "Oh no!" -msgstr "Oh nein!" - -#: www/views/tab-home.html:39 -msgid "On this screen you can see all your wallets, accounts, and assets." -msgstr "Auf diesem Bildschirm sehen Sie alle Ihre Wallets, Konten und Guthaben." - -#: src/js/controllers/bitpayCard.js:113 -#: src/js/controllers/tab-settings.js:47 -msgid "Open" -msgstr "Öffnen" - -#: src/js/controllers/preferencesLanguage.js:13 -msgid "Open Crowdin" -msgstr "Öffne Crowdin" - -#: src/js/controllers/preferencesAbout.js:15 -msgid "Open GitHub" -msgstr "Öffne GitHub" - -#: src/js/controllers/preferencesAbout.js:13 -msgid "Open GitHub Project" -msgstr "Öffne GitHub Projekt" - -#: src/js/controllers/bitpayCard.js:123 -#: src/js/controllers/tx-details.js:175 -msgid "Open Insight" -msgstr "Öffne Insight" - -#: www/views/tab-scan.html:22 -msgid "Open Settings" -msgstr "Öffne Einstellungen" - -#: src/js/controllers/preferencesLanguage.js:11 -msgid "Open Translation Community" -msgstr "Öffne Übersetzungs-Community" - -#: src/js/controllers/onboarding/terms.js:22 -msgid "Open Website" -msgstr "Öffne Website" - -#: www/views/tab-receive.html:27 -msgid "Open wallet" -msgstr "Öffne Wallet" - -#: www/views/includes/incomingDataMenu.html:19 -msgid "Open website" -msgstr "" - -#: www/views/bitpayCardIntro.html:34 -msgid "Order the BitPay Card" -msgstr "BitPay-Karte bestellen" - -#: www/views/join.html:102 -#: www/views/join.html:93 -#: www/views/tab-create-personal.html:67 -#: www/views/tab-create-personal.html:75 -#: www/views/tab-create-shared.html:104 -#: www/views/tab-create-shared.html:96 -#: www/views/tab-import-file.html:18 -#: www/views/tab-import-phrase.html:38 -msgid "Password" -msgstr "Passwort" - -#: src/js/controllers/import.js:83 -msgid "Password required. Make sure to enter your password in advanced options" -msgstr "Passwort erforderlich. Geben Sie Ihr Passwort in den erweiterten Optionen ein" - -#: www/views/join.html:33 -msgid "Paste invitation here" -msgstr "Einladung hier einfügen" - -#: www/views/tab-import-file.html:13 -msgid "Paste the backup plain text code" -msgstr "Den Klartext der Sicherung einfügen" - -#: www/views/bitpayCardIntro.html:28 -msgid "Pay 0% fees to turn bitcoin into dollars." -msgstr "Zahle 0 % Gebühren um Bitcoins in Dollar zu wechseln." - -#: www/views/modals/paypro.html:18 -msgid "Pay To" -msgstr "Zahle an" - -#: src/js/controllers/modals/txpDetails.js:45 -#: www/views/modals/tx-status.html:33 -msgid "Payment Accepted" -msgstr "Zahlung angenommen" - -#: www/views/confirm.html:25 -msgid "Payment Expires:" -msgstr "Zahlung läuft ab:" - -#: www/views/modals/txp-details.html:6 -msgid "Payment Proposal" -msgstr "Zahlungsvorschlag" - -#: www/views/modals/tx-status.html:21 -msgid "Payment Proposal Created" -msgstr "Zahlungsvorschlag erstellt" - -#: www/views/tab-home.html:46 -msgid "Payment Proposals" -msgstr "Zahlungsvorschläge" - -#: src/js/services/payproService.js:32 -msgid "Payment Protocol Invalid" -msgstr "Ungültiges Zahlungsprotokoll" - -#: src/js/services/payproService.js:18 -msgid "Payment Protocol not supported on Chrome App" -msgstr "Zahlungsprotokoll wird nicht von der Chrome App unterstützt" - -#: www/views/includes/walletActivity.html:20 -msgid "Payment Received" -msgstr "Zahlung erhalten" - -#: www/views/modals/tx-status.html:43 -#: www/views/modals/txp-details.html:43 -msgid "Payment Rejected" -msgstr "Zahlung abgelehnt" - -#: src/js/controllers/modals/txpDetails.js:42 -#: www/views/confirm.html:126 -#: www/views/includes/walletActivity.html:11 -#: www/views/modals/txp-details.html:42 -msgid "Payment Sent" -msgstr "Zahlung gesendet" - -#: www/views/modals/txp-details.html:32 -msgid "Payment accepted, but not yet broadcasted" -msgstr "Zahlung akzeptiert, aber noch nicht übermittelt" - -#: www/views/modals/txp-details.html:40 -msgid "Payment accepted. It will be broadcasted by Glidera. In case there is a problem, it can be deleted 6 hours after it was created." -msgstr "Zahlung akzeptiert. Sie wird durch Glidera übermittelt. Falls ein Problem auftritt, kann sie nach einer Wartezeit von 6 Stunden gelöscht werden." - -#: www/views/modals/txp-details.html:109 -msgid "Payment details" -msgstr "Zahlungsdetails" - -#: www/views/modals/paypro.html:6 -msgid "Payment request" -msgstr "Zahlungsanforderung" - -#: www/views/proposals.html:4 -msgid "Pending Proposals" -msgstr "Anstehende Vorschläge" - -#: www/views/preferencesDeleteWallet.html:13 -msgid "Permanently delete this wallet." -msgstr "Wallet dauerhaft löschen." - -#: src/js/services/profileService.js:388 -msgid "Personal Wallet" -msgstr "Persönliches Wallet" - -#: www/views/backup.html:18 -msgid "Please carefully write down this phrase." -msgstr "Notieren Sie bitte sorgfältig diese Phrase." - -#: www/views/tab-scan.html:20 -msgid "Please connect a camera to get started." -msgstr "Bitte verbinden Sie eine Kamera um loszulegen." - -#: src/js/controllers/import.js:260 -msgid "Please enter the recovery phrase" -msgstr "Bitte geben Sie die Wiederherstellungsphrase ein" - -#: src/js/controllers/create.js:168 -#: src/js/controllers/join.js:135 -msgid "Please enter the wallet recovery phrase" -msgstr "Bitte geben Sie die Wallet-Wiederherstellungsphrase ein" - -#: www/views/modals/pin.html:9 -msgid "Please enter your PIN" -msgstr "Bitte geben Sie Ihre PIN ein" - -#: www/views/backup.html:46 -msgid "Please tap each word in the correct order." -msgstr "Bitte tippen Sie jedes Wort in der richtigen Reihenfolge." - -#: src/js/services/bwcError.js:101 -msgid "Please upgrade Copay to perform this action" -msgstr "Bitte Copay aktualisieren, um diese Aktion auszuführen" - -#: src/js/controllers/import.js:222 -msgid "Please, select your backup file" -msgstr "Bitte die Sicherungsdatei wählen" - -#: www/views/bitpayCard.html:81 -msgid "Pre-Auth Holds" -msgstr "" - -#: www/views/tab-settings.html:40 -msgid "Preferences" -msgstr "Einstellungen" - -#: src/js/services/onGoingProcess.js:38 -msgid "Preparing addresses..." -msgstr "Adressen werden vorbereitet..." - -#: src/js/controllers/export.js:198 -msgid "Preparing backup..." -msgstr "Sicherung wird vorbereitet..." - -#: src/js/routes.js:1188 -msgid "Press again to exit" -msgstr "Zum Beenden erneut drücken" - -#: src/js/services/feeService.js:11 -msgid "Priority" -msgstr "höchste Priorität" - -#: www/views/includes/incomingDataMenu.html:80 -msgid "Private Key" -msgstr "" - -#: src/js/controllers/paperWallet.js:137 -msgid "Private key encrypted. Enter password" -msgstr "Privater Schlüssel verschlüsselt. Passwort eingeben" - -#: src/js/services/bwcError.js:35 -msgid "Private key is encrypted, cannot sign" -msgstr "Der private Schlüssel ist verschlüsselt, signieren ist nicht möglich" - -#: www/views/includes/walletActivity.html:51 -msgid "Proposal Accepted" -msgstr "Vorschlag angenommen" - -#: src/js/controllers/modals/txpDetails.js:55 -#: src/js/controllers/tx-details.js:61 -#: www/views/confirm.html:127 -msgid "Proposal Created" -msgstr "Vorschlag erstellt" - -#: www/views/includes/walletActivity.html:27 -msgid "Proposal Deleted" -msgstr "Vorschlag gelöscht" - -#: www/views/includes/walletActivity.html:35 -msgid "Proposal Rejected" -msgstr "Vorschlag abgelehnt" - -#: www/views/walletDetails.html:178 -msgid "Proposals" -msgstr "Vorschläge" - -#: src/js/controllers/buyAmazon.js:281 -msgid "Purchase Amount is limited to {{limitPerDay}} {{currency}} per day" -msgstr "" - -#: www/views/onboarding/notifications.html:3 -msgid "Push Notifications" -msgstr "Push-Benachrichtigungen" - -#: www/views/preferencesNotifications.html:17 -msgid "Push notifications for {{appName}} are currently disabled. Enable them in the Settings app." -msgstr "Push-Benachrichtigungen für {{appName}} sind derzeit deaktiviert. Aktivieren Sie diese in den Einstellungen." - -#: www/views/export.html:17 -msgid "QR Code" -msgstr "QR-Code" - -#: www/views/onboarding/disclaimer.html:13 -msgid "Quick review!" -msgstr "Schnelle Überprüfung!" - -#: src/js/controllers/create.js:79 -#: src/js/controllers/join.js:65 -msgid "Random" -msgstr "Per Zufall" - -#: www/views/feedback/rateApp.html:14 -msgid "Rate on the app store" -msgstr "Im App Store bewerten" - -#: www/views/addresses.html:52 -msgid "Read less" -msgstr "Weniger anzeigen" - -#: www/views/addresses.html:51 -msgid "Read more" -msgstr "Mehr anzeigen" - -#: www/views/tab-receive.html:3 -#: www/views/tabs.html:7 -msgid "Receive" -msgstr "Empfangen" - -#: www/views/customAmount.html:46 -msgid "Receive in" -msgstr "" - -#: www/views/includes/walletHistory.html:24 -#: www/views/tx-details.html:18 -msgid "Received" -msgstr "Empfangen" - -#: src/js/controllers/tx-details.js:113 -msgid "Received Funds" -msgstr "Erhaltener Betrag" - -#: www/views/includes/walletHistory.html:57 -#: www/views/tx-details.html:24 -msgid "Receiving" -msgstr "Eingehend" - -#: www/views/bitpayCard.html:60 -#: www/views/includes/walletHistory.html:3 -msgid "Recent" -msgstr "Kürzlich" - -#: www/views/advancedSettings.html:20 -msgid "Recent Transaction Card" -msgstr "Kürzlich Ausgeführte Transaktionen Karte" - -#: www/views/activity.html:4 -#: www/views/tab-home.html:58 -msgid "Recent Transactions" -msgstr "Kürzliche Transaktionen" - -#: www/views/amount.html:18 -#: www/views/tab-send.html:9 -msgid "Recipient" -msgstr "Empfänger" - -#: www/views/modals/txp-details.html:62 -msgid "Recipients" -msgstr "Empfänger" - -#: www/views/import.html:12 -msgid "Recovery phrase" -msgstr "Wiederherstellungsphrase" - -#: www/views/walletDetails.html:117 -#: www/views/walletDetails.html:36 -msgid "Recreate" -msgstr "Wiederherstellen" - -#: src/js/services/onGoingProcess.js:26 -msgid "Recreating Wallet..." -msgstr "Wallet wiederherstellen..." - -#: src/js/controllers/modals/txpDetails.js:57 -#: src/js/controllers/tx-details.js:63 -msgid "Rejected" -msgstr "Abgelehnt" - -#: src/js/services/onGoingProcess.js:27 -msgid "Rejecting payment proposal" -msgstr "Ablehnung des Zahlungsvorschlags" - -#: www/views/preferencesAbout.html:9 -msgid "Release information" -msgstr "Release-Informationen" - -#: www/views/addressbook.view.html:36 -msgid "Remove" -msgstr "" - -#: src/js/controllers/preferencesBitpayServices.js:7 -msgid "Remove BitPay Account?" -msgstr "BitPay-Konto entfernen?" - -#: src/js/controllers/preferencesBitpayServices.js:19 -msgid "Remove BitPay Card?" -msgstr "BitPay Karte entfernen?" - -#: src/js/controllers/preferencesBitpayServices.js:8 -msgid "Removing your BitPay account will remove all associated BitPay account data from this device. Are you sure you would like to remove your BitPay Account ({{email}}) from this device?" -msgstr "Das Entfernen des BitPay-Kontos löscht alle zugehörigen Daten von diesem Gerät. Soll wirklich das BityPay-Konto ({{email}}) von diesem Gerät entfernt werden?" - -#: www/views/join.html:113 -#: www/views/join.html:121 -#: www/views/tab-create-personal.html:84 -#: www/views/tab-create-personal.html:92 -#: www/views/tab-create-shared.html:113 -#: www/views/tab-create-shared.html:121 -#: www/views/tab-export-file.html:17 -msgid "Repeat password" -msgstr "Passwort wiederholen" - -#: www/views/tab-export-file.html:16 -msgid "Repeat the password" -msgstr "Passwort wiederholen" - -#: www/views/preferences.html:55 -msgid "Request Fingerprint" -msgstr "Fingerabdruck anfordern" - -#: www/views/tab-receive.html:45 -msgid "Request Specific amount" -msgstr "Einen bestimmten Betrag anfordern" - -#: www/views/preferences.html:42 -msgid "Request Spending Password" -msgstr "Berechtigungscode abfragen" - -#: www/views/tab-create-shared.html:42 -msgid "Required number of signatures" -msgstr "Erforderliche Anzahl von Signaturen" - -#: www/views/onboarding/welcome.html:9 -msgid "Restore from backup" -msgstr "Von Sicherung wiederherstellen" - -#: src/js/services/onGoingProcess.js:29 -msgid "Retrieving inputs information" -msgstr "Eingänge werden abgerufen" - -#: src/js/controllers/onboarding/tour.js:56 -msgid "Retry" -msgstr "Nochmals versuchen" - -#: www/views/tab-scan.html:23 -msgid "Retry Camera" -msgstr "Kamera nochmals versuchen" - -#: www/views/addressbook.add.html:56 -#: www/views/includes/note.html:9 -#: www/views/preferencesAlias.html:21 -#: www/views/preferencesBwsUrl.html:25 -#: www/views/preferencesNotifications.html:46 -msgid "Save" -msgstr "Speichern" - -#: www/views/tab-scan.html:3 -#: www/views/tabs.html:11 -msgid "Scan" -msgstr "Scannen" - -#: www/views/tab-scan.html:15 -msgid "Scan QR Codes" -msgstr "QR-Code scannen" - -#: www/views/addresses.html:31 -msgid "Scan addresses for funds" -msgstr "Adresse auf neue Beträge überprüfen" - -#: www/views/modals/fingerprintCheck.html:11 -msgid "Scan again" -msgstr "" - -#: src/js/services/fingerprintService.js:56 -msgid "Scan your fingerprint please" -msgstr "Scannen Sie bitte Ihren Fingerabdruck" - -#: src/js/services/onGoingProcess.js:30 -msgid "Scanning Wallet funds..." -msgstr "Prüfe Wallet auf neue Beträge..." - -#: www/views/includes/screenshotWarningModal.html:7 -msgid "Screenshots are not secure" -msgstr "Screenshots sind nicht sicher" - -#: www/views/modals/search.html:6 -msgid "Search Transactions" -msgstr "Transaktionen durchsuchen" - -#: www/views/tab-send.html:13 -msgid "Search or enter bitcoin address" -msgstr "Bitcoin-Adresse suchen oder eingeben" - -#: www/views/modals/search.html:16 -msgid "Search transactions" -msgstr "Transaktionen durchsuchen" - -#: www/views/preferencesAltCurrency.html:14 -msgid "Search your currency" -msgstr "Suchen Sie Ihre Währung" - -#: www/views/preferences.html:30 -msgid "Security" -msgstr "Sicherheit" - -#: www/views/tab-import-file.html:7 -msgid "Select a backup file" -msgstr "Eine Sicherungsdatei auswählen" - -#: src/js/controllers/tab-receive.js:133 -msgid "Select a wallet" -msgstr "Wallet wählen" - -#: www/views/modals/paypro.html:38 -msgid "Self-signed Certificate" -msgstr "Selbstsigniertes Zertifikat" - -#: src/js/services/onGoingProcess.js:41 -msgid "Selling Bitcoin..." -msgstr "Verkauf von Bitcoins..." - -#: www/views/feedback/send.html:13 -#: www/views/feedback/send.html:43 -#: www/views/tab-send.html:3 -#: www/views/tabs.html:15 -msgid "Send" -msgstr "Senden" - -#: www/views/feedback/send.html:3 -#: www/views/tab-settings.html:29 -msgid "Send Feedback" -msgstr "Feedback senden" - -#: www/views/addressbook.view.html:31 -msgid "Send Money" -msgstr "Geld senden" - -#: www/views/allAddresses.html:19 -msgid "Send addresses by email" -msgstr "Adressen per e-Mail versenden" - -#: www/views/preferencesLogs.html:13 -#: www/views/tab-export-file.html:82 -msgid "Send by email" -msgstr "Per E-Mail versenden" - -#: src/js/controllers/confirm.js:151 -msgid "Send from" -msgstr "Senden von" - -#: www/views/includes/itemSelector.html:8 -msgid "Send max amount" -msgstr "Sende max. Betrag" - -#: www/views/includes/incomingDataMenu.html:46 -msgid "Send payment to this address" -msgstr "" - -#: www/views/feedback/rateApp.html:17 -msgid "Send us feedback instead" -msgstr "Senden Sie uns Feedback stattdessen" - -#: www/views/confirm.html:15 -#: www/views/includes/txp.html:12 -#: www/views/modals/txp-details.html:19 -#: www/views/tx-details.html:23 -msgid "Sending" -msgstr "Senden" - -#: src/js/services/onGoingProcess.js:39 -msgid "Sending 2FA code..." -msgstr "2FA Code senden..." - -#: src/js/services/onGoingProcess.js:36 -msgid "Sending feedback..." -msgstr "Feedback wird gesendet..." - -#: www/views/confirm.html:16 -msgid "Sending maximum amount" -msgstr "Sende maximalen Betrag" - -#: src/js/services/onGoingProcess.js:31 -msgid "Sending transaction" -msgstr "Sende Transaktion" - -#: src/js/controllers/confirm.js:490 -msgid "Sending {{amountStr}} from your {{name}} wallet" -msgstr "Sende {{amountStr}} aus Ihrer Wallet {{name}}" - -#: www/views/includes/walletHistory.html:42 -#: www/views/modals/tx-status.html:9 -#: www/views/topup.html:100 -#: www/views/tx-details.html:17 -msgid "Sent" -msgstr "Gesendet" - -#: src/js/controllers/tx-details.js:112 -msgid "Sent Funds" -msgstr "Guthaben senden" - -#: src/js/services/bwcError.js:38 -msgid "Server response could not be verified" -msgstr "Antwort des Servers konnte nicht verifiziert werden" - -#: src/js/controllers/buyAmazon.js:96 -msgid "Service not available" -msgstr "" - -#: www/views/includes/homeIntegrations.html:3 -msgid "Services" -msgstr "Services" - -#: www/views/preferencesLogs.html:3 -msgid "Session Log" -msgstr "Sitzungsprotokoll" - -#: www/views/preferencesAbout.html:35 -msgid "Session log" -msgstr "Sitzungsprotokoll" - -#: www/views/tab-export-file.html:10 -msgid "Set up a password" -msgstr "Passwort einrichten" - -#: src/js/controllers/preferencesFee.js:84 -msgid "Set your own fee in satoshis/byte" -msgstr "" - -#: www/views/tab-settings.html:3 -#: www/views/tabs.html:19 -msgid "Settings" -msgstr "Einstellungen" - -#: www/views/feedback/complete.html:17 -#: www/views/feedback/complete.html:26 -msgid "Share the love by inviting your friends." -msgstr "Teilen Sie die Liebe indem Sie Ihre Freunde einladen." - -#: www/views/copayers.html:20 -msgid "Share this invitation with your copayers" -msgstr "Einladung mit Copayern teilen" - -#: src/js/controllers/feedback/complete.js:5 -#: www/views/tab-settings.html:36 -msgid "Share {{appName}}" -msgstr "{{appName}} weiterleiten" - -#: www/views/tab-import-hardware.html:24 -msgid "Shared Wallet" -msgstr "Wallet teilen" - -#: www/views/preferencesExternal.html:34 -msgid "Show Recovery Phrase" -msgstr "Wiederherstellungsphrase anzeigen" - -#: www/views/tab-receive.html:34 -msgid "Show address" -msgstr "Adresse anzeigen" - -#: www/views/join.html:45 -#: www/views/tab-create-personal.html:25 -#: www/views/tab-create-shared.html:54 -#: www/views/tab-export-file.html:24 -#: www/views/tab-import-file.html:27 -#: www/views/tab-import-hardware.html:30 -#: www/views/tab-import-phrase.html:32 -msgid "Show advanced options" -msgstr "Erweiterte Optionen anzeigen" - -#: www/views/tab-send.html:37 -msgid "Show bitcoin address" -msgstr "Bitcoin-Adresse anzeigen" - -#: www/views/tab-send.html:59 -msgid "Show more" -msgstr "Mehr anzeigen" - -#: src/js/services/bwcError.js:104 -msgid "Signatures rejected by server" -msgstr "Signaturen wurden vom Server abgelehnt" - -#: src/js/services/onGoingProcess.js:32 -msgid "Signing transaction" -msgstr "Unterschreibe Transaktion" - -#: 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 "Da nur Sie Ihr Geld kontrollieren müssen Sie Ihre Wiederherstellungsphrase gut sichern, für den Fall dass die App gelöscht wird." - -#: www/views/tab-create-personal.html:120 -#: www/views/tab-create-shared.html:149 -msgid "Single Address Wallet" -msgstr "Wallet mit einer einzigen Adresse" - -#: www/views/onboarding/collectEmail.html:40 -#: www/views/onboarding/tour.html:11 -msgid "Skip" -msgstr "Überspringen" - -#: src/js/controllers/modals/txpDetails.js:34 -msgid "Slide" -msgstr "Schieben" - -#: www/views/buyAmazon.html:96 -msgid "Slide to buy" -msgstr "" - -#: src/js/controllers/create.js:83 -#: src/js/controllers/join.js:68 -msgid "Specify Recovery Phrase..." -msgstr "Wiederherstellungsphrase angeben..." - -#: src/js/services/bwcError.js:92 -msgid "Spend proposal is not accepted" -msgstr "Zahlungsvorschlag wurde nicht akzeptiert" - -#: src/js/services/bwcError.js:95 -msgid "Spend proposal not found" -msgstr "Zahlungsvorschlag wurde nicht gefunden" - -#: src/js/services/bwcError.js:137 -msgid "Spending Password needed" -msgstr "Berechtigungscode erforderlich" - -#: www/views/walletDetails.html:162 -msgid "Spending this balance will need significant Bitcoin network fees" -msgstr "" - -#: www/views/tab-send.html:28 -msgid "Start sending bitcoin" -msgstr "Starte mit dem Senden der Bitcoins" - -#: www/views/lockSetup.html:3 -msgid "Startup Lock" -msgstr "Sperre des Startups" - -#: www/views/topup.html:101 -msgid "Success" -msgstr "" - -#: src/js/services/feeService.js:14 -msgid "Super Economy" -msgstr "Niedrigste Priorität" - -#: www/views/paperWallet.html:7 -msgid "Sweep" -msgstr "Leeren" - -#: www/views/includes/incomingDataMenu.html:89 -#: www/views/paperWallet.html:3 -msgid "Sweep paper wallet" -msgstr "Paperwallet löschen" - -#: src/js/services/onGoingProcess.js:33 -msgid "Sweeping Wallet..." -msgstr "Leere Wallet..." - -#: www/views/preferencesDeleteWallet.html:16 -msgid "THIS ACTION CANNOT BE REVERSED" -msgstr "DIESE AKTION KANN NICHT RÜCKGÄNGIG GEMACHT WERDEN" - -#: www/views/onboarding/welcome.html:5 -msgid "Take control of your money,
get started with bitcoin." -msgstr "Übernehmen Sie die Kontrolle über Ihr Geld,
Legen Sie los mit Bitcoins." - -#: www/views/walletDetails.html:140 -#: www/views/walletDetails.html:60 -msgid "Tap and hold to show" -msgstr "Anzeigen durch tippen und halten" - -#: www/views/walletDetails.html:112 -#: www/views/walletDetails.html:31 -msgid "Tap to retry" -msgstr "Zum Wiederholen antippen" - -#: www/views/termsOfUse.html:3 -msgid "Terms Of Use" -msgstr "Nutzungsbedingungen" - -#: www/views/modals/terms.html:3 -#: www/views/onboarding/disclaimer.html:29 -#: www/views/onboarding/disclaimer.html:43 -#: www/views/preferencesAbout.html:30 -msgid "Terms of Use" -msgstr "Nutzungsbedingungen" - -#: www/views/tab-create-personal.html:116 -#: www/views/tab-import-phrase.html:65 -msgid "Testnet" -msgstr "Testnet" - -#: www/views/includes/incomingDataMenu.html:61 -msgid "Text" -msgstr "" - -#: src/js/controllers/feedback/send.js:27 -#: src/js/controllers/feedback/send.js:76 -#: www/views/feedback/complete.html:20 -#: www/views/feedback/rateApp.html:4 -msgid "Thank you!" -msgstr "Vielen Dank!" - -#: src/js/controllers/feedback/send.js:72 -msgid "Thanks!" -msgstr "Danke!" - -#: src/js/controllers/feedback/send.js:73 -msgid "That's exciting to hear. We'd love to earn that fifth star from you – how could we improve your experience?" -msgstr "Wir sind gespannt es zu erfahren. Wir würden uns freuen fünf Sterne von Ihnen zu erhalten - Wie können wir Ihre Erfahrung verbessern?" - -#: src/js/services/ledger.js:152 -msgid "The Ledger Chrome application is not installed" -msgstr "Die Chrome-Anwendung für Ledger ist nicht installiert" - -#: www/views/modals/wallet-balance.html:55 -msgid "The amount of bitcoin immediately spendable from this wallet." -msgstr "Den Betrag an Bitcoins sofort aus dieser Wallet zahlen." - -#: 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 "Der Betrag an Bitcoins gespeichert in dieser Wallet ist zugewiesen als Einsatz für die ausstehende Transaktion. Dem Betrag wurde zugewiesen unverbrauchte Transaktions-Ausgänge zu verwenden, welche mit dieser Brieftasche verbunden sind, und entspricht möglicherweise mehr als die tatsächlichen Beträge welche im Zusammenhang mit Ihren ausstehenden Transaktions-Betrag stehen." - -#: www/views/modals/wallet-balance.html:74 -msgid "The amount of bitcoin stored in this wallet with less than 1 blockchain confirmation." -msgstr "Die Menge an Bitcoins sind in dieser Geldbörse mit weniger als 1 Blockchain Bestätigung gespeichert." - -#: www/views/tab-import-phrase.html:5 -msgid "The derivation path" -msgstr "Die Ableitungsstruktur" - -#: www/views/onboarding/tour.html:37 -msgid "The exchange rate changes with the market." -msgstr "Der Wechselkurs ändert sich mit dem Markt." - -#: www/views/preferencesFee.html:12 -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 "Je höher die Gebühr, desto größer ist der Anreiz das ein \"Miner\" die Transaktion in einem \"Block\" inkludiert. Aktuelle Gebühren werden anhand der Netzauslastung und der ausgewählten Richtlinie bestimmt." - -#: www/views/addresses.html:51 -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 "Die maximale Anzahl aufeinander folgender ungenutzter Adressen (20) wurde erreicht. Wenn eine Ihrer ungenutzten Adressen eine Zahlung erhält wird eine neue Adresse erzeugt und in der Registerkarte \"Empfangen\" gezeigt." - -#: src/js/controllers/onboarding/terms.js:21 -msgid "The official English Terms of Service are available on the BitPay website." -msgstr "Die offizielle englischen Nutzungsbedingungen sind auf der BitPay Website verfügbar." - -#: www/views/tab-import-phrase.html:4 -msgid "The password of the recovery phrase (if set)" -msgstr "Das Passwort der Wiederherstellungsphrase (wenn eingestellt)" - -#: src/js/services/walletService.js:1140 -msgid "The payment was created but could not be completed. Please try again from home screen" -msgstr "Die Zahlung wurde erzeugt, kann aber nicht abgeschlossen werden. Bitte erneut über die Startseite versuchen" - -#: www/views/modals/txp-details.html:26 -msgid "The payment was removed by creator" -msgstr "Die Zahlung wurde vom Ersteller entfernt" - -#: www/views/join.html:88 -#: www/views/tab-create-personal.html:61 -#: www/views/tab-create-shared.html:90 -#: www/views/tab-import-phrase.html:40 -msgid "The recovery phrase could require a password to be imported" -msgstr "Um die Wiederherstellungsphrase zu importieren könnte ein Passwort nötig sein" - -#: src/js/services/bwcError.js:56 -msgid "The request could not be understood by the server" -msgstr "Die Anforderung konnte nicht vom Server interpretiert werden" - -#: www/views/addresses.html:52 -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 "Der Wiederherstellungsvorgang wird beendet wenn 20 hintereinander generierte Adressen keinen Betrag erhalten. Um sicher mehr Adressen generieren zu können führen Sie eine Zahlung zu einer der ungenutzten Adressen durch welche bereits erzeugt wurden." - -#: src/js/services/bwcError.js:98 -msgid "The spend proposal is not pending" -msgstr "Der Zahlungsvorschlag ist nicht ausstehend" - -#: www/views/modals/wallet-balance.html:36 -msgid "The total amount of bitcoin stored in this wallet." -msgstr "Der Gesamtbetrag an Bitcoins vorrätig in dieser Wallet." - -#: www/views/preferencesHistory.html:27 -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 "Die Transaktionshistorie und jede neue eingehende Transaktion werden in der App zwischengespeichert. Diese Funktion bereinigt dies und synchronisiert erneut vom Server" - -#: www/views/tab-import-phrase.html:6 -msgid "The wallet service URL" -msgstr "Die URL des Wallet-Diensts" - -#: src/js/controllers/tab-home.js:38 -msgid "There is a new version of {{appName}} available" -msgstr "Es steht eine neue Version von {{appName}} zur Verfügung" - -#: src/js/controllers/import.js:213 -#: src/js/controllers/import.js:237 -#: src/js/controllers/import.js:317 -msgid "There is an error in the form" -msgstr "Es ist ein Fehler im Formular aufgetreten" - -#: src/js/controllers/feedback/send.js:61 -#: src/js/controllers/feedback/send.js:65 -msgid "There's obviously something we're doing wrong." -msgstr "Hier ist offensichtlich etwas was wir falsch machen." - -#: src/js/controllers/feedback/rateCard.js:38 -msgid "This app is fantastic!" -msgstr "Diese App ist fantastisch!" - -#: www/views/onboarding/tour.html:47 -msgid "This app stores your bitcoin with cutting-edge security." -msgstr "Diese App speichert Ihre Bitcoins mit modernster Sicherheit." - -#: src/js/controllers/confirm.js:468 -msgid "This bitcoin payment request has expired." -msgstr "Diese Bitcoin Zahlungsaufforderung ist abgelaufen." - -#: www/views/join.html:130 -#: www/views/tab-create-personal.html:101 -#: www/views/tab-create-shared.html:130 -msgid "This password cannot be recovered. If the password is lost, there is no way you could recover your funds." -msgstr "Dieses Passwort kann nicht wiederhergestellt werden. Wenn das Passwort verloren gegangen ist gibt es keine Möglichkeit mehr Ihr Geld zurück zu holen." - -#: www/views/backup.html:24 -msgid "This recovery phrase was created with a password. To recover this wallet both the recovery phrase and password are needed." -msgstr "Diese Wiederherstellungsphrase entstand mit einem Passwort. Zur Wiederherstellung der Wallet sind die Wiederherstellungsphrase und das Passwort erforderlich." - -#: www/views/tx-details.html:93 -msgid "This transaction amount is too small compared to current Bitcoin network fees. Spending these funds will need a Bitcoin network fee cost comparable to the funds itself." -msgstr "" - -#: www/views/tx-details.html:89 -msgid "This transaction could take a long time to confirm or could be dropped due to the low fees set by the sender" -msgstr "Die Bestätigung dieser Transaktion kann sehr lange dauern oder verworfen werden, da vom Absender nur geringe Gebühren eingestellt wurden" - -#: www/views/walletDetails.html:116 -#: 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 "Dieses Wallet ist nicht beim angegebenen Bitcore Wallet Service (BWS) registriert. Bitte aus den lokalen Informationen wiederherstellen" - -#: www/views/modals/txp-details.html:138 -#: www/views/tx-details.html:121 -msgid "Timeline" -msgstr "Zeitachse" - -#: www/views/confirm.html:31 -#: www/views/includes/output.html:2 -#: www/views/modals/txp-details.html:111 -#: www/views/modals/txp-details.html:53 -#: www/views/tx-details.html:41 -#: www/views/tx-details.html:53 -msgid "To" -msgstr "An" - -#: www/views/tab-send.html:32 -msgid "To get started, buy bitcoin or share your address. You can receive bitcoin from any wallet or service." -msgstr "Um loszulegen kaufe Bitcoins oder teilen Sie ihre Adresse. Sie können Bitcoins von jeder beliebigen Wallet oder von einem Dienstleister/Broker empfangen." - -#: www/views/tab-send.html:33 -msgid "To get started, you'll need to create a bitcoin wallet and get some bitcoin." -msgstr "Um loszulegen müssen Sie eine Bitcoin-Wallet erstellen und einige Bitcoins erhalten." - -#: src/js/services/bitpayAccountService.js:73 -msgid "To {{reason}} you must first add your BitPay account - {{email}}" -msgstr "" - -#: src/js/services/onGoingProcess.js:48 -msgid "Top up in progress..." -msgstr "" - -#: src/js/controllers/topup.js:205 -msgid "Top up {{amountStr}} to debit card ({{cardLastNumber}})" -msgstr "" - -#: www/views/buyAmazon.html:61 -#: www/views/modals/wallet-balance.html:23 -#: www/views/topup.html:70 -msgid "Total" -msgstr "Gesamt" - -#: www/views/walletDetails.html:185 -msgid "Total Locked Balance" -msgstr "Ingesamt gesperrter Gesamtsaldo" - -#: www/views/tab-create-shared.html:33 -msgid "Total number of copayers" -msgstr "Gesamtanzahl der Copayer" - -#: www/views/addresses.html:81 -msgid "Total wallet inputs" -msgstr "" - -#: src/js/services/fingerprintService.js:63 -#: src/js/services/fingerprintService.js:68 -msgid "Touch ID Failed" -msgstr "Touch-ID gescheitert" - -#: src/js/controllers/tx-details.js:11 -msgid "Transaction" -msgstr "Transaktion" - -#: www/views/confirm.html:128 -msgid "Transaction Created" -msgstr "" - -#: www/views/preferencesAdvanced.html:29 -#: www/views/preferencesHistory.html:3 -msgid "Transaction History" -msgstr "Transaktionsverlauf" - -#: src/js/services/bwcError.js:83 -msgid "Transaction already broadcasted" -msgstr "Transaktion wurde bereits übermittelt" - -#: src/js/controllers/buyAmazon.js:306 -#: src/js/controllers/topup.js:279 -msgid "Transaction has not been created" -msgstr "" - -#: www/views/topup.html:104 -msgid "Transaction initiated" -msgstr "" - -#: src/js/controllers/tx-details.js:102 -msgid "Transaction not available at this time" -msgstr "Transaktion ist zu diesem Zeitpunkt nicht verfügbar" - -#: src/js/controllers/activity.js:45 -#: src/js/controllers/tab-home.js:174 -msgid "Transaction not found" -msgstr "Transaktion konnte nicht gefunden werden" - -#: www/views/modals/chooseFeeLevel.html:54 -msgid "Transactions without fee are not supported." -msgstr "" - -#: src/js/controllers/paperWallet.js:110 -msgid "Transfer to" -msgstr "" - -#: www/views/tab-send.html:67 -msgid "Transfer to Wallet" -msgstr "Übertragung zur Wallet" - -#: www/views/modals/pin.html:13 -msgid "Try again in {{expires}}" -msgstr "Versuchen Sie es erneut in {{expires}}" - -#: www/views/bitpayCardIntro.html:18 -msgid "Turn bitcoin into dollars, swipe anywhere Visa® is accepted." -msgstr "Wechseln Sie Bitcoins in Dollar, wechseln Sie überall wo Visa® akzeptiert wird." - -#: www/views/tab-import-phrase.html:17 -msgid "Type the Recovery Phrase (usually 12 words)" -msgstr "Wiederherstellungsphrase eingeben (in der Regel 12 Wörter)" - -#: src/js/controllers/backup.js:75 -msgid "Uh oh..." -msgstr "Uh oh..." - -#: www/views/tx-details.html:100 -msgid "Unconfirmed" -msgstr "Unbestätigt" - -#: www/views/preferencesUnit.html:4 -msgid "Unit" -msgstr "Währungseinheit" - -#: www/views/walletDetails.html:179 -msgid "Unsent transactions" -msgstr "Nicht vesendete Transaktionen" - -#: www/views/addresses.html:39 -msgid "Unused Addresses" -msgstr "Nicht verwendete Adressen" - -#: www/views/addresses.html:50 -msgid "Unused Addresses Limit" -msgstr "Nicht genutzte Adressen Limit" - -#: src/js/controllers/tab-home.js:146 -msgid "Update Available" -msgstr "Aktualisierung verfügbar" - -#: www/views/proposals.html:14 -msgid "Updating pending proposals. Please stand by" -msgstr "Aktualisiere anstehende Vorschläge. Bitte warten" - -#: www/views/walletDetails.html:211 -msgid "Updating transaction history. Please stand by." -msgstr "Aktualisieren des Transaktionsverlaufs. Bitte warten." - -#: www/views/activity.html:14 -msgid "Updating... Please stand by" -msgstr "Aktualisiere... Bitte warten" - -#: src/js/services/feeService.js:10 -msgid "Urgent" -msgstr "Dringend" - -#: www/views/advancedSettings.html:11 -msgid "Use Unconfirmed Funds" -msgstr "Unbestätigte Mittel einsetzen" - -#: src/js/services/onGoingProcess.js:34 -msgid "Validating recovery phrase..." -msgstr "Überprüfe Wiederherstellungsphrase..." - -#: www/views/modals/fingerprintCheck.html:4 -msgid "Verify your identity" -msgstr "" - -#: www/views/preferencesAbout.html:14 -#: www/views/preferencesExternal.html:25 -msgid "Version" -msgstr "Version" - -#: www/views/tab-export-file.html:69 -msgid "View" -msgstr "Ansicht" - -#: www/views/addresses.html:34 -msgid "View All Addresses" -msgstr "Alle Adressen anzeigen" - -#: src/js/controllers/onboarding/terms.js:20 -msgid "View Terms of Service" -msgstr "Nutzungsbedingungen anzeigen" - -#: src/js/controllers/bitpayCard.js:122 -#: src/js/controllers/tx-details.js:174 -msgid "View Transaction on Insight" -msgstr "Transaktionen auf Insight anzeigen" - -#: src/js/controllers/tab-home.js:148 -msgid "View Update" -msgstr "Aktualisierungen anzeigen" - -#: www/views/tx-details.html:147 -msgid "View on blockchain" -msgstr "Auf blockchain anzeigen" - -#: www/views/walletDetails.html:171 -msgid "WARNING: Key derivation is not working on this device/wallet. Actions cannot be performed on this wallet." -msgstr "Warnung: Ableitung der Schlüssel funktioniert nicht auf diesem Gerät/Wallet. Aktionen können nicht mit dieser Wallet durchgeführt werden." - -#: www/views/tab-export-file.html:45 -msgid "WARNING: Not including the private key allows to check the wallet balance, transaction history, and create spend proposals from the export. However, does not allow to approve (sign) proposals, so funds will not be accessible from the export." -msgstr "WARNUNG: Ohne das Hinzufügen des privaten Schlüssels, ist es möglich das Guthaben und die Transaktionshistorie einzusehen, sowie Zahlungsvorschläge zu erzeugen. Allerdings können Vorschläge nicht ausgeführt (unterschrieben) werden und es ist kein Zugriff auf Guthaben möglich." - -#: www/views/tab-export-file.html:36 -msgid "WARNING: The private key of this wallet is not available. The export allows to check the wallet balance, transaction history, and create spend proposals from the export. However, does not allow to approve (sign) proposals, so funds will not be accessible from the export." -msgstr "WARNUNG: Der private Schlüssel ist nicht verfügbar. Dieser Export ermöglicht das Guthaben und die Transaktionshistorie zu prüfen, sowie Zahlungsvorschläge zu erzeugen. Allerdings können Vorschläge nicht ausgeführt (unterschrieben) werden und so ist kein Zugriff auf Guthaben möglich." - -#: www/views/modals/paypro.html:42 -msgid "WARNING: UNTRUSTED CERTIFICATE" -msgstr "WARNUNG: NICHT VERTRAUENSWÜRDIGES ZERTIFIKAT" - -#: src/js/services/onGoingProcess.js:15 -msgid "Waiting for Ledger..." -msgstr "Warte auf Ledger..." - -#: src/js/services/onGoingProcess.js:16 -msgid "Waiting for Trezor..." -msgstr "Warte auf Trezor..." - -#: www/views/copayers.html:48 -msgid "Waiting for copayers" -msgstr "Warte auf copayer" - -#: www/views/copayers.html:53 -msgid "Waiting..." -msgstr "Warte..." - -#: www/views/addresses.html:3 -#: www/views/preferencesAdvanced.html:17 -msgid "Wallet Addresses" -msgstr "Wallet-Adressen" - -#: www/views/preferencesColor.html:4 -msgid "Wallet Color" -msgstr "Wallet-Farbe" - -#: www/views/preferencesInformation.html:23 -msgid "Wallet Configuration (m-n)" -msgstr "Wallet-Konfiguration (m-n)" - -#: www/views/onboarding/collectEmail.html:5 -msgid "Wallet Created" -msgstr "Wallet erstellt" - -#: www/views/preferencesInformation.html:17 -msgid "Wallet Id" -msgstr "Wallet-Id" - -#: www/views/preferencesAdvanced.html:13 -#: www/views/preferencesInformation.html:3 -msgid "Wallet Information" -msgstr "Wallet-Informationen" - -#: www/views/addresses.html:76 -msgid "Wallet Inputs" -msgstr "" - -#: www/views/join.html:26 -msgid "Wallet Invitation" -msgstr "Wallet Einladung" - -#: www/views/join.html:57 -#: www/views/tab-create-personal.html:36 -#: www/views/tab-create-shared.html:65 -msgid "Wallet Key" -msgstr "Wallet-Schlüssel" - -#: www/views/preferencesAlias.html:4 -msgid "Wallet Name" -msgstr "Wallet-Name" - -#: www/views/preferencesInformation.html:11 -msgid "Wallet Name (at creation)" -msgstr "Wallet-Name (bei der Erzeugung)" - -#: www/views/preferencesInformation.html:29 -msgid "Wallet Network" -msgstr "Wallet-Netzwerk" - -#: www/views/join.html:74 -#: www/views/tab-create-personal.html:48 -#: www/views/tab-create-shared.html:77 -msgid "Wallet Recovery Phrase" -msgstr "Wallet-Wiederherstellungsphrase" - -#: src/js/services/bwcError.js:26 -msgid "Wallet Recovery Phrase is invalid" -msgstr "Wallet-Wiederherstellungsphrase ist ungültig" - -#: www/views/preferencesAdvanced.html:25 -#: www/views/tab-import-phrase.html:70 -msgid "Wallet Service URL" -msgstr "URL des Wallet-Diensts" - -#: www/views/preferences.html:4 -msgid "Wallet Settings" -msgstr "Wallet-Einstellungen" - -#: www/views/tab-import-hardware.html:11 -#: www/views/tab-import-phrase.html:58 -msgid "Wallet Type" -msgstr "Wallet-Typ" - -#: src/js/services/bwcError.js:59 -msgid "Wallet already exists" -msgstr "Wallet exstiert bereits" - -#: src/js/services/profileService.js:498 -msgid "Wallet already in Copay" -msgstr "Wallet ist bereits in Copay" - -#: www/views/includes/walletActivity.html:6 -msgid "Wallet created" -msgstr "Wallet erstellt" - -#: www/views/copayers.html:58 -msgid "Wallet incomplete and broken" -msgstr "Wallet unvollständig oder defekt" - -#: src/js/services/bwcError.js:65 -msgid "Wallet is full" -msgstr "Maximale Teilnehmerzahl erreicht" - -#: src/js/services/bwcError.js:125 -msgid "Wallet is locked" -msgstr "Wallet ist gesperrt" - -#: src/js/services/bwcError.js:128 -msgid "Wallet is not complete" -msgstr "Wallet ist unvollständig" - -#: www/views/tab-create-personal.html:12 -#: www/views/tab-create-shared.html:12 -msgid "Wallet name" -msgstr "Name des Wallets" - -#: src/js/services/bwcError.js:131 -msgid "Wallet needs backup" -msgstr "Wallet braucht Sicherung" - -#: www/views/tab-receive.html:59 -#: www/views/walletDetails.html:157 -msgid "Wallet not backed up" -msgstr "Wallet nicht gesichert" - -#: src/js/services/bwcError.js:68 -msgid "Wallet not found" -msgstr "Wallet nicht gefunden" - -#: src/js/controllers/tab-home.js:220 -msgid "Wallet not registered" -msgstr "Wallet nicht registriert" - -#: src/js/services/bwcError.js:29 -msgid "Wallet not registered at the wallet service. Recreate it from \"Create Wallet\" using \"Advanced Options\" to set your recovery phrase" -msgstr "Wallet ist nicht beim Wallet-Service registiert. Neu erzeugen mit \"Neues Wallet erzeugen\" und \"Erweiterte Optionen\" um die Wiederherstellungsphrase anzugeben" - -#: www/views/backup.html:11 -msgid "Wallet recovery phrase not available." -msgstr "Wiederherstellungsphrase für die Wallet nicht verfügbar." - -#: src/js/services/bwcError.js:50 -msgid "Wallet service not found" -msgstr "Wallet-Dienst nicht gefunden" - -#: www/views/tab-home.html:69 -msgid "Wallets" -msgstr "Wallets" - -#: www/views/tab-settings.html:102 -msgid "Wallets & Integrations" -msgstr "Wallets & Integrationen" - -#: src/js/controllers/addressbookView.js:23 -#: src/js/controllers/modals/txpDetails.js:147 -#: src/js/controllers/modals/txpDetails.js:164 -#: src/js/controllers/preferencesDelete.js:25 -#: src/js/controllers/preferencesExternal.js:14 -#: www/views/preferencesDeleteWallet.html:11 -msgid "Warning!" -msgstr "Warnung!" - -#: www/views/modals/txp-details.html:47 -msgid "Warning: this transaction has unconfirmed inputs" -msgstr "Warnung: Diese Transaktion hat unbestätigte Eingänge" - -#: src/js/controllers/onboarding/backupRequest.js:17 -msgid "Watch out!" -msgstr "Aufgepasst!" - -#: src/js/controllers/feedback/send.js:69 -msgid "We'd love to do better." -msgstr "Wir würden es gerne besser machen." - -#: www/views/backup.html:28 -msgid "We'll confirm on the next screen." -msgstr "Wir werden es auf der nächsten Seite bestätigen." - -#: src/js/controllers/feedback/send.js:77 -msgid "We're always looking for ways to improve {{appName}}." -msgstr "Wir sind immer auf der Suche nach Möglichkeiten um {{appName}} zu verbessern." - -#: src/js/controllers/feedback/send.js:83 -msgid "We're always looking for ways to improve {{appName}}. How could we improve your experience?" -msgstr "Wir sind immer auf der Suche nach Möglichkeiten um {{appName}} zu verbessern. Wie können wir Ihr Erlebnis verbessern?" - -#: www/views/includes/incomingDataMenu.html:6 -msgid "Website" -msgstr "" - -#: www/views/preferencesLanguage.html:16 -msgid "We’re always looking for translation contributions! You can make corrections or help to make this app available in your native language by joining our community on Crowdin." -msgstr "Wir sind immer auf der Suche nach Übersetzungs-Beiträge! Sie können Korrekturen vornehmen oder helfen diese App in Ihrer Muttersprache zur Verfügung stellen, durch den Beitritt unserer Community bei Crowdin." - -#: www/views/preferencesAlias.html:11 -msgid "What do you call this wallet?" -msgstr "Wie möchten Sie diese Wallet benennen?" - -#: www/views/preferencesAlias.html:12 -msgid "When this wallet was created, it was called “{{walletName}}”. You can change the name displayed on this device below." -msgstr "Zu dem Zeitpunkt an dem diese Wallet erstellt wurde, wurde Sie “{{walletName}}” benannt. Sie können auf diesem Gerät den unten angezeigten Namen ändern." - -#: www/views/onboarding/collectEmail.html:10 -msgid "Where would you like to receive email notifications about payments?" -msgstr "Wo möchten Sie E-Mail Benachrichtigungen über Zahlungen erhalten?" - -#: www/views/addresses.html:19 -msgid "Why?" -msgstr "Warum?" - -#: www/views/feedback/rateApp.html:10 -msgid "Would you be willing to rate {{appName}} in the app store?" -msgstr "Wären Sie bereit {{appName}} im App Store zu bewerten?" - -#: www/views/onboarding/notifications.html:4 -msgid "Would you like to receive push notifications about payments?" -msgstr "Möchten Sie Push-Benachrichtigungen über Zahlungen erhalten?" - -#: src/js/controllers/import.js:270 -msgid "Wrong number of recovery words:" -msgstr "Falsche Anzahl von Wiederherstellungswörtern:" - -#: src/js/services/bwcError.js:140 -msgid "Wrong spending password" -msgstr "Falscher Berechtigungscode" - -#: www/views/modals/confirmation.html:7 -msgid "Yes" -msgstr "Ja" - -#: src/js/controllers/onboarding/backupRequest.js:25 -msgid "Yes, skip" -msgstr "Ja, überspringen" - -#: src/js/controllers/onboarding/backupRequest.js:24 -msgid "You can create a backup later from your wallet settings." -msgstr "Sie können später eine Sicherung über Ihren Wallet-Einstellungen erstellen." - -#: src/js/controllers/preferencesLanguage.js:12 -msgid "You can make contributions by signing up on our Crowdin community translation website. We’re looking forward to hearing from you!" -msgstr "Sie können Beiträge leisten indem Sie sich auf unserer Crowdin Community Übersetzungs-Website registrieren. Wir freuen uns darauf von Ihnen zu hören!" - -#: www/views/tab-scan.html:16 -msgid "You can scan bitcoin addresses, payment requests, paper wallets, and more." -msgstr "Sie können Bitcoin-Adressen, Zahlungsaufforderungen, Papier-Wallets und mehr scannen." - -#: 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 "Sie können auf GitHub die neuesten Entwicklungen ansehen und zu dieser Open-Source App beitragen." - -#: www/views/onboarding/tour.html:19 -msgid "You can spend bitcoin at millions of websites and stores worldwide." -msgstr "Sie können Bitcoins auf Millionen von Webseiten und Shops weltweit ausgeben." - -#: www/views/backup.html:12 -msgid "You can still export it from Advanced > Export." -msgstr "Sie können es auch exportieren aus dem Erweiterten > Export." - -#: www/views/onboarding/tour.html:32 -msgid "You can trade it for other currencies like US Dollars, Euros, or Pounds." -msgstr "Sie können auch mit andere Währungen wie US-Dollar, Euro oder Pfund handeln." - -#: www/views/onboarding/tour.html:46 -msgid "You control your bitcoin." -msgstr "Sie kontrollieren Ihre Bitcoins." - -#: www/views/modals/chooseFeeLevel.html:63 -msgid "You should not set a fee higher than {{maxFeeRecommended}} satoshis/byte." -msgstr "" - -#: www/views/modals/bitpay-card-confirmation.html:5 -msgid "You will need to log back for fill in your BitPay Card." -msgstr "" - -#: www/views/preferencesNotifications.html:34 -msgid "You'll receive email notifications about payments sent and received from your wallets." -msgstr "Sie erhalten E-Mail Benachrichtigungen über gesendete und empfangen Zahlungen aus Ihren Wallets." - -#: www/views/bitpayCard.html:50 -msgid "Your BitPay Card is ready. Add funds to your card to start using it at stores and ATMs worldwide." -msgstr "" - -#: www/views/includes/confirmBackupPopup.html:6 -msgid "Your bitcoin wallet is backed up!" -msgstr "Ihre Bitcoin-Wallet wurde gesichert!" - -#: www/views/tab-home.html:36 -msgid "Your bitcoin wallet is ready!" -msgstr "Ihre Bitcoin-Wallet ist fertig!" - -#: www/views/modals/chooseFeeLevel.html:60 -msgid "Your fee is lower than recommended." -msgstr "" - -#: www/views/feedback/send.html:42 -msgid "Your ideas, feedback, or comments" -msgstr "Ihre Ideen, Feedback oder Kommentare" - -#: www/views/tab-create-shared.html:22 -msgid "Your name" -msgstr "Ihr Name" - -#: www/views/join.html:16 -msgid "Your nickname" -msgstr "Name des Teilnehmers" - -#: www/views/tab-export-file.html:11 -#: www/views/tab-import-file.html:20 -msgid "Your password" -msgstr "Passwort" - -#: www/views/buyAmazon.html:102 -msgid "Your purchase could not be completed" -msgstr "" - -#: www/views/buyAmazon.html:105 -msgid "Your purchase was added to the list of pending" -msgstr "" - -#: www/views/onboarding/backupRequest.html:10 -msgid "Your wallet is never saved to cloud storage or standard device backups." -msgstr "Ihre Wallet wird nie auf einem Cloud-Speicher oder einer Standard-Geräte-Backup gespeichert." - -#: src/js/services/walletService.js:1031 -msgid "Your wallet key will be encrypted. The Spending Password cannot be recovered. Be sure to write it down." -msgstr "Ihre Wallet wird verschlüsselt. Der Berechtigungscode kann nicht wiederhergestellt werden. Achten Sie darauf ihn aufzuschreiben." - -#: www/views/includes/walletSelector.html:23 -#: www/views/paperWallet.html:35 -#: www/views/tab-home.html:96 -#: www/views/tab-receive.html:74 -#: www/views/walletDetails.html:139 -#: www/views/walletDetails.html:59 -msgid "[Balance Hidden]" -msgstr "[Guthaben versteckt]" - -#: src/js/controllers/bitpayCardIntro.js:11 -msgid "add your BitPay Visa card(s)" -msgstr "Ihre BitPay Visa Karte(n) hinzufügen" - -#: www/views/includes/available-balance.html:8 -msgid "locked by pending payments" -msgstr "durch ausstehende Zahlungen gesperrt" - -#: src/js/services/profileService.js:389 -msgid "me" -msgstr "Ich" - -#: www/views/addressbook.add.html:32 -msgid "name@example.com" -msgstr "name@beispiel.com" - -#: www/views/preferencesHistory.html:15 -msgid "preparing..." -msgstr "in Arbeit..." - -#: src/js/controllers/confirm.js:329 -#: src/js/controllers/modals/txpDetails.js:44 -msgid "to accept" -msgstr "zu akzeptieren" - -#: src/js/controllers/confirm.js:327 -msgid "to pay" -msgstr "zu zahlen" - -#: src/js/controllers/confirm.js:331 -#: src/js/controllers/modals/txpDetails.js:41 -msgid "to send" -msgstr "zu senden" - -#: src/js/controllers/buyAmazon.js:238 -msgid "{{amountStr}} for Amazon.com Gift Card" -msgstr "" - -#: www/views/preferencesBwsUrl.html:21 -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}} hängt von Bitcore Wallet Service (BWS) ab bezüglich Blockchain Informationen, Vernetzung und Copayer Synchronisation. Die Standard Konfiguration verweist auf https://bws.bitpay.com (BitPays öffentlicher BWS Instanz)." - -#: src/js/controllers/confirm.js:358 -msgid "{{fee}} will be deducted for bitcoin networking fees." -msgstr "{{fee}} wird für Bitcoin-Netzwerkgebühren abgezogen werden." - -#: www/views/confirm.html:87 -msgid "{{tx.txp[wallet.id].feeRatePerStr}} of the sending amount" -msgstr "" - -#: www/views/walletDetails.html:212 -msgid "{{updatingTxHistoryProgress}} transactions downloaded" -msgstr "{{updatingTxHistoryProgress}} Transaktionen werden heruntergeladen" - -#: www/views/copayers.html:46 -#: www/views/includes/walletInfo.html:12 -msgid "{{wallet.m}}-of-{{wallet.n}}" -msgstr "{{wallet.m}}-von-{{wallet.n}}" - diff --git a/i18n/po/es.po b/i18n/po/es.po deleted file mode 100644 index f7e3e8502..000000000 --- a/i18n/po/es.po +++ /dev/null @@ -1,3359 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Project-Id-Version: copay\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: crowdin.com\n" -"X-Crowdin-Project: copay\n" -"X-Crowdin-Language: es-ES\n" -"X-Crowdin-File: template.pot\n" -"Last-Translator: cmgustavo83\n" -"Language-Team: Spanish\n" -"Language: es\n" -"PO-Revision-Date: 2017-07-18 14:37-0400\n" - -#: www/views/modals/paypro.html:34 -msgid "(Trusted)" -msgstr "(De confianza)" - -#: www/views/includes/txp.html:23 -#: www/views/includes/walletHistory.html:64 -msgid "(possible double spend)" -msgstr "(Posible doble gasto)" - -#: www/views/modals/txp-details.html:161 -msgid "* A payment proposal can be deleted if 1) you are the creator, and no other copayer has signed, or 2) 24 hours have passed since the proposal was created." -msgstr "* Una propuesta de pago puede ser eliminada si 1) Tú eres el creador, y ningún otro copayer la haya firmado, o 2) hayan transcurrido 24 horas desde la creación de la propuesta." - -#: www/views/tx-details.html:84 -msgid "- {{btx.feeRateStr}} of the transaction" -msgstr "- {{btx.feeRateStr}} de la transacción" - -#: www/views/modals/txp-details.html:104 -msgid "- {{tx.feeRateStr}} of the transaction" -msgstr "- {{tx.feeRateStr}} de la transacción" - -#: www/views/feedback/rateApp.html:7 -msgid "5-star ratings help us get {{appName}} into more hands, and more users means more resources can be committed to the app!" -msgstr "Una calificación de 5 estrellas nos ayuda a que {{appName}} sea más utilizado, mientras más usuarios más son las razones para seguir comprometidos con esta aplicación!" - -#: src/js/controllers/feedback/send.js:27 -#: www/views/feedback/complete.html:21 -msgid "A member of the team will review your feedback as soon as possible." -msgstr "Un miembro del equipo revisará tus comentarios tan pronto como sea posible." - -#: src/js/controllers/confirm.js:351 -msgid "A total of {{amountAboveMaxSizeStr}} were excluded. The maximum size allowed for a transaction was exceeded." -msgstr "Se excluyeron un total de {{amountAboveMaxSizeStr}}. Fue excedido el tamaño máximo permitido para una transacción." - -#: src/js/controllers/confirm.js:345 -msgid "A total of {{amountBelowFeeStr}} were excluded. These funds come from UTXOs smaller than the network fee provided." -msgstr "Se excluyeron un total de {{amountBelowFeeStr}}. Estos fondos provienen del UTXOs más pequeños que la comisión de red provista." - -#: src/js/controllers/preferencesAbout.js:6 -#: www/views/tab-settings.html:156 -msgid "About" -msgstr "Acerca de" - -#: src/js/controllers/modals/txpDetails.js:56 -#: src/js/controllers/tx-details.js:62 -msgid "Accepted" -msgstr "Aceptado" - -#: www/views/preferencesInformation.html:66 -msgid "Account" -msgstr "Cuenta" - -#: www/views/join.html:69 -#: www/views/tab-create-personal.html:43 -#: www/views/tab-create-shared.html:72 -#: www/views/tab-import-hardware.html:19 -msgid "Account Number" -msgstr "Número de cuenta" - -#: www/views/preferencesBitpayServices.html:23 -msgid "Accounts" -msgstr "Cuentas" - -#: www/views/bitpayCard.html:56 -msgid "Activity" -msgstr "Actividad" - -#: src/js/services/bitpayAccountService.js:83 -msgid "Add Account" -msgstr "Agregar Cuenta" - -#: src/js/services/bitpayAccountService.js:69 -msgid "Add BitPay Account?" -msgstr "¿Agregar cuenta de BitPay?" - -#: www/views/addressbook.add.html:4 -#: www/views/addressbook.html:22 -msgid "Add Contact" -msgstr "Agregar contacto" - -#: www/views/bitpayCard.html:28 -msgid "Add Funds" -msgstr "Añadir fondos" - -#: www/views/confirm.html:96 -msgid "Add Memo" -msgstr "Añadir nota" - -#: www/views/join.html:84 -#: www/views/tab-create-personal.html:57 -#: www/views/tab-create-shared.html:86 -msgid "Add a password" -msgstr "Agregar una contraseña" - -#: www/views/includes/accountSelector.html:27 -msgid "Add account" -msgstr "Agregar cuenta" - -#: www/views/join.html:87 -#: www/views/tab-create-personal.html:60 -#: www/views/tab-create-shared.html:89 -msgid "Add an optional password to secure the recovery phrase" -msgstr "Agregar una contraseña opcional para asegurar la frase de recuperación" - -#: www/views/includes/incomingDataMenu.html:41 -msgid "Add as a contact" -msgstr "Agregar como Contacto" - -#: src/js/controllers/confirm.js:374 -msgid "Add description" -msgstr "Añadir descripción" - -#: www/views/topup.html:6 -msgid "Add funds" -msgstr "Agregar fondos" - -#: src/js/services/bitpayAccountService.js:78 -msgid "Add this BitPay account ({{email}})?" -msgstr "¿Agregar esta cuenta BitPay ({{email}})?" - -#: www/views/add.html:3 -msgid "Add wallet" -msgstr "Agregar billetera" - -#: www/views/addressbook.view.html:26 -#: www/views/customAmount.html:28 -#: www/views/modals/paypro.html:24 -msgid "Address" -msgstr "Dirección" - -#: www/views/addressbook.html:6 -#: www/views/tab-settings.html:13 -msgid "Address Book" -msgstr "Agenda de contactos" - -#: www/views/preferencesInformation.html:35 -msgid "Address Type" -msgstr "Tipo de dirección" - -#: www/views/addresses.html:64 -msgid "Addresses With Balance" -msgstr "Direcciones con fondos" - -#: www/views/tab-settings.html:149 -msgid "Advanced" -msgstr "Avanzado" - -#: www/views/advancedSettings.html:3 -msgid "Advanced Settings" -msgstr "Preferencias Avanzadas" - -#: www/views/bitpayCard.html:62 -msgid "All" -msgstr "Todos" - -#: www/views/allAddresses.html:3 -msgid "All Addresses" -msgstr "Todas las direcciones" - -#: www/views/modals/wallet-balance.html:18 -msgid "All of your bitcoin wallet balance may not be available for immediate spending." -msgstr "Todo el balance de tu billetera puede que no esté disponible para su uso inmediato." - -#: www/views/tab-receive.html:25 -msgid "All signing devices must be added to this multisig wallet before bitcoin addresses can be created." -msgstr "Todos los dispositivos de los firmantes deben ser agregados a esta billetera compartido antes de que se puedan crear direcciones bitcoin." - -#: www/views/tab-scan.html:21 -msgid "Allow Camera Access" -msgstr "Permitir el acceso de la cámara" - -#: www/views/onboarding/notifications.html:7 -msgid "Allow notifications" -msgstr "Permitir notificaciones" - -#: www/views/onboarding/disclaimer.html:14 -msgid "Almost done! Let's review." -msgstr "¡Casi listo! Vamos a revisar." - -#: www/views/preferencesAltCurrency.html:4 -#: www/views/tab-settings.html:74 -msgid "Alternative Currency" -msgstr "Moneda Alternativa" - -#: src/js/controllers/buyAmazon.js:97 -msgid "Amazon.com is not available at this moment. Please try back later." -msgstr "Amazon.com no está disponible en este momento. Inténtalo de nuevo más tarde." - -#: www/views/amount.html:44 -#: www/views/customAmount.html:34 -#: www/views/includes/output.html:7 -msgid "Amount" -msgstr "Importe" - -#: src/js/services/bwcError.js:110 -msgid "Amount below minimum allowed" -msgstr "Cantidad por debajo del mínimo permitido" - -#: src/js/controllers/confirm.js:191 -msgid "Amount too big" -msgstr "Monto demasiado grande" - -#: www/views/includes/walletHistory.html:31 -msgid "Amount too low to spend" -msgstr "Monto insuficiente para enviar" - -#: src/js/controllers/tab-home.js:147 -msgid "An update to this app is available. For your security, please update to the latest version." -msgstr "Actualización disponible. Por seguridad, actualiza a la versión más reciente." - -#: www/views/backupWarning.html:14 -msgid "Anyone with your backup phrase can access or spend your bitcoin." -msgstr "Cualquier persona con tu copia de seguridad puede gastar tus bitcoins." - -#: www/views/addresses.html:94 -msgid "Approximate Bitcoin network fee to transfer wallet's balance (with normal priority)" -msgstr "Comisión aproximada de la red Bitcoin para transferir el saldo de esta billetera (con prioridad normal)" - -#: www/views/backupWarning.html:10 -msgid "Are you being watched?" -msgstr "¿Estás siendo observado?" - -#: src/js/controllers/preferencesExternal.js:15 -msgid "Are you being watched? Anyone with your recovery phrase can access or spend your bitcoin." -msgstr "¿Estás siendo observado? Cualquier persona con tu copia de seguridad puede gastar tus bitcoins." - -#: src/js/controllers/copayers.js:56 -msgid "Are you sure you want to cancel and delete this wallet?" -msgstr "¿Estás seguro de cancelar y borrar esta billetera?" - -#: src/js/controllers/addressbookView.js:24 -msgid "Are you sure you want to delete this contact?" -msgstr "¿Está seguro de que desea eliminar este contacto?" - -#: src/js/controllers/preferencesDelete.js:26 -msgid "Are you sure you want to delete this wallet?" -msgstr "¿Estás seguro de borrar esta billetera?" - -#: src/js/controllers/modals/txpDetails.js:148 -msgid "Are you sure you want to reject this transaction?" -msgstr "¿Estás seguro de rechazar esta transacción?" - -#: src/js/controllers/modals/txpDetails.js:165 -msgid "Are you sure you want to remove this transaction?" -msgstr "¿Estás seguro de eliminar esta transacción?" - -#: src/js/controllers/onboarding/backupRequest.js:23 -msgid "Are you sure you want to skip it?" -msgstr "¿Estás seguro de omitirla?" - -#: www/views/modals/bitpay-card-confirmation.html:4 -msgid "Are you sure you would like to log out of your BitPay Card account?" -msgstr "¿Está seguro que desea cerrar la sesión de su cuenta BitPay Card?" - -#: src/js/controllers/preferencesBitpayCard.js:7 -#: src/js/controllers/preferencesBitpayServices.js:20 -msgid "Are you sure you would like to remove your BitPay Card ({{lastFourDigits}}) from this device?" -msgstr "¿Estás seguro de quitar tu BitPay Card ({{lastFourDigits}}) de este dispositivo?" - -#: www/views/includes/walletInfo.html:5 -msgid "Auditable" -msgstr "Auditables" - -#: www/views/modals/wallet-balance.html:42 -msgid "Available" -msgstr "Disponible" - -#: www/views/includes/available-balance.html:3 -msgid "Available Balance" -msgstr "Balance disponible" - -#: www/views/modals/chooseFeeLevel.html:24 -#: www/views/preferencesFee.html:15 -msgid "Average confirmation time" -msgstr "Tiempo promedio de confirmación" - -#: www/views/join.html:140 -#: www/views/tab-create-personal.html:111 -#: www/views/tab-create-shared.html:140 -#: www/views/tab-import-phrase.html:48 -msgid "BIP32 path for address derivation" -msgstr "BIP32 para el camino de derivación de direcciones" - -#: www/views/preferences.html:34 -msgid "Backup" -msgstr "Copia de seguridad" - -#: www/views/includes/backupNeededPopup.html:7 -msgid "Backup Needed" -msgstr "Se necesita copia de seguridad" - -#: src/js/controllers/lockSetup.js:87 -msgid "Backup all livenet wallets before using this function" -msgstr "Debes respaldar todas tus billeteras para utilizar esta función" - -#: www/views/preferences.html:36 -#: www/views/tab-settings.html:120 -msgid "Backup needed" -msgstr "Necesita respaldar" - -#: www/views/includes/backupNeededPopup.html:9 -msgid "Backup now" -msgstr "Realizar copia de seguridad" - -#: www/views/onboarding/backupRequest.html:11 -#: www/views/tab-export-file.html:89 -msgid "Backup wallet" -msgstr "Respaldar" - -#: src/js/controllers/lockSetup.js:84 -msgid "Backup your wallet before using this function" -msgstr "Respalda tu billetera para utilizar esta función" - -#: src/js/services/profileService.js:430 -msgid "Bad wallet invitation" -msgstr "Invitación incorrecta a la billetera" - -#: www/views/preferencesInformation.html:96 -msgid "Balance By Address" -msgstr "Balance por Dirección" - -#: www/views/includes/confirmBackupPopup.html:7 -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 "Asegúrate de guardar la frase de recuperación en un lugar seguro. Si se elimina esta aplicación, no se podrá recuperar el dinero." - -#: www/views/preferencesBitpayServices.html:9 -msgid "BitPay Visa® Cards" -msgstr "Tarjetas BitPay Visa®" - -#: www/views/addressbook.add.html:38 -#: www/views/includes/incomingDataMenu.html:29 -msgid "Bitcoin Address" -msgstr "Dirección Bitcoin" - -#: www/views/modals/chooseFeeLevel.html:4 -#: www/views/preferencesFee.html:4 -#: www/views/tab-settings.html:85 -msgid "Bitcoin Network Fee Policy" -msgstr "Política de Comisión de la Red Bitcoin" - -#: www/views/tab-settings.html:63 -msgid "Bitcoin Unit" -msgstr "Unidad de Bitcoin" - -#: www/views/onboarding/tour.html:31 -msgid "Bitcoin is a currency." -msgstr "Bitcoin es una moneda." - -#: www/views/onboarding/disclaimer.html:15 -msgid "Bitcoin is different – it cannot be safely held with a bank or web service." -msgstr "Bitcoin es diferente – no se puede resguardar con ningún servicio web o banco." - -#: www/views/onboarding/tour.html:18 -msgid "Bitcoin is secure,
digital money." -msgstr "Bitcoin es seguro,
dinero digital." - -#: www/views/preferencesFee.html:11 -msgid "Bitcoin transactions include a fee collected by miners on the network." -msgstr "Las transacciones de bitcoins incluyen una comisión recogida por los mineros de la red." - -#: www/views/buyAmazon.html:108 -msgid "Bought {{amountUnitStr}}" -msgstr "Compró {{amountUnitStr}}" - -#: www/views/modals/txp-details.html:36 -msgid "Broadcast Payment" -msgstr "Enviar Pago" - -#: src/js/controllers/modals/txpDetails.js:58 -#: src/js/controllers/tx-details.js:64 -msgid "Broadcasted" -msgstr "Enviado" - -#: src/js/services/onGoingProcess.js:11 -msgid "Broadcasting transaction" -msgstr "Finalizando transacción" - -#: www/views/unsupported.html:6 -msgid "Browser unsupported" -msgstr "Navegador no soportado" - -#: www/views/buyAmazon.html:5 -msgid "Buy" -msgstr "Comprar" - -#: www/views/includes/buyAndSellCard.html:3 -msgid "Buy & Sell Bitcoin" -msgstr "Comprar & Vender Bitcoin" - -#: www/views/tab-send.html:35 -msgid "Buy Bitcoin" -msgstr "Comprar Bitcoin" - -#: src/js/controllers/buyAmazon.js:332 -msgid "Buy from" -msgstr "Comprar desde" - -#: src/js/services/onGoingProcess.js:40 -msgid "Buying Bitcoin..." -msgstr "Comprando Bitcoins..." - -#: src/js/services/onGoingProcess.js:12 -msgid "Calculating fee" -msgstr "Calculando comisión" - -#: src/js/controllers/buyAmazon.js:311 -#: src/js/controllers/confirm.js:495 -#: src/js/controllers/topup.js:285 -#: src/js/services/popupService.js:62 -#: src/js/services/popupService.js:73 -#: www/views/addressbook.add.html:10 -#: www/views/feedback/send.html:5 -#: www/views/includes/incomingDataMenu.html:22 -#: www/views/includes/incomingDataMenu.html:54 -#: www/views/includes/incomingDataMenu.html:73 -#: www/views/includes/incomingDataMenu.html:97 -#: www/views/includes/note.html:6 -#: www/views/modals/bitpay-card-confirmation.html:8 -#: www/views/modals/confirmation.html:13 -msgid "Cancel" -msgstr "Cancelar" - -#: www/views/copayers.html:36 -msgid "Cancel invitation" -msgstr "Cancelar invitación" - -#: src/js/controllers/onboarding/tour.js:52 -msgid "Cannot Create Wallet" -msgstr "No se pudo crear la billetera" - -#: src/js/services/profileService.js:426 -msgid "Cannot join the same wallet more that once" -msgstr "No puede unirse a la misma billetera más de una vez" - -#: www/views/includes/bitpayCardsCard.html:2 -msgid "Cards" -msgstr "Tarjetas" - -#: www/views/modals/paypro.html:30 -msgid "Certified by" -msgstr "Certificado por" - -#: www/views/preferencesExternal.html:19 -msgid "Check installation and retry." -msgstr "Comproba la instalación y reintenta." - -#: www/views/tab-import-file.html:4 -msgid "Choose a backup file from your computer" -msgstr "Selecciona el archivo de copia de seguridad de tu computadora" - -#: www/views/modals/wallets.html:9 -msgid "Choose your destination wallet" -msgstr "Elegir billetera destino" - -#: www/views/modals/wallets.html:10 -msgid "Choose your source wallet" -msgstr "Elegir billetera de origen" - -#: www/views/backup.html:54 -msgid "Clear" -msgstr "Anular" - -#: www/views/preferencesHistory.html:24 -msgid "Clear cache" -msgstr "Limpiar cache" - -#: src/js/controllers/modals/txpDetails.js:34 -msgid "Click" -msgstr "Click" - -#: www/views/customAmount.html:4 -#: www/views/modals/paypro.html:4 -#: www/views/modals/pin.html:3 -#: www/views/modals/search.html:3 -#: www/views/modals/wallet-balance.html:3 -#: www/views/modals/wallets.html:5 -msgid "Close" -msgstr "Cerrar" - -#: www/views/preferences.html:22 -msgid "Color" -msgstr "Color" - -#: www/views/preferencesAbout.html:21 -msgid "Commit hash" -msgstr "Commit hash" - -#: www/views/preferences.html:48 -msgid "Complete the backup process to use this option" -msgstr "Completar el proceso de respaldo para usar esta opción" - -#: www/views/bitpayCard.html:93 -msgid "Completed" -msgstr "Terminadas" - -#: src/js/controllers/buyAmazon.js:309 -#: src/js/controllers/confirm.js:494 -#: src/js/controllers/copayers.js:55 -#: src/js/controllers/topup.js:283 -#: www/views/backup.html:53 -#: www/views/backup.html:72 -#: www/views/confirm.html:4 -#: www/views/onboarding/collectEmail.html:32 -msgid "Confirm" -msgstr "Confirmar" - -#: www/views/modals/terms.html:26 -#: www/views/onboarding/disclaimer.html:44 -msgid "Confirm & Finish" -msgstr "Confirmar y terminar" - -#: www/views/buyAmazon.html:90 -msgid "Confirm purchase" -msgstr "Confirmar compra" - -#: www/views/modals/pin.html:10 -msgid "Confirm your PIN" -msgstr "Confirma tu PIN" - -#: src/js/services/walletService.js:1034 -msgid "Confirm your new spending password" -msgstr "Confirme su contraseña para enviar" - -#: www/views/tx-details.html:98 -msgid "Confirmations" -msgstr "Confirmaciones" - -#: www/views/bitpayCard.html:68 -#: www/views/modals/wallet-balance.html:61 -msgid "Confirming" -msgstr "Confirmando" - -#: www/views/bitpayCardIntro.html:37 -msgid "Connect my BitPay Card" -msgstr "Conecte mi BitPay Card" - -#: src/js/services/onGoingProcess.js:13 -msgid "Connecting to Coinbase..." -msgstr "Conectando a Coinbase..." - -#: src/js/services/onGoingProcess.js:14 -msgid "Connecting to Glidera..." -msgstr "Conectando a Glidera..." - -#: src/js/services/bwcError.js:53 -msgid "Connection reset by peer" -msgstr "Conexión re establecida" - -#: www/views/tab-send.html:45 -msgid "Contacts" -msgstr "Contactos" - -#: www/views/onboarding/notifications.html:9 -msgid "Continue" -msgstr "Continuar" - -#: www/views/preferencesLanguage.html:26 -msgid "Contribute Translations" -msgstr "Contribuir" - -#: src/js/services/bwcError.js:62 -msgid "Copayer already in this wallet" -msgstr "Ya se encuentra en esta billetera" - -#: src/js/services/bwcError.js:77 -msgid "Copayer already voted on this spend proposal" -msgstr "Ya votaste en esta propuesta de gasto" - -#: src/js/services/bwcError.js:107 -msgid "Copayer data mismatch" -msgstr "Discrepancia en los datos del Copayer" - -#: www/views/includes/walletActivity.html:2 -msgid "Copayer joined" -msgstr "Copayer unido" - -#: www/views/preferencesInformation.html:88 -msgid "Copayer {{$index}}" -msgstr "Copayer {{$index}}" - -#: src/js/controllers/copayers.js:79 -#: src/js/controllers/export.js:193 -#: www/views/includes/copyToClipboard.html:4 -msgid "Copied to clipboard" -msgstr "Copiado al portapapeles" - -#: www/views/tab-export-file.html:94 -msgid "Copy this text as it is to a safe place (notepad or email)" -msgstr "Copiar el texto como está en un lugar seguro (bloc de notas o correo electrónico)" - -#: www/views/includes/incomingDataMenu.html:51 -#: www/views/includes/incomingDataMenu.html:70 -#: www/views/includes/incomingDataMenu.html:94 -#: www/views/preferencesLogs.html:10 -#: www/views/tab-export-file.html:78 -msgid "Copy to clipboard" -msgstr "Copiar al portapapeles" - -#: www/views/tab-import-phrase.html:2 -msgid "Could not access the wallet at the server. Please check:" -msgstr "No se pudo acceder a la billetera desde el servidor. Por favor verificar:" - -#: src/js/controllers/buyAmazon.js:101 -msgid "Could not access to Amazon.com" -msgstr "No se pudo acceder a Amazon.com" - -#: src/js/services/profileService.js:493 -msgid "Could not access wallet" -msgstr "No se pudo acceder a la billetera" - -#: src/js/controllers/confirm.js:185 -msgid "Could not add message to imported wallet without shared encrypting key" -msgstr "No se puede agregar mensajes a una billetera importada sin la clave cifrada compartida" - -#: src/js/controllers/modals/txpDetails.js:193 -msgid "Could not broadcast payment" -msgstr "No se pudo enviar el pago" - -#: src/js/services/bwcError.js:41 -msgid "Could not build transaction" -msgstr "No se pudo construir la transacción" - -#: src/js/services/walletService.js:857 -msgid "Could not create address" -msgstr "No se pudo crear la dirección" - -#: src/js/controllers/topup.js:91 -msgid "Could not create the invoice" -msgstr "No se pudo crear la factura" - -#: src/js/controllers/buyAmazon.js:163 -#: src/js/controllers/topup.js:141 -msgid "Could not create transaction" -msgstr "No se pudo crear la transacción" - -#: src/js/services/profileService.js:342 -msgid "Could not create using the specified extended private key" -msgstr "No se pudo crear la billetera usando la clave privada ingresada" - -#: src/js/services/profileService.js:353 -msgid "Could not create using the specified extended public key" -msgstr "No se pudo crear con la clave pública extendida especificada" - -#: src/js/services/profileService.js:335 -msgid "Could not create: Invalid wallet recovery phrase" -msgstr "No se pudo crear: frase de recuperación inválida" - -#: src/js/controllers/import.js:99 -msgid "Could not decrypt file, check your password" -msgstr "No se pudo descifrar el archivo, verifique su contraseña" - -#: src/js/controllers/modals/txpDetails.js:175 -msgid "Could not delete payment proposal" -msgstr "No se pudo eliminar la propuesta de pago" - -#: src/js/services/feeService.js:72 -msgid "Could not get dynamic fee" -msgstr "No se pudo obtener comisión dinámica" - -#: src/js/services/feeService.js:42 -msgid "Could not get dynamic fee for level: {{feeLevel}}" -msgstr "No se pudo obtener comisión dinámica: {{feeLevel}}" - -#: src/js/controllers/modals/feeLevels.js:113 -msgid "Could not get fee levels" -msgstr "No se pudieron obtener los niveles de comisión" - -#: src/js/controllers/buyAmazon.js:121 -#: src/js/controllers/topup.js:99 -msgid "Could not get the invoice" -msgstr "No se pudo obtener la factura" - -#: src/js/controllers/bitpayCard.js:66 -msgid "Could not get transactions" -msgstr "No se pudo obtener las transacciones" - -#: src/js/services/profileService.js:595 -#: src/js/services/profileService.js:629 -#: src/js/services/profileService.js:652 -msgid "Could not import" -msgstr "No se pudo importar" - -#: src/js/services/profileService.js:564 -msgid "Could not import. Check input file and spending password" -msgstr "No se pudo importar. Verifique el archivo y la contraseña para pagos" - -#: src/js/services/profileService.js:439 -msgid "Could not join wallet" -msgstr "No se pudo unir a la billetera" - -#: src/js/controllers/modals/txpDetails.js:155 -msgid "Could not reject payment" -msgstr "No se pudo rechazar el pago" - -#: src/js/controllers/preferencesBitpayServices.js:33 -msgid "Could not remove account" -msgstr "No se pudo eliminar la cuenta" - -#: src/js/controllers/preferencesBitpayCard.js:20 -#: src/js/controllers/preferencesBitpayServices.js:50 -msgid "Could not remove card" -msgstr "No se pudo quitar tarjeta" - -#: src/js/services/walletService.js:776 -msgid "Could not save preferences on the server" -msgstr "No se pueden guardar las preferencias en el servidor" - -#: src/js/controllers/modals/txpDetails.js:141 -msgid "Could not send payment" -msgstr "No se pudo enviar el pago" - -#: src/js/controllers/buyAmazon.js:323 -#: src/js/controllers/topup.js:297 -msgid "Could not send transaction" -msgstr "No se pudo enviar la transacción" - -#: www/views/walletDetails.html:199 -msgid "Could not update transaction history" -msgstr "No se pudo actualizar el historial de transacciones" - -#: src/js/controllers/addresses.js:34 -#: src/js/controllers/addresses.js:42 -#: src/js/controllers/copayers.js:30 -#: src/js/controllers/walletDetails.js:78 -msgid "Could not update wallet" -msgstr "No se pudo actualizar la billetera" - -#: www/views/tab-create-personal.html:3 -msgid "Create Personal Wallet" -msgstr "Crear billetera Personal" - -#: www/views/tab-create-shared.html:3 -msgid "Create Shared Wallet" -msgstr "Crear billetera compartida" - -#: www/views/onboarding/tour.html:51 -#: www/views/tab-home.html:77 -#: www/views/tab-send.html:36 -msgid "Create bitcoin wallet" -msgstr "Crear billetera" - -#: www/views/tab-create-personal.html:129 -msgid "Create new wallet" -msgstr "Crear billetera nueva" - -#: www/views/add.html:22 -msgid "Create shared wallet" -msgstr "Crear billetera compartida" - -#: www/views/tab-create-shared.html:158 -msgid "Create {{formData.requiredCopayers}}-of-{{formData.totalCopayers}} wallet" -msgstr "Crear billetera {{formData.requiredCopayers}}-de-{{formData.totalCopayers}}" - -#: www/views/modals/txp-details.html:83 -#: www/views/tx-details.html:62 -msgid "Created by" -msgstr "Creado por" - -#: src/js/services/onGoingProcess.js:18 -msgid "Creating Wallet..." -msgstr "Creando billetera..." - -#: src/js/services/onGoingProcess.js:17 -msgid "Creating transaction" -msgstr "Creando transacción" - -#: www/views/modals/chooseFeeLevel.html:34 -#: www/views/preferencesFee.html:20 -msgid "Current fee rate for this policy" -msgstr "Tarifa actual de esta política" - -#: src/js/services/feeService.js:15 -msgid "Custom" -msgstr "Personalizado" - -#: www/views/customAmount.html:9 -msgid "Custom Amount" -msgstr "Importe Específico" - -#: src/js/controllers/preferencesFee.js:84 -msgid "Custom Fee" -msgstr "Comisión personalizada" - -#: www/views/modals/txp-details.html:89 -#: www/views/tx-details.html:68 -msgid "Date" -msgstr "Fecha" - -#: www/views/preferencesDeleteWallet.html:21 -msgid "Delete" -msgstr "Eliminar" - -#: www/views/modals/txp-details.html:166 -msgid "Delete Payment Proposal" -msgstr "Eliminar Propuesta de Pago" - -#: www/views/preferencesAdvanced.html:33 -#: www/views/preferencesDeleteWallet.html:3 -msgid "Delete Wallet" -msgstr "Eliminar billetera" - -#: www/views/copayers.html:59 -msgid "Delete it and create a new one" -msgstr "Borrar y crear uno nuevo" - -#: src/js/services/onGoingProcess.js:19 -msgid "Deleting Wallet..." -msgstr "Eliminando billetera..." - -#: src/js/services/onGoingProcess.js:28 -msgid "Deleting payment proposal" -msgstr "Eliminando la propuesta de pago" - -#: www/views/join.html:138 -#: www/views/tab-create-personal.html:109 -#: www/views/tab-create-shared.html:138 -#: www/views/tab-import-phrase.html:46 -msgid "Derivation Path" -msgstr "Camino de derivación" - -#: www/views/preferencesInformation.html:41 -msgid "Derivation Strategy" -msgstr "Estrategia de derivación" - -#: www/views/buyAmazon.html:39 -#: www/views/topup.html:45 -msgid "Details" -msgstr "Detalles" - -#: src/js/controllers/lockSetup.js:9 -#: src/js/controllers/tab-settings.js:60 -msgid "Disabled" -msgstr "Deshabilitado" - -#: www/views/includes/backupNeededPopup.html:10 -#: www/views/onboarding/backupRequest.html:12 -msgid "Do it later" -msgstr "Luego" - -#: www/views/tab-export-file.html:29 -msgid "Do not include private key" -msgstr "No incluir la clave privada" - -#: www/views/preferencesLanguage.html:21 -msgid "Don't see your language on Crowdin? Contact the Owner on Crowdin! We'd love to support your language." -msgstr "¿No ves tu idioma en Crowdin? Contacta con el encargado del proyecto! Nos encantaría soportar tu idioma." - -#: www/views/tab-export-file.html:59 -#: www/views/tab-home.html:22 -msgid "Download" -msgstr "Descargar" - -#: www/views/addresses.html:19 -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 "Cada billetera puede generar billones de direcciones desde sus 12 palabras. Se genera una nueva dirección automáticamente cada vez que se recibe un pago." - -#: src/js/services/feeService.js:13 -msgid "Economy" -msgstr "Económico" - -#: www/views/onboarding/collectEmail.html:27 -msgid "Edit" -msgstr "Editar" - -#: www/views/addressbook.add.html:29 -#: www/views/addressbook.view.html:22 -msgid "Email" -msgstr "Correo electrónico" - -#: www/views/preferencesNotifications.html:42 -msgid "Email Address" -msgstr "Dirección de correo electrónico" - -#: src/js/services/bwcError.js:122 -msgid "Empty addresses limit reached. New addresses cannot be generated." -msgstr "Se ha alcanzado el límite de direcciones vacías. No se pueden generar nuevas direcciones." - -#: www/views/tab-scan.html:19 -msgid "Enable camera access in your device settings to get started." -msgstr "Habilitar el acceso de la cámara en su configuración de dispositivo para empezar." - -#: www/views/preferencesNotifications.html:29 -msgid "Enable email notifications" -msgstr "Activar notificaciones de correo electrónico" - -#: www/views/preferencesNotifications.html:12 -msgid "Enable push notifications" -msgstr "Activar notificaciones push" - -#: www/views/tab-scan.html:18 -msgid "Enable the camera to get started." -msgstr "Activar la cámara empezar." - -#: www/views/amount.html:4 -msgid "Enter Amount" -msgstr "Ingrese el monto" - -#: src/js/services/walletService.js:1048 -#: src/js/services/walletService.js:1063 -msgid "Enter Spending Password" -msgstr "Ingrese contraseña para pagos" - -#: src/js/services/bitpayAccountService.js:110 -msgid "Enter Two Factor for your BitPay account" -msgstr "Ingrese Autenticación de Dos Pasos para su cuenta de BitPay" - -#: www/views/modals/chooseFeeLevel.html:41 -msgid "Enter custom fee" -msgstr "Ingrese comisión" - -#: src/js/services/walletService.js:1030 -msgid "Enter new spending password" -msgstr "Ingrese una nueva contraseña para pagos" - -#: www/views/join.html:76 -#: www/views/tab-create-personal.html:49 -#: www/views/tab-create-shared.html:78 -msgid "Enter the recovery phrase (BIP39)" -msgstr "Introduce la frase de recuperación (BIP39)" - -#: www/views/onboarding/collectEmail.html:13 -msgid "Enter your email" -msgstr "Ingresa tu correo electrónico" - -#: www/views/backup.html:62 -msgid "Enter your password" -msgstr "Ingrese su contraseña" - -#. Trying to import a malformed wallet export QR code -#: src/js/controllers/activity.js:45 -#: src/js/controllers/addressbookAdd.js:30 -#: src/js/controllers/addressbookView.js:29 -#: src/js/controllers/addresses.js:130 -#: src/js/controllers/addresses.js:131 -#: src/js/controllers/bitpayCard.js:66 -#: src/js/controllers/bitpayCardIntro.js:40 -#: src/js/controllers/bitpayCardIntro.js:81 -#: src/js/controllers/buyAmazon.js:23 -#: src/js/controllers/buyAmazon.js:34 -#: src/js/controllers/confirm.js:276 -#: src/js/controllers/copayers.js:67 -#: src/js/controllers/create.js:155 -#: src/js/controllers/create.js:168 -#: src/js/controllers/create.js:175 -#: src/js/controllers/create.js:197 -#: src/js/controllers/create.js:204 -#: src/js/controllers/create.js:222 -#: src/js/controllers/export.js:109 -#: src/js/controllers/export.js:115 -#: src/js/controllers/export.js:126 -#: src/js/controllers/export.js:154 -#: src/js/controllers/export.js:160 -#: src/js/controllers/export.js:171 -#: src/js/controllers/export.js:47 -#: src/js/controllers/export.js:53 -#: src/js/controllers/feedback/send.js:23 -#: src/js/controllers/import.js:104 -#: src/js/controllers/import.js:116 -#: src/js/controllers/import.js:134 -#: src/js/controllers/import.js:185 -#: src/js/controllers/import.js:213 -#: src/js/controllers/import.js:222 -#: src/js/controllers/import.js:237 -#: src/js/controllers/import.js:249 -#: src/js/controllers/import.js:260 -#: src/js/controllers/import.js:270 -#: src/js/controllers/import.js:294 -#: src/js/controllers/import.js:307 -#: src/js/controllers/import.js:317 -#: src/js/controllers/import.js:327 -#: src/js/controllers/import.js:351 -#: src/js/controllers/import.js:364 -#: src/js/controllers/import.js:70 -#: src/js/controllers/import.js:83 -#: src/js/controllers/join.js:121 -#: src/js/controllers/join.js:135 -#: src/js/controllers/join.js:142 -#: src/js/controllers/join.js:165 -#: src/js/controllers/join.js:173 -#: src/js/controllers/join.js:191 -#: src/js/controllers/modals/feeLevels.js:10 -#: src/js/controllers/modals/txpDetails.js:134 -#: src/js/controllers/paperWallet.js:47 -#: src/js/controllers/preferencesBitpayCard.js:20 -#: src/js/controllers/preferencesBitpayServices.js:33 -#: src/js/controllers/preferencesBitpayServices.js:50 -#: src/js/controllers/preferencesDelete.js:37 -#: src/js/controllers/preferencesExternal.js:20 -#: src/js/controllers/tab-home.js:174 -#: src/js/controllers/tab-send.js:132 -#: src/js/controllers/tabsController.js:36 -#: src/js/controllers/tabsController.js:7 -#: src/js/controllers/topup.js:20 -#: src/js/controllers/topup.js:31 -#: src/js/controllers/tx-details.js:102 -#: src/js/services/incomingData.js:98 -msgid "Error" -msgstr "Error" - -#: src/js/controllers/confirm.js:447 -msgid "Error at confirm" -msgstr "Error al confirmar" - -#: src/js/controllers/buyAmazon.js:178 -msgid "Error creating gift card" -msgstr "Error al crear tarjeta de regalo" - -#: src/js/controllers/buyAmazon.js:93 -msgid "Error creating the invoice" -msgstr "Error al crear la factura" - -#: src/js/services/profileService.js:396 -msgid "Error creating wallet" -msgstr "Error al crear billetera" - -#: src/js/controllers/confirm.js:266 -msgid "Error getting SendMax information" -msgstr "Error al obtener información de SendMax" - -#: src/js/controllers/buyAmazon.js:135 -#: src/js/controllers/topup.js:113 -msgid "Error in Payment Protocol" -msgstr "Error en el Protocolo de Pago" - -#: src/js/controllers/bitpayCardIntro.js:14 -msgid "Error pairing BitPay Account" -msgstr "Error de sincronización con la cuenta de BitPay" - -#: src/js/controllers/paperWallet.js:41 -msgid "Error scanning funds:" -msgstr "Error al escanear fondos:" - -#: src/js/controllers/paperWallet.js:91 -msgid "Error sweeping wallet:" -msgstr "Error al buscar fondos:" - -#: src/js/controllers/bitpayCardIntro.js:20 -msgid "Error updating Debit Cards" -msgstr "Error al actualizar las tarjetas de débito" - -#: src/js/services/bwcError.js:143 -msgid "Exceeded daily limit of $500 per user" -msgstr "Se excedió el limite de $500 por usuario" - -#: src/js/controllers/confirm.js:411 -#: www/views/confirm.html:27 -#: www/views/modals/txp-details.html:121 -msgid "Expired" -msgstr "Expirada" - -#: www/views/modals/paypro.html:54 -#: www/views/modals/txp-details.html:127 -msgid "Expires" -msgstr "Expira" - -#: www/views/preferencesAdvanced.html:21 -msgid "Export Wallet" -msgstr "Exportar billetera" - -#: www/views/preferencesHistory.html:11 -#: www/views/preferencesHistory.html:14 -msgid "Export to file" -msgstr "Exportar a archivo" - -#: www/views/export.html:3 -msgid "Export wallet" -msgstr "Exportar billetera" - -#: src/js/services/walletService.js:1175 -#: www/views/tab-export-qrCode.html:9 -msgid "Exporting via QR not supported for this wallet" -msgstr "Exportar vía código QR no es compatible para esta billetera" - -#: www/views/preferencesInformation.html:83 -msgid "Extended Public Keys" -msgstr "Claves Públicas Extendidas" - -#: src/js/services/onGoingProcess.js:20 -msgid "Extracting Wallet information..." -msgstr "Obteniendo Información de la billetera..." - -#: src/js/controllers/export.js:115 -#: src/js/controllers/export.js:126 -#: src/js/controllers/export.js:160 -#: src/js/controllers/export.js:171 -#: www/views/tab-export-file.html:4 -msgid "Failed to export" -msgstr "Error al exportar" - -#: www/views/tab-create-personal.html:14 -#: www/views/tab-create-shared.html:14 -msgid "Family vacation funds" -msgstr "Fondos para vacaciones en familia" - -#: www/views/tx-details.html:81 -msgid "Fee" -msgstr "Comisión" - -#: www/views/modals/chooseFeeLevel.html:73 -msgid "Fee level" -msgstr "Nivel de comisión" - -#: src/js/controllers/modals/feeLevels.js:101 -msgid "Fee level is not defined" -msgstr "El nivel de comisión no esta definido" - -#: www/views/confirm.html:81 -#: www/views/modals/txp-details.html:101 -msgid "Fee:" -msgstr "Comisión:" - -#: src/js/controllers/feedback/send.js:23 -msgid "Feedback could not be submitted. Please try again later." -msgstr "No se pudo enviar el comentario. Por favor intente nuevamente." - -#: src/js/services/onGoingProcess.js:42 -msgid "Fetching BitPay Account..." -msgstr "Buscando Cuenta de BitPay..." - -#: src/js/services/onGoingProcess.js:21 -msgid "Fetching payment information" -msgstr "Obteniendo información del pago" - -#: www/views/export.html:14 -#: www/views/import.html:16 -msgid "File/Text" -msgstr "Archivo/Texto" - -#: src/js/services/fingerprintService.js:43 -#: src/js/services/fingerprintService.js:48 -msgid "Finger Scan Failed" -msgstr "Fallo en la verificación de la huella" - -#: src/js/controllers/feedback/send.js:34 -#: www/views/feedback/complete.html:7 -msgid "Finish" -msgstr "Finalizar" - -#: www/views/tab-create-personal.html:121 -#: www/views/tab-create-shared.html:150 -msgid "For audit purposes" -msgstr "Para propósitos de auditoría" - -#: src/js/controllers/topup.js:306 -#: www/views/buyAmazon.html:29 -#: www/views/confirm.html:65 -#: www/views/modals/txp-details.html:74 -#: www/views/topup.html:34 -#: www/views/tx-details.html:52 -msgid "From" -msgstr "Desde" - -#: src/js/controllers/bitpayCardIntro.js:71 -msgid "From BitPay account" -msgstr "De la cuenta de BitPay" - -#: www/views/tab-import-phrase.html:54 -msgid "From Hardware Wallet" -msgstr "Billetera Física" - -#: www/views/tab-export-qrCode.html:5 -msgid "From the destination device, go to Add wallet > Import wallet and scan this QR code" -msgstr "Desde el dispositivo de destino, ir a Agregar billetera > Importar y escanear este código QR" - -#: src/js/services/bwcError.js:74 -msgid "Funds are locked by pending spend proposals" -msgstr "Los fondos están bloqueados por propuestas de gastos pendientes" - -#: www/views/paperWallet.html:16 -msgid "Funds found:" -msgstr "Fondos encontrados:" - -#: www/views/topup.html:49 -msgid "Funds to be added" -msgstr "Fondos a agregar" - -#: www/views/paperWallet.html:53 -msgid "Funds transferred" -msgstr "Fondos transferidos" - -#: www/views/topup.html:103 -msgid "Funds were added to debit card" -msgstr "Los fondos se agregaron a la tarjeta de débito" - -#: www/views/paperWallet.html:22 -msgid "Funds will be transferred to" -msgstr "Los fondos serán transferidos a" - -#: www/views/tab-receive.html:51 -msgid "Generate new address" -msgstr "Generar nueva dirección" - -#: src/js/services/onGoingProcess.js:22 -msgid "Generating .csv file..." -msgstr "Generando archivo .csv..." - -#: src/js/services/onGoingProcess.js:37 -msgid "Generating new address..." -msgstr "Generando una nueva dirección..." - -#: www/views/bitpayCardIntro.html:23 -msgid "Get local cash anywhere you go, from any Visa® compatible ATM. ATM bank fees may apply." -msgstr "Consigue efectivo local dondequiera que vayas, desde cualquier ATM Visa® compatible. Comisión de parte del ATM pueden ser aplicadas." - -#: www/views/onboarding/collectEmail.html:15 -msgid "Get news and updates from BitPay" -msgstr "Recibir noticias y actualizaciones de BitPay" - -#: www/views/bitpayCard.html:49 -#: www/views/onboarding/welcome.html:8 -msgid "Get started" -msgstr "Empezar" - -#: www/views/addressbook.html:20 -msgid "Get started by adding your first one." -msgstr "Comienza agregando el primero." - -#: src/js/services/onGoingProcess.js:23 -msgid "Getting fee levels..." -msgstr "Obteniendo niveles de comisión..." - -#: www/views/buyAmazon.html:43 -msgid "Gift card" -msgstr "Tarjeta de regalo" - -#: src/js/controllers/buyAmazon.js:203 -msgid "Gift card expired" -msgstr "La tarjeta de regalo expiró" - -#: www/views/buyAmazon.html:111 -msgid "Gift card generated and ready to use." -msgstr "Tarjeta de regalo generada y lista para usar." - -#: src/js/controllers/bitpayCard.js:114 -#: src/js/controllers/bitpayCard.js:124 -#: 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:149 -#: src/js/controllers/tab-settings.js:48 -#: src/js/controllers/tx-details.js:176 -msgid "Go Back" -msgstr "Volver" - -#: src/js/controllers/onboarding/backupRequest.js:20 -#: src/js/controllers/onboarding/backupRequest.js:26 -#: src/js/services/bitpayAccountService.js:84 -msgid "Go back" -msgstr "Volver" - -#: www/views/backupWarning.html:15 -#: www/views/includes/confirmBackupPopup.html:8 -#: www/views/onboarding/tour.html:23 -msgid "Got it" -msgstr "Entiendo" - -#: www/views/preferencesInformation.html:47 -#: www/views/preferencesInformation.html:53 -msgid "Hardware Wallet" -msgstr "Billetera Física" - -#: www/views/preferencesExternal.html:18 -msgid "Hardware not connected." -msgstr "Equipo no conectado." - -#: www/views/import.html:20 -msgid "Hardware wallet" -msgstr "Billetera física" - -#: www/views/tab-settings.html:20 -msgid "Help & Support" -msgstr "Ayuda & Soporte" - -#: src/js/controllers/bitpayCard.js:112 -#: src/js/controllers/tab-settings.js:46 -msgid "Help and support information is available at the website." -msgstr "La ayuda está disponible en el sitio web." - -#: www/views/addresses.html:25 -msgid "Hide" -msgstr "Ocultar" - -#: www/views/preferences.html:27 -msgid "Hide Balance" -msgstr "Balance Oculto" - -#: www/views/advancedSettings.html:29 -msgid "Hide Next Steps Card" -msgstr "Ocultar Tarjeta de Próximo Pasos" - -#: www/views/join.html:46 -#: www/views/tab-create-personal.html:26 -#: www/views/tab-create-shared.html:55 -#: www/views/tab-export-file.html:25 -#: www/views/tab-import-file.html:28 -#: www/views/tab-import-hardware.html:31 -#: www/views/tab-import-phrase.html:33 -msgid "Hide advanced options" -msgstr "Ocultar opciones avanzadas" - -#: www/views/tabs.html:3 -msgid "Home" -msgstr "Inicio" - -#: src/js/controllers/feedback/send.js:61 -#: src/js/controllers/feedback/send.js:65 -#: src/js/controllers/feedback/send.js:69 -msgid "How could we improve your experience?" -msgstr "¿Cómo podríamos mejorar tu experiencia?" - -#: www/views/feedback/rateCard.html:3 -msgid "How do you like {{appName}}?" -msgstr "¿Te gusta {{appName}}?" - -#: src/js/controllers/feedback/rateCard.js:29 -msgid "I don't like it" -msgstr "No me gusta" - -#: www/views/onboarding/disclaimer.html:43 -msgid "I have read, understood, and agree to the Terms of Use." -msgstr "He leído, entendido y acepto los Términos de Uso." - -#: www/views/modals/terms.html:22 -msgid "I have read, understood, and agree with the Terms of use." -msgstr "He leído, entendido y acepto los Términos de uso." - -#: www/views/join.html:134 -#: www/views/tab-create-personal.html:105 -#: www/views/tab-create-shared.html:134 -msgid "I have written it down" -msgstr "Ya he anotado" - -#: src/js/controllers/feedback/rateCard.js:35 -msgid "I like the app" -msgstr "Me gusta la aplicación" - -#: src/js/controllers/feedback/rateCard.js:26 -msgid "I think this app is terrible." -msgstr "Creo que esta aplicación es terrible." - -#: src/js/controllers/onboarding/backupRequest.js:19 -#: www/views/includes/screenshotWarningModal.html:9 -msgid "I understand" -msgstr "Entiendo" - -#: www/views/onboarding/disclaimer.html:21 -msgid "I understand that if this app is moved to another device or deleted, my bitcoin can only be recovered with the backup phrase." -msgstr "Entiendo que si esta aplicación es borrada, mis fondos pueden recuperarse únicamente con la copia de seguridad." - -#: www/views/onboarding/disclaimer.html:18 -msgid "I understand that my funds are held securely on this device, not by a company." -msgstr "Entiendo que mis fondos están protegidos por el dispositivo y no por una empresa." - -#: www/views/backup.html:29 -msgid "I've written it down" -msgstr "Ya he anotado" - -#: www/views/preferences.html:45 -msgid "If enabled, all sensitive information (private key and recovery phrase) and actions (spending and exporting) associated with this wallet will be protected." -msgstr "Si está habilitado, se protegerá toda información sensible (clave privada y frase recuperación) y acciones (gastar y exportar) asociadas con esta billetera." - -#: www/views/advancedSettings.html:22 -msgid "If enabled, the Recent Transactions card - a list of transactions occuring across all wallets - will appear in the Home tab." -msgstr "Si se habilita, aparecerá una lista de las transacciones recientes de las billeteras en el inicio." - -#: www/views/advancedSettings.html:13 -msgid "If enabled, wallets will also try to spend unconfirmed funds. This option may cause transaction delays." -msgstr "Si se habilita, las billeteras podrán gastar los fondos sin confirmar. Esta opción puede causar demoras en la transacción." - -#: src/js/controllers/onboarding/backupRequest.js:18 -msgid "If this device is replaced or this app is deleted, neither you nor BitPay can recover your funds without a backup." -msgstr "Si pierdes este dispositivo o esta aplicación es eliminada, ni tú ni BitPay podrán recuperar el dinero." - -#: www/views/feedback/complete.html:23 -msgid "If you have additional feedback, please let us know by tapping the \"Send feedback\" option in the Settings tab." -msgstr "Si tienes comentarios adicionales, por favor envíalos pulsando la opción \"Enviar comentarios\" en la pestaña de preferencias." - -#: www/views/includes/screenshotWarningModal.html:8 -msgid "If you take a screenshot, your backup may be viewed by other apps. You can make a safe backup with physical paper and a pen." -msgstr "Si tomas una captura de pantalla, otras aplicaciones podrían ver tu copia de seguridad. La forma más acertada es resguardarla con tinta y papel." - -#: www/views/tab-import-hardware.html:42 -#: www/views/tab-import-phrase.html:77 -msgid "Import" -msgstr "Importar" - -#: www/views/import.html:3 -msgid "Import Wallet" -msgstr "Importar billetera" - -#: www/views/tab-import-file.html:39 -msgid "Import backup" -msgstr "Importar copia de seguridad" - -#: www/views/add.html:38 -msgid "Import wallet" -msgstr "Importar billetera" - -#: src/js/services/onGoingProcess.js:24 -msgid "Importing Wallet..." -msgstr "Importando billetera..." - -#: www/views/backup.html:65 -msgid "In order to verify your wallet backup, please type your password." -msgstr "Para verificar la copia de seguridad de la billetera, por favor escriba la contraseña." - -#: www/views/includes/walletItem.html:11 -#: www/views/includes/walletSelector.html:18 -#: www/views/tab-home.html:90 -#: www/views/tab-settings.html:117 -msgid "Incomplete" -msgstr "Incompleta" - -#: www/views/tab-receive.html:22 -msgid "Incomplete wallet" -msgstr "Billetera Incompleta" - -#: www/views/modals/pin.html:12 -msgid "Incorrect PIN, try again." -msgstr "PIN Incorrecto. Inténtelo de nuevo." - -#. Trying to import a malformed wallet export QR code -#: src/js/controllers/import.js:70 -msgid "Incorrect code format" -msgstr "Formato de código incorrecto" - -#: src/js/services/bwcError.js:113 -msgid "Incorrect network address" -msgstr "Dirección de red incorrecta" - -#: src/js/controllers/confirm.js:112 -#: src/js/controllers/confirm.js:275 -#: src/js/services/bwcError.js:44 -msgid "Insufficient funds" -msgstr "Fondos insuficientes" - -#: src/js/controllers/topup.js:164 -#: src/js/controllers/topup.js:176 -#: src/js/services/bwcError.js:71 -msgid "Insufficient funds for fee" -msgstr "Fondos insuficientes para el pago de la comisión" - -#: www/views/includes/walletHistory.html:49 -msgid "Invalid" -msgstr "Inválido" - -#: src/js/controllers/buyAmazon.js:136 -#: src/js/controllers/topup.js:114 -msgid "Invalid URL" -msgstr "URL incorrecta" - -#: src/js/controllers/create.js:175 -#: src/js/controllers/import.js:327 -#: src/js/controllers/join.js:142 -msgid "Invalid account number" -msgstr "Número de cuenta inválido" - -#: src/js/services/bwcError.js:119 -msgid "Invalid address" -msgstr "Dirección inválida" - -#: src/js/controllers/tabsController.js:7 -msgid "Invalid data" -msgstr "Datos no válidos" - -#: src/js/controllers/create.js:155 -#: src/js/controllers/import.js:249 -#: src/js/controllers/join.js:121 -msgid "Invalid derivation path" -msgstr "Camino de derivación no válido" - -#: src/js/controllers/copayers.js:90 -msgid "Invitation to share a {{appName}} Wallet" -msgstr "Invitación para unirse a la billetera {{appName}} compartida" - -#: www/views/buyAmazon.html:49 -#: www/views/topup.html:56 -msgid "Invoice Fee" -msgstr "Cargo por factura" - -#: src/js/controllers/feedback/send.js:79 -msgid "Is there anything we could do better?" -msgstr "¿Hay algo que podríamos mejorar?" - -#: www/views/backup.html:47 -msgid "Is this correct?" -msgstr "¿Es correcto?" - -#: www/views/onboarding/collectEmail.html:22 -msgid "Is this email address correct?" -msgstr "¿Es correcta esta dirección de correo electrónico?" - -#: www/views/addresses.html:25 -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 "Es una buena idea evitar el reuso de las direcciones. Esto protege tu privacidad y mantiene tus fondos seguros contra hipotéticos ataques de ordenadores cuánticos." - -#: src/js/controllers/backup.js:76 -msgid "It's important that you write your backup phrase down correctly. If something happens to your wallet, you'll need this backup to recover your money. Please review your backup and try again." -msgstr "Es importante que escribas correctamente la frase de seguridad. Si algo le pasa a tu billetera, necesitarás de ésta para recuperar el dinero. Revísala y vuelve a intentarlo." - -#: www/views/join.html:148 -msgid "Join" -msgstr "Unirse" - -#: src/js/controllers/copayers.js:85 -msgid "Join my {{appName}} Wallet. Here is the invitation code: {{secret}} You can download {{appName}} for your phone or desktop at {{appUrl}}" -msgstr "Únete a mi billetera {{appName}}. Aquí está el código de invitación: {{secret}} puede descargar {{appName}} para su teléfono o escritorio en {{appUrl}}" - -#: www/views/add.html:30 -#: www/views/join.html:5 -msgid "Join shared wallet" -msgstr "Unirse a una billetera compartida" - -#: src/js/services/onGoingProcess.js:25 -msgid "Joining Wallet..." -msgstr "Uniéndose a la billetera..." - -#: www/views/onboarding/tour.html:22 -msgid "Just scan the code to pay." -msgstr "Sólo escanea y paga." - -#: src/js/services/bwcError.js:116 -msgid "Key already associated with an existing wallet" -msgstr "La clave ya esta asociada a un monedero existente" - -#: www/views/preferencesLanguage.html:4 -#: www/views/tab-settings.html:53 -msgid "Language" -msgstr "Idioma" - -#: www/views/bitpayCard.html:61 -msgid "Last Month" -msgstr "Mes pasado" - -#: www/views/backup.html:36 -msgid "Let's verify your backup phrase." -msgstr "Verifiquemos la copia de seguridad." - -#: www/views/addresses.html:45 -#: www/views/allAddresses.html:14 -msgid "Loading addresses..." -msgstr "Cargando direcciones..." - -#: src/js/services/onGoingProcess.js:35 -msgid "Loading transaction info..." -msgstr "Cargando información de transacción..." - -#: www/views/tab-settings.html:95 -msgid "Lock App" -msgstr "Bloquear la aplicación" - -#: src/js/controllers/lockSetup.js:23 -msgid "Lock by Fingerprint" -msgstr "Bloquear por huella digital" - -#: src/js/controllers/lockSetup.js:14 -msgid "Lock by PIN" -msgstr "Bloquear por PIN" - -#: www/views/modals/wallet-balance.html:80 -msgid "Locked" -msgstr "Bloqueado" - -#: src/js/services/bwcError.js:86 -msgid "Locktime in effect. Please wait to create a new spend proposal" -msgstr "Bloqueo temporal. Por favor espera para crear una nueva propuesta de gasto" - -#: src/js/services/bwcError.js:89 -msgid "Locktime in effect. Please wait to remove this spend proposal" -msgstr "Bloqueo temporal. Por favor espera para eliminar esta propuesta de gasto" - -#: www/views/modals/bitpay-card-confirmation.html:14 -msgid "Log out" -msgstr "Cerrar Sesión" - -#: www/views/addresses.html:87 -msgid "Low amount inputs" -msgstr "Entradas de monto bajo" - -#: www/views/includes/walletHistory.html:27 -msgid "Low fees" -msgstr "Comisión baja" - -#: www/views/onboarding/tour.html:38 -msgid "Makes sense" -msgstr "Entiendo" - -#: src/js/controllers/modals/search.js:61 -msgid "Matches:" -msgstr "Coincidencias:" - -#: www/views/includes/copayers.html:4 -#: www/views/preferencesInformation.html:79 -msgid "Me" -msgstr "Yo" - -#: src/js/controllers/feedback/rateCard.js:32 -msgid "Meh - it's alright" -msgstr "Buu - está bien" - -#: src/js/controllers/tx-details.js:148 -#: www/views/modals/paypro.html:48 -#: www/views/modals/txp-details.html:95 -#: www/views/tx-details.html:74 -msgid "Memo" -msgstr "Nota" - -#: www/views/modals/txp-details.html:133 -msgid "Merchant Message" -msgstr "Mensaje del comerciante" - -#: src/js/services/bwcError.js:134 -msgid "Missing parameter" -msgstr "Faltan parámetros" - -#: src/js/services/bwcError.js:32 -msgid "Missing private keys to sign" -msgstr "Faltan las claves privadas para firmar" - -#: www/views/preferences.html:60 -#: www/views/preferencesAdvanced.html:3 -msgid "More Options" -msgstr "Más opciones" - -#: www/views/includes/walletHistory.html:47 -#: www/views/tx-details.html:19 -msgid "Moved" -msgstr "Movido" - -#: src/js/controllers/tx-details.js:114 -msgid "Moved Funds" -msgstr "Fondos movidos" - -#: www/views/modals/txp-details.html:57 -msgid "Multiple recipients" -msgstr "Varios destinatarios" - -#: www/views/tab-import-phrase.html:8 -msgid "NOTE: To import a wallet from a 3rd party software, please go to Add Wallet > Create Wallet, and specify the Recovery Phrase there." -msgstr "Nota: Para importar una billetera de un software de tercero debes ir a Añadir billetera > Crear billetera, y especificar la frase de recuperación." - -#: www/views/addressbook.add.html:21 -#: www/views/addressbook.view.html:18 -#: www/views/preferences.html:15 -#: www/views/preferencesAlias.html:17 -msgid "Name" -msgstr "Nombre" - -#: www/views/buyAmazon.html:55 -#: www/views/topup.html:63 -msgid "Network Fee" -msgstr "Comisión de la Red" - -#: src/js/services/bwcError.js:47 -msgid "Network error" -msgstr "Error de red" - -#: www/views/includes/walletActivity.html:43 -msgid "New Proposal" -msgstr "Nueva propuesta de pago" - -#: src/js/controllers/addresses.js:131 -msgid "New address could not be generated. Please try again." -msgstr "No se pudo generar la nueva dirección. Por favor inténtalo de nuevo." - -#: www/views/add.html:14 -msgid "New personal wallet" -msgstr "Nueva billetera personal" - -#: www/views/includes/nextSteps.html:3 -msgid "Next steps" -msgstr "Próximos pasos" - -#: www/views/tab-receive.html:16 -msgid "No Wallet" -msgstr "Sin billetera" - -#: src/js/controllers/buyAmazon.js:114 -msgid "No access key defined" -msgstr "No se ha definido la llave de acceso" - -#: www/views/onboarding/backupRequest.html:5 -msgid "No backup, no bitcoin." -msgstr "Sin copia de seguridad, no hay bitcoins." - -#: www/views/addressbook.html:19 -msgid "No contacts yet" -msgstr "Aun no hay contactos" - -#: www/views/preferencesExternal.html:12 -msgid "No hardware information available." -msgstr "No hay información disponible sobre el equipo." - -#: www/views/tab-import-hardware.html:3 -msgid "No hardware wallets supported on this device" -msgstr "No hay billeteras físicas compatibles con este dispositivo" - -#: www/views/proposals.html:24 -msgid "No pending proposals" -msgstr "No propuestas de pago pendientes" - -#: www/views/activity.html:25 -msgid "No recent transactions" -msgstr "No hay transacciones recientes" - -#: src/js/controllers/buyAmazon.js:43 -#: src/js/controllers/topup.js:46 -msgid "No signing proposal: No private key" -msgstr "Propuesta sin firmar: No existe la clave privada" - -#: www/views/walletDetails.html:193 -msgid "No transactions yet" -msgstr "Aun no hay transacciones" - -#: src/js/controllers/preferencesDelete.js:15 -msgid "No wallet found" -msgstr "Se se encontró la billetera" - -#: src/js/controllers/preferencesDelete.js:8 -msgid "No wallet selected" -msgstr "No se seleccionó una billetera" - -#: src/js/controllers/buyAmazon.js:298 -#: src/js/controllers/confirm.js:83 -#: src/js/controllers/topup.js:263 -msgid "No wallets available" -msgstr "No hay billeteras disponibles" - -#: www/views/paperWallet.html:47 -msgid "No wallets available to receive funds" -msgstr "No hay billeteras disponibles para recibir fondos" - -#: src/js/services/feeService.js:12 -msgid "Normal" -msgstr "Normal" - -#: src/js/services/bwcError.js:80 -msgid "Not authorized" -msgstr "No autorizado" - -#: src/js/controllers/confirm.js:276 -msgid "Not enough funds for fee" -msgstr "No hay suficientes fondos para la comisión" - -#: www/views/onboarding/tour.html:50 -msgid "Not even BitPay can access it." -msgstr "Ni siquiera BitPay puede acceder a ellos." - -#: src/js/controllers/paperWallet.js:47 -msgid "Not funds found" -msgstr "No se encontraron fondos" - -#: www/views/feedback/rateApp.html:3 -#: www/views/onboarding/notifications.html:8 -msgid "Not now" -msgstr "Ahora no" - -#: www/views/includes/output.html:15 -msgid "Note" -msgstr "Nota" - -#: www/views/modals/wallets.html:25 -msgid "Notice: only 1-1 (single signature) wallets can be used for sell bitcoin" -msgstr "Aviso: solo billeteras 1-1 (única firma) pueden ser utilizadas para vender bitcoin" - -#: www/views/preferencesNotifications.html:3 -#: www/views/tab-settings.html:46 -msgid "Notifications" -msgstr "Notificaciones" - -#: www/views/onboarding/collectEmail.html:9 -msgid "Notifications by email" -msgstr "Notificaciones por correo electrónico" - -#: www/views/tx-details.html:117 -msgid "Notify me if confirmed" -msgstr "Notificarme si se confirma" - -#: www/views/preferencesNotifications.html:24 -msgid "Notify me when transactions are confirmed" -msgstr "Notificarme cuando se confirmen las transacciones" - -#: www/views/includes/backupNeededPopup.html:8 -msgid "Now is a good time to backup your wallet. If this device is lost, it is impossible to access your funds without a backup." -msgstr "Es un buen momento para realizar una copia de seguridad de la billetera. Si este dispositivo se pierde, será imposible acceder a los fondos." - -#: www/views/backupWarning.html:11 -msgid "Now is a perfect time to assess your surroundings. Nearby windows? Hidden cameras? Shoulder-spies?" -msgstr "Es el momento perfecto para mirar a tu alrededor. ¿ventanas? ¿cámaras? ¿gente curiosa?" - -#: src/js/controllers/buyAmazon.js:310 -#: src/js/controllers/topup.js:284 -#: src/js/services/popupService.js:16 -#: src/js/services/popupService.js:52 -#: src/js/services/popupService.js:61 -#: src/js/services/popupService.js:72 -#: www/views/modals/chooseFeeLevel.html:6 -msgid "OK" -msgstr "OK" - -#: www/views/modals/tx-status.html:12 -#: www/views/modals/tx-status.html:24 -#: www/views/modals/tx-status.html:36 -#: www/views/modals/tx-status.html:46 -msgid "OKAY" -msgstr "LISTO" - -#: www/views/modals/terms.html:15 -msgid "Official English Disclaimer" -msgstr "Renuncia oficial en inglés" - -#: src/js/controllers/feedback/send.js:64 -msgid "Oh no!" -msgstr "¡Oh no!" - -#: www/views/tab-home.html:39 -msgid "On this screen you can see all your wallets, accounts, and assets." -msgstr "En esta pantalla puedes ver tus billeteras, cuentas y activos." - -#: src/js/controllers/bitpayCard.js:113 -#: src/js/controllers/tab-settings.js:47 -msgid "Open" -msgstr "Abrir" - -#: src/js/controllers/preferencesLanguage.js:13 -msgid "Open Crowdin" -msgstr "Abrir Crowdin" - -#: src/js/controllers/preferencesAbout.js:15 -msgid "Open GitHub" -msgstr "Abrir GitHub" - -#: src/js/controllers/preferencesAbout.js:13 -msgid "Open GitHub Project" -msgstr "Abrir Proyecto en GitHub" - -#: src/js/controllers/bitpayCard.js:123 -#: src/js/controllers/tx-details.js:175 -msgid "Open Insight" -msgstr "Abrir Insight" - -#: www/views/tab-scan.html:22 -msgid "Open Settings" -msgstr "Abrir Opciones" - -#: src/js/controllers/preferencesLanguage.js:11 -msgid "Open Translation Community" -msgstr "Abrir Comunidad de Traducciones" - -#: src/js/controllers/onboarding/terms.js:22 -msgid "Open Website" -msgstr "Abrir Sitio Web" - -#: www/views/tab-receive.html:27 -msgid "Open wallet" -msgstr "Abrir billetera" - -#: www/views/includes/incomingDataMenu.html:19 -msgid "Open website" -msgstr "Abrir página web" - -#: www/views/bitpayCardIntro.html:34 -msgid "Order the BitPay Card" -msgstr "Solicitar BitPay Card" - -#: www/views/join.html:102 -#: www/views/join.html:93 -#: www/views/tab-create-personal.html:67 -#: www/views/tab-create-personal.html:75 -#: www/views/tab-create-shared.html:104 -#: www/views/tab-create-shared.html:96 -#: www/views/tab-import-file.html:18 -#: www/views/tab-import-phrase.html:38 -msgid "Password" -msgstr "Contraseña" - -#: src/js/controllers/import.js:83 -msgid "Password required. Make sure to enter your password in advanced options" -msgstr "Se requiere contraseña. Asegúrate de introducirla en opciones avanzadas" - -#: www/views/join.html:33 -msgid "Paste invitation here" -msgstr "Pegar invitación aquí" - -#: www/views/tab-import-file.html:13 -msgid "Paste the backup plain text code" -msgstr "Pegar copia de seguridad en texto plano" - -#: www/views/bitpayCardIntro.html:28 -msgid "Pay 0% fees to turn bitcoin into dollars." -msgstr "Paga 0% de comisión para transformar tus bitcoin en dólares." - -#: www/views/modals/paypro.html:18 -msgid "Pay To" -msgstr "Pagar A" - -#: src/js/controllers/modals/txpDetails.js:45 -#: www/views/modals/tx-status.html:33 -msgid "Payment Accepted" -msgstr "Pago Aceptado" - -#: www/views/confirm.html:25 -msgid "Payment Expires:" -msgstr "Pago expira:" - -#: www/views/modals/txp-details.html:6 -msgid "Payment Proposal" -msgstr "Propuesta de Pago" - -#: www/views/modals/tx-status.html:21 -msgid "Payment Proposal Created" -msgstr "Propuesta de Pago Creada" - -#: www/views/tab-home.html:46 -msgid "Payment Proposals" -msgstr "Propuestas de Pago" - -#: src/js/services/payproService.js:32 -msgid "Payment Protocol Invalid" -msgstr "Protocolo de Pago Inválido" - -#: src/js/services/payproService.js:18 -msgid "Payment Protocol not supported on Chrome App" -msgstr "El protocolo de pago no está soportado en Chrome" - -#: www/views/includes/walletActivity.html:20 -msgid "Payment Received" -msgstr "Pago recibido" - -#: www/views/modals/tx-status.html:43 -#: www/views/modals/txp-details.html:43 -msgid "Payment Rejected" -msgstr "Pago Rechazado" - -#: src/js/controllers/modals/txpDetails.js:42 -#: www/views/confirm.html:126 -#: www/views/includes/walletActivity.html:11 -#: www/views/modals/txp-details.html:42 -msgid "Payment Sent" -msgstr "Pago Enviado" - -#: www/views/modals/txp-details.html:32 -msgid "Payment accepted, but not yet broadcasted" -msgstr "Pago aceptado, pero aún no fue enviado" - -#: www/views/modals/txp-details.html:40 -msgid "Payment accepted. It will be broadcasted by Glidera. In case there is a problem, it can be deleted 6 hours after it was created." -msgstr "Pago aceptado. Se transmitirá por Glidera. En caso de que haya un problema, puedes eliminar la transacción 6 horas después de fue creada." - -#: www/views/modals/txp-details.html:109 -msgid "Payment details" -msgstr "Detalles del pago" - -#: www/views/modals/paypro.html:6 -msgid "Payment request" -msgstr "Solicitud de pago" - -#: www/views/proposals.html:4 -msgid "Pending Proposals" -msgstr "Propuestas de pago pendientes" - -#: www/views/preferencesDeleteWallet.html:13 -msgid "Permanently delete this wallet." -msgstr "Eliminar esta billetera de forma permanente." - -#: src/js/services/profileService.js:388 -msgid "Personal Wallet" -msgstr "Billetera Personal" - -#: www/views/backup.html:18 -msgid "Please carefully write down this phrase." -msgstr "Por favor, anota cuidadosamente esta frase." - -#: www/views/tab-scan.html:20 -msgid "Please connect a camera to get started." -msgstr "Por favor, conecta una cámara para empezar." - -#: src/js/controllers/import.js:260 -msgid "Please enter the recovery phrase" -msgstr "Por favor ingresa la frase de recuperación" - -#: src/js/controllers/create.js:168 -#: src/js/controllers/join.js:135 -msgid "Please enter the wallet recovery phrase" -msgstr "Por favor ingresa la frase de recuperación de la billetera" - -#: www/views/modals/pin.html:9 -msgid "Please enter your PIN" -msgstr "Ingresá tu PIN" - -#: www/views/backup.html:46 -msgid "Please tap each word in the correct order." -msgstr "Escoje las palabras en el orden correcto." - -#: src/js/services/bwcError.js:101 -msgid "Please upgrade Copay to perform this action" -msgstr "Por favor actualiza Copay para realizar esta acción" - -#: src/js/controllers/import.js:222 -msgid "Please, select your backup file" -msgstr "Por favor, selecciona el archivo de copia de seguridad" - -#: www/views/bitpayCard.html:81 -msgid "Pre-Auth Holds" -msgstr "Pre-Auth Holds" - -#: www/views/tab-settings.html:40 -msgid "Preferences" -msgstr "Preferencias" - -#: src/js/services/onGoingProcess.js:38 -msgid "Preparing addresses..." -msgstr "Preparando direcciones..." - -#: src/js/controllers/export.js:198 -msgid "Preparing backup..." -msgstr "Preparando copia de seguridad..." - -#: src/js/routes.js:1188 -msgid "Press again to exit" -msgstr "Presione nuevamente para salir" - -#: src/js/services/feeService.js:11 -msgid "Priority" -msgstr "Prioritario" - -#: www/views/includes/incomingDataMenu.html:80 -msgid "Private Key" -msgstr "Clave privada" - -#: src/js/controllers/paperWallet.js:137 -msgid "Private key encrypted. Enter password" -msgstr "La clave privada está encriptada. Escriba la contraseña" - -#: src/js/services/bwcError.js:35 -msgid "Private key is encrypted, cannot sign" -msgstr "La clave privada está encriptada, no puedes firmar" - -#: www/views/includes/walletActivity.html:51 -msgid "Proposal Accepted" -msgstr "Propuesta Aceptada" - -#: src/js/controllers/modals/txpDetails.js:55 -#: src/js/controllers/tx-details.js:61 -#: www/views/confirm.html:127 -msgid "Proposal Created" -msgstr "Propuesta Creada" - -#: www/views/includes/walletActivity.html:27 -msgid "Proposal Deleted" -msgstr "Propuesta Eliminada" - -#: www/views/includes/walletActivity.html:35 -msgid "Proposal Rejected" -msgstr "Propuesta Rechazada" - -#: www/views/walletDetails.html:178 -msgid "Proposals" -msgstr "Propuestas" - -#: src/js/controllers/buyAmazon.js:281 -msgid "Purchase Amount is limited to {{limitPerDay}} {{currency}} per day" -msgstr "El monto de la compra esta limitada a {{limitPerDay}} {{currency}} por día" - -#: www/views/onboarding/notifications.html:3 -msgid "Push Notifications" -msgstr "Notificaciones Push" - -#: www/views/preferencesNotifications.html:17 -msgid "Push notifications for {{appName}} are currently disabled. Enable them in the Settings app." -msgstr "Notificaciones push para {{appName}} están deshabilitadas. Habilitarla en la configuración de la aplicación." - -#: www/views/export.html:17 -msgid "QR Code" -msgstr "Código QR" - -#: www/views/onboarding/disclaimer.html:13 -msgid "Quick review!" -msgstr "¡Revisión rápida!" - -#: src/js/controllers/create.js:79 -#: src/js/controllers/join.js:65 -msgid "Random" -msgstr "Al azar" - -#: www/views/feedback/rateApp.html:14 -msgid "Rate on the app store" -msgstr "Califica en la app store" - -#: www/views/addresses.html:52 -msgid "Read less" -msgstr "Mostrar menos" - -#: www/views/addresses.html:51 -msgid "Read more" -msgstr "Leer más" - -#: www/views/tab-receive.html:3 -#: www/views/tabs.html:7 -msgid "Receive" -msgstr "Recibir" - -#: www/views/customAmount.html:46 -msgid "Receive in" -msgstr "Recibir en" - -#: www/views/includes/walletHistory.html:24 -#: www/views/tx-details.html:18 -msgid "Received" -msgstr "Recibido" - -#: src/js/controllers/tx-details.js:113 -msgid "Received Funds" -msgstr "Fondos recibidos" - -#: www/views/includes/walletHistory.html:57 -#: www/views/tx-details.html:24 -msgid "Receiving" -msgstr "Recibiendo" - -#: www/views/bitpayCard.html:60 -#: www/views/includes/walletHistory.html:3 -msgid "Recent" -msgstr "Recientes" - -#: www/views/advancedSettings.html:20 -msgid "Recent Transaction Card" -msgstr "Tarjeta con transacciones recientes" - -#: www/views/activity.html:4 -#: www/views/tab-home.html:58 -msgid "Recent Transactions" -msgstr "Transacciones Recientes" - -#: www/views/amount.html:18 -#: www/views/tab-send.html:9 -msgid "Recipient" -msgstr "Destinatario" - -#: www/views/modals/txp-details.html:62 -msgid "Recipients" -msgstr "Destinatarios" - -#: www/views/import.html:12 -msgid "Recovery phrase" -msgstr "Frase de Recuperación" - -#: www/views/walletDetails.html:117 -#: www/views/walletDetails.html:36 -msgid "Recreate" -msgstr "Recrear" - -#: src/js/services/onGoingProcess.js:26 -msgid "Recreating Wallet..." -msgstr "Recreando billetera..." - -#: src/js/controllers/modals/txpDetails.js:57 -#: src/js/controllers/tx-details.js:63 -msgid "Rejected" -msgstr "Rechazado" - -#: src/js/services/onGoingProcess.js:27 -msgid "Rejecting payment proposal" -msgstr "Rechazando propuesta de pago" - -#: www/views/preferencesAbout.html:9 -msgid "Release information" -msgstr "Información de la versión" - -#: www/views/addressbook.view.html:36 -msgid "Remove" -msgstr "Remover" - -#: src/js/controllers/preferencesBitpayServices.js:7 -msgid "Remove BitPay Account?" -msgstr "¿Eliminar Cuenta de BitPay?" - -#: src/js/controllers/preferencesBitpayServices.js:19 -msgid "Remove BitPay Card?" -msgstr "¿Eliminar BitPay Card?" - -#: src/js/controllers/preferencesBitpayServices.js:8 -msgid "Removing your BitPay account will remove all associated BitPay account data from this device. Are you sure you would like to remove your BitPay Account ({{email}}) from this device?" -msgstr "Al eliminar una cuenta de BitPay se eliminarán todos los datos asociados de este dispositivo. ¿Desea realmente eliminar la cuenta de BitPay ({{email}}) del dispositivo?" - -#: www/views/join.html:113 -#: www/views/join.html:121 -#: www/views/tab-create-personal.html:84 -#: www/views/tab-create-personal.html:92 -#: www/views/tab-create-shared.html:113 -#: www/views/tab-create-shared.html:121 -#: www/views/tab-export-file.html:17 -msgid "Repeat password" -msgstr "Escribe nuevamente la contraseña" - -#: www/views/tab-export-file.html:16 -msgid "Repeat the password" -msgstr "Repetir la contraseña" - -#: www/views/preferences.html:55 -msgid "Request Fingerprint" -msgstr "Solicitar Huella Digital" - -#: www/views/tab-receive.html:45 -msgid "Request Specific amount" -msgstr "Solicitar importe Especifico" - -#: www/views/preferences.html:42 -msgid "Request Spending Password" -msgstr "Solicitar contraseña para pagos" - -#: www/views/tab-create-shared.html:42 -msgid "Required number of signatures" -msgstr "Número requerido de firmas" - -#: www/views/onboarding/welcome.html:9 -msgid "Restore from backup" -msgstr "Restaurar desde copia de seguridad" - -#: src/js/services/onGoingProcess.js:29 -msgid "Retrieving inputs information" -msgstr "Recuperando información de las entradas" - -#: src/js/controllers/onboarding/tour.js:56 -msgid "Retry" -msgstr "Vuelva a intentarlo" - -#: www/views/tab-scan.html:23 -msgid "Retry Camera" -msgstr "Reintentar" - -#: www/views/addressbook.add.html:56 -#: www/views/includes/note.html:9 -#: www/views/preferencesAlias.html:21 -#: www/views/preferencesBwsUrl.html:25 -#: www/views/preferencesNotifications.html:46 -msgid "Save" -msgstr "Guardar" - -#: www/views/tab-scan.html:3 -#: www/views/tabs.html:11 -msgid "Scan" -msgstr "Escanear" - -#: www/views/tab-scan.html:15 -msgid "Scan QR Codes" -msgstr "Escanear Código QR" - -#: www/views/addresses.html:31 -msgid "Scan addresses for funds" -msgstr "Busca direcciones con fondos" - -#: www/views/modals/fingerprintCheck.html:11 -msgid "Scan again" -msgstr "Escanear de nuevo" - -#: src/js/services/fingerprintService.js:56 -msgid "Scan your fingerprint please" -msgstr "Por favor ingrese su huella digital" - -#: src/js/services/onGoingProcess.js:30 -msgid "Scanning Wallet funds..." -msgstr "Buscando fondos en la billetera..." - -#: www/views/includes/screenshotWarningModal.html:7 -msgid "Screenshots are not secure" -msgstr "Las capturas de pantallas no son seguras" - -#: www/views/modals/search.html:6 -msgid "Search Transactions" -msgstr "Buscar transacciones" - -#: www/views/tab-send.html:13 -msgid "Search or enter bitcoin address" -msgstr "Buscar o introducir dirección bitcoin" - -#: www/views/modals/search.html:16 -msgid "Search transactions" -msgstr "Buscar transacciones" - -#: www/views/preferencesAltCurrency.html:14 -msgid "Search your currency" -msgstr "Busca tu moneda" - -#: www/views/preferences.html:30 -msgid "Security" -msgstr "Seguridad" - -#: www/views/tab-import-file.html:7 -msgid "Select a backup file" -msgstr "Seleccionar el archivo de copia de seguridad" - -#: src/js/controllers/tab-receive.js:133 -msgid "Select a wallet" -msgstr "Seleccionar una billetera" - -#: www/views/modals/paypro.html:38 -msgid "Self-signed Certificate" -msgstr "Certificado autofirmado" - -#: src/js/services/onGoingProcess.js:41 -msgid "Selling Bitcoin..." -msgstr "Vendiendo Bitcoins..." - -#: www/views/feedback/send.html:13 -#: www/views/feedback/send.html:43 -#: www/views/tab-send.html:3 -#: www/views/tabs.html:15 -msgid "Send" -msgstr "Enviar" - -#: www/views/feedback/send.html:3 -#: www/views/tab-settings.html:29 -msgid "Send Feedback" -msgstr "Enviar Sugerencia" - -#: www/views/addressbook.view.html:31 -msgid "Send Money" -msgstr "Enviar dinero" - -#: www/views/allAddresses.html:19 -msgid "Send addresses by email" -msgstr "Enviar las direcciones por email" - -#: www/views/preferencesLogs.html:13 -#: www/views/tab-export-file.html:82 -msgid "Send by email" -msgstr "Enviar por correo electrónico" - -#: src/js/controllers/confirm.js:151 -msgid "Send from" -msgstr "Enviar desde" - -#: www/views/includes/itemSelector.html:8 -msgid "Send max amount" -msgstr "Enviar la máxima cantidad" - -#: www/views/includes/incomingDataMenu.html:46 -msgid "Send payment to this address" -msgstr "Enviar pago a esta dirección" - -#: www/views/feedback/rateApp.html:17 -msgid "Send us feedback instead" -msgstr "En su lugar, enviar comentario" - -#: www/views/confirm.html:15 -#: www/views/includes/txp.html:12 -#: www/views/modals/txp-details.html:19 -#: www/views/tx-details.html:23 -msgid "Sending" -msgstr "Enviando" - -#: src/js/services/onGoingProcess.js:39 -msgid "Sending 2FA code..." -msgstr "Enviando código 2FA..." - -#: src/js/services/onGoingProcess.js:36 -msgid "Sending feedback..." -msgstr "Enviando comentario..." - -#: www/views/confirm.html:16 -msgid "Sending maximum amount" -msgstr "Enviando cantidad máxima" - -#: src/js/services/onGoingProcess.js:31 -msgid "Sending transaction" -msgstr "Enviando transacción" - -#: src/js/controllers/confirm.js:490 -msgid "Sending {{amountStr}} from your {{name}} wallet" -msgstr "Enviando {{amountStr}} desde tu billetera {{name}}" - -#: www/views/includes/walletHistory.html:42 -#: www/views/modals/tx-status.html:9 -#: www/views/topup.html:100 -#: www/views/tx-details.html:17 -msgid "Sent" -msgstr "Enviado" - -#: src/js/controllers/tx-details.js:112 -msgid "Sent Funds" -msgstr "Fondos enviados" - -#: src/js/services/bwcError.js:38 -msgid "Server response could not be verified" -msgstr "La respuesta del servidor no se ha podido verificar" - -#: src/js/controllers/buyAmazon.js:96 -msgid "Service not available" -msgstr "Servicio no disponible" - -#: www/views/includes/homeIntegrations.html:3 -msgid "Services" -msgstr "Servicios" - -#: www/views/preferencesLogs.html:3 -msgid "Session Log" -msgstr "Registro de sesión" - -#: www/views/preferencesAbout.html:35 -msgid "Session log" -msgstr "Registro de sesión" - -#: www/views/tab-export-file.html:10 -msgid "Set up a password" -msgstr "Configurar una contraseña" - -#: src/js/controllers/preferencesFee.js:84 -msgid "Set your own fee in satoshis/byte" -msgstr "Establecer su propia comisión en satoshis/byte" - -#: www/views/tab-settings.html:3 -#: www/views/tabs.html:19 -msgid "Settings" -msgstr "Configuración" - -#: www/views/feedback/complete.html:17 -#: www/views/feedback/complete.html:26 -msgid "Share the love by inviting your friends." -msgstr "Comparte la pasión invitando a tus amigos." - -#: www/views/copayers.html:20 -msgid "Share this invitation with your copayers" -msgstr "Compartir esta invitación con sus copayers" - -#: src/js/controllers/feedback/complete.js:5 -#: www/views/tab-settings.html:36 -msgid "Share {{appName}}" -msgstr "Compartir {{appName}}" - -#: www/views/tab-import-hardware.html:24 -msgid "Shared Wallet" -msgstr "Billetera Compartida" - -#: www/views/preferencesExternal.html:34 -msgid "Show Recovery Phrase" -msgstr "Mostrar frase de recuperación del monedero" - -#: www/views/tab-receive.html:34 -msgid "Show address" -msgstr "Mostrar dirección" - -#: www/views/join.html:45 -#: www/views/tab-create-personal.html:25 -#: www/views/tab-create-shared.html:54 -#: www/views/tab-export-file.html:24 -#: www/views/tab-import-file.html:27 -#: www/views/tab-import-hardware.html:30 -#: www/views/tab-import-phrase.html:32 -msgid "Show advanced options" -msgstr "Mostrar opciones avanzadas" - -#: www/views/tab-send.html:37 -msgid "Show bitcoin address" -msgstr "Mostrar dirección bitcoin" - -#: www/views/tab-send.html:59 -msgid "Show more" -msgstr "Ver más" - -#: src/js/services/bwcError.js:104 -msgid "Signatures rejected by server" -msgstr "Firmas rechazadas por el servidor" - -#: src/js/services/onGoingProcess.js:32 -msgid "Signing transaction" -msgstr "Firmando transacción" - -#: 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 "Ya que sólo tu controlas tu dinero, deberás guardar la copia de seguridad en caso de que esta aplicación sea eliminada." - -#: www/views/tab-create-personal.html:120 -#: www/views/tab-create-shared.html:149 -msgid "Single Address Wallet" -msgstr "Billetera de una sola dirección" - -#: www/views/onboarding/collectEmail.html:40 -#: www/views/onboarding/tour.html:11 -msgid "Skip" -msgstr "Omitir" - -#: src/js/controllers/modals/txpDetails.js:34 -msgid "Slide" -msgstr "Desliza" - -#: www/views/buyAmazon.html:96 -msgid "Slide to buy" -msgstr "Deslizar para comprar" - -#: src/js/controllers/create.js:83 -#: src/js/controllers/join.js:68 -msgid "Specify Recovery Phrase..." -msgstr "Especificar la frase de recuperación..." - -#: src/js/services/bwcError.js:92 -msgid "Spend proposal is not accepted" -msgstr "La propuesta de gasto no se ha aceptado" - -#: src/js/services/bwcError.js:95 -msgid "Spend proposal not found" -msgstr "La propuesta de gasto no se ha encontrado" - -#: src/js/services/bwcError.js:137 -msgid "Spending Password needed" -msgstr "Se necesita la contraseña para pagos" - -#: www/views/walletDetails.html:162 -msgid "Spending this balance will need significant Bitcoin network fees" -msgstr "Gastar este balance requiere de significativas comisiones" - -#: www/views/tab-send.html:28 -msgid "Start sending bitcoin" -msgstr "Empezar a enviar bitcoin" - -#: www/views/lockSetup.html:3 -msgid "Startup Lock" -msgstr "Bloqueo inicial" - -#: www/views/topup.html:101 -msgid "Success" -msgstr "Listo" - -#: src/js/services/feeService.js:14 -msgid "Super Economy" -msgstr "Súper Económico" - -#: www/views/paperWallet.html:7 -msgid "Sweep" -msgstr "Importar" - -#: www/views/includes/incomingDataMenu.html:89 -#: www/views/paperWallet.html:3 -msgid "Sweep paper wallet" -msgstr "Importar billetera en papel" - -#: src/js/services/onGoingProcess.js:33 -msgid "Sweeping Wallet..." -msgstr "Leyendo la Billetera..." - -#: www/views/preferencesDeleteWallet.html:16 -msgid "THIS ACTION CANNOT BE REVERSED" -msgstr "ESTA ACCIÓN NO SE PUEDE REVERTIR" - -#: www/views/onboarding/welcome.html:5 -msgid "Take control of your money,
get started with bitcoin." -msgstr "Toma control de tu dinero,
comienza a utilizar bitcoin." - -#: www/views/walletDetails.html:140 -#: www/views/walletDetails.html:60 -msgid "Tap and hold to show" -msgstr "Tocar y mantener para mostrar" - -#: www/views/walletDetails.html:112 -#: www/views/walletDetails.html:31 -msgid "Tap to retry" -msgstr "Toque para reintentar" - -#: www/views/termsOfUse.html:3 -msgid "Terms Of Use" -msgstr "Términos de uso" - -#: www/views/modals/terms.html:3 -#: www/views/onboarding/disclaimer.html:29 -#: www/views/onboarding/disclaimer.html:43 -#: www/views/preferencesAbout.html:30 -msgid "Terms of Use" -msgstr "Términos de Uso" - -#: www/views/tab-create-personal.html:116 -#: www/views/tab-import-phrase.html:65 -msgid "Testnet" -msgstr "Testnet" - -#: www/views/includes/incomingDataMenu.html:61 -msgid "Text" -msgstr "Texto" - -#: src/js/controllers/feedback/send.js:27 -#: src/js/controllers/feedback/send.js:76 -#: www/views/feedback/complete.html:20 -#: www/views/feedback/rateApp.html:4 -msgid "Thank you!" -msgstr "¡Gracias!" - -#: src/js/controllers/feedback/send.js:72 -msgid "Thanks!" -msgstr "¡Gracias!" - -#: src/js/controllers/feedback/send.js:73 -msgid "That's exciting to hear. We'd love to earn that fifth star from you – how could we improve your experience?" -msgstr "Es emocionante escucharlo. Nos encantaría ganar esa quinta estrella – ¿cómo podemos mejorar tu experiencia?" - -#: src/js/services/ledger.js:152 -msgid "The Ledger Chrome application is not installed" -msgstr "La aplicación Ledger de Chrome no esta instalada" - -#: www/views/modals/wallet-balance.html:55 -msgid "The amount of bitcoin immediately spendable from this wallet." -msgstr "Total de bitcoins disponibles en esta billetera para su uso inmediato." - -#: 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 "La cantidad de bitcoins almacenados en esta billetera que se utilizan como \"inputs\" en la transacción pendiente. Esa cantidad se determina en base a los \"unspent transaction outputs\" asociados con la billetera, estos pueden que sean mayor al monto enviado en la transacción en cuestión." - -#: www/views/modals/wallet-balance.html:74 -msgid "The amount of bitcoin stored in this wallet with less than 1 blockchain confirmation." -msgstr "La cantidad de bitcoins almacenados en esta billetera que poseen menos de 1 confirmación en \"Blockchain\"." - -#: www/views/tab-import-phrase.html:5 -msgid "The derivation path" -msgstr "La ruta de derivación" - -#: www/views/onboarding/tour.html:37 -msgid "The exchange rate changes with the market." -msgstr "La cotización varía según el mercado." - -#: www/views/preferencesFee.html:12 -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 "Mientras más grande la comisión, mayor incentivo tiene el minero para agregar tu transacción a un bloque. Las comisiones están determinadas en base al tráfico y política de la red elegida." - -#: www/views/addresses.html:51 -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 "Se ha alcanzado el número máximo de direcciones consecutivas sin utilizar (20). Cuando una de sus direcciones reciba un pago, una nueva dirección se generará y se mostrará en la pestaña 'Recibir'." - -#: src/js/controllers/onboarding/terms.js:21 -msgid "The official English Terms of Service are available on the BitPay website." -msgstr "Los términos y condiciones oficiales en inglés se encuentran disponibles en la web de BitPay." - -#: www/views/tab-import-phrase.html:4 -msgid "The password of the recovery phrase (if set)" -msgstr "La contraseña de la frase de recuperación (si existe)" - -#: src/js/services/walletService.js:1140 -msgid "The payment was created but could not be completed. Please try again from home screen" -msgstr "El pago fue creado pero no se pudo completar. Por favor intenta nuevamente desde la pantalla de inicio" - -#: www/views/modals/txp-details.html:26 -msgid "The payment was removed by creator" -msgstr "El pago fue eliminado por el creador" - -#: www/views/join.html:88 -#: www/views/tab-create-personal.html:61 -#: www/views/tab-create-shared.html:90 -#: www/views/tab-import-phrase.html:40 -msgid "The recovery phrase could require a password to be imported" -msgstr "La frase de recuperación podría requerir una contraseña para ser importada" - -#: src/js/services/bwcError.js:56 -msgid "The request could not be understood by the server" -msgstr "La solicitud no pudo ser comprendida por el servidor" - -#: www/views/addresses.html:52 -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 "El proceso generación de nuevas direcciones se detendrá cuando se generen 20 direcciones de manera consecutiva. Luego deberás recibir un pago en una de las direcciones sin uso para obtener una nueva." - -#: src/js/services/bwcError.js:98 -msgid "The spend proposal is not pending" -msgstr "La propuesta de gasto no esta pendiente" - -#: www/views/modals/wallet-balance.html:36 -msgid "The total amount of bitcoin stored in this wallet." -msgstr "El total de bitcoins almacenados en esta billetera." - -#: www/views/preferencesHistory.html:27 -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 "El historial de transacciones y cada nueva transacción entrantes se almacenan en caché en la aplicación. Esta característica limpia y sincroniza otra vez desde el servidor" - -#: www/views/tab-import-phrase.html:6 -msgid "The wallet service URL" -msgstr "URL de Wallet Service" - -#: src/js/controllers/tab-home.js:38 -msgid "There is a new version of {{appName}} available" -msgstr "Hay una nueva versión de {{appName}} disponible" - -#: src/js/controllers/import.js:213 -#: src/js/controllers/import.js:237 -#: src/js/controllers/import.js:317 -msgid "There is an error in the form" -msgstr "Hay un error en el formulario" - -#: src/js/controllers/feedback/send.js:61 -#: src/js/controllers/feedback/send.js:65 -msgid "There's obviously something we're doing wrong." -msgstr "Obviamente hay algo que estamos haciendo mal." - -#: src/js/controllers/feedback/rateCard.js:38 -msgid "This app is fantastic!" -msgstr "¡Esta aplicación es fantástica!" - -#: www/views/onboarding/tour.html:47 -msgid "This app stores your bitcoin with cutting-edge security." -msgstr "Esta aplicación almacena tus bitcoins con seguridad avanzada." - -#: src/js/controllers/confirm.js:468 -msgid "This bitcoin payment request has expired." -msgstr "Esta solicitud de pago ha caducado." - -#: www/views/join.html:130 -#: www/views/tab-create-personal.html:101 -#: www/views/tab-create-shared.html:130 -msgid "This password cannot be recovered. If the password is lost, there is no way you could recover your funds." -msgstr "Esta contraseña no se puede recuperar. Si la pierdes, no hay manera de que puedas recuperar los fondos." - -#: www/views/backup.html:24 -msgid "This recovery phrase was created with a password. To recover this wallet both the recovery phrase and password are needed." -msgstr "Esta frase de recuperación fue creada con una contraseña. Para recuperar esta billetera, la frase de recuperación y la contraseña son necesarios." - -#: www/views/tx-details.html:93 -msgid "This transaction amount is too small compared to current Bitcoin network fees. Spending these funds will need a Bitcoin network fee cost comparable to the funds itself." -msgstr "Este monto en la transacción es demasiado bajo comparado con las comisiones de la red Bitcoin. Para gastar estos fondos se requiere disponer de un monto superior a la comisión requerida por la red Bitcoin." - -#: www/views/tx-details.html:89 -msgid "This transaction could take a long time to confirm or could be dropped due to the low fees set by the sender" -msgstr "Esta transacción podría tardar mucho tiempo en confirmar o podría caer debido a la baja comisión establecida por el remitente" - -#: www/views/walletDetails.html:116 -#: 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 "Esta billetera no está registrada en el servidor de Bitcore Wallet Service (BWS). Debes re-crearla con la información local disponible." - -#: www/views/modals/txp-details.html:138 -#: www/views/tx-details.html:121 -msgid "Timeline" -msgstr "Línea de tiempo" - -#: www/views/confirm.html:31 -#: www/views/includes/output.html:2 -#: www/views/modals/txp-details.html:111 -#: www/views/modals/txp-details.html:53 -#: www/views/tx-details.html:41 -#: www/views/tx-details.html:53 -msgid "To" -msgstr "Para" - -#: www/views/tab-send.html:32 -msgid "To get started, buy bitcoin or share your address. You can receive bitcoin from any wallet or service." -msgstr "Para empezar, compra bitcoin o comparte tu dirección. Puedes recibir bitcoin desde cualquier billetera o servicio." - -#: www/views/tab-send.html:33 -msgid "To get started, you'll need to create a bitcoin wallet and get some bitcoin." -msgstr "Para empezar, necesitarás crear una billetera y obtener bitcoins." - -#: src/js/services/bitpayAccountService.js:73 -msgid "To {{reason}} you must first add your BitPay account - {{email}}" -msgstr "Para {{reason}} primero debes agregar tu cuenta de BitPay - {{email}}" - -#: src/js/services/onGoingProcess.js:48 -msgid "Top up in progress..." -msgstr "Recarda en progreso..." - -#: src/js/controllers/topup.js:205 -msgid "Top up {{amountStr}} to debit card ({{cardLastNumber}})" -msgstr "Recargar {{amountStr}} a la tarjeta de débito ({{cardLastNumber}})" - -#: www/views/buyAmazon.html:61 -#: www/views/modals/wallet-balance.html:23 -#: www/views/topup.html:70 -msgid "Total" -msgstr "Total" - -#: www/views/walletDetails.html:185 -msgid "Total Locked Balance" -msgstr "Balance Total Bloqueado" - -#: www/views/tab-create-shared.html:33 -msgid "Total number of copayers" -msgstr "Número total de copayers" - -#: www/views/addresses.html:81 -msgid "Total wallet inputs" -msgstr "Total de entradas de la billetera" - -#: src/js/services/fingerprintService.js:63 -#: src/js/services/fingerprintService.js:68 -msgid "Touch ID Failed" -msgstr "Falló Touch ID" - -#: src/js/controllers/tx-details.js:11 -msgid "Transaction" -msgstr "Transacción" - -#: www/views/confirm.html:128 -msgid "Transaction Created" -msgstr "Transacción creada" - -#: www/views/preferencesAdvanced.html:29 -#: www/views/preferencesHistory.html:3 -msgid "Transaction History" -msgstr "Historial de Transacciones" - -#: src/js/services/bwcError.js:83 -msgid "Transaction already broadcasted" -msgstr "La transacción ya fue enviada" - -#: src/js/controllers/buyAmazon.js:306 -#: src/js/controllers/topup.js:279 -msgid "Transaction has not been created" -msgstr "La transacción no ha sido creada" - -#: www/views/topup.html:104 -msgid "Transaction initiated" -msgstr "Transacción iniciada" - -#: src/js/controllers/tx-details.js:102 -msgid "Transaction not available at this time" -msgstr "La transacción no esta disponible en este momento" - -#: src/js/controllers/activity.js:45 -#: src/js/controllers/tab-home.js:174 -msgid "Transaction not found" -msgstr "Transacción no encontrada" - -#: www/views/modals/chooseFeeLevel.html:54 -msgid "Transactions without fee are not supported." -msgstr "Las transacciones sin comisión no están soportadas." - -#: src/js/controllers/paperWallet.js:110 -msgid "Transfer to" -msgstr "Transferir a" - -#: www/views/tab-send.html:67 -msgid "Transfer to Wallet" -msgstr "Transferir a billetera" - -#: www/views/modals/pin.html:13 -msgid "Try again in {{expires}}" -msgstr "Intenta de nuevo en {{expires}}" - -#: www/views/bitpayCardIntro.html:18 -msgid "Turn bitcoin into dollars, swipe anywhere Visa® is accepted." -msgstr "Convierta Bitcoins en Dólares, use Visa®." - -#: www/views/tab-import-phrase.html:17 -msgid "Type the Recovery Phrase (usually 12 words)" -msgstr "Escribe la frase de recuperación (normalmente 12 palabras)" - -#: src/js/controllers/backup.js:75 -msgid "Uh oh..." -msgstr "Ouch..." - -#: www/views/tx-details.html:100 -msgid "Unconfirmed" -msgstr "Sin confirmar" - -#: www/views/preferencesUnit.html:4 -msgid "Unit" -msgstr "Unidad" - -#: www/views/walletDetails.html:179 -msgid "Unsent transactions" -msgstr "Transacciones no enviadas" - -#: www/views/addresses.html:39 -msgid "Unused Addresses" -msgstr "Direcciones no utilizadas" - -#: www/views/addresses.html:50 -msgid "Unused Addresses Limit" -msgstr "Limite de direcciones sin uso" - -#: src/js/controllers/tab-home.js:146 -msgid "Update Available" -msgstr "Actualización Disponible" - -#: www/views/proposals.html:14 -msgid "Updating pending proposals. Please stand by" -msgstr "Actualizando propuestas de pago pendientes. Por favor, espera" - -#: www/views/walletDetails.html:211 -msgid "Updating transaction history. Please stand by." -msgstr "Actualizando el historial de transacciones. Por favor aguarda un momento." - -#: www/views/activity.html:14 -msgid "Updating... Please stand by" -msgstr "Actualizando... Por favor, espera" - -#: src/js/services/feeService.js:10 -msgid "Urgent" -msgstr "Urgente" - -#: www/views/advancedSettings.html:11 -msgid "Use Unconfirmed Funds" -msgstr "Utilizar los fondos sin confirmar" - -#: src/js/services/onGoingProcess.js:34 -msgid "Validating recovery phrase..." -msgstr "Validando la frase de recuperación..." - -#: www/views/modals/fingerprintCheck.html:4 -msgid "Verify your identity" -msgstr "Verificar tu identidad" - -#: www/views/preferencesAbout.html:14 -#: www/views/preferencesExternal.html:25 -msgid "Version" -msgstr "Versión" - -#: www/views/tab-export-file.html:69 -msgid "View" -msgstr "Ver" - -#: www/views/addresses.html:34 -msgid "View All Addresses" -msgstr "Ver todas las direcciones" - -#: src/js/controllers/onboarding/terms.js:20 -msgid "View Terms of Service" -msgstr "Ver Términos de Uso" - -#: src/js/controllers/bitpayCard.js:122 -#: src/js/controllers/tx-details.js:174 -msgid "View Transaction on Insight" -msgstr "Ver Transacción en Insight" - -#: src/js/controllers/tab-home.js:148 -msgid "View Update" -msgstr "Ver Actualización" - -#: www/views/tx-details.html:147 -msgid "View on blockchain" -msgstr "Ver en blockchain" - -#: www/views/walletDetails.html:171 -msgid "WARNING: Key derivation is not working on this device/wallet. Actions cannot be performed on this wallet." -msgstr "ADVERTENCIA: Derivación de la clave no funciona en este dispositivo/billetera. Acciones no pueden realizarse en esta billetera." - -#: www/views/tab-export-file.html:45 -msgid "WARNING: Not including the private key allows to check the wallet balance, transaction history, and create spend proposals from the export. However, does not allow to approve (sign) proposals, so funds will not be accessible from the export." -msgstr "ADVERTENCIA: No incluir la clave privada permite verificar el saldo de la billetera, historial de transacciones y crear propuestas de gastos. Sin embargo, no permite aprobar propuestas (firmar), así que los fondos no serán accesibles al exportar." - -#: www/views/tab-export-file.html:36 -msgid "WARNING: The private key of this wallet is not available. The export allows to check the wallet balance, transaction history, and create spend proposals from the export. However, does not allow to approve (sign) proposals, so funds will not be accessible from the export." -msgstr "ADVERTENCIA: La clave privada de esta billetera no está disponible. La exportación permite verificar el saldo de la billetera, historial de transacciones y crear propuestas de gastos. Sin embargo, no permite aprobar propuestas (firmar), así que los fondos no serán accesibles al exportar." - -#: www/views/modals/paypro.html:42 -msgid "WARNING: UNTRUSTED CERTIFICATE" -msgstr "ADVERTENCIA: EL CERTIFICADO NO ES DE CONFIANZA" - -#: src/js/services/onGoingProcess.js:15 -msgid "Waiting for Ledger..." -msgstr "Esperando a Ledger..." - -#: src/js/services/onGoingProcess.js:16 -msgid "Waiting for Trezor..." -msgstr "Esperando a Trezor..." - -#: www/views/copayers.html:48 -msgid "Waiting for copayers" -msgstr "Esperando a los demás copayers" - -#: www/views/copayers.html:53 -msgid "Waiting..." -msgstr "Esperando..." - -#: www/views/addresses.html:3 -#: www/views/preferencesAdvanced.html:17 -msgid "Wallet Addresses" -msgstr "Direcciones de la billetera" - -#: www/views/preferencesColor.html:4 -msgid "Wallet Color" -msgstr "Color de la billetera" - -#: www/views/preferencesInformation.html:23 -msgid "Wallet Configuration (m-n)" -msgstr "Configuración de la billetera (m-n)" - -#: www/views/onboarding/collectEmail.html:5 -msgid "Wallet Created" -msgstr "Billetera Creada" - -#: www/views/preferencesInformation.html:17 -msgid "Wallet Id" -msgstr "Id de la Billetera" - -#: www/views/preferencesAdvanced.html:13 -#: www/views/preferencesInformation.html:3 -msgid "Wallet Information" -msgstr "Información de la Billetera" - -#: www/views/addresses.html:76 -msgid "Wallet Inputs" -msgstr "Entradas de la billetera" - -#: www/views/join.html:26 -msgid "Wallet Invitation" -msgstr "Invitación para unirse a la billetera" - -#: www/views/join.html:57 -#: www/views/tab-create-personal.html:36 -#: www/views/tab-create-shared.html:65 -msgid "Wallet Key" -msgstr "Llave de la billetera" - -#: www/views/preferencesAlias.html:4 -msgid "Wallet Name" -msgstr "Nombre de la billetera" - -#: www/views/preferencesInformation.html:11 -msgid "Wallet Name (at creation)" -msgstr "Nombre de la billetera (al crear)" - -#: www/views/preferencesInformation.html:29 -msgid "Wallet Network" -msgstr "Red de la billetera" - -#: www/views/join.html:74 -#: www/views/tab-create-personal.html:48 -#: www/views/tab-create-shared.html:77 -msgid "Wallet Recovery Phrase" -msgstr "Frase de recuperación de la billetera" - -#: src/js/services/bwcError.js:26 -msgid "Wallet Recovery Phrase is invalid" -msgstr "La frase de recuperación no es válida" - -#: www/views/preferencesAdvanced.html:25 -#: www/views/tab-import-phrase.html:70 -msgid "Wallet Service URL" -msgstr "Wallet Service URL" - -#: www/views/preferences.html:4 -msgid "Wallet Settings" -msgstr "Preferencias de la billetera" - -#: www/views/tab-import-hardware.html:11 -#: www/views/tab-import-phrase.html:58 -msgid "Wallet Type" -msgstr "Tipo de billetera" - -#: src/js/services/bwcError.js:59 -msgid "Wallet already exists" -msgstr "La billetera ya existe" - -#: src/js/services/profileService.js:498 -msgid "Wallet already in Copay" -msgstr "La billetera ya existe en Copay" - -#: www/views/includes/walletActivity.html:6 -msgid "Wallet created" -msgstr "Billetera Creada" - -#: www/views/copayers.html:58 -msgid "Wallet incomplete and broken" -msgstr "Billetera incompleta y rota" - -#: src/js/services/bwcError.js:65 -msgid "Wallet is full" -msgstr "La billetera está completa" - -#: src/js/services/bwcError.js:125 -msgid "Wallet is locked" -msgstr "Billetera bloqueada" - -#: src/js/services/bwcError.js:128 -msgid "Wallet is not complete" -msgstr "La billetera no esta completa" - -#: www/views/tab-create-personal.html:12 -#: www/views/tab-create-shared.html:12 -msgid "Wallet name" -msgstr "Nombre de la billetera" - -#: src/js/services/bwcError.js:131 -msgid "Wallet needs backup" -msgstr "La billetera requiere copia de seguridad" - -#: www/views/tab-receive.html:59 -#: www/views/walletDetails.html:157 -msgid "Wallet not backed up" -msgstr "Billetera sin copia de seguridad" - -#: src/js/services/bwcError.js:68 -msgid "Wallet not found" -msgstr "Billetera no encontrada" - -#: src/js/controllers/tab-home.js:220 -msgid "Wallet not registered" -msgstr "Billetera no registrada" - -#: src/js/services/bwcError.js:29 -msgid "Wallet not registered at the wallet service. Recreate it from \"Create Wallet\" using \"Advanced Options\" to set your recovery phrase" -msgstr "La billetera no esta registrado en Wallet Service. Para volver a crear, utilice \"Crear billetera\", \"Opciones avanzadas\" e ingrese la frase de recuperación" - -#: www/views/backup.html:11 -msgid "Wallet recovery phrase not available." -msgstr "Frase de recuperación de la billetera no disponible." - -#: src/js/services/bwcError.js:50 -msgid "Wallet service not found" -msgstr "Wallet Service no encontrado" - -#: www/views/tab-home.html:69 -msgid "Wallets" -msgstr "Billeteras" - -#: www/views/tab-settings.html:102 -msgid "Wallets & Integrations" -msgstr "Billeteras & Integraciones" - -#: src/js/controllers/addressbookView.js:23 -#: src/js/controllers/modals/txpDetails.js:147 -#: src/js/controllers/modals/txpDetails.js:164 -#: src/js/controllers/preferencesDelete.js:25 -#: src/js/controllers/preferencesExternal.js:14 -#: www/views/preferencesDeleteWallet.html:11 -msgid "Warning!" -msgstr "¡Advertencia!" - -#: www/views/modals/txp-details.html:47 -msgid "Warning: this transaction has unconfirmed inputs" -msgstr "Advertencia: esta operación tiene entradas sin confirmar" - -#: src/js/controllers/onboarding/backupRequest.js:17 -msgid "Watch out!" -msgstr "¡Cuidado!" - -#: src/js/controllers/feedback/send.js:69 -msgid "We'd love to do better." -msgstr "Nos encantaría hacerlo mejor." - -#: www/views/backup.html:28 -msgid "We'll confirm on the next screen." -msgstr "Se confirmará en la siguiente pantalla." - -#: src/js/controllers/feedback/send.js:77 -msgid "We're always looking for ways to improve {{appName}}." -msgstr "Siempre estamos buscando maneras de mejorar {{appName}}." - -#: src/js/controllers/feedback/send.js:83 -msgid "We're always looking for ways to improve {{appName}}. How could we improve your experience?" -msgstr "Siempre estamos buscando maneras de mejorar {{appName}}. ¿Cómo podríamos mejorar tu experiencia?" - -#: www/views/includes/incomingDataMenu.html:6 -msgid "Website" -msgstr "Página web" - -#: www/views/preferencesLanguage.html:16 -msgid "We’re always looking for translation contributions! You can make corrections or help to make this app available in your native language by joining our community on Crowdin." -msgstr "¡Siempre estamos buscando aportes de traducción! Puedes ayudar a que esta aplicación esté disponible en tu idioma nativo uniéndote a nuestra comunidad en Crowdin." - -#: www/views/preferencesAlias.html:11 -msgid "What do you call this wallet?" -msgstr "¿Como desea llamar a esta billetera?" - -#: www/views/preferencesAlias.html:12 -msgid "When this wallet was created, it was called “{{walletName}}”. You can change the name displayed on this device below." -msgstr "Cuando fue creada esta billetera, se llamaba “{{walletName}}”. Aquí puede cambiar el nombre que se mostrara en este dispositivo." - -#: www/views/onboarding/collectEmail.html:10 -msgid "Where would you like to receive email notifications about payments?" -msgstr "¿A donde le gustaría recibir notificaciones por email sobre sus transacciones?" - -#: www/views/addresses.html:19 -msgid "Why?" -msgstr "¿Por qué?" - -#: www/views/feedback/rateApp.html:10 -msgid "Would you be willing to rate {{appName}} in the app store?" -msgstr "¿Estaría usted dispuesto a opinar sobre {{appName}} en la app store?" - -#: www/views/onboarding/notifications.html:4 -msgid "Would you like to receive push notifications about payments?" -msgstr "¿Quieres recibir notificaciones push sobre sus transacciones?" - -#: src/js/controllers/import.js:270 -msgid "Wrong number of recovery words:" -msgstr "Número incorrecto de palabras:" - -#: src/js/services/bwcError.js:140 -msgid "Wrong spending password" -msgstr "Contraseña para pagos incorrecta" - -#: www/views/modals/confirmation.html:7 -msgid "Yes" -msgstr "Si" - -#: src/js/controllers/onboarding/backupRequest.js:25 -msgid "Yes, skip" -msgstr "Si, omitir" - -#: src/js/controllers/onboarding/backupRequest.js:24 -msgid "You can create a backup later from your wallet settings." -msgstr "Puedes hacerlo luego desde las preferencias de la billetera." - -#: src/js/controllers/preferencesLanguage.js:12 -msgid "You can make contributions by signing up on our Crowdin community translation website. We’re looking forward to hearing from you!" -msgstr "Se pueden hacer contribuciones al registrarse en nuestro proyecto de traducciones en Crowdin. ¡Esperamos tener noticias tuyas!" - -#: www/views/tab-scan.html:16 -msgid "You can scan bitcoin addresses, payment requests, paper wallets, and more." -msgstr "Puedes escanear direcciones bitcoin, solicitudes de pago, billeteras de papel y más." - -#: 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 "Puede ver las últimas novedades y contribuir a nuestra aplicación de código abierto visitando nuestro proyecto en GitHub." - -#: www/views/onboarding/tour.html:19 -msgid "You can spend bitcoin at millions of websites and stores worldwide." -msgstr "Puedes utilizar bitcoin en millones de páginas web y tiendas en todo el mundo." - -#: www/views/backup.html:12 -msgid "You can still export it from Advanced > Export." -msgstr "Todavía puede exportar en Avanzados > Exportar." - -#: www/views/onboarding/tour.html:32 -msgid "You can trade it for other currencies like US Dollars, Euros, or Pounds." -msgstr "Puedes cambiarlo por otras monedas como Dólares, Euros o Libras." - -#: www/views/onboarding/tour.html:46 -msgid "You control your bitcoin." -msgstr "Controlas tus bitcoins." - -#: www/views/modals/chooseFeeLevel.html:63 -msgid "You should not set a fee higher than {{maxFeeRecommended}} satoshis/byte." -msgstr "No debería elegir una comisión superior a {{maxFeeRecommended}} satoshis/byte." - -#: www/views/modals/bitpay-card-confirmation.html:5 -msgid "You will need to log back for fill in your BitPay Card." -msgstr "Tendrá que iniciar sesión para completar su BitPay Card." - -#: www/views/preferencesNotifications.html:34 -msgid "You'll receive email notifications about payments sent and received from your wallets." -msgstr "Recibirás notificaciones por correo electrónico acerca de pagos enviados y recibidos de tus billeteras." - -#: www/views/bitpayCard.html:50 -msgid "Your BitPay Card is ready. Add funds to your card to start using it at stores and ATMs worldwide." -msgstr "Tu Tarjeta BitPay ya esta lista. Agrega fondos para comenzar a utilizarla en negocios y cajeros automáticos de todo el mundo." - -#: www/views/includes/confirmBackupPopup.html:6 -msgid "Your bitcoin wallet is backed up!" -msgstr "¡Su billetera bitcoin está resguardada!" - -#: www/views/tab-home.html:36 -msgid "Your bitcoin wallet is ready!" -msgstr "¡Su billetera bitcoin está lista!" - -#: www/views/modals/chooseFeeLevel.html:60 -msgid "Your fee is lower than recommended." -msgstr "Tu comisión es inferior a la recomendada." - -#: www/views/feedback/send.html:42 -msgid "Your ideas, feedback, or comments" -msgstr "Ideas, sugerencias o comentarios" - -#: www/views/tab-create-shared.html:22 -msgid "Your name" -msgstr "Nombre" - -#: www/views/join.html:16 -msgid "Your nickname" -msgstr "Sobrenombre" - -#: www/views/tab-export-file.html:11 -#: www/views/tab-import-file.html:20 -msgid "Your password" -msgstr "Contraseña" - -#: www/views/buyAmazon.html:102 -msgid "Your purchase could not be completed" -msgstr "No se pudo completar la compra" - -#: www/views/buyAmazon.html:105 -msgid "Your purchase was added to the list of pending" -msgstr "Tu compra fue agregada a la lista de pendientes" - -#: www/views/onboarding/backupRequest.html:10 -msgid "Your wallet is never saved to cloud storage or standard device backups." -msgstr "Tu billetera nunca se sube a la nube ni se resguarda automáticamente en el dispositivo." - -#: src/js/services/walletService.js:1031 -msgid "Your wallet key will be encrypted. The Spending Password cannot be recovered. Be sure to write it down." -msgstr "La clave de la billetera será cifrada. La contraseña para pagos no puede ser recuperada. Asegúrate de anotarla." - -#: www/views/includes/walletSelector.html:23 -#: www/views/paperWallet.html:35 -#: www/views/tab-home.html:96 -#: www/views/tab-receive.html:74 -#: www/views/walletDetails.html:139 -#: www/views/walletDetails.html:59 -msgid "[Balance Hidden]" -msgstr "[Balance Oculto]" - -#: src/js/controllers/bitpayCardIntro.js:11 -msgid "add your BitPay Visa card(s)" -msgstr "agregar sus tarjetas BitPay Visa" - -#: www/views/includes/available-balance.html:8 -msgid "locked by pending payments" -msgstr "bloqueado por pagos pendientes" - -#: src/js/services/profileService.js:389 -msgid "me" -msgstr "yo" - -#: www/views/addressbook.add.html:32 -msgid "name@example.com" -msgstr "nombre@ejemplo.com" - -#: www/views/preferencesHistory.html:15 -msgid "preparing..." -msgstr "preparando..." - -#: src/js/controllers/confirm.js:329 -#: src/js/controllers/modals/txpDetails.js:44 -msgid "to accept" -msgstr "para aceptar" - -#: src/js/controllers/confirm.js:327 -msgid "to pay" -msgstr "para pagar" - -#: src/js/controllers/confirm.js:331 -#: src/js/controllers/modals/txpDetails.js:41 -msgid "to send" -msgstr "para enviar" - -#: src/js/controllers/buyAmazon.js:238 -msgid "{{amountStr}} for Amazon.com Gift Card" -msgstr "{{amountStr}} en tarjeta de regalo de Amazon.com" - -#: www/views/preferencesBwsUrl.html:21 -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}} depende de Bitcore Wallet Service (BWS) para obtener información sobre blockchain y sincronización del Copayer. La configuración por defecto apunta a https://bws.bitpay.com (instancia pública de BitPay)." - -#: src/js/controllers/confirm.js:358 -msgid "{{fee}} will be deducted for bitcoin networking fees." -msgstr "{{fee}} se descontará por comisión de la red bitcoin." - -#: www/views/confirm.html:87 -msgid "{{tx.txp[wallet.id].feeRatePerStr}} of the sending amount" -msgstr "{{tx.txp[wallet.id].feeRatePerStr}} de la cantidad a enviar" - -#: www/views/walletDetails.html:212 -msgid "{{updatingTxHistoryProgress}} transactions downloaded" -msgstr "{{updatingTxHistoryProgress}} transacciones descargadas" - -#: www/views/copayers.html:46 -#: www/views/includes/walletInfo.html:12 -msgid "{{wallet.m}}-of-{{wallet.n}}" -msgstr "{{wallet.m}}-de-{{wallet.n}}" - diff --git a/i18n/po/fr.po b/i18n/po/fr.po deleted file mode 100644 index 4755666d6..000000000 --- a/i18n/po/fr.po +++ /dev/null @@ -1,3359 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Project-Id-Version: copay\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: crowdin.com\n" -"X-Crowdin-Project: copay\n" -"X-Crowdin-Language: fr\n" -"X-Crowdin-File: template.pot\n" -"Last-Translator: cmgustavo83\n" -"Language-Team: French\n" -"Language: fr\n" -"PO-Revision-Date: 2017-07-18 14:36-0400\n" - -#: www/views/modals/paypro.html:34 -msgid "(Trusted)" -msgstr "(Fiable)" - -#: www/views/includes/txp.html:23 -#: www/views/includes/walletHistory.html:64 -msgid "(possible double spend)" -msgstr "(double dépense possible)" - -#: www/views/modals/txp-details.html:161 -msgid "* A payment proposal can be deleted if 1) you are the creator, and no other copayer has signed, or 2) 24 hours have passed since the proposal was created." -msgstr "* Une proposition de paiement peut être supprimée si vous en êtes le créateur et qu'aucun des autres copayers n'a signé, ou si 24 heures sont passées depuis la création de la proposition." - -#: www/views/tx-details.html:84 -msgid "- {{btx.feeRateStr}} of the transaction" -msgstr "- {{btx.feeRateStr}} de la transaction" - -#: www/views/modals/txp-details.html:104 -msgid "- {{tx.feeRateStr}} of the transaction" -msgstr "- {{tx.feeRateStr}} de la transaction" - -#: www/views/feedback/rateApp.html:7 -msgid "5-star ratings help us get {{appName}} into more hands, and more users means more resources can be committed to the app!" -msgstr "Une note de 5 étoiles permet à {{appName}} de gagner en popularité, et plus d'utilisateurs signifie davantage de ressources allouées à l'appli !" - -#: src/js/controllers/feedback/send.js:27 -#: www/views/feedback/complete.html:21 -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:351 -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:345 -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:156 -msgid "About" -msgstr "À propos" - -#: src/js/controllers/modals/txpDetails.js:56 -#: src/js/controllers/tx-details.js:62 -msgid "Accepted" -msgstr "Acceptée" - -#: www/views/preferencesInformation.html:66 -msgid "Account" -msgstr "Compte" - -#: www/views/join.html:69 -#: www/views/tab-create-personal.html:43 -#: www/views/tab-create-shared.html:72 -#: www/views/tab-import-hardware.html:19 -msgid "Account Number" -msgstr "Numéro de compte" - -#: www/views/preferencesBitpayServices.html:23 -msgid "Accounts" -msgstr "Comptes" - -#: www/views/bitpayCard.html:56 -msgid "Activity" -msgstr "Activité" - -#: src/js/services/bitpayAccountService.js:83 -msgid "Add Account" -msgstr "Ajouter un compte" - -#: src/js/services/bitpayAccountService.js:69 -msgid "Add BitPay Account?" -msgstr "Ajouter un compte BitPay ?" - -#: www/views/addressbook.add.html:4 -#: www/views/addressbook.html:22 -msgid "Add Contact" -msgstr "Ajouter un contact" - -#: www/views/bitpayCard.html:28 -msgid "Add Funds" -msgstr "Ajouter des fonds" - -#: www/views/confirm.html:96 -msgid "Add Memo" -msgstr "Ajouter une note" - -#: www/views/join.html:84 -#: www/views/tab-create-personal.html:57 -#: www/views/tab-create-shared.html:86 -msgid "Add a password" -msgstr "Ajouter un mot de passe" - -#: www/views/includes/accountSelector.html:27 -msgid "Add account" -msgstr "Ajouter un compte" - -#: www/views/join.html:87 -#: www/views/tab-create-personal.html:60 -#: www/views/tab-create-shared.html:89 -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" - -#: www/views/includes/incomingDataMenu.html:41 -msgid "Add as a contact" -msgstr "Ajouter comme contact" - -#: src/js/controllers/confirm.js:374 -msgid "Add description" -msgstr "Ajouter une description" - -#: www/views/topup.html:6 -msgid "Add funds" -msgstr "Ajouter des fonds" - -#: src/js/services/bitpayAccountService.js:78 -msgid "Add this BitPay account ({{email}})?" -msgstr "Voulez-vous ajouter ce compte BitPay ({{email}}) ?" - -#: www/views/add.html:3 -msgid "Add wallet" -msgstr "Ajouter un portefeuille" - -#: www/views/addressbook.view.html:26 -#: www/views/customAmount.html:28 -#: www/views/modals/paypro.html:24 -msgid "Address" -msgstr "Adresse" - -#: www/views/addressbook.html:6 -#: www/views/tab-settings.html:13 -msgid "Address Book" -msgstr "Répertoire" - -#: www/views/preferencesInformation.html:35 -msgid "Address Type" -msgstr "Type d'adresse" - -#: www/views/addresses.html:64 -msgid "Addresses With Balance" -msgstr "Adresses avec un solde" - -#: www/views/tab-settings.html:149 -msgid "Advanced" -msgstr "Paramètres avancés" - -#: www/views/advancedSettings.html:3 -msgid "Advanced Settings" -msgstr "Paramètres avancés" - -#: www/views/bitpayCard.html:62 -msgid "All" -msgstr "Tout" - -#: www/views/allAddresses.html:3 -msgid "All Addresses" -msgstr "Toutes les adresses" - -#: www/views/modals/wallet-balance.html:18 -msgid "All of your bitcoin wallet balance may not be available for immediate spending." -msgstr "L'intégralité du solde de votre portefeuille bitcoin peut ne pas être disponible pour des dépenses immédiates." - -#: www/views/tab-receive.html:25 -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" - -#: www/views/onboarding/disclaimer.html:14 -msgid "Almost done! Let's review." -msgstr "C'est presque terminé ! Vérifions." - -#: www/views/preferencesAltCurrency.html:4 -#: www/views/tab-settings.html:74 -msgid "Alternative Currency" -msgstr "Devise alternative" - -#: src/js/controllers/buyAmazon.js:97 -msgid "Amazon.com is not available at this moment. Please try back later." -msgstr "Amazon.com n’est pas disponible pour le moment. Veuillez réessayer plus tard." - -#: www/views/amount.html:44 -#: www/views/customAmount.html:34 -#: www/views/includes/output.html:7 -msgid "Amount" -msgstr "Montant" - -#: src/js/services/bwcError.js:110 -msgid "Amount below minimum allowed" -msgstr "Montant en dessous du minimum autorisé" - -#: src/js/controllers/confirm.js:191 -msgid "Amount too big" -msgstr "Le montant est trop élevé" - -#: www/views/includes/walletHistory.html:31 -msgid "Amount too low to spend" -msgstr "Le montant est trop faible pour être dépensé" - -#: src/js/controllers/tab-home.js:147 -msgid "An update to this app is available. For your security, please update to the latest version." -msgstr "Une mise à jour de cette appli 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 dépenser vos bitcoins." - -#: www/views/addresses.html:94 -msgid "Approximate Bitcoin network fee to transfer wallet's balance (with normal priority)" -msgstr "Frais de réseau Bitcoin approximatifs pour transférer le solde du portefeuille (avec des frais normaux)" - -#: www/views/backupWarning.html:10 -msgid "Are you being watched?" -msgstr "Êtes-vous surveillé(e) ?" - -#: src/js/controllers/preferencesExternal.js:15 -msgid "Are you being watched? Anyone with your recovery phrase can access or spend your bitcoin." -msgstr "Êtes-vous surveillé(e) ? N’importe qui peut dépenser vos bitcoins grâce à votre phrase de récupération." - -#: src/js/controllers/copayers.js:56 -msgid "Are you sure you want to cancel and delete this wallet?" -msgstr "Êtes-vous certain(e) de vouloir annuler et supprimer ce portefeuille ?" - -#: src/js/controllers/addressbookView.js:24 -msgid "Are you sure you want to delete this contact?" -msgstr "Souhaitez-vous réellement supprimer ce contact ?" - -#: src/js/controllers/preferencesDelete.js:26 -msgid "Are you sure you want to delete this wallet?" -msgstr "Êtes-vous certain(e) de vouloir supprimer ce portefeuille ?" - -#: src/js/controllers/modals/txpDetails.js:148 -msgid "Are you sure you want to reject this transaction?" -msgstr "Êtes-vous certain(e) de vouloir rejeter cette transaction ?" - -#: src/js/controllers/modals/txpDetails.js:165 -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:23 -msgid "Are you sure you want to skip it?" -msgstr "Êtes-vous sûr(e) de vouloir ignorer la sauvegarde ?" - -#: www/views/modals/bitpay-card-confirmation.html:4 -msgid "Are you sure you would like to log out of your BitPay Card account?" -msgstr "Souhaitez-vous réellement vous déconnecter de votre compte BitPay Card ?" - -#: src/js/controllers/preferencesBitpayCard.js:7 -#: src/js/controllers/preferencesBitpayServices.js:20 -msgid "Are you sure you would like to remove your BitPay Card ({{lastFourDigits}}) from this device?" -msgstr "Êtes-vous sûr(e) de vouloir supprimer votre BitPay Card ({{lastFourDigits}}) de cet appareil ?" - -#: www/views/includes/walletInfo.html:5 -msgid "Auditable" -msgstr "Vérifiable" - -#: www/views/modals/wallet-balance.html:42 -msgid "Available" -msgstr "Disponible" - -#: www/views/includes/available-balance.html:3 -msgid "Available Balance" -msgstr "Solde disponible" - -#: www/views/modals/chooseFeeLevel.html:24 -#: www/views/preferencesFee.html:15 -msgid "Average confirmation time" -msgstr "Temps de confirmation moyen " - -#: www/views/join.html:140 -#: www/views/tab-create-personal.html:111 -#: www/views/tab-create-shared.html:140 -#: www/views/tab-import-phrase.html:48 -msgid "BIP32 path for address derivation" -msgstr "Chemin BIP32 pour la dérivation de l'adresse" - -#: www/views/preferences.html:34 -msgid "Backup" -msgstr "Sauvegarder" - -#: www/views/includes/backupNeededPopup.html:7 -msgid "Backup Needed" -msgstr "Sauvegarde requise" - -#: src/js/controllers/lockSetup.js:87 -msgid "Backup all livenet wallets before using this function" -msgstr "Sauvegardez tous les portefeuilles (livenet) avant d'utiliser cette fonction" - -#: www/views/preferences.html:36 -#: www/views/tab-settings.html:120 -msgid "Backup needed" -msgstr "Sauvegarde requise" - -#: www/views/includes/backupNeededPopup.html:9 -msgid "Backup now" -msgstr "Sauvegarder maintenant" - -#: www/views/onboarding/backupRequest.html:11 -#: www/views/tab-export-file.html:89 -msgid "Backup wallet" -msgstr "Sauvegarder le portefeuille" - -#: src/js/controllers/lockSetup.js:84 -msgid "Backup your wallet before using this function" -msgstr "Sauvegardez votre portefeuille avant d'utiliser cette fonction" - -#: src/js/services/profileService.js:430 -msgid "Bad wallet invitation" -msgstr "Mauvaise invitation de portefeuille" - -#: www/views/preferencesInformation.html:96 -msgid "Balance By Address" -msgstr "Solde par adresse" - -#: www/views/includes/confirmBackupPopup.html:7 -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." - -#: www/views/preferencesBitpayServices.html:9 -msgid "BitPay Visa® Cards" -msgstr "BitPay Visa® Cards" - -#: www/views/addressbook.add.html:38 -#: www/views/includes/incomingDataMenu.html:29 -msgid "Bitcoin Address" -msgstr "Adresse bitcoin" - -#: www/views/modals/chooseFeeLevel.html:4 -#: www/views/preferencesFee.html:4 -#: www/views/tab-settings.html:85 -msgid "Bitcoin Network Fee Policy" -msgstr "Frais de réseau" - -#: www/views/tab-settings.html:63 -msgid "Bitcoin Unit" -msgstr "Unité de Bitcoin" - -#: www/views/onboarding/tour.html:31 -msgid "Bitcoin is a currency." -msgstr "Bitcoin est une monnaie." - -#: www/views/onboarding/disclaimer.html:15 -msgid "Bitcoin is different – it cannot be safely held with a bank or web service." -msgstr "Bitcoin est différent – il ne peut pas être conservé en toute sécurité avec un service internet ou bancaire." - -#: www/views/onboarding/tour.html:18 -msgid "Bitcoin is secure,
digital money." -msgstr "Bitcoin est de l'argent
numérique sécurisé." - -#: www/views/preferencesFee.html:11 -msgid "Bitcoin transactions include a fee collected by miners on the network." -msgstr "Les transactions Bitcoin incluent des frais collectés par les mineurs du réseau." - -#: www/views/buyAmazon.html:108 -msgid "Bought {{amountUnitStr}}" -msgstr "{{amountUnitStr}} achetés" - -#: www/views/modals/txp-details.html:36 -msgid "Broadcast Payment" -msgstr "Diffuser le paiement" - -#: src/js/controllers/modals/txpDetails.js:58 -#: src/js/controllers/tx-details.js:64 -msgid "Broadcasted" -msgstr "Diffusée" - -#: src/js/services/onGoingProcess.js:11 -msgid "Broadcasting transaction" -msgstr "Diffusion de la transaction" - -#: www/views/unsupported.html:6 -msgid "Browser unsupported" -msgstr "Navigateur non supporté" - -#: www/views/buyAmazon.html:5 -msgid "Buy" -msgstr "Acheter" - -#: www/views/includes/buyAndSellCard.html:3 -msgid "Buy & Sell Bitcoin" -msgstr "Acheter & vendre des bitcoins" - -#: www/views/tab-send.html:35 -msgid "Buy Bitcoin" -msgstr "Acheter des bitcoins" - -#: src/js/controllers/buyAmazon.js:332 -msgid "Buy from" -msgstr "Acheter depuis" - -#: src/js/services/onGoingProcess.js:40 -msgid "Buying Bitcoin..." -msgstr "Achat de bitcoins..." - -#: src/js/services/onGoingProcess.js:12 -msgid "Calculating fee" -msgstr "Calcul des frais" - -#: src/js/controllers/buyAmazon.js:311 -#: src/js/controllers/confirm.js:495 -#: src/js/controllers/topup.js:285 -#: src/js/services/popupService.js:62 -#: src/js/services/popupService.js:73 -#: www/views/addressbook.add.html:10 -#: www/views/feedback/send.html:5 -#: www/views/includes/incomingDataMenu.html:22 -#: www/views/includes/incomingDataMenu.html:54 -#: www/views/includes/incomingDataMenu.html:73 -#: www/views/includes/incomingDataMenu.html:97 -#: www/views/includes/note.html:6 -#: www/views/modals/bitpay-card-confirmation.html:8 -#: www/views/modals/confirmation.html:13 -msgid "Cancel" -msgstr "Annuler" - -#: www/views/copayers.html:36 -msgid "Cancel invitation" -msgstr "Annuler l'invitation" - -#: src/js/controllers/onboarding/tour.js:52 -msgid "Cannot Create Wallet" -msgstr "Impossible de créer le portefeuille" - -#: src/js/services/profileService.js:426 -msgid "Cannot join the same wallet more that once" -msgstr "Impossible de rejoindre le même portefeuille plus d'une fois" - -#: www/views/includes/bitpayCardsCard.html:2 -msgid "Cards" -msgstr "Cartes" - -#: www/views/modals/paypro.html:30 -msgid "Certified by" -msgstr "Certifié par" - -#: www/views/preferencesExternal.html:19 -msgid "Check installation and retry." -msgstr "Vérifiez l’installation et réessayez." - -#: www/views/tab-import-file.html:4 -msgid "Choose a backup file from your computer" -msgstr "Choisissez un fichier de sauvegarde depuis votre ordinateur" - -#: www/views/modals/wallets.html:9 -msgid "Choose your destination wallet" -msgstr "Choisissez votre portefeuille de destination" - -#: www/views/modals/wallets.html:10 -msgid "Choose your source wallet" -msgstr "Choisissez votre portefeuille source" - -#: www/views/backup.html:54 -msgid "Clear" -msgstr "Effacer" - -#: www/views/preferencesHistory.html:24 -msgid "Clear cache" -msgstr "Vider le cache" - -#: src/js/controllers/modals/txpDetails.js:34 -msgid "Click" -msgstr "Cliquez" - -#: www/views/customAmount.html:4 -#: www/views/modals/paypro.html:4 -#: www/views/modals/pin.html:3 -#: www/views/modals/search.html:3 -#: www/views/modals/wallet-balance.html:3 -#: www/views/modals/wallets.html:5 -msgid "Close" -msgstr "Fermer" - -#: www/views/preferences.html:22 -msgid "Color" -msgstr "Couleur" - -#: www/views/preferencesAbout.html:21 -msgid "Commit hash" -msgstr "Commit hash" - -#: www/views/preferences.html:48 -msgid "Complete the backup process to use this option" -msgstr "Terminez le processus de sauvegarde pour utiliser cette option" - -#: www/views/bitpayCard.html:93 -msgid "Completed" -msgstr "Terminé" - -#: src/js/controllers/buyAmazon.js:309 -#: src/js/controllers/confirm.js:494 -#: src/js/controllers/copayers.js:55 -#: src/js/controllers/topup.js:283 -#: www/views/backup.html:53 -#: www/views/backup.html:72 -#: www/views/confirm.html:4 -#: www/views/onboarding/collectEmail.html:32 -msgid "Confirm" -msgstr "Confirmer" - -#: www/views/modals/terms.html:26 -#: www/views/onboarding/disclaimer.html:44 -msgid "Confirm & Finish" -msgstr "Confirmer & Terminer" - -#: www/views/buyAmazon.html:90 -msgid "Confirm purchase" -msgstr "Confirmer l'achat" - -#: www/views/modals/pin.html:10 -msgid "Confirm your PIN" -msgstr "Confirmez votre PIN" - -#: src/js/services/walletService.js:1034 -msgid "Confirm your new spending password" -msgstr "Confirmez votre nouveau code de dépenses" - -#: www/views/tx-details.html:98 -msgid "Confirmations" -msgstr "Confirmations" - -#: www/views/bitpayCard.html:68 -#: www/views/modals/wallet-balance.html:61 -msgid "Confirming" -msgstr "Confirmation" - -#: www/views/bitpayCardIntro.html:37 -msgid "Connect my BitPay Card" -msgstr "Connecter ma BitPay Card" - -#: src/js/services/onGoingProcess.js:13 -msgid "Connecting to Coinbase..." -msgstr "Connexion à Coinbase..." - -#: src/js/services/onGoingProcess.js:14 -msgid "Connecting to Glidera..." -msgstr "Connexion à Glidera..." - -#: src/js/services/bwcError.js:53 -msgid "Connection reset by peer" -msgstr "Connexion réinitialisée par un pair" - -#: www/views/tab-send.html:45 -msgid "Contacts" -msgstr "Contacts" - -#: www/views/onboarding/notifications.html:9 -msgid "Continue" -msgstr "Continuer" - -#: www/views/preferencesLanguage.html:26 -msgid "Contribute Translations" -msgstr "Contribuer aux traductions" - -#: src/js/services/bwcError.js:62 -msgid "Copayer already in this wallet" -msgstr "Copayer déjà dans ce portefeuille" - -#: src/js/services/bwcError.js:77 -msgid "Copayer already voted on this spend proposal" -msgstr "Le Copayer a déjà voté pour cette proposition de dépense" - -#: src/js/services/bwcError.js:107 -msgid "Copayer data mismatch" -msgstr "Les données Copayer ne correspondent pas" - -#: www/views/includes/walletActivity.html:2 -msgid "Copayer joined" -msgstr "Un Copayer à rejoint" - -#: www/views/preferencesInformation.html:88 -msgid "Copayer {{$index}}" -msgstr "Copayer {{$index}}" - -#: src/js/controllers/copayers.js:79 -#: src/js/controllers/export.js:193 -#: www/views/includes/copyToClipboard.html:4 -msgid "Copied to clipboard" -msgstr "Copié(e) dans le presse-papier" - -#: www/views/tab-export-file.html:94 -msgid "Copy this text as it is to a safe place (notepad or email)" -msgstr "Copiez ce texte présenté tel quel vers un endroit sûr (bloc-notes ou e-mail)" - -#: www/views/includes/incomingDataMenu.html:51 -#: www/views/includes/incomingDataMenu.html:70 -#: www/views/includes/incomingDataMenu.html:94 -#: www/views/preferencesLogs.html:10 -#: www/views/tab-export-file.html:78 -msgid "Copy to clipboard" -msgstr "Copier dans le presse-papier" - -#: www/views/tab-import-phrase.html:2 -msgid "Could not access the wallet at the server. Please check:" -msgstr "Impossible d'accéder au portefeuille via le serveur. Veuillez vérifier :" - -#: src/js/controllers/buyAmazon.js:101 -msgid "Could not access to Amazon.com" -msgstr "Impossible d'accéder à Amazon.com" - -#: src/js/services/profileService.js:493 -msgid "Could not access wallet" -msgstr "Impossible d’accéder au portefeuille" - -#: src/js/controllers/confirm.js:185 -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:193 -msgid "Could not broadcast payment" -msgstr "Impossible de diffuser le paiement" - -#: src/js/services/bwcError.js:41 -msgid "Could not build transaction" -msgstr "Impossible de créer la transaction" - -#: src/js/services/walletService.js:857 -msgid "Could not create address" -msgstr "Impossible de créer l'adresse" - -#: src/js/controllers/topup.js:91 -msgid "Could not create the invoice" -msgstr "Impossible de créer la facture" - -#: src/js/controllers/buyAmazon.js:163 -#: src/js/controllers/topup.js:141 -msgid "Could not create transaction" -msgstr "Impossible de créer la transaction" - -#: src/js/services/profileService.js:342 -msgid "Could not create using the specified extended private key" -msgstr "Impossible de créer en utilisant la clé privée étendue spécifiée" - -#: src/js/services/profileService.js:353 -msgid "Could not create using the specified extended public key" -msgstr "Impossible de créer en utilisant la clé publique étendue spécifiée" - -#: src/js/services/profileService.js:335 -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:99 -msgid "Could not decrypt file, check your password" -msgstr "Impossible de déchiffrer le fichier, vérifiez votre mot de passe" - -#: src/js/controllers/modals/txpDetails.js:175 -msgid "Could not delete payment proposal" -msgstr "Impossible de supprimer la proposition de paiement" - -#: src/js/services/feeService.js:72 -msgid "Could not get dynamic fee" -msgstr "Impossible d'obtenir les frais dynamiques" - -#: src/js/services/feeService.js:42 -msgid "Could not get dynamic fee for level: {{feeLevel}}" -msgstr "Impossible d'obtenir les frais dynamiques pour ce choix : {{feeLevel}}" - -#: src/js/controllers/modals/feeLevels.js:113 -msgid "Could not get fee levels" -msgstr "Impossible d'obtenir les niveaux de frais" - -#: src/js/controllers/buyAmazon.js:121 -#: src/js/controllers/topup.js:99 -msgid "Could not get the invoice" -msgstr "Impossible d'obtenir la facture" - -#: src/js/controllers/bitpayCard.js:66 -msgid "Could not get transactions" -msgstr "Impossible de récupérer les transactions" - -#: src/js/services/profileService.js:595 -#: src/js/services/profileService.js:629 -#: src/js/services/profileService.js:652 -msgid "Could not import" -msgstr "Impossible d'importer" - -#: src/js/services/profileService.js:564 -msgid "Could not import. Check input file and spending password" -msgstr "Impossible d'importer. Vérifiez le fichier d'entrée et le code de dépenses" - -#: src/js/services/profileService.js:439 -msgid "Could not join wallet" -msgstr "Impossible de rejoindre le portefeuille" - -#: src/js/controllers/modals/txpDetails.js:155 -msgid "Could not reject payment" -msgstr "Impossible de rejeter le paiement" - -#: src/js/controllers/preferencesBitpayServices.js:33 -msgid "Could not remove account" -msgstr "Impossible de supprimer le compte" - -#: src/js/controllers/preferencesBitpayCard.js:20 -#: src/js/controllers/preferencesBitpayServices.js:50 -msgid "Could not remove card" -msgstr "Impossible de supprimer la carte" - -#: src/js/services/walletService.js:776 -msgid "Could not save preferences on the server" -msgstr "Impossible d'enregistrer les préférences sur le serveur" - -#: src/js/controllers/modals/txpDetails.js:141 -msgid "Could not send payment" -msgstr "Impossible d'envoyer le paiement" - -#: src/js/controllers/buyAmazon.js:323 -#: src/js/controllers/topup.js:297 -msgid "Could not send transaction" -msgstr "Impossible d'envoyer la transaction" - -#: www/views/walletDetails.html:199 -msgid "Could not update transaction history" -msgstr "Impossible de mettre à jour l'historique des transactions" - -#: src/js/controllers/addresses.js:34 -#: src/js/controllers/addresses.js:42 -#: src/js/controllers/copayers.js:30 -#: src/js/controllers/walletDetails.js:78 -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" - -#: www/views/tab-create-shared.html:3 -msgid "Create Shared Wallet" -msgstr "Créer un portefeuille partagé" - -#: www/views/onboarding/tour.html:51 -#: www/views/tab-home.html:77 -#: www/views/tab-send.html:36 -msgid "Create bitcoin wallet" -msgstr "Créer un portefeuille bitcoin" - -#: www/views/tab-create-personal.html:129 -msgid "Create new wallet" -msgstr "Créer" - -#: www/views/add.html:22 -msgid "Create shared wallet" -msgstr "Créer un portefeuille partagé" - -#: www/views/tab-create-shared.html:158 -msgid "Create {{formData.requiredCopayers}}-of-{{formData.totalCopayers}} wallet" -msgstr "Créer un portefeuille {{formData.requiredCopayers}}-sur-{{formData.totalCopayers}}" - -#: www/views/modals/txp-details.html:83 -#: www/views/tx-details.html:62 -msgid "Created by" -msgstr "Créée par" - -#: src/js/services/onGoingProcess.js:18 -msgid "Creating Wallet..." -msgstr "Création du portefeuille..." - -#: src/js/services/onGoingProcess.js:17 -msgid "Creating transaction" -msgstr "Création de la transaction" - -#: www/views/modals/chooseFeeLevel.html:34 -#: www/views/preferencesFee.html:20 -msgid "Current fee rate for this policy" -msgstr "Frais actuels pour ce choix " - -#: src/js/services/feeService.js:15 -msgid "Custom" -msgstr "Personnalisés" - -#: www/views/customAmount.html:9 -msgid "Custom Amount" -msgstr "Montant personnalisé" - -#: src/js/controllers/preferencesFee.js:84 -msgid "Custom Fee" -msgstr "Frais personnalisés" - -#: www/views/modals/txp-details.html:89 -#: www/views/tx-details.html:68 -msgid "Date" -msgstr "Date" - -#: www/views/preferencesDeleteWallet.html:21 -msgid "Delete" -msgstr "Supprimer" - -#: www/views/modals/txp-details.html:166 -msgid "Delete Payment Proposal" -msgstr "Supprimer la proposition de paiement" - -#: www/views/preferencesAdvanced.html:33 -#: www/views/preferencesDeleteWallet.html:3 -msgid "Delete Wallet" -msgstr "Supprimer le portefeuille" - -#: www/views/copayers.html:59 -msgid "Delete it and create a new one" -msgstr "Le supprimer et en créer un nouveau" - -#: src/js/services/onGoingProcess.js:19 -msgid "Deleting Wallet..." -msgstr "Suppression du portefeuille..." - -#: src/js/services/onGoingProcess.js:28 -msgid "Deleting payment proposal" -msgstr "Suppression de la proposition de paiement" - -#: www/views/join.html:138 -#: www/views/tab-create-personal.html:109 -#: www/views/tab-create-shared.html:138 -#: www/views/tab-import-phrase.html:46 -msgid "Derivation Path" -msgstr "Chemin de dérivation" - -#: www/views/preferencesInformation.html:41 -msgid "Derivation Strategy" -msgstr "Stratégie de dérivation" - -#: www/views/buyAmazon.html:39 -#: www/views/topup.html:45 -msgid "Details" -msgstr "Détails" - -#: src/js/controllers/lockSetup.js:9 -#: src/js/controllers/tab-settings.js:60 -msgid "Disabled" -msgstr "Désactivé" - -#: 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:29 -msgid "Do not include private key" -msgstr "Ne pas inclure la clé privée" - -#: www/views/preferencesLanguage.html:21 -msgid "Don't see your language on Crowdin? Contact the Owner on Crowdin! We'd love to support your language." -msgstr "Vous ne voyez pas votre langue sur Crowdin ? Contactez le propriétaire sur Crowdin ! Nous serions ravis de prendre en charge votre langue." - -#: www/views/tab-export-file.html:59 -#: www/views/tab-home.html:22 -msgid "Download" -msgstr "Télécharger" - -#: www/views/addresses.html:19 -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." - -#: src/js/services/feeService.js:13 -msgid "Economy" -msgstr "Faibles" - -#: www/views/onboarding/collectEmail.html:27 -msgid "Edit" -msgstr "Modifier" - -#: www/views/addressbook.add.html:29 -#: www/views/addressbook.view.html:22 -msgid "Email" -msgstr "E-mail" - -#: www/views/preferencesNotifications.html:42 -msgid "Email Address" -msgstr "Adresse e-mail" - -#: src/js/services/bwcError.js:122 -msgid "Empty addresses limit reached. New addresses cannot be generated." -msgstr "La limite d'adresses vides a été atteinte. Les nouvelles adresses ne peuvent plus être générées." - -#: www/views/tab-scan.html:19 -msgid "Enable camera access in your device settings to get started." -msgstr "Autorisez l’accès à la caméra dans les réglages de votre appareil pour commencer." - -#: www/views/preferencesNotifications.html:29 -msgid "Enable email notifications" -msgstr "Activer les notifications e-mail" - -#: www/views/preferencesNotifications.html:12 -msgid "Enable push notifications" -msgstr "Autoriser les notifications" - -#: www/views/tab-scan.html:18 -msgid "Enable the camera to get started." -msgstr "Autorisez la caméra commencer." - -#: www/views/amount.html:4 -msgid "Enter Amount" -msgstr "Saisissez un montant" - -#: src/js/services/walletService.js:1048 -#: src/js/services/walletService.js:1063 -msgid "Enter Spending Password" -msgstr "Saisissez le code de dépenses" - -#: src/js/services/bitpayAccountService.js:110 -msgid "Enter Two Factor for your BitPay account" -msgstr "Saisissez le code à deux facteurs pour votre compte BitPay" - -#: www/views/modals/chooseFeeLevel.html:41 -msgid "Enter custom fee" -msgstr "Saisissez des frais personnalisés" - -#: src/js/services/walletService.js:1030 -msgid "Enter new spending password" -msgstr "Saisissez un nouveau code de dépenses" - -#: www/views/join.html:76 -#: www/views/tab-create-personal.html:49 -#: www/views/tab-create-shared.html:78 -msgid "Enter the recovery phrase (BIP39)" -msgstr "Saisissez la phrase de récupération (BIP39)" - -#: www/views/onboarding/collectEmail.html:13 -msgid "Enter your email" -msgstr "Saisissez votre e-mail" - -#: www/views/backup.html:62 -msgid "Enter your password" -msgstr "Écrivez votre mot de passe" - -#. Trying to import a malformed wallet export QR code -#: src/js/controllers/activity.js:45 -#: src/js/controllers/addressbookAdd.js:30 -#: src/js/controllers/addressbookView.js:29 -#: src/js/controllers/addresses.js:130 -#: src/js/controllers/addresses.js:131 -#: src/js/controllers/bitpayCard.js:66 -#: src/js/controllers/bitpayCardIntro.js:40 -#: src/js/controllers/bitpayCardIntro.js:81 -#: src/js/controllers/buyAmazon.js:23 -#: src/js/controllers/buyAmazon.js:34 -#: src/js/controllers/confirm.js:276 -#: src/js/controllers/copayers.js:67 -#: src/js/controllers/create.js:155 -#: src/js/controllers/create.js:168 -#: src/js/controllers/create.js:175 -#: src/js/controllers/create.js:197 -#: src/js/controllers/create.js:204 -#: src/js/controllers/create.js:222 -#: src/js/controllers/export.js:109 -#: src/js/controllers/export.js:115 -#: src/js/controllers/export.js:126 -#: src/js/controllers/export.js:154 -#: src/js/controllers/export.js:160 -#: src/js/controllers/export.js:171 -#: src/js/controllers/export.js:47 -#: src/js/controllers/export.js:53 -#: src/js/controllers/feedback/send.js:23 -#: src/js/controllers/import.js:104 -#: src/js/controllers/import.js:116 -#: src/js/controllers/import.js:134 -#: src/js/controllers/import.js:185 -#: src/js/controllers/import.js:213 -#: src/js/controllers/import.js:222 -#: src/js/controllers/import.js:237 -#: src/js/controllers/import.js:249 -#: src/js/controllers/import.js:260 -#: src/js/controllers/import.js:270 -#: src/js/controllers/import.js:294 -#: src/js/controllers/import.js:307 -#: src/js/controllers/import.js:317 -#: src/js/controllers/import.js:327 -#: src/js/controllers/import.js:351 -#: src/js/controllers/import.js:364 -#: src/js/controllers/import.js:70 -#: src/js/controllers/import.js:83 -#: src/js/controllers/join.js:121 -#: src/js/controllers/join.js:135 -#: src/js/controllers/join.js:142 -#: src/js/controllers/join.js:165 -#: src/js/controllers/join.js:173 -#: src/js/controllers/join.js:191 -#: src/js/controllers/modals/feeLevels.js:10 -#: src/js/controllers/modals/txpDetails.js:134 -#: src/js/controllers/paperWallet.js:47 -#: src/js/controllers/preferencesBitpayCard.js:20 -#: src/js/controllers/preferencesBitpayServices.js:33 -#: src/js/controllers/preferencesBitpayServices.js:50 -#: src/js/controllers/preferencesDelete.js:37 -#: src/js/controllers/preferencesExternal.js:20 -#: src/js/controllers/tab-home.js:174 -#: src/js/controllers/tab-send.js:132 -#: src/js/controllers/tabsController.js:36 -#: src/js/controllers/tabsController.js:7 -#: src/js/controllers/topup.js:20 -#: src/js/controllers/topup.js:31 -#: src/js/controllers/tx-details.js:102 -#: src/js/services/incomingData.js:98 -msgid "Error" -msgstr "Erreur" - -#: src/js/controllers/confirm.js:447 -msgid "Error at confirm" -msgstr "Erreur à la confirmation" - -#: src/js/controllers/buyAmazon.js:178 -msgid "Error creating gift card" -msgstr "Erreur de création de la carte-cadeau" - -#: src/js/controllers/buyAmazon.js:93 -msgid "Error creating the invoice" -msgstr "Erreur de création de la facture" - -#: src/js/services/profileService.js:396 -msgid "Error creating wallet" -msgstr "Erreur de création du portefeuille" - -#: src/js/controllers/confirm.js:266 -msgid "Error getting SendMax information" -msgstr "Erreur d’obtention de l'information SendMax" - -#: src/js/controllers/buyAmazon.js:135 -#: src/js/controllers/topup.js:113 -msgid "Error in Payment Protocol" -msgstr "Erreur dans le protocole de paiement" - -#: src/js/controllers/bitpayCardIntro.js:14 -msgid "Error pairing BitPay Account" -msgstr "Erreur d'appariement du compte BitPay" - -#: src/js/controllers/paperWallet.js:41 -msgid "Error scanning funds:" -msgstr "Erreur de numérisation des fonds :" - -#: src/js/controllers/paperWallet.js:91 -msgid "Error sweeping wallet:" -msgstr "Erreur de balayage de portefeuille :" - -#: src/js/controllers/bitpayCardIntro.js:20 -msgid "Error updating Debit Cards" -msgstr "Erreur de mise à jour des cartes de débit" - -#: src/js/services/bwcError.js:143 -msgid "Exceeded daily limit of $500 per user" -msgstr "La limite quotidienne de 500$ par utilisateur a été dépassée" - -#: src/js/controllers/confirm.js:411 -#: www/views/confirm.html:27 -#: www/views/modals/txp-details.html:121 -msgid "Expired" -msgstr "Expiré" - -#: www/views/modals/paypro.html:54 -#: www/views/modals/txp-details.html:127 -msgid "Expires" -msgstr "Expire" - -#: www/views/preferencesAdvanced.html:21 -msgid "Export Wallet" -msgstr "Exporter le portefeuille" - -#: www/views/preferencesHistory.html:11 -#: www/views/preferencesHistory.html:14 -msgid "Export to file" -msgstr "Exporter vers un fichier" - -#: www/views/export.html:3 -msgid "Export wallet" -msgstr "Exporter le portefeuille" - -#: src/js/services/walletService.js:1175 -#: 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" - -#: www/views/preferencesInformation.html:83 -msgid "Extended Public Keys" -msgstr "Clés publiques étendues" - -#: src/js/services/onGoingProcess.js:20 -msgid "Extracting Wallet information..." -msgstr "Extraction des informations du portefeuille..." - -#: src/js/controllers/export.js:115 -#: src/js/controllers/export.js:126 -#: src/js/controllers/export.js:160 -#: src/js/controllers/export.js:171 -#: www/views/tab-export-file.html:4 -msgid "Failed to export" -msgstr "Impossible d'exporter" - -#: www/views/tab-create-personal.html:14 -#: www/views/tab-create-shared.html:14 -msgid "Family vacation funds" -msgstr "Fonds pour les vacances familiales" - -#: www/views/tx-details.html:81 -msgid "Fee" -msgstr "Frais" - -#: www/views/modals/chooseFeeLevel.html:73 -msgid "Fee level" -msgstr "Niveau de frais" - -#: src/js/controllers/modals/feeLevels.js:101 -msgid "Fee level is not defined" -msgstr "Le niveau de frais n'est pas défini" - -#: www/views/confirm.html:81 -#: www/views/modals/txp-details.html:101 -msgid "Fee:" -msgstr "Frais :" - -#: 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." - -#: src/js/services/onGoingProcess.js:42 -msgid "Fetching BitPay Account..." -msgstr "Récupération du compte BitPay..." - -#: src/js/services/onGoingProcess.js:21 -msgid "Fetching payment information" -msgstr "Récupération des informations de paiement" - -#: www/views/export.html:14 -#: www/views/import.html:16 -msgid "File/Text" -msgstr "Fichier / Texte" - -#: src/js/services/fingerprintService.js:43 -#: src/js/services/fingerprintService.js:48 -msgid "Finger Scan Failed" -msgstr "La numérisation digitale a échoué" - -#: src/js/controllers/feedback/send.js:34 -#: www/views/feedback/complete.html:7 -msgid "Finish" -msgstr "Terminer" - -#: www/views/tab-create-personal.html:121 -#: www/views/tab-create-shared.html:150 -msgid "For audit purposes" -msgstr "À des fins de vérification" - -#: src/js/controllers/topup.js:306 -#: www/views/buyAmazon.html:29 -#: www/views/confirm.html:65 -#: www/views/modals/txp-details.html:74 -#: www/views/topup.html:34 -#: www/views/tx-details.html:52 -msgid "From" -msgstr "De" - -#: src/js/controllers/bitpayCardIntro.js:71 -msgid "From BitPay account" -msgstr "Depuis un compte BitPay" - -#: www/views/tab-import-phrase.html:54 -msgid "From Hardware Wallet" -msgstr "Depuis un portefeuille matériel" - -#: 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 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" -msgstr "Les fonds sont verrouillés par des propositions de dépenses en attente" - -#: www/views/paperWallet.html:16 -msgid "Funds found:" -msgstr "Fonds trouvés :" - -#: www/views/topup.html:49 -msgid "Funds to be added" -msgstr "Fonds à ajouter" - -#: www/views/paperWallet.html:53 -msgid "Funds transferred" -msgstr "Fonds transférés" - -#: www/views/topup.html:103 -msgid "Funds were added to debit card" -msgstr "Les fonds ont été ajoutés à la carte de débit" - -#: www/views/paperWallet.html:22 -msgid "Funds will be transferred to" -msgstr "Les fonds seront transférés à" - -#: www/views/tab-receive.html:51 -msgid "Generate new address" -msgstr "Générer une nouvelle adresse" - -#: src/js/services/onGoingProcess.js:22 -msgid "Generating .csv file..." -msgstr "Génération du fichier .csv..." - -#: src/js/services/onGoingProcess.js:37 -msgid "Generating new address..." -msgstr "Génération d'une nouvelle adresse..." - -#: www/views/bitpayCardIntro.html:23 -msgid "Get local cash anywhere you go, from any Visa® compatible ATM. ATM bank fees may apply." -msgstr "Retirez de l'argent partout où vous allez, depuis n'importe quel distributeur compatible Visa®. Des frais bancaires de distributeur peuvent s'appliquer." - -#: www/views/onboarding/collectEmail.html:15 -msgid "Get news and updates from BitPay" -msgstr "Obtenir les actualités et mises à jour de BitPay" - -#: www/views/bitpayCard.html:49 -#: www/views/onboarding/welcome.html:8 -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:23 -msgid "Getting fee levels..." -msgstr "Obtention des niveaux de frais..." - -#: www/views/buyAmazon.html:43 -msgid "Gift card" -msgstr "Carte-cadeau" - -#: src/js/controllers/buyAmazon.js:203 -msgid "Gift card expired" -msgstr "Carte-cadeau expirée" - -#: www/views/buyAmazon.html:111 -msgid "Gift card generated and ready to use." -msgstr "Carte-cadeau générée et prête à l’emploi." - -#: src/js/controllers/bitpayCard.js:114 -#: src/js/controllers/bitpayCard.js:124 -#: 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:149 -#: src/js/controllers/tab-settings.js:48 -#: src/js/controllers/tx-details.js:176 -msgid "Go Back" -msgstr "Retour" - -#: src/js/controllers/onboarding/backupRequest.js:20 -#: src/js/controllers/onboarding/backupRequest.js:26 -#: src/js/services/bitpayAccountService.js:84 -msgid "Go back" -msgstr "Retour" - -#: www/views/backupWarning.html:15 -#: www/views/includes/confirmBackupPopup.html:8 -#: www/views/onboarding/tour.html:23 -msgid "Got it" -msgstr "J'ai compris" - -#: www/views/preferencesInformation.html:47 -#: www/views/preferencesInformation.html:53 -msgid "Hardware Wallet" -msgstr "Portefeuille matériel" - -#: www/views/preferencesExternal.html:18 -msgid "Hardware not connected." -msgstr "Matériel non connecté." - -#: www/views/import.html:20 -msgid "Hardware wallet" -msgstr "Portefeuille matériel" - -#: www/views/tab-settings.html:20 -msgid "Help & Support" -msgstr "Aide & Support" - -#: src/js/controllers/bitpayCard.js:112 -#: src/js/controllers/tab-settings.js:46 -msgid "Help and support information is available at the website." -msgstr "De l'aide peut être trouvée sur le site internet (en anglais pour le moment)." - -#: www/views/addresses.html:25 -msgid "Hide" -msgstr "Masquer" - -#: www/views/preferences.html:27 -msgid "Hide Balance" -msgstr "Masquer le solde" - -#: www/views/advancedSettings.html:29 -msgid "Hide Next Steps Card" -msgstr "Masquer la carte « Prochaines étapes »" - -#: www/views/join.html:46 -#: www/views/tab-create-personal.html:26 -#: www/views/tab-create-shared.html:55 -#: www/views/tab-export-file.html:25 -#: www/views/tab-import-file.html:28 -#: www/views/tab-import-hardware.html:31 -#: www/views/tab-import-phrase.html:33 -msgid "Hide advanced options" -msgstr "Masquer les options avancées" - -#: www/views/tabs.html:3 -msgid "Home" -msgstr "Accueil" - -#: src/js/controllers/feedback/send.js:61 -#: src/js/controllers/feedback/send.js:65 -#: src/js/controllers/feedback/send.js:69 -msgid "How could we improve your experience?" -msgstr "Comment pourrions-nous améliorer votre expérience ?" - -#: www/views/feedback/rateCard.html:3 -msgid "How do you like {{appName}}?" -msgstr "Comment trouvez-vous {{appName}} ?" - -#: src/js/controllers/feedback/rateCard.js:29 -msgid "I don't like it" -msgstr "Je ne l'aime pas" - -#: www/views/onboarding/disclaimer.html:43 -msgid "I have read, understood, and agree to the Terms of Use." -msgstr "J’ai lu, compris et suis d'accord avec les Conditions d'utilisation." - -#: www/views/modals/terms.html:22 -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:134 -#: www/views/tab-create-personal.html:105 -#: www/views/tab-create-shared.html:134 -msgid "I have written it down" -msgstr "Je l'ai bien écrit" - -#: src/js/controllers/feedback/rateCard.js:35 -msgid "I like the app" -msgstr "J'aime l'appli" - -#: src/js/controllers/feedback/rateCard.js:26 -msgid "I think this app is terrible." -msgstr "Je déteste cette appli" - -#: src/js/controllers/onboarding/backupRequest.js:19 -#: www/views/includes/screenshotWarningModal.html:9 -msgid "I understand" -msgstr "Je comprends" - -#: www/views/onboarding/disclaimer.html:21 -msgid "I understand that if this app is moved to another device or deleted, my bitcoin can only be recovered with the backup phrase." -msgstr "Je comprends que si cette application est déplacée vers un autre appareil ou supprimée, mes bitcoins ne peuvent être récupérés qu'avec la phrase de sauvegarde." - -#: www/views/onboarding/disclaimer.html:18 -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/backup.html:29 -msgid "I've written it down" -msgstr "Je l'ai bien écrite" - -#: www/views/preferences.html:45 -msgid "If enabled, all sensitive information (private key and recovery phrase) and actions (spending and exporting) associated with this wallet will be protected." -msgstr "Si l'option est activée, toutes les informations sensibles (clé privée et phrase de récupération) ainsi que les opérations (dépenses et exportations) associées à ce portefeuille seront protégées." - -#: www/views/advancedSettings.html:22 -msgid "If enabled, the Recent Transactions card - a list of transactions occuring across all wallets - will appear in the Home tab." -msgstr "Si l'option est activée, la carte des transactions récentes - une liste des transactions qui se produisent dans l’ensemble des portefeuilles - s’affichera dans l’onglet « Accueil »." - -#: www/views/advancedSettings.html:13 -msgid "If enabled, wallets will also try to spend unconfirmed funds. This option may cause transaction delays." -msgstr "Si l'option est activée, les portefeuilles vont essayer de dépenser des fonds non confirmés. Cette option peut entraîner des retards de transaction." - -#: src/js/controllers/onboarding/backupRequest.js:18 -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." - -#: www/views/feedback/complete.html:23 -msgid "If you have additional feedback, please let us know by tapping the \"Send feedback\" option in the Settings tab." -msgstr "Si vous avez d'autres commentaires, veuillez nous en informer en appuyant sur l'option « Envoyer un avis » dans l'onglet Paramètres." - -#: www/views/includes/screenshotWarningModal.html:8 -msgid "If you take a screenshot, your backup may be viewed by other apps. You can make a safe backup with physical 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 physique sécurisée avec du papier et un stylo." - -#: www/views/tab-import-hardware.html:42 -#: www/views/tab-import-phrase.html:77 -msgid "Import" -msgstr "Importer" - -#: www/views/import.html:3 -msgid "Import Wallet" -msgstr "Importer un portefeuille" - -#: www/views/tab-import-file.html:39 -msgid "Import backup" -msgstr "Importer la sauvegarde" - -#: www/views/add.html:38 -msgid "Import wallet" -msgstr "Importer un portefeuille" - -#: src/js/services/onGoingProcess.js:24 -msgid "Importing Wallet..." -msgstr "Importation du portefeuille..." - -#: www/views/backup.html:65 -msgid "In order to verify your wallet backup, please type your password." -msgstr "Afin de vérifier la sauvegarde de votre portefeuille, veuillez saisir votre mot de passe." - -#: www/views/includes/walletItem.html:11 -#: www/views/includes/walletSelector.html:18 -#: www/views/tab-home.html:90 -#: www/views/tab-settings.html:117 -msgid "Incomplete" -msgstr "Non terminé" - -#: www/views/tab-receive.html:22 -msgid "Incomplete wallet" -msgstr "Portefeuille non terminé" - -#: www/views/modals/pin.html:12 -msgid "Incorrect PIN, try again." -msgstr "PIN incorrect, veuillez réessayer." - -#. Trying to import a malformed wallet export QR code -#: src/js/controllers/import.js:70 -msgid "Incorrect code format" -msgstr "Format du code incorrect" - -#: src/js/services/bwcError.js:113 -msgid "Incorrect network address" -msgstr "Adresse réseau invalide" - -#: src/js/controllers/confirm.js:112 -#: src/js/controllers/confirm.js:275 -#: src/js/services/bwcError.js:44 -msgid "Insufficient funds" -msgstr "Fonds insuffisants" - -#: src/js/controllers/topup.js:164 -#: src/js/controllers/topup.js:176 -#: src/js/services/bwcError.js:71 -msgid "Insufficient funds for fee" -msgstr "Fonds insuffisants pour les frais" - -#: www/views/includes/walletHistory.html:49 -msgid "Invalid" -msgstr "Invalide" - -#: src/js/controllers/buyAmazon.js:136 -#: src/js/controllers/topup.js:114 -msgid "Invalid URL" -msgstr "URL invalide" - -#: src/js/controllers/create.js:175 -#: src/js/controllers/import.js:327 -#: src/js/controllers/join.js:142 -msgid "Invalid account number" -msgstr "Numéro de compte invalide" - -#: src/js/services/bwcError.js:119 -msgid "Invalid address" -msgstr "Adresse invalide" - -#: src/js/controllers/tabsController.js:7 -msgid "Invalid data" -msgstr "Données invalides" - -#: src/js/controllers/create.js:155 -#: src/js/controllers/import.js:249 -#: src/js/controllers/join.js:121 -msgid "Invalid derivation path" -msgstr "Chemin de dérivation invalide" - -#: src/js/controllers/copayers.js:90 -msgid "Invitation to share a {{appName}} Wallet" -msgstr "Invitation pour partager un portefeuille {{appName}}" - -#: www/views/buyAmazon.html:49 -#: www/views/topup.html:56 -msgid "Invoice Fee" -msgstr "Frais de facturation" - -#: src/js/controllers/feedback/send.js:79 -msgid "Is there anything we could do better?" -msgstr "Y a-t-il quelque chose que nous pourrions améliorer ?" - -#: www/views/backup.html:47 -msgid "Is this correct?" -msgstr "Est-ce correct ?" - -#: www/views/onboarding/collectEmail.html:22 -msgid "Is this email address correct?" -msgstr "Cette adresse e-mail est-elle correcte ?" - -#: www/views/addresses.html:25 -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 -msgid "It's important that you write your backup phrase down correctly. If something happens to your wallet, you'll need this backup to recover your money. Please review your backup and try again." -msgstr "Il est important d’écrire correctement votre phrase de sauvegarde. Si quelque chose arrive à votre portefeuille, vous aurez besoin de cette sauvegarde afin de récupérer votre argent. Vérifiez votre sauvegarde et réessayez." - -#: www/views/join.html:148 -msgid "Join" -msgstr "Rejoindre" - -#: src/js/controllers/copayers.js:85 -msgid "Join my {{appName}} Wallet. Here is the invitation code: {{secret}} You can download {{appName}} for your phone or desktop at {{appUrl}}" -msgstr "Rejoins mon portefeuille {{appName}}. Voici le code d'invitation : {{secret}} Tu peux télécharger {{appName}} pour ton téléphone ou pour ton ordinateur sur {{appUrl}}" - -#: www/views/add.html:30 -#: www/views/join.html:5 -msgid "Join shared wallet" -msgstr "Rejoindre un portefeuille partagé" - -#: src/js/services/onGoingProcess.js:25 -msgid "Joining Wallet..." -msgstr "Connexion au portefeuille..." - -#: www/views/onboarding/tour.html:22 -msgid "Just scan the code to pay." -msgstr "Numérisez juste le code pour payer." - -#: src/js/services/bwcError.js:116 -msgid "Key already associated with an existing wallet" -msgstr "La clé est déjà associée avec un portefeuille existant" - -#: www/views/preferencesLanguage.html:4 -#: www/views/tab-settings.html:53 -msgid "Language" -msgstr "Langue" - -#: www/views/bitpayCard.html:61 -msgid "Last Month" -msgstr "Le mois dernier" - -#: www/views/backup.html:36 -msgid "Let's verify your backup phrase." -msgstr "Vérifions votre phrase de sauvegarde." - -#: www/views/addresses.html:45 -#: www/views/allAddresses.html:14 -msgid "Loading addresses..." -msgstr "Chargement des adresses..." - -#: src/js/services/onGoingProcess.js:35 -msgid "Loading transaction info..." -msgstr "Chargement des infos de transaction..." - -#: www/views/tab-settings.html:95 -msgid "Lock App" -msgstr "Verrouiller l'appli" - -#: src/js/controllers/lockSetup.js:23 -msgid "Lock by Fingerprint" -msgstr "Verrouiller par empreinte digitale" - -#: src/js/controllers/lockSetup.js:14 -msgid "Lock by PIN" -msgstr "Verrouiller par un code PIN" - -#: 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" - -#: src/js/services/bwcError.js:89 -msgid "Locktime in effect. Please wait to remove this spend proposal" -msgstr "Locktime effectif. Veuillez patienter pour supprimer cette proposition de dépense" - -#: www/views/modals/bitpay-card-confirmation.html:14 -msgid "Log out" -msgstr "Se déconnecter" - -#: www/views/addresses.html:87 -msgid "Low amount inputs" -msgstr "Entrées de faible montant" - -#: www/views/includes/walletHistory.html:27 -msgid "Low fees" -msgstr "Frais faibles" - -#: www/views/onboarding/tour.html:38 -msgid "Makes sense" -msgstr "C'est logique" - -#: src/js/controllers/modals/search.js:61 -msgid "Matches:" -msgstr "Correspondances :" - -#: www/views/includes/copayers.html:4 -#: www/views/preferencesInformation.html:79 -msgid "Me" -msgstr "Moi" - -#: src/js/controllers/feedback/rateCard.js:32 -msgid "Meh - it's alright" -msgstr "Ça peut aller" - -#: src/js/controllers/tx-details.js:148 -#: www/views/modals/paypro.html:48 -#: www/views/modals/txp-details.html:95 -#: www/views/tx-details.html:74 -msgid "Memo" -msgstr "Note" - -#: www/views/modals/txp-details.html:133 -msgid "Merchant Message" -msgstr "Message marchand" - -#: src/js/services/bwcError.js:134 -msgid "Missing parameter" -msgstr "Paramètre manquant" - -#: src/js/services/bwcError.js:32 -msgid "Missing private keys to sign" -msgstr "Clés privées manquantes pour signer" - -#: www/views/preferences.html:60 -#: www/views/preferencesAdvanced.html:3 -msgid "More Options" -msgstr "Plus d'options" - -#: www/views/includes/walletHistory.html:47 -#: www/views/tx-details.html:19 -msgid "Moved" -msgstr "Déplacés" - -#: src/js/controllers/tx-details.js:114 -msgid "Moved Funds" -msgstr "Fonds déplacés" - -#: www/views/modals/txp-details.html:57 -msgid "Multiple recipients" -msgstr "Plusieurs destinataires" - -#: www/views/tab-import-phrase.html:8 -msgid "NOTE: To import a wallet from a 3rd party software, please go to Add Wallet > Create Wallet, and specify the Recovery Phrase there." -msgstr "Remarque : Pour importer un portefeuille d’un autre logiciel que Copay, veuillez aller dans « Ajouter portefeuille » > « Créer » et spécifier la phrase de récupération." - -#: www/views/addressbook.add.html:21 -#: www/views/addressbook.view.html:18 -#: www/views/preferences.html:15 -#: www/views/preferencesAlias.html:17 -msgid "Name" -msgstr "Nom" - -#: www/views/buyAmazon.html:55 -#: www/views/topup.html:63 -msgid "Network Fee" -msgstr "Frais de réseau" - -#: src/js/services/bwcError.js:47 -msgid "Network error" -msgstr "Erreur réseau" - -#: www/views/includes/walletActivity.html:43 -msgid "New Proposal" -msgstr "Nouvelle proposition" - -#: src/js/controllers/addresses.js:131 -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." - -#: www/views/add.html:14 -msgid "New personal wallet" -msgstr "Nouveau portefeuille personnel" - -#: www/views/includes/nextSteps.html:3 -msgid "Next steps" -msgstr "Prochaines étapes" - -#: www/views/tab-receive.html:16 -msgid "No Wallet" -msgstr "Aucun portefeuille" - -#: src/js/controllers/buyAmazon.js:114 -msgid "No access key defined" -msgstr "Aucune clé d’accès définie" - -#: www/views/onboarding/backupRequest.html:5 -msgid "No backup, no bitcoin." -msgstr "Pas de sauvegarde, pas de bitcoin." - -#: www/views/addressbook.html:19 -msgid "No contacts yet" -msgstr "Aucun contact" - -#: www/views/preferencesExternal.html:12 -msgid "No hardware information available." -msgstr "Aucune information matérielle disponible." - -#: www/views/tab-import-hardware.html:3 -msgid "No hardware wallets supported on this device" -msgstr "Aucun portefeuille matériel pris en charge sur cet appareil" - -#: www/views/proposals.html:24 -msgid "No pending proposals" -msgstr "Aucune proposition en attente" - -#: www/views/activity.html:25 -msgid "No recent transactions" -msgstr "Aucune transaction récente" - -#: src/js/controllers/buyAmazon.js:43 -#: src/js/controllers/topup.js:46 -msgid "No signing proposal: No private key" -msgstr "Aucune proposition de signature : aucune clé privée" - -#: www/views/walletDetails.html:193 -msgid "No transactions yet" -msgstr "Aucune transaction" - -#: src/js/controllers/preferencesDelete.js:15 -msgid "No wallet found" -msgstr "Aucun portefeuille trouvé" - -#: src/js/controllers/preferencesDelete.js:8 -msgid "No wallet selected" -msgstr "Aucun portefeuille sélectionné" - -#: src/js/controllers/buyAmazon.js:298 -#: src/js/controllers/confirm.js:83 -#: src/js/controllers/topup.js:263 -msgid "No wallets available" -msgstr "Aucun portefeuille disponible" - -#: www/views/paperWallet.html:47 -msgid "No wallets available to receive funds" -msgstr "Aucun portefeuille disponible pour recevoir des fonds" - -#: src/js/services/feeService.js:12 -msgid "Normal" -msgstr "Normaux" - -#: src/js/services/bwcError.js:80 -msgid "Not authorized" -msgstr "Non autorisé" - -#: src/js/controllers/confirm.js:276 -msgid "Not enough funds for fee" -msgstr "Pas assez de fonds pour les frais" - -#: www/views/onboarding/tour.html:50 -msgid "Not even BitPay can access it." -msgstr "Même BitPay ne peut y accéder." - -#: src/js/controllers/paperWallet.js:47 -msgid "Not funds found" -msgstr "Aucun fonds trouvé" - -#: www/views/feedback/rateApp.html:3 -#: www/views/onboarding/notifications.html:8 -msgid "Not now" -msgstr "Pas maintenant" - -#: www/views/includes/output.html:15 -msgid "Note" -msgstr "Note" - -#: www/views/modals/wallets.html:25 -msgid "Notice: only 1-1 (single signature) wallets can be used for sell bitcoin" -msgstr "Note : seuls les portefeuilles 1-1 (signature unique) peuvent être utilisés pour vendre des bitcoins" - -#: www/views/preferencesNotifications.html:3 -#: www/views/tab-settings.html:46 -msgid "Notifications" -msgstr "Notifications" - -#: www/views/onboarding/collectEmail.html:9 -msgid "Notifications by email" -msgstr "Notifications par e-mail" - -#: www/views/tx-details.html:117 -msgid "Notify me if confirmed" -msgstr "Me notifier si la transaction se confirme" - -#: www/views/preferencesNotifications.html:24 -msgid "Notify me when transactions are confirmed" -msgstr "Me notifier quand les transactions se confirment" - -#: www/views/includes/backupNeededPopup.html:8 -msgid "Now is a good time to backup your wallet. If this device is lost, it is impossible to access your funds without a backup." -msgstr "C'est un bon moment pour sauvegarder votre portefeuille. Si cet appareil est perdu, vos fonds seront irrécupérables sans une sauvegarde." - -#: www/views/backupWarning.html:11 -msgid "Now is a perfect time to assess your surroundings. Nearby windows? Hidden cameras? Shoulder-spies?" -msgstr "C'est le moment d'observer autour de vous ! Personne aux fenêtres ? Derrière vous ? Aucune caméra cachée ?" - -#: src/js/controllers/buyAmazon.js:310 -#: src/js/controllers/topup.js:284 -#: src/js/services/popupService.js:16 -#: src/js/services/popupService.js:52 -#: src/js/services/popupService.js:61 -#: src/js/services/popupService.js:72 -#: www/views/modals/chooseFeeLevel.html:6 -msgid "OK" -msgstr "Ok" - -#: www/views/modals/tx-status.html:12 -#: www/views/modals/tx-status.html:24 -#: www/views/modals/tx-status.html:36 -#: www/views/modals/tx-status.html:46 -msgid "OKAY" -msgstr "OK" - -#: www/views/modals/terms.html:15 -msgid "Official English Disclaimer" -msgstr "Clause de non-responsabilité anglaise officielle" - -#: src/js/controllers/feedback/send.js:64 -msgid "Oh no!" -msgstr "Oh non !" - -#: www/views/tab-home.html:39 -msgid "On this screen you can see all your wallets, accounts, and assets." -msgstr "Vous pouvez visualiser tous vos portefeuilles, comptes et actifs sur cet écran." - -#: src/js/controllers/bitpayCard.js:113 -#: src/js/controllers/tab-settings.js:47 -msgid "Open" -msgstr "Ouvrir" - -#: src/js/controllers/preferencesLanguage.js:13 -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/bitpayCard.js:123 -#: src/js/controllers/tx-details.js:175 -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 -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:27 -msgid "Open wallet" -msgstr "Ouvrir le portefeuille" - -#: www/views/includes/incomingDataMenu.html:19 -msgid "Open website" -msgstr "Ouvrir le site internet" - -#: www/views/bitpayCardIntro.html:34 -msgid "Order the BitPay Card" -msgstr "Commander la BitPay Card" - -#: www/views/join.html:102 -#: www/views/join.html:93 -#: www/views/tab-create-personal.html:67 -#: www/views/tab-create-personal.html:75 -#: www/views/tab-create-shared.html:104 -#: www/views/tab-create-shared.html:96 -#: www/views/tab-import-file.html:18 -#: www/views/tab-import-phrase.html:38 -msgid "Password" -msgstr "Mot de passe" - -#: src/js/controllers/import.js:83 -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:33 -msgid "Paste invitation here" -msgstr "Collez l'invitation ici" - -#: www/views/tab-import-file.html:13 -msgid "Paste the backup plain text code" -msgstr "Collez le code texte de sauvegarde" - -#: www/views/bitpayCardIntro.html:28 -msgid "Pay 0% fees to turn bitcoin into dollars." -msgstr "Aucun frais pour échanger des bitcoins en dollars." - -#: www/views/modals/paypro.html:18 -msgid "Pay To" -msgstr "Payer à" - -#: src/js/controllers/modals/txpDetails.js:45 -#: www/views/modals/tx-status.html:33 -msgid "Payment Accepted" -msgstr "Paiement accepté" - -#: www/views/confirm.html:25 -msgid "Payment Expires:" -msgstr "Le paiement expirera dans :" - -#: www/views/modals/txp-details.html:6 -msgid "Payment Proposal" -msgstr "Proposition de paiement" - -#: www/views/modals/tx-status.html:21 -msgid "Payment Proposal Created" -msgstr "Proposition de paiement créée" - -#: www/views/tab-home.html:46 -msgid "Payment Proposals" -msgstr "Propositions de paiement" - -#: src/js/services/payproService.js:32 -msgid "Payment Protocol Invalid" -msgstr "Protocole de paiement invalide" - -#: src/js/services/payproService.js:18 -msgid "Payment Protocol not supported on Chrome App" -msgstr "Le protocole de paiement n'est pas supporté sur l'application Chrome" - -#: www/views/includes/walletActivity.html:20 -msgid "Payment Received" -msgstr "Paiement reçu" - -#: www/views/modals/tx-status.html:43 -#: www/views/modals/txp-details.html:43 -msgid "Payment Rejected" -msgstr "Paiement rejeté" - -#: src/js/controllers/modals/txpDetails.js:42 -#: www/views/confirm.html:126 -#: www/views/includes/walletActivity.html:11 -#: www/views/modals/txp-details.html:42 -msgid "Payment Sent" -msgstr "Paiement envoyé" - -#: www/views/modals/txp-details.html:32 -msgid "Payment accepted, but not yet broadcasted" -msgstr "Paiement accepté, mais pas encore diffusé" - -#: www/views/modals/txp-details.html:40 -msgid "Payment accepted. It will be broadcasted by Glidera. In case there is a problem, it can be deleted 6 hours after it was created." -msgstr "Paiement accepté. Il sera diffusé par Glidera. Dans le cas où il y a un problème, il peut être supprimé 6 heures après avoir été créé." - -#: www/views/modals/txp-details.html:109 -msgid "Payment details" -msgstr "Détails du paiement" - -#: www/views/modals/paypro.html:6 -msgid "Payment request" -msgstr "Demande de paiement" - -#: www/views/proposals.html:4 -msgid "Pending Proposals" -msgstr "Propositions en attente" - -#: www/views/preferencesDeleteWallet.html:13 -msgid "Permanently delete this wallet." -msgstr "Supprimer définitivement ce portefeuille." - -#: src/js/services/profileService.js:388 -msgid "Personal Wallet" -msgstr "Portefeuille personnel" - -#: www/views/backup.html:18 -msgid "Please carefully write down this phrase." -msgstr "Veuillez écrire soigneusement cette phrase." - -#: www/views/tab-scan.html:20 -msgid "Please connect a camera to get started." -msgstr "Veuillez connecter une caméra pour commencer." - -#: src/js/controllers/import.js:260 -msgid "Please enter the recovery phrase" -msgstr "Veuillez saisir la phrase de récupération" - -#: src/js/controllers/create.js:168 -#: src/js/controllers/join.js:135 -msgid "Please enter the wallet recovery phrase" -msgstr "Veuillez saisir la phrase de récupération du portefeuille" - -#: www/views/modals/pin.html:9 -msgid "Please enter your PIN" -msgstr "Veuillez saisir votre PIN" - -#: www/views/backup.html:46 -msgid "Please tap each word in the correct order." -msgstr "Veuillez sélectionner chaque mot dans le bon ordre." - -#: src/js/services/bwcError.js:101 -msgid "Please upgrade Copay to perform this action" -msgstr "Veuillez mettre à jour Copay pour effectuer cette action" - -#: src/js/controllers/import.js:222 -msgid "Please, select your backup file" -msgstr "Veuillez sélectionner votre fichier de sauvegarde" - -#: www/views/bitpayCard.html:81 -msgid "Pre-Auth Holds" -msgstr "Blocages pré-autorisés" - -#: www/views/tab-settings.html:40 -msgid "Preferences" -msgstr "Préférences" - -#: src/js/services/onGoingProcess.js:38 -msgid "Preparing addresses..." -msgstr "Préparation des adresses..." - -#: src/js/controllers/export.js:198 -msgid "Preparing backup..." -msgstr "Préparation de la sauvegarde..." - -#: src/js/routes.js:1188 -msgid "Press again to exit" -msgstr "Appuyez de nouveau pour quitter" - -#: src/js/services/feeService.js:11 -msgid "Priority" -msgstr "Élevés" - -#: www/views/includes/incomingDataMenu.html:80 -msgid "Private Key" -msgstr "Clé privée" - -#: src/js/controllers/paperWallet.js:137 -msgid "Private key encrypted. Enter password" -msgstr "Clé privée chiffrée. Saisissez le mot de passe" - -#: src/js/services/bwcError.js:35 -msgid "Private key is encrypted, cannot sign" -msgstr "La clé privée est chiffrée, impossible de signer" - -#: www/views/includes/walletActivity.html:51 -msgid "Proposal Accepted" -msgstr "Proposition acceptée" - -#: src/js/controllers/modals/txpDetails.js:55 -#: src/js/controllers/tx-details.js:61 -#: www/views/confirm.html:127 -msgid "Proposal Created" -msgstr "Proposition créée" - -#: www/views/includes/walletActivity.html:27 -msgid "Proposal Deleted" -msgstr "Proposition supprimée" - -#: www/views/includes/walletActivity.html:35 -msgid "Proposal Rejected" -msgstr "Proposition rejetée" - -#: www/views/walletDetails.html:178 -msgid "Proposals" -msgstr "Propositions" - -#: src/js/controllers/buyAmazon.js:281 -msgid "Purchase Amount is limited to {{limitPerDay}} {{currency}} per day" -msgstr "Le montant d'achat est limité à {{limitPerDay}} {{currency}} par jour" - -#: www/views/onboarding/notifications.html:3 -msgid "Push Notifications" -msgstr "Notifications" - -#: www/views/preferencesNotifications.html:17 -msgid "Push notifications for {{appName}} are currently disabled. Enable them in the Settings app." -msgstr "Les notifications pour {{appName}} sont actuellement désactivées. Activez-les dans les paramètres de l'appli." - -#: www/views/export.html:17 -msgid "QR Code" -msgstr "Code QR" - -#: www/views/onboarding/disclaimer.html:13 -msgid "Quick review!" -msgstr "Récapitulatif !" - -#: src/js/controllers/create.js:79 -#: src/js/controllers/join.js:65 -msgid "Random" -msgstr "Aléatoire" - -#: www/views/feedback/rateApp.html:14 -msgid "Rate on the app store" -msgstr "Évaluer dans la boutique" - -#: www/views/addresses.html:52 -msgid "Read less" -msgstr "En savoir moins" - -#: www/views/addresses.html:51 -msgid "Read more" -msgstr "En savoir plus" - -#: www/views/tab-receive.html:3 -#: www/views/tabs.html:7 -msgid "Receive" -msgstr "Recevoir" - -#: www/views/customAmount.html:46 -msgid "Receive in" -msgstr "Recevoir dans" - -#: www/views/includes/walletHistory.html:24 -#: www/views/tx-details.html:18 -msgid "Received" -msgstr "Reçus" - -#: src/js/controllers/tx-details.js:113 -msgid "Received Funds" -msgstr "Fonds reçus" - -#: www/views/includes/walletHistory.html:57 -#: www/views/tx-details.html:24 -msgid "Receiving" -msgstr "Réception" - -#: www/views/bitpayCard.html:60 -#: www/views/includes/walletHistory.html:3 -msgid "Recent" -msgstr "Transactions récentes" - -#: www/views/advancedSettings.html:20 -msgid "Recent Transaction Card" -msgstr "Carte des transactions récentes" - -#: www/views/activity.html:4 -#: www/views/tab-home.html:58 -msgid "Recent Transactions" -msgstr "Transactions récentes" - -#: www/views/amount.html:18 -#: www/views/tab-send.html:9 -msgid "Recipient" -msgstr "Destinataire" - -#: www/views/modals/txp-details.html:62 -msgid "Recipients" -msgstr "Destinataire(s)" - -#: www/views/import.html:12 -msgid "Recovery phrase" -msgstr "Phrase de récupération" - -#: www/views/walletDetails.html:117 -#: www/views/walletDetails.html:36 -msgid "Recreate" -msgstr "Recréer" - -#: src/js/services/onGoingProcess.js:26 -msgid "Recreating Wallet..." -msgstr "Recréation du portefeuille..." - -#: src/js/controllers/modals/txpDetails.js:57 -#: src/js/controllers/tx-details.js:63 -msgid "Rejected" -msgstr "Rejetée" - -#: src/js/services/onGoingProcess.js:27 -msgid "Rejecting payment proposal" -msgstr "Rejet de la proposition de paiement" - -#: www/views/preferencesAbout.html:9 -msgid "Release information" -msgstr "Informations de version" - -#: www/views/addressbook.view.html:36 -msgid "Remove" -msgstr "Supprimer" - -#: src/js/controllers/preferencesBitpayServices.js:7 -msgid "Remove BitPay Account?" -msgstr "Supprimer le compte BitPay ?" - -#: src/js/controllers/preferencesBitpayServices.js:19 -msgid "Remove BitPay Card?" -msgstr "Supprimer la BitPay Card ?" - -#: src/js/controllers/preferencesBitpayServices.js:8 -msgid "Removing your BitPay account will remove all associated BitPay account data from this device. Are you sure you would like to remove your BitPay Account ({{email}}) from this device?" -msgstr "La suppression de votre compte BitPay supprimera tous les données de compte BitPay associées à cet appareil. Êtes-vous sûr(e) de vouloir supprimer votre compte BitPay {{email}} de cet appareil ?" - -#: www/views/join.html:113 -#: www/views/join.html:121 -#: www/views/tab-create-personal.html:84 -#: www/views/tab-create-personal.html:92 -#: www/views/tab-create-shared.html:113 -#: www/views/tab-create-shared.html:121 -#: www/views/tab-export-file.html:17 -msgid "Repeat password" -msgstr "Confirmez le mot de passe" - -#: www/views/tab-export-file.html:16 -msgid "Repeat the password" -msgstr "Confirmez le mot de passe" - -#: www/views/preferences.html:55 -msgid "Request Fingerprint" -msgstr "Demander l'empreinte digitale" - -#: www/views/tab-receive.html:45 -msgid "Request Specific amount" -msgstr "Demander un montant précis" - -#: www/views/preferences.html:42 -msgid "Request Spending Password" -msgstr "Demander un code de dépenses" - -#: www/views/tab-create-shared.html:42 -msgid "Required number of signatures" -msgstr "Nombre requis de signatures" - -#: www/views/onboarding/welcome.html:9 -msgid "Restore from backup" -msgstr "Restaurer à partir d'une sauvegarde" - -#: src/js/services/onGoingProcess.js:29 -msgid "Retrieving inputs information" -msgstr "Récupération des informations d'entrée" - -#: src/js/controllers/onboarding/tour.js:56 -msgid "Retry" -msgstr "Rééssayer" - -#: www/views/tab-scan.html:23 -msgid "Retry Camera" -msgstr "Réessayer la caméra" - -#: www/views/addressbook.add.html:56 -#: www/views/includes/note.html:9 -#: www/views/preferencesAlias.html:21 -#: www/views/preferencesBwsUrl.html:25 -#: www/views/preferencesNotifications.html:46 -msgid "Save" -msgstr "Valider" - -#: www/views/tab-scan.html:3 -#: www/views/tabs.html:11 -msgid "Scan" -msgstr "Numériser" - -#: www/views/tab-scan.html:15 -msgid "Scan QR Codes" -msgstr "Numérisez des codes QR" - -#: www/views/addresses.html:31 -msgid "Scan addresses for funds" -msgstr "Analyser les adresses pour des fonds" - -#: www/views/modals/fingerprintCheck.html:11 -msgid "Scan again" -msgstr "Réanalyser" - -#: src/js/services/fingerprintService.js:56 -msgid "Scan your fingerprint please" -msgstr "Veuillez scanner votre empreinte digitale" - -#: src/js/services/onGoingProcess.js:30 -msgid "Scanning Wallet funds..." -msgstr "Analyse des fonds du portefeuille..." - -#: www/views/includes/screenshotWarningModal.html:7 -msgid "Screenshots are not secure" -msgstr "Les captures d’écran ne sont pas sécurisées" - -#: www/views/modals/search.html:6 -msgid "Search Transactions" -msgstr "Rechercher des transactions" - -#: www/views/tab-send.html:13 -msgid "Search or enter bitcoin address" -msgstr "Recherchez ou saisissez une adresse bitcoin" - -#: www/views/modals/search.html:16 -msgid "Search transactions" -msgstr "Rechercher des transactions" - -#: www/views/preferencesAltCurrency.html:14 -msgid "Search your currency" -msgstr "Rechercher votre monnaie" - -#: www/views/preferences.html:30 -msgid "Security" -msgstr "Sécurité " - -#: www/views/tab-import-file.html:7 -msgid "Select a backup file" -msgstr "Sélectionner un fichier de sauvegarde" - -#: src/js/controllers/tab-receive.js:133 -msgid "Select a wallet" -msgstr "Sélectionner un portefeuille" - -#: www/views/modals/paypro.html:38 -msgid "Self-signed Certificate" -msgstr "Certificat auto-signé" - -#: src/js/services/onGoingProcess.js:41 -msgid "Selling Bitcoin..." -msgstr "Vente de bitcoins..." - -#: www/views/feedback/send.html:13 -#: www/views/feedback/send.html:43 -#: www/views/tab-send.html:3 -#: www/views/tabs.html:15 -msgid "Send" -msgstr "Envoyer" - -#: www/views/feedback/send.html:3 -#: www/views/tab-settings.html:29 -msgid "Send Feedback" -msgstr "Envoyer un avis" - -#: www/views/addressbook.view.html:31 -msgid "Send Money" -msgstr "Envoyer de l'argent" - -#: www/views/allAddresses.html:19 -msgid "Send addresses by email" -msgstr "Envoyer les adresses par e-mail" - -#: www/views/preferencesLogs.html:13 -#: www/views/tab-export-file.html:82 -msgid "Send by email" -msgstr "Envoyer par e-mail" - -#: src/js/controllers/confirm.js:151 -msgid "Send from" -msgstr "Envoyer à partir de" - -#: www/views/includes/itemSelector.html:8 -msgid "Send max amount" -msgstr "Envoyer le montant maximal" - -#: www/views/includes/incomingDataMenu.html:46 -msgid "Send payment to this address" -msgstr "Envoyer le paiement à cette adresse" - -#: www/views/feedback/rateApp.html:17 -msgid "Send us feedback instead" -msgstr "Nous envoyer un avis à la place" - -#: www/views/confirm.html:15 -#: www/views/includes/txp.html:12 -#: www/views/modals/txp-details.html:19 -#: www/views/tx-details.html:23 -msgid "Sending" -msgstr "Envoi" - -#: src/js/services/onGoingProcess.js:39 -msgid "Sending 2FA code..." -msgstr "Envoi du code 2FA..." - -#: src/js/services/onGoingProcess.js:36 -msgid "Sending feedback..." -msgstr "Envoi de votre avis..." - -#: www/views/confirm.html:16 -msgid "Sending maximum amount" -msgstr "Envoi du montant maximal" - -#: src/js/services/onGoingProcess.js:31 -msgid "Sending transaction" -msgstr "Envoi de la transaction" - -#: src/js/controllers/confirm.js:490 -msgid "Sending {{amountStr}} from your {{name}} wallet" -msgstr "Envoi de {{amountStr}} depuis votre portefeuille {{name}}" - -#: www/views/includes/walletHistory.html:42 -#: www/views/modals/tx-status.html:9 -#: www/views/topup.html:100 -#: www/views/tx-details.html:17 -msgid "Sent" -msgstr "Envoyés" - -#: src/js/controllers/tx-details.js:112 -msgid "Sent Funds" -msgstr "Fonds envoyés" - -#: src/js/services/bwcError.js:38 -msgid "Server response could not be verified" -msgstr "La réponse du serveur n'a pas pu être vérifiée" - -#: src/js/controllers/buyAmazon.js:96 -msgid "Service not available" -msgstr "Service non disponible" - -#: www/views/includes/homeIntegrations.html:3 -msgid "Services" -msgstr "Services" - -#: www/views/preferencesLogs.html:3 -msgid "Session Log" -msgstr "Journal de session" - -#: www/views/preferencesAbout.html:35 -msgid "Session log" -msgstr "Journal de session" - -#: www/views/tab-export-file.html:10 -msgid "Set up a password" -msgstr "Spécifiez un mot de passe" - -#: src/js/controllers/preferencesFee.js:84 -msgid "Set your own fee in satoshis/byte" -msgstr "Définissez vos propres frais en satoshis/byte" - -#: www/views/tab-settings.html:3 -#: www/views/tabs.html:19 -msgid "Settings" -msgstr "Paramètres" - -#: www/views/feedback/complete.html:17 -#: www/views/feedback/complete.html:26 -msgid "Share the love by inviting your friends." -msgstr "Partagez l’amour en invitant vos amis." - -#: www/views/copayers.html:20 -msgid "Share this invitation with your copayers" -msgstr "Partagez cette invitation avec vos copayers" - -#: src/js/controllers/feedback/complete.js:5 -#: www/views/tab-settings.html:36 -msgid "Share {{appName}}" -msgstr "Partager {{appName}}" - -#: www/views/tab-import-hardware.html:24 -msgid "Shared Wallet" -msgstr "Portefeuille partagé" - -#: www/views/preferencesExternal.html:34 -msgid "Show Recovery Phrase" -msgstr "Afficher la phrase de récupération" - -#: www/views/tab-receive.html:34 -msgid "Show address" -msgstr "Afficher l'adresse" - -#: www/views/join.html:45 -#: www/views/tab-create-personal.html:25 -#: www/views/tab-create-shared.html:54 -#: www/views/tab-export-file.html:24 -#: www/views/tab-import-file.html:27 -#: www/views/tab-import-hardware.html:30 -#: www/views/tab-import-phrase.html:32 -msgid "Show advanced options" -msgstr "Afficher les options avancées" - -#: www/views/tab-send.html:37 -msgid "Show bitcoin address" -msgstr "Afficher vos adresses bitcoin" - -#: www/views/tab-send.html:59 -msgid "Show more" -msgstr "En afficher plus" - -#: src/js/services/bwcError.js:104 -msgid "Signatures rejected by server" -msgstr "Signatures rejetées par le serveur" - -#: src/js/services/onGoingProcess.js:32 -msgid "Signing transaction" -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 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:120 -#: www/views/tab-create-shared.html:149 -msgid "Single Address Wallet" -msgstr "Portefeuille d'adresse unique" - -#: www/views/onboarding/collectEmail.html:40 -#: www/views/onboarding/tour.html:11 -msgid "Skip" -msgstr "Ignorer" - -#: src/js/controllers/modals/txpDetails.js:34 -msgid "Slide" -msgstr "Faites glisser" - -#: www/views/buyAmazon.html:96 -msgid "Slide to buy" -msgstr "Faites glisser pour acheter" - -#: src/js/controllers/create.js:83 -#: src/js/controllers/join.js:68 -msgid "Specify Recovery Phrase..." -msgstr "Spécifier la phrase de récupération..." - -#: src/js/services/bwcError.js:92 -msgid "Spend proposal is not accepted" -msgstr "La proposition de dépense n'est pas acceptée" - -#: src/js/services/bwcError.js:95 -msgid "Spend proposal not found" -msgstr "Propostion de dépense introuvable" - -#: src/js/services/bwcError.js:137 -msgid "Spending Password needed" -msgstr "Code de dépenses requis" - -#: www/views/walletDetails.html:162 -msgid "Spending this balance will need significant Bitcoin network fees" -msgstr "La dépense de ce solde demandera d'importants frais de réseau Bitcoin" - -#: www/views/tab-send.html:28 -msgid "Start sending bitcoin" -msgstr "Commencez à envoyer des bitcoins" - -#: www/views/lockSetup.html:3 -msgid "Startup Lock" -msgstr "Verrou au démarrage de l'appli" - -#: www/views/topup.html:101 -msgid "Success" -msgstr "Succès" - -#: src/js/services/feeService.js:14 -msgid "Super Economy" -msgstr "Infimes" - -#: www/views/paperWallet.html:7 -msgid "Sweep" -msgstr "Balayer" - -#: www/views/includes/incomingDataMenu.html:89 -#: www/views/paperWallet.html:3 -msgid "Sweep paper wallet" -msgstr "Balayer un portefeuille de papier" - -#: src/js/services/onGoingProcess.js:33 -msgid "Sweeping Wallet..." -msgstr "Balayage du portefeuille..." - -#: www/views/preferencesDeleteWallet.html:16 -msgid "THIS ACTION CANNOT BE REVERSED" -msgstr "CETTE ACTION NE PEUT PAS ÊTRE ANNULÉE" - -#: www/views/onboarding/welcome.html:5 -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:140 -#: www/views/walletDetails.html:60 -msgid "Tap and hold to show" -msgstr "Appuyez et maintenez pour afficher" - -#: www/views/walletDetails.html:112 -#: www/views/walletDetails.html:31 -msgid "Tap to retry" -msgstr "Tapotez pour réessayer" - -#: www/views/termsOfUse.html:3 -msgid "Terms Of Use" -msgstr "Conditions d'utilisation" - -#: www/views/modals/terms.html:3 -#: www/views/onboarding/disclaimer.html:29 -#: www/views/onboarding/disclaimer.html:43 -#: www/views/preferencesAbout.html:30 -msgid "Terms of Use" -msgstr "Conditions d'utilisation" - -#: www/views/tab-create-personal.html:116 -#: www/views/tab-import-phrase.html:65 -msgid "Testnet" -msgstr "Testnet" - -#: www/views/includes/incomingDataMenu.html:61 -msgid "Text" -msgstr "Texte" - -#: src/js/controllers/feedback/send.js:27 -#: src/js/controllers/feedback/send.js:76 -#: www/views/feedback/complete.html:20 -#: www/views/feedback/rateApp.html:4 -msgid "Thank you!" -msgstr "Merci !" - -#: src/js/controllers/feedback/send.js:72 -msgid "Thanks!" -msgstr "Merci !" - -#: src/js/controllers/feedback/send.js:73 -msgid "That's exciting to hear. We'd love to earn that fifth star from you – how could we improve your experience?" -msgstr "Votre avis nous intéresse ! Nous aimerions obtenir une note de 5 étoiles de votre part – comment pourrions-nous améliorer votre expérience ?" - -#: src/js/services/ledger.js:152 -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" - -#: www/views/onboarding/tour.html:37 -msgid "The exchange rate changes with the market." -msgstr "Le taux de change varie avec le marché." - -#: www/views/preferencesFee.html:12 -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:51 -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:1140 -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" - -#: www/views/modals/txp-details.html:26 -msgid "The payment was removed by creator" -msgstr "Le paiement a été supprimé par le créateur" - -#: www/views/join.html:88 -#: www/views/tab-create-personal.html:61 -#: www/views/tab-create-shared.html:90 -#: www/views/tab-import-phrase.html:40 -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" - -#: src/js/services/bwcError.js:56 -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:52 -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." - -#: src/js/services/bwcError.js:98 -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:27 -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" - -#: www/views/tab-import-phrase.html:6 -msgid "The wallet service URL" -msgstr "L’URL du service de portefeuille" - -#: src/js/controllers/tab-home.js:38 -msgid "There is a new version of {{appName}} available" -msgstr "Une nouvelle version de {{appName}} est disponible" - -#: src/js/controllers/import.js:213 -#: src/js/controllers/import.js:237 -#: src/js/controllers/import.js:317 -msgid "There is an error in the form" -msgstr "Il y a une erreur dans la forme" - -#: src/js/controllers/feedback/send.js:61 -#: src/js/controllers/feedback/send.js:65 -msgid "There's obviously something we're doing wrong." -msgstr "Il y a visiblement quelque chose que nous faisons mal." - -#: src/js/controllers/feedback/rateCard.js:38 -msgid "This app is fantastic!" -msgstr "Cette appli est fantastique !" - -#: www/views/onboarding/tour.html:47 -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:468 -msgid "This bitcoin payment request has expired." -msgstr "Cette demande de paiement bitcoin a expiré." - -#: www/views/join.html:130 -#: www/views/tab-create-personal.html:101 -#: www/views/tab-create-shared.html:130 -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." - -#: www/views/backup.html:24 -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/tx-details.html:93 -msgid "This transaction amount is too small compared to current Bitcoin network fees. Spending these funds will need a Bitcoin network fee cost comparable to the funds itself." -msgstr "Ce montant de transaction est trop faible par rapport aux actuels frais de réseau Bitcoin. La dépense de ces fonds demandera des frais de réseau Bitcoin comparables aux fonds eux-mêmes." - -#: www/views/tx-details.html:89 -msgid "This transaction could take a long time to confirm or could be dropped due to the low fees set by the sender" -msgstr "Cette transaction pourrait prendre beaucoup de temps pour être confirmée ou pourrait être abandonnée à cause du faible niveau de frais fixé par l'expéditeur" - -#: www/views/walletDetails.html:116 -#: 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:138 -#: www/views/tx-details.html:121 -msgid "Timeline" -msgstr "Chronologie" - -#: www/views/confirm.html:31 -#: www/views/includes/output.html:2 -#: www/views/modals/txp-details.html:111 -#: www/views/modals/txp-details.html:53 -#: www/views/tx-details.html:41 -#: www/views/tx-details.html:53 -msgid "To" -msgstr "À" - -#: www/views/tab-send.html:32 -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 de n'importe quel portefeuille ou service." - -#: www/views/tab-send.html:33 -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." - -#: src/js/services/bitpayAccountService.js:73 -msgid "To {{reason}} you must first add your BitPay account - {{email}}" -msgstr "Pour {{reason}} vous devez d'abord ajouter votre compte BitPay - {{email}}" - -#: src/js/services/onGoingProcess.js:48 -msgid "Top up in progress..." -msgstr "Rechargement en cours..." - -#: src/js/controllers/topup.js:205 -msgid "Top up {{amountStr}} to debit card ({{cardLastNumber}})" -msgstr "Rechargement de {{amountStr}} vers la carte de débit ({{cardLastNumber}})" - -#: www/views/buyAmazon.html:61 -#: www/views/modals/wallet-balance.html:23 -#: www/views/topup.html:70 -msgid "Total" -msgstr "Total" - -#: www/views/walletDetails.html:185 -msgid "Total Locked Balance" -msgstr "Solde verrouillé total" - -#: www/views/tab-create-shared.html:33 -msgid "Total number of copayers" -msgstr "Nombre total de copayers" - -#: www/views/addresses.html:81 -msgid "Total wallet inputs" -msgstr "Entrées de portefeuille totales" - -#: src/js/services/fingerprintService.js:63 -#: src/js/services/fingerprintService.js:68 -msgid "Touch ID Failed" -msgstr "Touch ID a échoué" - -#: src/js/controllers/tx-details.js:11 -msgid "Transaction" -msgstr "Transaction" - -#: www/views/confirm.html:128 -msgid "Transaction Created" -msgstr "Transaction créée" - -#: www/views/preferencesAdvanced.html:29 -#: www/views/preferencesHistory.html:3 -msgid "Transaction History" -msgstr "Historique des transactions" - -#: src/js/services/bwcError.js:83 -msgid "Transaction already broadcasted" -msgstr "Transaction déjà diffusée" - -#: src/js/controllers/buyAmazon.js:306 -#: src/js/controllers/topup.js:279 -msgid "Transaction has not been created" -msgstr "La transaction n'a pas été créée" - -#: www/views/topup.html:104 -msgid "Transaction initiated" -msgstr "Transaction initiée" - -#: src/js/controllers/tx-details.js:102 -msgid "Transaction not available at this time" -msgstr "La transaction n'est pas disponible pour l'instant" - -#: src/js/controllers/activity.js:45 -#: src/js/controllers/tab-home.js:174 -msgid "Transaction not found" -msgstr "Transaction introuvable" - -#: www/views/modals/chooseFeeLevel.html:54 -msgid "Transactions without fee are not supported." -msgstr "Les transactions sans frais ne sont pas supportées." - -#: src/js/controllers/paperWallet.js:110 -msgid "Transfer to" -msgstr "Transférer à" - -#: www/views/tab-send.html:67 -msgid "Transfer to Wallet" -msgstr "Transférer vers un portefeuille" - -#: www/views/modals/pin.html:13 -msgid "Try again in {{expires}}" -msgstr "Réessayez dans {{expires}}" - -#: www/views/bitpayCardIntro.html:18 -msgid "Turn bitcoin into dollars, swipe anywhere Visa® is accepted." -msgstr "Convertissez des bitcoins en dollars et dépensez partout où Visa® est accepté." - -#: www/views/tab-import-phrase.html:17 -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/tx-details.html:100 -msgid "Unconfirmed" -msgstr "Non confirmée" - -#: www/views/preferencesUnit.html:4 -msgid "Unit" -msgstr "Unité" - -#: www/views/walletDetails.html:179 -msgid "Unsent transactions" -msgstr "Transactions non envoyées" - -#: www/views/addresses.html:39 -msgid "Unused Addresses" -msgstr "Adresses inutilisées" - -#: www/views/addresses.html:50 -msgid "Unused Addresses Limit" -msgstr "Limite des adresses inutilisées" - -#: src/js/controllers/tab-home.js:146 -msgid "Update Available" -msgstr "Mise à jour disponible" - -#: www/views/proposals.html:14 -msgid "Updating pending proposals. Please stand by" -msgstr "Mise à jour des propositions en attente. Veuillez patienter" - -#: www/views/walletDetails.html:211 -msgid "Updating transaction history. Please stand by." -msgstr "Mise à jour de l'historique des transactions. Veuillez patienter." - -#: www/views/activity.html:14 -msgid "Updating... Please stand by" -msgstr "Mise à jour... veuillez patienter" - -#: src/js/services/feeService.js:10 -msgid "Urgent" -msgstr "Très élevés" - -#: www/views/advancedSettings.html:11 -msgid "Use Unconfirmed Funds" -msgstr "Utiliser les fonds non confirmés" - -#: src/js/services/onGoingProcess.js:34 -msgid "Validating recovery phrase..." -msgstr "Validation de la phrase de récupération..." - -#: www/views/modals/fingerprintCheck.html:4 -msgid "Verify your identity" -msgstr "Vérification de votre identité" - -#: www/views/preferencesAbout.html:14 -#: www/views/preferencesExternal.html:25 -msgid "Version" -msgstr "Version" - -#: www/views/tab-export-file.html:69 -msgid "View" -msgstr "Voir" - -#: www/views/addresses.html:34 -msgid "View All Addresses" -msgstr "Voir toutes les adresses" - -#: src/js/controllers/onboarding/terms.js:20 -msgid "View Terms of Service" -msgstr "Voir les conditions d'utilisation" - -#: src/js/controllers/bitpayCard.js:122 -#: src/js/controllers/tx-details.js:174 -msgid "View Transaction on Insight" -msgstr "Voir la transaction sur Insight" - -#: src/js/controllers/tab-home.js:148 -msgid "View Update" -msgstr "Voir la mise à jour" - -#: www/views/tx-details.html:147 -msgid "View on blockchain" -msgstr "Voir sur la blockchain" - -#: www/views/walletDetails.html:171 -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." - -#: www/views/tab-export-file.html:45 -msgid "WARNING: Not including the private key allows to check the wallet balance, transaction history, and create spend proposals from the export. However, does not allow to approve (sign) proposals, so funds will not be accessible from the export." -msgstr "ATTENTION : Ne pas inclure la clé privée permet de vérifier le solde du portefeuille, l'historique des transactions, et de créer des demandes de dépenses depuis le fichier exporté. Cependant, cela ne permet pas d'approuver (signer) les propositions et les fonds ne seront pas accessibles depuis le fichier exporté." - -#: www/views/tab-export-file.html:36 -msgid "WARNING: The private key of this wallet is not available. The export allows to check the wallet balance, transaction history, and create spend proposals from the export. However, does not allow to approve (sign) proposals, so funds will not be accessible from the export." -msgstr "ATTENTION : La clé privée de ce portefeuille n'est pas disponible. L'exportation permet de vérifier le solde du portefeuille, l'historique des transactions, et de créer des propositions de dépenses depuis le fichier exporté. Cependant, cela ne permet pas d'approuver (signer) les propositions et les fonds ne seront pas accessibles depuis le fichier exporté." - -#: www/views/modals/paypro.html:42 -msgid "WARNING: UNTRUSTED CERTIFICATE" -msgstr "ATTENTION : CERTIFICAT NON APPROUVÉ" - -#: src/js/services/onGoingProcess.js:15 -msgid "Waiting for Ledger..." -msgstr "En attente de Ledger..." - -#: src/js/services/onGoingProcess.js:16 -msgid "Waiting for Trezor..." -msgstr "En attente de Trezor..." - -#: www/views/copayers.html:48 -msgid "Waiting for copayers" -msgstr "Attente des copayers" - -#: www/views/copayers.html:53 -msgid "Waiting..." -msgstr "Attente..." - -#: www/views/addresses.html:3 -#: www/views/preferencesAdvanced.html:17 -msgid "Wallet Addresses" -msgstr "Adresses du portefeuille" - -#: www/views/preferencesColor.html:4 -msgid "Wallet Color" -msgstr "Couleur du portefeuille" - -#: www/views/preferencesInformation.html:23 -msgid "Wallet Configuration (m-n)" -msgstr "Configuration du portefeuille (m-n)" - -#: www/views/onboarding/collectEmail.html:5 -msgid "Wallet Created" -msgstr "Portefeuille créé" - -#: www/views/preferencesInformation.html:17 -msgid "Wallet Id" -msgstr "Id du portefeuille" - -#: www/views/preferencesAdvanced.html:13 -#: www/views/preferencesInformation.html:3 -msgid "Wallet Information" -msgstr "Informations du portefeuille" - -#: www/views/addresses.html:76 -msgid "Wallet Inputs" -msgstr "Entrées de portefeuille" - -#: www/views/join.html:26 -msgid "Wallet Invitation" -msgstr "Invitation de portefeuille" - -#: www/views/join.html:57 -#: www/views/tab-create-personal.html:36 -#: www/views/tab-create-shared.html:65 -msgid "Wallet Key" -msgstr "Clé du portefeuille" - -#: www/views/preferencesAlias.html:4 -msgid "Wallet Name" -msgstr "Nom du portefeuille" - -#: www/views/preferencesInformation.html:11 -msgid "Wallet Name (at creation)" -msgstr "Nom du portefeuille (à la création)" - -#: www/views/preferencesInformation.html:29 -msgid "Wallet Network" -msgstr "Réseau du portefeuille" - -#: www/views/join.html:74 -#: www/views/tab-create-personal.html:48 -#: www/views/tab-create-shared.html:77 -msgid "Wallet Recovery Phrase" -msgstr "Phrase de récupération" - -#: src/js/services/bwcError.js:26 -msgid "Wallet Recovery Phrase is invalid" -msgstr "La phrase de récupération du portefeuille est invalide" - -#: www/views/preferencesAdvanced.html:25 -#: www/views/tab-import-phrase.html:70 -msgid "Wallet Service URL" -msgstr "Wallet Service URL" - -#: www/views/preferences.html:4 -msgid "Wallet Settings" -msgstr "Paramètres du portefeuille" - -#: www/views/tab-import-hardware.html:11 -#: www/views/tab-import-phrase.html:58 -msgid "Wallet Type" -msgstr "Type de portefeuille" - -#: src/js/services/bwcError.js:59 -msgid "Wallet already exists" -msgstr "Le portefeuille existe déjà" - -#: src/js/services/profileService.js:498 -msgid "Wallet already in Copay" -msgstr "Le portefeuille existe déjà dans Copay" - -#: www/views/includes/walletActivity.html:6 -msgid "Wallet created" -msgstr "Portefeuille créé" - -#: www/views/copayers.html:58 -msgid "Wallet incomplete and broken" -msgstr "Portefeuille incomplet et cassé " - -#: src/js/services/bwcError.js:65 -msgid "Wallet is full" -msgstr "Le portefeuille est plein" - -#: src/js/services/bwcError.js:125 -msgid "Wallet is locked" -msgstr "Le portefeuille est verrouillé" - -#: src/js/services/bwcError.js:128 -msgid "Wallet is not complete" -msgstr "Le portefeuille n'est pas complet" - -#: www/views/tab-create-personal.html:12 -#: www/views/tab-create-shared.html:12 -msgid "Wallet name" -msgstr "Nom du portefeuille" - -#: src/js/services/bwcError.js:131 -msgid "Wallet needs backup" -msgstr "Le portefeuille a besoin d'une sauvegarde" - -#: www/views/tab-receive.html:59 -#: www/views/walletDetails.html:157 -msgid "Wallet not backed up" -msgstr "Le portefeuille n'est pas sauvegardé" - -#: src/js/services/bwcError.js:68 -msgid "Wallet not found" -msgstr "Portefeuille introuvable" - -#: src/js/controllers/tab-home.js:220 -msgid "Wallet not registered" -msgstr "Portefeuille non enregistré" - -#: src/js/services/bwcError.js:29 -msgid "Wallet not registered at the wallet service. Recreate it from \"Create Wallet\" using \"Advanced Options\" to set your recovery phrase" -msgstr "Le portefeuille n'est pas enregistré au Wallet Service. Vous pouvez le recréer depuis « Créer » en utilisant les « Options avancées » pour configurer votre phrase de récupération" - -#: www/views/backup.html:11 -msgid "Wallet recovery phrase not available." -msgstr "La phrase de récupération du portefeuille est indisponible." - -#: src/js/services/bwcError.js:50 -msgid "Wallet service not found" -msgstr "Wallet Service introuvable" - -#: www/views/tab-home.html:69 -msgid "Wallets" -msgstr "Portefeuilles" - -#: www/views/tab-settings.html:102 -msgid "Wallets & Integrations" -msgstr "Portefeuilles & intégrations" - -#: src/js/controllers/addressbookView.js:23 -#: src/js/controllers/modals/txpDetails.js:147 -#: src/js/controllers/modals/txpDetails.js:164 -#: src/js/controllers/preferencesDelete.js:25 -#: src/js/controllers/preferencesExternal.js:14 -#: www/views/preferencesDeleteWallet.html:11 -msgid "Warning!" -msgstr "Attention !" - -#: www/views/modals/txp-details.html:47 -msgid "Warning: this transaction has unconfirmed inputs" -msgstr "ATTENTION : Cette transaction a des entrées non confirmées" - -#: src/js/controllers/onboarding/backupRequest.js:17 -msgid "Watch out!" -msgstr "Méfiez-vous !" - -#: src/js/controllers/feedback/send.js:69 -msgid "We'd love to do better." -msgstr "Nous serions ravis de faire mieux." - -#: www/views/backup.html:28 -msgid "We'll confirm on the next screen." -msgstr "Nous allons la confirmer sur l’écran suivant." - -#: src/js/controllers/feedback/send.js:77 -msgid "We're always looking for ways to improve {{appName}}." -msgstr "Nous recherchons constamment des moyens afin d'améliorer {{appName}}." - -#: src/js/controllers/feedback/send.js:83 -msgid "We're always looking for ways to improve {{appName}}. How could we improve your experience?" -msgstr "Nous recherchons constamment des moyens afin d'améliorer {{appName}}. Comment pourrions-nous améliorer votre expérience ?" - -#: www/views/includes/incomingDataMenu.html:6 -msgid "Website" -msgstr "Site internet" - -#: www/views/preferencesLanguage.html:16 -msgid "We’re always looking for translation contributions! You can make corrections or help to make this app available in your native language by joining our community on Crowdin." -msgstr "Nous recherchons toujours des contributions de traduction ! Vous pouvez apporter des corrections ou aider à rendre cette application disponible dans votre langue maternelle en rejoignant notre communauté sur Crowdin." - -#: www/views/preferencesAlias.html:11 -msgid "What do you call this wallet?" -msgstr "Comment voulez-vous appeler ce portefeuille ?" - -#: www/views/preferencesAlias.html:12 -msgid "When this wallet was created, it was called “{{walletName}}”. You can change the name displayed on this device below." -msgstr "Lorsque ce portefeuille a été créé, il se nommait “{{walletName}}”. Vous pouvez modifier ci-dessous le nom affiché sur cet appareil." - -#: www/views/onboarding/collectEmail.html:10 -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:19 -msgid "Why?" -msgstr "Pourquoi ?" - -#: www/views/feedback/rateApp.html:10 -msgid "Would you be willing to rate {{appName}} in the app store?" -msgstr "Seriez-vous prêt à évaluer {{appName}} dans la boutique d'application ?" - -#: www/views/onboarding/notifications.html:4 -msgid "Would you like to receive push notifications about payments?" -msgstr "Souhaitez-vous recevoir des notifications relatives aux paiements ?" - -#: src/js/controllers/import.js:270 -msgid "Wrong number of recovery words:" -msgstr "Nombre incorrect de mots de récupération :" - -#: src/js/services/bwcError.js:140 -msgid "Wrong spending password" -msgstr "Code de dépenses incorrect" - -#: www/views/modals/confirmation.html:7 -msgid "Yes" -msgstr "Oui" - -#: src/js/controllers/onboarding/backupRequest.js:25 -msgid "Yes, skip" -msgstr "Oui, ignorer" - -#: src/js/controllers/onboarding/backupRequest.js:24 -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 -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 apporter 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:19 -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." - -#: www/views/backup.html:12 -msgid "You can still export it from Advanced > Export." -msgstr "Vous pouvez l’exporter depuis le menu « Avancé » > « Exporter »." - -#: www/views/onboarding/tour.html:32 -msgid "You can trade it for other currencies like US Dollars, Euros, or Pounds." -msgstr "Vous pouvez l’échanger contre d'autres monnaies comme le dollar américain, l'euro ou la livre." - -#: www/views/onboarding/tour.html:46 -msgid "You control your bitcoin." -msgstr "Vous contrôlez vos bitcoins." - -#: www/views/modals/chooseFeeLevel.html:63 -msgid "You should not set a fee higher than {{maxFeeRecommended}} satoshis/byte." -msgstr "Vous ne devriez pas définir des frais plus élevés que {{maxFeeRecommended}} satoshis/byte." - -#: www/views/modals/bitpay-card-confirmation.html:5 -msgid "You will need to log back for fill in your BitPay Card." -msgstr "Vous devrez vous reconnecter pour approvisionner votre BitPay Card." - -#: www/views/preferencesNotifications.html:34 -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." - -#: www/views/bitpayCard.html:50 -msgid "Your BitPay Card is ready. Add funds to your card to start using it at stores and ATMs worldwide." -msgstr "Votre BitPay Card est prête. Ajoutez des fonds sur votre carte pour commencer à l'utiliser dans des magasins et distributeurs automatiques à travers le monde entier." - -#: www/views/includes/confirmBackupPopup.html:6 -msgid "Your bitcoin wallet is backed up!" -msgstr "Votre portefeuille bitcoin est sauvegardé !" - -#: www/views/tab-home.html:36 -msgid "Your bitcoin wallet is ready!" -msgstr "Votre portefeuille bitcoin est prêt !" - -#: www/views/modals/chooseFeeLevel.html:60 -msgid "Your fee is lower than recommended." -msgstr "Vos frais sont inférieurs au niveau recommandé." - -#: 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" - -#: www/views/join.html:16 -msgid "Your nickname" -msgstr "Votre surnom" - -#: www/views/tab-export-file.html:11 -#: www/views/tab-import-file.html:20 -msgid "Your password" -msgstr "Votre mot de passe" - -#: www/views/buyAmazon.html:102 -msgid "Your purchase could not be completed" -msgstr "Votre achat n'a pas pu aboutir" - -#: www/views/buyAmazon.html:105 -msgid "Your purchase was added to the list of pending" -msgstr "Votre achat a été ajouté à la liste d’attente" - -#: www/views/onboarding/backupRequest.html:10 -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:1031 -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/paperWallet.html:35 -#: www/views/tab-home.html:96 -#: www/views/tab-receive.html:74 -#: www/views/walletDetails.html:139 -#: www/views/walletDetails.html:59 -msgid "[Balance Hidden]" -msgstr "[Solde masqué]" - -#: src/js/controllers/bitpayCardIntro.js:11 -msgid "add your BitPay Visa card(s)" -msgstr "ajoutez vos cartes BitPay Visa" - -#: www/views/includes/available-balance.html:8 -msgid "locked by pending payments" -msgstr "verrouillés par les paiements en attente" - -#: src/js/services/profileService.js:389 -msgid "me" -msgstr "moi" - -#: www/views/addressbook.add.html:32 -msgid "name@example.com" -msgstr "nom@exemple.com" - -#: www/views/preferencesHistory.html:15 -msgid "preparing..." -msgstr "préparation..." - -#: src/js/controllers/confirm.js:329 -#: src/js/controllers/modals/txpDetails.js:44 -msgid "to accept" -msgstr "pour accepter" - -#: src/js/controllers/confirm.js:327 -msgid "to pay" -msgstr "pour payer" - -#: src/js/controllers/confirm.js:331 -#: src/js/controllers/modals/txpDetails.js:41 -msgid "to send" -msgstr "pour envoyer" - -#: src/js/controllers/buyAmazon.js:238 -msgid "{{amountStr}} for Amazon.com Gift Card" -msgstr "{{amountStr}} pour la carte-cadeau Amazon.com" - -#: www/views/preferencesBwsUrl.html:21 -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)." - -#: src/js/controllers/confirm.js:358 -msgid "{{fee}} will be deducted for bitcoin networking fees." -msgstr "{{fee}} seront déduits pour les frais de réseau Bitcoin." - -#: www/views/confirm.html:87 -msgid "{{tx.txp[wallet.id].feeRatePerStr}} of the sending amount" -msgstr "{{tx.txp[wallet.id].feeRatePerStr}} du montant d'envoi" - -#: www/views/walletDetails.html:212 -msgid "{{updatingTxHistoryProgress}} transactions downloaded" -msgstr "{{updatingTxHistoryProgress}} transactions téléchargées" - -#: www/views/copayers.html:46 -#: www/views/includes/walletInfo.html:12 -msgid "{{wallet.m}}-of-{{wallet.n}}" -msgstr "{{wallet.m}}-sur-{{wallet.n}}" - diff --git a/i18n/po/it.po b/i18n/po/it.po deleted file mode 100644 index d711b0826..000000000 --- a/i18n/po/it.po +++ /dev/null @@ -1,3359 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Project-Id-Version: copay\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: crowdin.com\n" -"X-Crowdin-Project: copay\n" -"X-Crowdin-Language: it\n" -"X-Crowdin-File: template.pot\n" -"Last-Translator: cmgustavo83\n" -"Language-Team: Italian\n" -"Language: it\n" -"PO-Revision-Date: 2017-07-18 13:18-0400\n" - -#: www/views/modals/paypro.html:34 -msgid "(Trusted)" -msgstr "(Fidato)" - -#: www/views/includes/txp.html:23 -#: www/views/includes/walletHistory.html:64 -msgid "(possible double spend)" -msgstr "(possibile doppia spesa)" - -#: www/views/modals/txp-details.html:161 -msgid "* A payment proposal can be deleted if 1) you are the creator, and no other copayer has signed, or 2) 24 hours have passed since the proposal was created." -msgstr "* Una proposta di pagamento può essere eliminata se 1) Tu sei il creatore e nessun altro copayer ha firmato, oppure 2) Sono passate 24 ore da quando la proposta e' stata creata." - -#: www/views/tx-details.html:84 -msgid "- {{btx.feeRateStr}} of the transaction" -msgstr "- {{btx.feeRateStr}} della transazione" - -#: www/views/modals/txp-details.html:104 -msgid "- {{tx.feeRateStr}} of the transaction" -msgstr "- {{tx.feeRateStr}} della transazione" - -#: www/views/feedback/rateApp.html:7 -msgid "5-star ratings help us get {{appName}} into more hands, and more users means more resources can be committed to the app!" -msgstr "Darci un voto a 5 stelle ci aiuta a portare {{appName}} a più mani, e più utenti significa più risorse possono essere impegnate sull'app!" - -#: src/js/controllers/feedback/send.js:27 -#: www/views/feedback/complete.html:21 -msgid "A member of the team will review your feedback as soon as possible." -msgstr "Un membro del team esaminerà il tuo feedback appena possibile." - -#: src/js/controllers/confirm.js:351 -msgid "A total of {{amountAboveMaxSizeStr}} were excluded. The maximum size allowed for a transaction was exceeded." -msgstr "Un totale di{{amountAboveMaxSizeStr}} sono state escluse. La dimensione massima consentita per una transazione è stata superata." - -#: src/js/controllers/confirm.js:345 -msgid "A total of {{amountBelowFeeStr}} were excluded. These funds come from UTXOs smaller than the network fee provided." -msgstr "Un totale di {{amountBelowFeeStr}} è stato escluso. Questi fondi provengono da UTXO più piccole rispetto alla commissione di rete fornita." - -#: src/js/controllers/preferencesAbout.js:6 -#: www/views/tab-settings.html:156 -msgid "About" -msgstr "Informazioni" - -#: src/js/controllers/modals/txpDetails.js:56 -#: src/js/controllers/tx-details.js:62 -msgid "Accepted" -msgstr "Accettata" - -#: www/views/preferencesInformation.html:66 -msgid "Account" -msgstr "Conto" - -#: www/views/join.html:69 -#: www/views/tab-create-personal.html:43 -#: www/views/tab-create-shared.html:72 -#: www/views/tab-import-hardware.html:19 -msgid "Account Number" -msgstr "Numero del Conto" - -#: www/views/preferencesBitpayServices.html:23 -msgid "Accounts" -msgstr "Account" - -#: www/views/bitpayCard.html:56 -msgid "Activity" -msgstr "Attività" - -#: src/js/services/bitpayAccountService.js:83 -msgid "Add Account" -msgstr "Aggiungere Account" - -#: src/js/services/bitpayAccountService.js:69 -msgid "Add BitPay Account?" -msgstr "Aggiungere il conto BitPay?" - -#: www/views/addressbook.add.html:4 -#: www/views/addressbook.html:22 -msgid "Add Contact" -msgstr "Aggiungi Contatto" - -#: www/views/bitpayCard.html:28 -msgid "Add Funds" -msgstr "Aggiungere fondi" - -#: www/views/confirm.html:96 -msgid "Add Memo" -msgstr "Aggiungi Memo" - -#: www/views/join.html:84 -#: www/views/tab-create-personal.html:57 -#: www/views/tab-create-shared.html:86 -msgid "Add a password" -msgstr "Aggiungi una password" - -#: www/views/includes/accountSelector.html:27 -msgid "Add account" -msgstr "Aggiungere account" - -#: www/views/join.html:87 -#: www/views/tab-create-personal.html:60 -#: www/views/tab-create-shared.html:89 -msgid "Add an optional password to secure the recovery phrase" -msgstr "Aggiungere una password facoltativa per proteggere la frase di recupero" - -#: www/views/includes/incomingDataMenu.html:41 -msgid "Add as a contact" -msgstr "" - -#: src/js/controllers/confirm.js:374 -msgid "Add description" -msgstr "Aggiungi descrizione" - -#: www/views/topup.html:6 -msgid "Add funds" -msgstr "Aggiungi fondi" - -#: src/js/services/bitpayAccountService.js:78 -msgid "Add this BitPay account ({{email}})?" -msgstr "Aggiungere questo account BitPay ({{email}})?" - -#: www/views/add.html:3 -msgid "Add wallet" -msgstr "Aggiungi un portafoglio" - -#: www/views/addressbook.view.html:26 -#: www/views/customAmount.html:28 -#: www/views/modals/paypro.html:24 -msgid "Address" -msgstr "Indirizzo" - -#: www/views/addressbook.html:6 -#: www/views/tab-settings.html:13 -msgid "Address Book" -msgstr "Rubrica Indirizzi" - -#: www/views/preferencesInformation.html:35 -msgid "Address Type" -msgstr "Tipo di indirizzo" - -#: www/views/addresses.html:64 -msgid "Addresses With Balance" -msgstr "Indirizzi con saldo" - -#: www/views/tab-settings.html:149 -msgid "Advanced" -msgstr "Avanzato" - -#: www/views/advancedSettings.html:3 -msgid "Advanced Settings" -msgstr "Impostazioni avanzate" - -#: www/views/bitpayCard.html:62 -msgid "All" -msgstr "Tutto" - -#: www/views/allAddresses.html:3 -msgid "All Addresses" -msgstr "Tutti gli indirizzi" - -#: www/views/modals/wallet-balance.html:18 -msgid "All of your bitcoin wallet balance may not be available for immediate spending." -msgstr "Tutto il bilancio del tuo portafoglio potrebbe non essere disponibile ad essere speso nell'immediato." - -#: www/views/tab-receive.html:25 -msgid "All signing devices must be added to this multisig wallet before bitcoin addresses can be created." -msgstr "Tutti i dispositivi firmanti devono essere aggiunti a questo portafoglio multisig prima che si possano creare indirizzi bitcoin." - -#: www/views/tab-scan.html:21 -msgid "Allow Camera Access" -msgstr "Abilita accesso macchina fotografica" - -#: www/views/onboarding/notifications.html:7 -msgid "Allow notifications" -msgstr "Consenti notifiche" - -#: www/views/onboarding/disclaimer.html:14 -msgid "Almost done! Let's review." -msgstr "Quasi finito! Ripassiamo." - -#: www/views/preferencesAltCurrency.html:4 -#: www/views/tab-settings.html:74 -msgid "Alternative Currency" -msgstr "Valuta alternativa" - -#: src/js/controllers/buyAmazon.js:97 -msgid "Amazon.com is not available at this moment. Please try back later." -msgstr "" - -#: www/views/amount.html:44 -#: www/views/customAmount.html:34 -#: www/views/includes/output.html:7 -msgid "Amount" -msgstr "Ammontare" - -#: src/js/services/bwcError.js:110 -msgid "Amount below minimum allowed" -msgstr "Importo inferiore al minimo consentito" - -#: src/js/controllers/confirm.js:191 -msgid "Amount too big" -msgstr "Quantità troppo grande" - -#: www/views/includes/walletHistory.html:31 -msgid "Amount too low to spend" -msgstr "Quantità troppo bassa per essere spesa" - -#: src/js/controllers/tab-home.js:147 -msgid "An update to this app is available. For your security, please update to the latest version." -msgstr "Un aggiornamento dell'app è disponibile. Per la tua sicurezza è consigliato aggiornare all'ultima versione." - -#: www/views/backupWarning.html:14 -msgid "Anyone with your backup phrase can access or spend your bitcoin." -msgstr "Qualcuno con il tuo backup phrase potrebbe avere accesso o spendere i tuoi bitcoin." - -#: www/views/addresses.html:94 -msgid "Approximate Bitcoin network fee to transfer wallet's balance (with normal priority)" -msgstr "" - -#: www/views/backupWarning.html:10 -msgid "Are you being watched?" -msgstr "Sei osservato?" - -#: src/js/controllers/preferencesExternal.js:15 -msgid "Are you being watched? Anyone with your recovery phrase can access or spend your bitcoin." -msgstr "Siete osservati? Chiunque con la vostra frase di recupero può accedere o spendere i vostri bitcoin." - -#: src/js/controllers/copayers.js:56 -msgid "Are you sure you want to cancel and delete this wallet?" -msgstr "Sei sicuro di voler eliminare questo portafoglio?" - -#: src/js/controllers/addressbookView.js:24 -msgid "Are you sure you want to delete this contact?" -msgstr "Sei sicuro di voler cancellare questo contatto?" - -#: src/js/controllers/preferencesDelete.js:26 -msgid "Are you sure you want to delete this wallet?" -msgstr "Sei sicuro di voler eliminare questo portafoglio?" - -#: src/js/controllers/modals/txpDetails.js:148 -msgid "Are you sure you want to reject this transaction?" -msgstr "Sei sicuro di voler rifiutare questa transazione?" - -#: src/js/controllers/modals/txpDetails.js:165 -msgid "Are you sure you want to remove this transaction?" -msgstr "Sei sicuro di voler rimuovere questa transazione?" - -#: src/js/controllers/onboarding/backupRequest.js:23 -msgid "Are you sure you want to skip it?" -msgstr "Sei sicuro di voler saltare?" - -#: www/views/modals/bitpay-card-confirmation.html:4 -msgid "Are you sure you would like to log out of your BitPay Card account?" -msgstr "Sei sicuro che vuoi uscire dal tuo account BitPay Card?" - -#: src/js/controllers/preferencesBitpayCard.js:7 -#: src/js/controllers/preferencesBitpayServices.js:20 -msgid "Are you sure you would like to remove your BitPay Card ({{lastFourDigits}}) from this device?" -msgstr "Sei certo di volere rimuovere la tua BitPay Card ({{lastFourDigits}}) da questo dispositivo?" - -#: www/views/includes/walletInfo.html:5 -msgid "Auditable" -msgstr "Controllabile" - -#: www/views/modals/wallet-balance.html:42 -msgid "Available" -msgstr "Disponibile" - -#: www/views/includes/available-balance.html:3 -msgid "Available Balance" -msgstr "Saldo disponibile" - -#: www/views/modals/chooseFeeLevel.html:24 -#: www/views/preferencesFee.html:15 -msgid "Average confirmation time" -msgstr "Tempo previsto per la conferma" - -#: www/views/join.html:140 -#: www/views/tab-create-personal.html:111 -#: www/views/tab-create-shared.html:140 -#: www/views/tab-import-phrase.html:48 -msgid "BIP32 path for address derivation" -msgstr "Percorso BIP32 per generare l'indirizzo" - -#: www/views/preferences.html:34 -msgid "Backup" -msgstr "Backup" - -#: www/views/includes/backupNeededPopup.html:7 -msgid "Backup Needed" -msgstr "Backup necessario" - -#: src/js/controllers/lockSetup.js:87 -msgid "Backup all livenet wallets before using this function" -msgstr "Fai un backup di tutti i portafogli sulla livenet prima di utilizzare questa funzione" - -#: www/views/preferences.html:36 -#: www/views/tab-settings.html:120 -msgid "Backup needed" -msgstr "Backup necessario" - -#: www/views/includes/backupNeededPopup.html:9 -msgid "Backup now" -msgstr "Esegui backup ora" - -#: www/views/onboarding/backupRequest.html:11 -#: www/views/tab-export-file.html:89 -msgid "Backup wallet" -msgstr "Backup portafoglio" - -#: src/js/controllers/lockSetup.js:84 -msgid "Backup your wallet before using this function" -msgstr "Eseguire il backup del tuo portafoglio prima di utilizzare questa funzione" - -#: src/js/services/profileService.js:430 -msgid "Bad wallet invitation" -msgstr "Invito al wallet non corretto" - -#: www/views/preferencesInformation.html:96 -msgid "Balance By Address" -msgstr "Bilancio per indirizzo" - -#: www/views/includes/confirmBackupPopup.html:7 -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 "Assicurati di salvare la frase di recupero in un luogo sicuro. Senza di essa, se rimuovi questa applicazione il tuo denaro non potrà essere recuperato." - -#: www/views/preferencesBitpayServices.html:9 -msgid "BitPay Visa® Cards" -msgstr "Carte di BitPay Visa®" - -#: www/views/addressbook.add.html:38 -#: www/views/includes/incomingDataMenu.html:29 -msgid "Bitcoin Address" -msgstr "Indirizzo Bitcoin" - -#: www/views/modals/chooseFeeLevel.html:4 -#: www/views/preferencesFee.html:4 -#: www/views/tab-settings.html:85 -msgid "Bitcoin Network Fee Policy" -msgstr "Criterio delle Commissioni del Bitcoin Network" - -#: www/views/tab-settings.html:63 -msgid "Bitcoin Unit" -msgstr "Unità di Bitcoin" - -#: www/views/onboarding/tour.html:31 -msgid "Bitcoin is a currency." -msgstr "Bitcoin è una moneta." - -#: www/views/onboarding/disclaimer.html:15 -msgid "Bitcoin is different – it cannot be safely held with a bank or web service." -msgstr "Bitcoin è differente e non può essere custodito in una banca o con un servizio web." - -#: www/views/onboarding/tour.html:18 -msgid "Bitcoin is secure,
digital money." -msgstr "Bitcoin è sicuro,
moneta digitale." - -#: www/views/preferencesFee.html:11 -msgid "Bitcoin transactions include a fee collected by miners on the network." -msgstr "Le transazioni Bitcoin comprendono un supplemento che viene raccolto dai mines nella rete." - -#: www/views/buyAmazon.html:108 -msgid "Bought {{amountUnitStr}}" -msgstr "" - -#: www/views/modals/txp-details.html:36 -msgid "Broadcast Payment" -msgstr "Diffusione del Pagamento" - -#: src/js/controllers/modals/txpDetails.js:58 -#: src/js/controllers/tx-details.js:64 -msgid "Broadcasted" -msgstr "Trasmesso" - -#: src/js/services/onGoingProcess.js:11 -msgid "Broadcasting transaction" -msgstr "Diffondendo la transazione" - -#: www/views/unsupported.html:6 -msgid "Browser unsupported" -msgstr "Browser non supportato" - -#: www/views/buyAmazon.html:5 -msgid "Buy" -msgstr "" - -#: www/views/includes/buyAndSellCard.html:3 -msgid "Buy & Sell Bitcoin" -msgstr "Comprare & Vendere Bitcoin" - -#: www/views/tab-send.html:35 -msgid "Buy Bitcoin" -msgstr "Acquista Bitcoin" - -#: src/js/controllers/buyAmazon.js:332 -msgid "Buy from" -msgstr "" - -#: src/js/services/onGoingProcess.js:40 -msgid "Buying Bitcoin..." -msgstr "Comprare Bitcoin..." - -#: src/js/services/onGoingProcess.js:12 -msgid "Calculating fee" -msgstr "Calcolo commissione" - -#: src/js/controllers/buyAmazon.js:311 -#: src/js/controllers/confirm.js:495 -#: src/js/controllers/topup.js:285 -#: src/js/services/popupService.js:62 -#: src/js/services/popupService.js:73 -#: www/views/addressbook.add.html:10 -#: www/views/feedback/send.html:5 -#: www/views/includes/incomingDataMenu.html:22 -#: www/views/includes/incomingDataMenu.html:54 -#: www/views/includes/incomingDataMenu.html:73 -#: www/views/includes/incomingDataMenu.html:97 -#: www/views/includes/note.html:6 -#: www/views/modals/bitpay-card-confirmation.html:8 -#: www/views/modals/confirmation.html:13 -msgid "Cancel" -msgstr "Annulla" - -#: www/views/copayers.html:36 -msgid "Cancel invitation" -msgstr "Annulla invito" - -#: src/js/controllers/onboarding/tour.js:52 -msgid "Cannot Create Wallet" -msgstr "Impossibile creare portafoglio" - -#: src/js/services/profileService.js:426 -msgid "Cannot join the same wallet more that once" -msgstr "Non è possibile aggiungere un portafoglio più di una volta" - -#: www/views/includes/bitpayCardsCard.html:2 -msgid "Cards" -msgstr "Carte" - -#: www/views/modals/paypro.html:30 -msgid "Certified by" -msgstr "Certificato da" - -#: www/views/preferencesExternal.html:19 -msgid "Check installation and retry." -msgstr "Verifica installazione e riprovare." - -#: www/views/tab-import-file.html:4 -msgid "Choose a backup file from your computer" -msgstr "Seleziona un file di backup dal tuo computer" - -#: www/views/modals/wallets.html:9 -msgid "Choose your destination wallet" -msgstr "Scegli il tuo portafoglio di destinazione" - -#: www/views/modals/wallets.html:10 -msgid "Choose your source wallet" -msgstr "Scegli il tuo portafoglio di origine" - -#: www/views/backup.html:54 -msgid "Clear" -msgstr "Elimina" - -#: www/views/preferencesHistory.html:24 -msgid "Clear cache" -msgstr "Svuota la cache" - -#: src/js/controllers/modals/txpDetails.js:34 -msgid "Click" -msgstr "Click" - -#: www/views/customAmount.html:4 -#: www/views/modals/paypro.html:4 -#: www/views/modals/pin.html:3 -#: www/views/modals/search.html:3 -#: www/views/modals/wallet-balance.html:3 -#: www/views/modals/wallets.html:5 -msgid "Close" -msgstr "Chiudi" - -#: www/views/preferences.html:22 -msgid "Color" -msgstr "Colore" - -#: www/views/preferencesAbout.html:21 -msgid "Commit hash" -msgstr "Commit hash" - -#: www/views/preferences.html:48 -msgid "Complete the backup process to use this option" -msgstr "Completare il processo di backup per utilizzare questa opzione" - -#: www/views/bitpayCard.html:93 -msgid "Completed" -msgstr "Completato" - -#: src/js/controllers/buyAmazon.js:309 -#: src/js/controllers/confirm.js:494 -#: src/js/controllers/copayers.js:55 -#: src/js/controllers/topup.js:283 -#: www/views/backup.html:53 -#: www/views/backup.html:72 -#: www/views/confirm.html:4 -#: www/views/onboarding/collectEmail.html:32 -msgid "Confirm" -msgstr "Conferma" - -#: www/views/modals/terms.html:26 -#: www/views/onboarding/disclaimer.html:44 -msgid "Confirm & Finish" -msgstr "Confirm & concludi" - -#: www/views/buyAmazon.html:90 -msgid "Confirm purchase" -msgstr "" - -#: www/views/modals/pin.html:10 -msgid "Confirm your PIN" -msgstr "Conferma il tuo PIN" - -#: src/js/services/walletService.js:1034 -msgid "Confirm your new spending password" -msgstr "Conferma la tua nuova password di spesa" - -#: www/views/tx-details.html:98 -msgid "Confirmations" -msgstr "Conferme" - -#: www/views/bitpayCard.html:68 -#: www/views/modals/wallet-balance.html:61 -msgid "Confirming" -msgstr "Confermando" - -#: www/views/bitpayCardIntro.html:37 -msgid "Connect my BitPay Card" -msgstr "Collegare la mia Carta BitPay" - -#: src/js/services/onGoingProcess.js:13 -msgid "Connecting to Coinbase..." -msgstr "Connessione a Coinbase..." - -#: src/js/services/onGoingProcess.js:14 -msgid "Connecting to Glidera..." -msgstr "Connessione a Glidera..." - -#: src/js/services/bwcError.js:53 -msgid "Connection reset by peer" -msgstr "Connessione ripristinata dall'utente" - -#: www/views/tab-send.html:45 -msgid "Contacts" -msgstr "Contatti" - -#: www/views/onboarding/notifications.html:9 -msgid "Continue" -msgstr "Continua" - -#: www/views/preferencesLanguage.html:26 -msgid "Contribute Translations" -msgstr "Contribuisci alle traduzioni" - -#: src/js/services/bwcError.js:62 -msgid "Copayer already in this wallet" -msgstr "Copayer già in questo portafoglio" - -#: src/js/services/bwcError.js:77 -msgid "Copayer already voted on this spend proposal" -msgstr "Copayer già votato su questa proposta" - -#: src/js/services/bwcError.js:107 -msgid "Copayer data mismatch" -msgstr "Mancata corrispondenza dei dati del copayer" - -#: www/views/includes/walletActivity.html:2 -msgid "Copayer joined" -msgstr "Copayer iscritto" - -#: www/views/preferencesInformation.html:88 -msgid "Copayer {{$index}}" -msgstr "Copayer {{$index}}" - -#: src/js/controllers/copayers.js:79 -#: src/js/controllers/export.js:193 -#: www/views/includes/copyToClipboard.html:4 -msgid "Copied to clipboard" -msgstr "Copiato negli appunti" - -#: www/views/tab-export-file.html:94 -msgid "Copy this text as it is to a safe place (notepad or email)" -msgstr "Copia questo testo cosí com'è in un posto sicuro (blocco note o email)" - -#: www/views/includes/incomingDataMenu.html:51 -#: www/views/includes/incomingDataMenu.html:70 -#: www/views/includes/incomingDataMenu.html:94 -#: www/views/preferencesLogs.html:10 -#: www/views/tab-export-file.html:78 -msgid "Copy to clipboard" -msgstr "Copia negli appunti" - -#: www/views/tab-import-phrase.html:2 -msgid "Could not access the wallet at the server. Please check:" -msgstr "Non può accedere al portafoglio sul server. Si prega di controllare:" - -#: src/js/controllers/buyAmazon.js:101 -msgid "Could not access to Amazon.com" -msgstr "" - -#: src/js/services/profileService.js:493 -msgid "Could not access wallet" -msgstr "Impossibile accedere al portafoglio" - -#: src/js/controllers/confirm.js:185 -msgid "Could not add message to imported wallet without shared encrypting key" -msgstr "Non puoi aggiungere un messaggio da importare nel portafoglio senza condividere la chiave criptata" - -#: src/js/controllers/modals/txpDetails.js:193 -msgid "Could not broadcast payment" -msgstr "Impossibile trasmettere il pagamento" - -#: src/js/services/bwcError.js:41 -msgid "Could not build transaction" -msgstr "Non è possibile generare la transazione" - -#: src/js/services/walletService.js:857 -msgid "Could not create address" -msgstr "Impossibile creare un indirizzo" - -#: src/js/controllers/topup.js:91 -msgid "Could not create the invoice" -msgstr "" - -#: src/js/controllers/buyAmazon.js:163 -#: src/js/controllers/topup.js:141 -msgid "Could not create transaction" -msgstr "Non è possibile creare la transazione" - -#: src/js/services/profileService.js:342 -msgid "Could not create using the specified extended private key" -msgstr "Non posso crearlo utilizzando la chiave privata estesa specificata" - -#: src/js/services/profileService.js:353 -msgid "Could not create using the specified extended public key" -msgstr "Non è possibile creare usando questa chiave estesa pubblica" - -#: src/js/services/profileService.js:335 -msgid "Could not create: Invalid wallet recovery phrase" -msgstr "Impossibile creare: Frase di recupero portafoglio non valida" - -#: src/js/controllers/import.js:99 -msgid "Could not decrypt file, check your password" -msgstr "Impossibile decifrare il file, controlla la tua password" - -#: src/js/controllers/modals/txpDetails.js:175 -msgid "Could not delete payment proposal" -msgstr "Impossibile eliminare la proposta di pagamento" - -#: src/js/services/feeService.js:72 -msgid "Could not get dynamic fee" -msgstr "Impossibile avere commissioni dinamiche" - -#: src/js/services/feeService.js:42 -msgid "Could not get dynamic fee for level: {{feeLevel}}" -msgstr "Impossibile avere la commissione per il livello: {{feeLevel}}" - -#: src/js/controllers/modals/feeLevels.js:113 -msgid "Could not get fee levels" -msgstr "" - -#: src/js/controllers/buyAmazon.js:121 -#: src/js/controllers/topup.js:99 -msgid "Could not get the invoice" -msgstr "" - -#: src/js/controllers/bitpayCard.js:66 -msgid "Could not get transactions" -msgstr "Non è possibile ottenere le transazioni" - -#: src/js/services/profileService.js:595 -#: src/js/services/profileService.js:629 -#: src/js/services/profileService.js:652 -msgid "Could not import" -msgstr "Impossibile importare" - -#: src/js/services/profileService.js:564 -msgid "Could not import. Check input file and spending password" -msgstr "Impossibile importare. Controlla il file da importare e la password di spesa" - -#: src/js/services/profileService.js:439 -msgid "Could not join wallet" -msgstr "Impossibile partecipare al portafoglio" - -#: src/js/controllers/modals/txpDetails.js:155 -msgid "Could not reject payment" -msgstr "Impossibile rifiutare il pagamento" - -#: src/js/controllers/preferencesBitpayServices.js:33 -msgid "Could not remove account" -msgstr "Rimozione account non riuscita" - -#: src/js/controllers/preferencesBitpayCard.js:20 -#: src/js/controllers/preferencesBitpayServices.js:50 -msgid "Could not remove card" -msgstr "Impossibile rimuovere la carta" - -#: src/js/services/walletService.js:776 -msgid "Could not save preferences on the server" -msgstr "Impossibile salvare le preferenze nel server" - -#: src/js/controllers/modals/txpDetails.js:141 -msgid "Could not send payment" -msgstr "Impossibile inviare il pagamento" - -#: src/js/controllers/buyAmazon.js:323 -#: src/js/controllers/topup.js:297 -msgid "Could not send transaction" -msgstr "" - -#: www/views/walletDetails.html:199 -msgid "Could not update transaction history" -msgstr "Impossibile aggiornare la cronologia delle transazioni" - -#: src/js/controllers/addresses.js:34 -#: src/js/controllers/addresses.js:42 -#: src/js/controllers/copayers.js:30 -#: src/js/controllers/walletDetails.js:78 -msgid "Could not update wallet" -msgstr "Impossibile aggiornare il portafoglio" - -#: www/views/tab-create-personal.html:3 -msgid "Create Personal Wallet" -msgstr "Creare il portafoglio personale" - -#: www/views/tab-create-shared.html:3 -msgid "Create Shared Wallet" -msgstr "Creare portafoglio condiviso" - -#: www/views/onboarding/tour.html:51 -#: www/views/tab-home.html:77 -#: www/views/tab-send.html:36 -msgid "Create bitcoin wallet" -msgstr "Creare portafoglio bitcoin" - -#: www/views/tab-create-personal.html:129 -msgid "Create new wallet" -msgstr "Crea nuovo portafoglio" - -#: www/views/add.html:22 -msgid "Create shared wallet" -msgstr "Creare portafoglio condiviso" - -#: www/views/tab-create-shared.html:158 -msgid "Create {{formData.requiredCopayers}}-of-{{formData.totalCopayers}} wallet" -msgstr "Creare il portafoglio di {{formData.requiredCopayers}}-di-{{formData.totalCopayers}}" - -#: www/views/modals/txp-details.html:83 -#: www/views/tx-details.html:62 -msgid "Created by" -msgstr "Creato da" - -#: src/js/services/onGoingProcess.js:18 -msgid "Creating Wallet..." -msgstr "Creazione Portafoglio..." - -#: src/js/services/onGoingProcess.js:17 -msgid "Creating transaction" -msgstr "Creazione transazione" - -#: www/views/modals/chooseFeeLevel.html:34 -#: www/views/preferencesFee.html:20 -msgid "Current fee rate for this policy" -msgstr "Attuale commissione con questa politica" - -#: src/js/services/feeService.js:15 -msgid "Custom" -msgstr "" - -#: www/views/customAmount.html:9 -msgid "Custom Amount" -msgstr "Importo personalizzato" - -#: src/js/controllers/preferencesFee.js:84 -msgid "Custom Fee" -msgstr "" - -#: www/views/modals/txp-details.html:89 -#: www/views/tx-details.html:68 -msgid "Date" -msgstr "Data" - -#: www/views/preferencesDeleteWallet.html:21 -msgid "Delete" -msgstr "Elimina" - -#: www/views/modals/txp-details.html:166 -msgid "Delete Payment Proposal" -msgstr "Elimina Proposta di Pagamento" - -#: www/views/preferencesAdvanced.html:33 -#: www/views/preferencesDeleteWallet.html:3 -msgid "Delete Wallet" -msgstr "Elimina Portafoglio" - -#: www/views/copayers.html:59 -msgid "Delete it and create a new one" -msgstr "Eliminalo e creane uno nuovo" - -#: src/js/services/onGoingProcess.js:19 -msgid "Deleting Wallet..." -msgstr "Eliminazione del portafoglio..." - -#: src/js/services/onGoingProcess.js:28 -msgid "Deleting payment proposal" -msgstr "Cancello la richiesta di pagamento" - -#: www/views/join.html:138 -#: www/views/tab-create-personal.html:109 -#: www/views/tab-create-shared.html:138 -#: www/views/tab-import-phrase.html:46 -msgid "Derivation Path" -msgstr "Percorso derivato" - -#: www/views/preferencesInformation.html:41 -msgid "Derivation Strategy" -msgstr "Strategia di derivazione" - -#: www/views/buyAmazon.html:39 -#: www/views/topup.html:45 -msgid "Details" -msgstr "Dettagli" - -#: src/js/controllers/lockSetup.js:9 -#: src/js/controllers/tab-settings.js:60 -msgid "Disabled" -msgstr "Disabilitato" - -#: www/views/includes/backupNeededPopup.html:10 -#: www/views/onboarding/backupRequest.html:12 -msgid "Do it later" -msgstr "Farlo in seguito" - -#: www/views/tab-export-file.html:29 -msgid "Do not include private key" -msgstr "Non includere la chiave privata" - -#: www/views/preferencesLanguage.html:21 -msgid "Don't see your language on Crowdin? Contact the Owner on Crowdin! We'd love to support your language." -msgstr "Non vedi la tua lingua su Crowdin? Contatta il proprietario su Crowdin! Ci piacerebbe supportare la lingua." - -#: www/views/tab-export-file.html:59 -#: www/views/tab-home.html:22 -msgid "Download" -msgstr "Download" - -#: www/views/addresses.html:19 -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 "Ogni portafoglio bitcoin è in grado di generare miliardi di indirizzi dal tuo backup di 12 parole. Un nuovo indirizzo verrà automaticamente generato e mostrato ogni volta che riceverai un pagamento." - -#: src/js/services/feeService.js:13 -msgid "Economy" -msgstr "Economia" - -#: www/views/onboarding/collectEmail.html:27 -msgid "Edit" -msgstr "Modifica" - -#: www/views/addressbook.add.html:29 -#: www/views/addressbook.view.html:22 -msgid "Email" -msgstr "Email" - -#: www/views/preferencesNotifications.html:42 -msgid "Email Address" -msgstr "Indirizzo Email" - -#: src/js/services/bwcError.js:122 -msgid "Empty addresses limit reached. New addresses cannot be generated." -msgstr "Raggiunto il limite degli indirizzi vuoti. Non possono essere generati nuovi indirizzi." - -#: www/views/tab-scan.html:19 -msgid "Enable camera access in your device settings to get started." -msgstr "Abilita l'accesso alla fotocamera dalle impostazioni del tuo dispositivo per iniziare." - -#: www/views/preferencesNotifications.html:29 -msgid "Enable email notifications" -msgstr "Attiva Notifiche Email" - -#: www/views/preferencesNotifications.html:12 -msgid "Enable push notifications" -msgstr "Abilitare le notifiche push" - -#: www/views/tab-scan.html:18 -msgid "Enable the camera to get started." -msgstr "Abilita la fotocamera per iniziare." - -#: www/views/amount.html:4 -msgid "Enter Amount" -msgstr "Inserisci importo" - -#: src/js/services/walletService.js:1048 -#: src/js/services/walletService.js:1063 -msgid "Enter Spending Password" -msgstr "Inserisci Password di spesa" - -#: src/js/services/bitpayAccountService.js:110 -msgid "Enter Two Factor for your BitPay account" -msgstr "Inserisci Due Fattori per il tuo account BitPay" - -#: www/views/modals/chooseFeeLevel.html:41 -msgid "Enter custom fee" -msgstr "" - -#: src/js/services/walletService.js:1030 -msgid "Enter new spending password" -msgstr "Inserisci la nuova password di spesa" - -#: www/views/join.html:76 -#: www/views/tab-create-personal.html:49 -#: www/views/tab-create-shared.html:78 -msgid "Enter the recovery phrase (BIP39)" -msgstr "Inserire la frase di recupero (BIP39)" - -#: www/views/onboarding/collectEmail.html:13 -msgid "Enter your email" -msgstr "Inserisci la tua e-mail" - -#: www/views/backup.html:62 -msgid "Enter your password" -msgstr "Inserisci la tua password" - -#. Trying to import a malformed wallet export QR code -#: src/js/controllers/activity.js:45 -#: src/js/controllers/addressbookAdd.js:30 -#: src/js/controllers/addressbookView.js:29 -#: src/js/controllers/addresses.js:130 -#: src/js/controllers/addresses.js:131 -#: src/js/controllers/bitpayCard.js:66 -#: src/js/controllers/bitpayCardIntro.js:40 -#: src/js/controllers/bitpayCardIntro.js:81 -#: src/js/controllers/buyAmazon.js:23 -#: src/js/controllers/buyAmazon.js:34 -#: src/js/controllers/confirm.js:276 -#: src/js/controllers/copayers.js:67 -#: src/js/controllers/create.js:155 -#: src/js/controllers/create.js:168 -#: src/js/controllers/create.js:175 -#: src/js/controllers/create.js:197 -#: src/js/controllers/create.js:204 -#: src/js/controllers/create.js:222 -#: src/js/controllers/export.js:109 -#: src/js/controllers/export.js:115 -#: src/js/controllers/export.js:126 -#: src/js/controllers/export.js:154 -#: src/js/controllers/export.js:160 -#: src/js/controllers/export.js:171 -#: src/js/controllers/export.js:47 -#: src/js/controllers/export.js:53 -#: src/js/controllers/feedback/send.js:23 -#: src/js/controllers/import.js:104 -#: src/js/controllers/import.js:116 -#: src/js/controllers/import.js:134 -#: src/js/controllers/import.js:185 -#: src/js/controllers/import.js:213 -#: src/js/controllers/import.js:222 -#: src/js/controllers/import.js:237 -#: src/js/controllers/import.js:249 -#: src/js/controllers/import.js:260 -#: src/js/controllers/import.js:270 -#: src/js/controllers/import.js:294 -#: src/js/controllers/import.js:307 -#: src/js/controllers/import.js:317 -#: src/js/controllers/import.js:327 -#: src/js/controllers/import.js:351 -#: src/js/controllers/import.js:364 -#: src/js/controllers/import.js:70 -#: src/js/controllers/import.js:83 -#: src/js/controllers/join.js:121 -#: src/js/controllers/join.js:135 -#: src/js/controllers/join.js:142 -#: src/js/controllers/join.js:165 -#: src/js/controllers/join.js:173 -#: src/js/controllers/join.js:191 -#: src/js/controllers/modals/feeLevels.js:10 -#: src/js/controllers/modals/txpDetails.js:134 -#: src/js/controllers/paperWallet.js:47 -#: src/js/controllers/preferencesBitpayCard.js:20 -#: src/js/controllers/preferencesBitpayServices.js:33 -#: src/js/controllers/preferencesBitpayServices.js:50 -#: src/js/controllers/preferencesDelete.js:37 -#: src/js/controllers/preferencesExternal.js:20 -#: src/js/controllers/tab-home.js:174 -#: src/js/controllers/tab-send.js:132 -#: src/js/controllers/tabsController.js:36 -#: src/js/controllers/tabsController.js:7 -#: src/js/controllers/topup.js:20 -#: src/js/controllers/topup.js:31 -#: src/js/controllers/tx-details.js:102 -#: src/js/services/incomingData.js:98 -msgid "Error" -msgstr "Errore" - -#: src/js/controllers/confirm.js:447 -msgid "Error at confirm" -msgstr "Errore di conferma" - -#: src/js/controllers/buyAmazon.js:178 -msgid "Error creating gift card" -msgstr "" - -#: src/js/controllers/buyAmazon.js:93 -msgid "Error creating the invoice" -msgstr "" - -#: src/js/services/profileService.js:396 -msgid "Error creating wallet" -msgstr "Errore creazione portafoglio" - -#: src/js/controllers/confirm.js:266 -msgid "Error getting SendMax information" -msgstr "" - -#: src/js/controllers/buyAmazon.js:135 -#: src/js/controllers/topup.js:113 -msgid "Error in Payment Protocol" -msgstr "Errore nel protocollo di pagamento" - -#: src/js/controllers/bitpayCardIntro.js:14 -msgid "Error pairing BitPay Account" -msgstr "Errore di accoppiamento BitPay Account" - -#: src/js/controllers/paperWallet.js:41 -msgid "Error scanning funds:" -msgstr "Errore di scansione dei fondi:" - -#: src/js/controllers/paperWallet.js:91 -msgid "Error sweeping wallet:" -msgstr "Errore nello spazzolamento del portafoglio:" - -#: src/js/controllers/bitpayCardIntro.js:20 -msgid "Error updating Debit Cards" -msgstr "Errore durante l'aggiornamento delle carte di debito" - -#: src/js/services/bwcError.js:143 -msgid "Exceeded daily limit of $500 per user" -msgstr "Superato il limite giornaliero di $500 per utente" - -#: src/js/controllers/confirm.js:411 -#: www/views/confirm.html:27 -#: www/views/modals/txp-details.html:121 -msgid "Expired" -msgstr "Scaduta" - -#: www/views/modals/paypro.html:54 -#: www/views/modals/txp-details.html:127 -msgid "Expires" -msgstr "Scadenza" - -#: www/views/preferencesAdvanced.html:21 -msgid "Export Wallet" -msgstr "Esporta portafoglio" - -#: www/views/preferencesHistory.html:11 -#: www/views/preferencesHistory.html:14 -msgid "Export to file" -msgstr "Esporta in un file" - -#: www/views/export.html:3 -msgid "Export wallet" -msgstr "Esporta portafoglio" - -#: src/js/services/walletService.js:1175 -#: www/views/tab-export-qrCode.html:9 -msgid "Exporting via QR not supported for this wallet" -msgstr "Per questo portafoglio non è supportata l'esportazione tramite QR" - -#: www/views/preferencesInformation.html:83 -msgid "Extended Public Keys" -msgstr "Chiave pubblica estesa" - -#: src/js/services/onGoingProcess.js:20 -msgid "Extracting Wallet information..." -msgstr "" - -#: src/js/controllers/export.js:115 -#: src/js/controllers/export.js:126 -#: src/js/controllers/export.js:160 -#: src/js/controllers/export.js:171 -#: www/views/tab-export-file.html:4 -msgid "Failed to export" -msgstr "Esportazione non riuscita" - -#: www/views/tab-create-personal.html:14 -#: www/views/tab-create-shared.html:14 -msgid "Family vacation funds" -msgstr "Fondi vacanza di famiglia" - -#: www/views/tx-details.html:81 -msgid "Fee" -msgstr "Tassa" - -#: www/views/modals/chooseFeeLevel.html:73 -msgid "Fee level" -msgstr "" - -#: src/js/controllers/modals/feeLevels.js:101 -msgid "Fee level is not defined" -msgstr "" - -#: www/views/confirm.html:81 -#: www/views/modals/txp-details.html:101 -msgid "Fee:" -msgstr "Commissione:" - -#: src/js/controllers/feedback/send.js:23 -msgid "Feedback could not be submitted. Please try again later." -msgstr "Il feedback non può essere sottoscritto. Riprova più tardi." - -#: src/js/services/onGoingProcess.js:42 -msgid "Fetching BitPay Account..." -msgstr "Recupero Account BitPay..." - -#: src/js/services/onGoingProcess.js:21 -msgid "Fetching payment information" -msgstr "" - -#: www/views/export.html:14 -#: www/views/import.html:16 -msgid "File/Text" -msgstr "File/Testo" - -#: src/js/services/fingerprintService.js:43 -#: src/js/services/fingerprintService.js:48 -msgid "Finger Scan Failed" -msgstr "Scansione dito fallita" - -#: src/js/controllers/feedback/send.js:34 -#: www/views/feedback/complete.html:7 -msgid "Finish" -msgstr "Fine" - -#: www/views/tab-create-personal.html:121 -#: www/views/tab-create-shared.html:150 -msgid "For audit purposes" -msgstr "Per finalità di controllo" - -#: src/js/controllers/topup.js:306 -#: www/views/buyAmazon.html:29 -#: www/views/confirm.html:65 -#: www/views/modals/txp-details.html:74 -#: www/views/topup.html:34 -#: www/views/tx-details.html:52 -msgid "From" -msgstr "Da" - -#: src/js/controllers/bitpayCardIntro.js:71 -msgid "From BitPay account" -msgstr "Dal conto BitPay" - -#: www/views/tab-import-phrase.html:54 -msgid "From Hardware Wallet" -msgstr "Dal portafoglio Hardware" - -#: www/views/tab-export-qrCode.html:5 -msgid "From the destination device, go to Add wallet > Import wallet and scan this QR code" -msgstr "Dal dispositivo di destinazione, andare in Aggiungi portafoglio > Importare portafoglio e scansionare questo codice QR" - -#: src/js/services/bwcError.js:74 -msgid "Funds are locked by pending spend proposals" -msgstr "I fondi sono bloccati in attesa della proposta di pagamento" - -#: www/views/paperWallet.html:16 -msgid "Funds found:" -msgstr "Fondi trovati:" - -#: www/views/topup.html:49 -msgid "Funds to be added" -msgstr "Fondi da aggiungere" - -#: www/views/paperWallet.html:53 -msgid "Funds transferred" -msgstr "Fondi trasferiti" - -#: www/views/topup.html:103 -msgid "Funds were added to debit card" -msgstr "I fondi sono stati aggiunti alla carta di debito" - -#: www/views/paperWallet.html:22 -msgid "Funds will be transferred to" -msgstr "I fondi saranno trasferiti a" - -#: www/views/tab-receive.html:51 -msgid "Generate new address" -msgstr "Genera un nuovo indirizzo" - -#: src/js/services/onGoingProcess.js:22 -msgid "Generating .csv file..." -msgstr "Genera un file .csv..." - -#: src/js/services/onGoingProcess.js:37 -msgid "Generating new address..." -msgstr "Generando un nuovo indirizzo..." - -#: www/views/bitpayCardIntro.html:23 -msgid "Get local cash anywhere you go, from any Visa® compatible ATM. ATM bank fees may apply." -msgstr "Ottieni contante locale ovunque tu vada, da qualsiasi ATM bancomat compatibile con Visa®. Possibili commissioni bancarie da ATM." - -#: www/views/onboarding/collectEmail.html:15 -msgid "Get news and updates from BitPay" -msgstr "Ricevi notizie e aggiornamenti da BitPay" - -#: www/views/bitpayCard.html:49 -#: www/views/onboarding/welcome.html:8 -msgid "Get started" -msgstr "Inizia" - -#: www/views/addressbook.html:20 -msgid "Get started by adding your first one." -msgstr "Inizia aggiungendo il tuo primo." - -#: src/js/services/onGoingProcess.js:23 -msgid "Getting fee levels..." -msgstr "Ottenendo i livelli di commissione..." - -#: www/views/buyAmazon.html:43 -msgid "Gift card" -msgstr "" - -#: src/js/controllers/buyAmazon.js:203 -msgid "Gift card expired" -msgstr "" - -#: www/views/buyAmazon.html:111 -msgid "Gift card generated and ready to use." -msgstr "" - -#: src/js/controllers/bitpayCard.js:114 -#: src/js/controllers/bitpayCard.js:124 -#: 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:149 -#: src/js/controllers/tab-settings.js:48 -#: src/js/controllers/tx-details.js:176 -msgid "Go Back" -msgstr "Indietro" - -#: src/js/controllers/onboarding/backupRequest.js:20 -#: src/js/controllers/onboarding/backupRequest.js:26 -#: src/js/services/bitpayAccountService.js:84 -msgid "Go back" -msgstr "Indietro" - -#: www/views/backupWarning.html:15 -#: www/views/includes/confirmBackupPopup.html:8 -#: www/views/onboarding/tour.html:23 -msgid "Got it" -msgstr "Ok" - -#: www/views/preferencesInformation.html:47 -#: www/views/preferencesInformation.html:53 -msgid "Hardware Wallet" -msgstr "Portafoglio Hardware" - -#: www/views/preferencesExternal.html:18 -msgid "Hardware not connected." -msgstr "Hardware non collegato." - -#: www/views/import.html:20 -msgid "Hardware wallet" -msgstr "Portafoglio hardware" - -#: www/views/tab-settings.html:20 -msgid "Help & Support" -msgstr "Aiuto e Assistenza" - -#: src/js/controllers/bitpayCard.js:112 -#: src/js/controllers/tab-settings.js:46 -msgid "Help and support information is available at the website." -msgstr "Guida e informazioni di supporto tecnico sono disponibili sul sito web." - -#: www/views/addresses.html:25 -msgid "Hide" -msgstr "Nascondere" - -#: www/views/preferences.html:27 -msgid "Hide Balance" -msgstr "Nascondere saldo" - -#: www/views/advancedSettings.html:29 -msgid "Hide Next Steps Card" -msgstr "Nascondere le successive procedure per la carta" - -#: www/views/join.html:46 -#: www/views/tab-create-personal.html:26 -#: www/views/tab-create-shared.html:55 -#: www/views/tab-export-file.html:25 -#: www/views/tab-import-file.html:28 -#: www/views/tab-import-hardware.html:31 -#: www/views/tab-import-phrase.html:33 -msgid "Hide advanced options" -msgstr "Nascondi opzioni avanzate" - -#: www/views/tabs.html:3 -msgid "Home" -msgstr "Home" - -#: src/js/controllers/feedback/send.js:61 -#: src/js/controllers/feedback/send.js:65 -#: src/js/controllers/feedback/send.js:69 -msgid "How could we improve your experience?" -msgstr "Come potremmo migliorare la tua esperienza?" - -#: www/views/feedback/rateCard.html:3 -msgid "How do you like {{appName}}?" -msgstr "Come ti piace {{appName}}?" - -#: src/js/controllers/feedback/rateCard.js:29 -msgid "I don't like it" -msgstr "Non mi piace" - -#: www/views/onboarding/disclaimer.html:43 -msgid "I have read, understood, and agree to the Terms of Use." -msgstr "Ho letto, compreso, e sono d'accordo con Condizioni d'uso." - -#: www/views/modals/terms.html:22 -msgid "I have read, understood, and agree with the Terms of use." -msgstr "Ho letto, compreso, e sono d'accordo con le Condizioni d'uso." - -#: www/views/join.html:134 -#: www/views/tab-create-personal.html:105 -#: www/views/tab-create-shared.html:134 -msgid "I have written it down" -msgstr "L'ho scritto" - -#: src/js/controllers/feedback/rateCard.js:35 -msgid "I like the app" -msgstr "Mi piace l'app" - -#: src/js/controllers/feedback/rateCard.js:26 -msgid "I think this app is terrible." -msgstr "Penso che questa app sia terribile." - -#: src/js/controllers/onboarding/backupRequest.js:19 -#: www/views/includes/screenshotWarningModal.html:9 -msgid "I understand" -msgstr "Ho capito" - -#: www/views/onboarding/disclaimer.html:21 -msgid "I understand that if this app is moved to another device or deleted, my bitcoin can only be recovered with the backup phrase." -msgstr "Ho compreso che se questa app sarà trasferita ad un altro dispositivo o cancellata, i miei bitcoin potranno essere recuperati solo tramite il backup phrase." - -#: www/views/onboarding/disclaimer.html:18 -msgid "I understand that my funds are held securely on this device, not by a company." -msgstr "Ho capito che i miei fondi sono custoditi in sicurezza in questa dispositivo, non da un'azienda." - -#: www/views/backup.html:29 -msgid "I've written it down" -msgstr "L'ho scritto" - -#: www/views/preferences.html:45 -msgid "If enabled, all sensitive information (private key and recovery phrase) and actions (spending and exporting) associated with this wallet will be protected." -msgstr "Se attivata, tutte le informazioni sensibili (chiavi private e recupero della passhphrase) e azioni (spesa ed esportazione) associate a questo portafoglio saranno protette." - -#: www/views/advancedSettings.html:22 -msgid "If enabled, the Recent Transactions card - a list of transactions occuring across all wallets - will appear in the Home tab." -msgstr "Se abilitata, la scheda delle Transazioni Recenti - una lista di transazioni che avvengono attraverso tutti i portafogli - apparirà nella scheda Home." - -#: www/views/advancedSettings.html:13 -msgid "If enabled, wallets will also try to spend unconfirmed funds. This option may cause transaction delays." -msgstr "Se abilitata, i portafogli cercheranno di spendere anche fondi non ancora confermati. Questa opzione può causare ritardi delle transazioni." - -#: src/js/controllers/onboarding/backupRequest.js:18 -msgid "If this device is replaced or this app is deleted, neither you nor BitPay can recover your funds without a backup." -msgstr "Se questo dispositivo viene sostituito o eliminato questa app, né tu né BitPay può recuperare i fondi senza una copia di backup." - -#: www/views/feedback/complete.html:23 -msgid "If you have additional feedback, please let us know by tapping the \"Send feedback\" option in the Settings tab." -msgstr "Se si dispone di ulteriori feedback, fatecelo sapere toccando l'opzione \"Invia feedback\" nella scheda Impostazioni." - -#: www/views/includes/screenshotWarningModal.html:8 -msgid "If you take a screenshot, your backup may be viewed by other apps. You can make a safe backup with physical paper and a pen." -msgstr "Se esegui uno screenshot, il backup può essere visualizzato da altre applicazioni. Si può fare un backup sicuro con la carta fisica e una penna." - -#: www/views/tab-import-hardware.html:42 -#: www/views/tab-import-phrase.html:77 -msgid "Import" -msgstr "Importa" - -#: www/views/import.html:3 -msgid "Import Wallet" -msgstr "Importa Portafoglio" - -#: www/views/tab-import-file.html:39 -msgid "Import backup" -msgstr "Importa backup" - -#: www/views/add.html:38 -msgid "Import wallet" -msgstr "Importa un portafoglio" - -#: src/js/services/onGoingProcess.js:24 -msgid "Importing Wallet..." -msgstr "Importazione del Portafoglio..." - -#: www/views/backup.html:65 -msgid "In order to verify your wallet backup, please type your password." -msgstr "Per verificare il backup del tuo portafoglio, inserire la password." - -#: www/views/includes/walletItem.html:11 -#: www/views/includes/walletSelector.html:18 -#: www/views/tab-home.html:90 -#: www/views/tab-settings.html:117 -msgid "Incomplete" -msgstr "Incompleto" - -#: www/views/tab-receive.html:22 -msgid "Incomplete wallet" -msgstr "Portafoglio incompleto" - -#: www/views/modals/pin.html:12 -msgid "Incorrect PIN, try again." -msgstr "PIN errato, riprovare." - -#. Trying to import a malformed wallet export QR code -#: src/js/controllers/import.js:70 -msgid "Incorrect code format" -msgstr "Formato qrcode non corretto" - -#: src/js/services/bwcError.js:113 -msgid "Incorrect network address" -msgstr "Indirizzo di rete non corretto" - -#: src/js/controllers/confirm.js:112 -#: src/js/controllers/confirm.js:275 -#: src/js/services/bwcError.js:44 -msgid "Insufficient funds" -msgstr "Fondi insufficienti" - -#: src/js/controllers/topup.js:164 -#: src/js/controllers/topup.js:176 -#: src/js/services/bwcError.js:71 -msgid "Insufficient funds for fee" -msgstr "Fondi insufficienti per la commissione" - -#: www/views/includes/walletHistory.html:49 -msgid "Invalid" -msgstr "Invalido" - -#: src/js/controllers/buyAmazon.js:136 -#: src/js/controllers/topup.js:114 -msgid "Invalid URL" -msgstr "URL non valido" - -#: src/js/controllers/create.js:175 -#: src/js/controllers/import.js:327 -#: src/js/controllers/join.js:142 -msgid "Invalid account number" -msgstr "Numero di conto non valido" - -#: src/js/services/bwcError.js:119 -msgid "Invalid address" -msgstr "Indirizzo non valido" - -#: src/js/controllers/tabsController.js:7 -msgid "Invalid data" -msgstr "Dati non validi" - -#: src/js/controllers/create.js:155 -#: src/js/controllers/import.js:249 -#: src/js/controllers/join.js:121 -msgid "Invalid derivation path" -msgstr "Percorso di derivazione non valido" - -#: src/js/controllers/copayers.js:90 -msgid "Invitation to share a {{appName}} Wallet" -msgstr "Invito a condividere un {{appName}} portafoglio" - -#: www/views/buyAmazon.html:49 -#: www/views/topup.html:56 -msgid "Invoice Fee" -msgstr "" - -#: src/js/controllers/feedback/send.js:79 -msgid "Is there anything we could do better?" -msgstr "C'è qualcosa che potevamo fare meglio?" - -#: www/views/backup.html:47 -msgid "Is this correct?" -msgstr "È corretto?" - -#: www/views/onboarding/collectEmail.html:22 -msgid "Is this email address correct?" -msgstr "Questo indirizzo email è corretto?" - -#: www/views/addresses.html:25 -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 "È una buona idea evitare di riutilizzare gli indirizzi - questo protegge la tua privacy e mantiene i Bitcoin al sicuro da ipotetici attacchi di computer quantistici." - -#: src/js/controllers/backup.js:76 -msgid "It's important that you write your backup phrase down correctly. If something happens to your wallet, you'll need this backup to recover your money. Please review your backup and try again." -msgstr "È importante annotare la frase di backup correttamente. Se succede qualcosa al tuo portafoglio, allora avrai bisogno di questo backup per ripristinare il tuo denaro. Si prega di rivedere il backup e riprovare." - -#: www/views/join.html:148 -msgid "Join" -msgstr "Unisciti" - -#: src/js/controllers/copayers.js:85 -msgid "Join my {{appName}} Wallet. Here is the invitation code: {{secret}} You can download {{appName}} for your phone or desktop at {{appUrl}}" -msgstr "Iscriviti a mio {{appName}} portafoglio. Ecco il codice di invito: {{secret}} è possibile scaricare {{appName}} per il vostro telefono o desktop su {{appUrl}}" - -#: www/views/add.html:30 -#: www/views/join.html:5 -msgid "Join shared wallet" -msgstr "Unisciti al portafoglio condiviso" - -#: src/js/services/onGoingProcess.js:25 -msgid "Joining Wallet..." -msgstr "Unendo al portafoglio..." - -#: www/views/onboarding/tour.html:22 -msgid "Just scan the code to pay." -msgstr "Scansiona giusto il codice per pagare." - -#: src/js/services/bwcError.js:116 -msgid "Key already associated with an existing wallet" -msgstr "Chiave già associata ad un portafoglio esistente" - -#: www/views/preferencesLanguage.html:4 -#: www/views/tab-settings.html:53 -msgid "Language" -msgstr "Lingua" - -#: www/views/bitpayCard.html:61 -msgid "Last Month" -msgstr "Scorso Mese" - -#: www/views/backup.html:36 -msgid "Let's verify your backup phrase." -msgstr "Verifichiamo la tua frase di backup." - -#: www/views/addresses.html:45 -#: www/views/allAddresses.html:14 -msgid "Loading addresses..." -msgstr "Caricamento indirizzi..." - -#: src/js/services/onGoingProcess.js:35 -msgid "Loading transaction info..." -msgstr "Caricamento info della transazione..." - -#: www/views/tab-settings.html:95 -msgid "Lock App" -msgstr "Blocca app" - -#: src/js/controllers/lockSetup.js:23 -msgid "Lock by Fingerprint" -msgstr "Blocco con impronte digitali" - -#: src/js/controllers/lockSetup.js:14 -msgid "Lock by PIN" -msgstr "Blocca tramite PIN" - -#: www/views/modals/wallet-balance.html:80 -msgid "Locked" -msgstr "Bloccato" - -#: src/js/services/bwcError.js:86 -msgid "Locktime in effect. Please wait to create a new spend proposal" -msgstr "Locktime in effetto. Si prega di attendere per creare una nuova proposta di pagamento" - -#: src/js/services/bwcError.js:89 -msgid "Locktime in effect. Please wait to remove this spend proposal" -msgstr "Locktime in effetto. Si prega di attendere per rimuovere questa proposta di pagamento" - -#: www/views/modals/bitpay-card-confirmation.html:14 -msgid "Log out" -msgstr "Esci" - -#: www/views/addresses.html:87 -msgid "Low amount inputs" -msgstr "" - -#: www/views/includes/walletHistory.html:27 -msgid "Low fees" -msgstr "Commissioni basse" - -#: www/views/onboarding/tour.html:38 -msgid "Makes sense" -msgstr "Ho capito" - -#: src/js/controllers/modals/search.js:61 -msgid "Matches:" -msgstr "Corrispondenze:" - -#: www/views/includes/copayers.html:4 -#: www/views/preferencesInformation.html:79 -msgid "Me" -msgstr "Io" - -#: src/js/controllers/feedback/rateCard.js:32 -msgid "Meh - it's alright" -msgstr "Beh - è tutto ok" - -#: src/js/controllers/tx-details.js:148 -#: www/views/modals/paypro.html:48 -#: www/views/modals/txp-details.html:95 -#: www/views/tx-details.html:74 -msgid "Memo" -msgstr "Nota" - -#: www/views/modals/txp-details.html:133 -msgid "Merchant Message" -msgstr "Messaggio dal commerciante" - -#: src/js/services/bwcError.js:134 -msgid "Missing parameter" -msgstr "Parametro mancante" - -#: src/js/services/bwcError.js:32 -msgid "Missing private keys to sign" -msgstr "Chiavi private per la firma mancanti" - -#: www/views/preferences.html:60 -#: www/views/preferencesAdvanced.html:3 -msgid "More Options" -msgstr "Altre Opzioni" - -#: www/views/includes/walletHistory.html:47 -#: www/views/tx-details.html:19 -msgid "Moved" -msgstr "Spostato" - -#: src/js/controllers/tx-details.js:114 -msgid "Moved Funds" -msgstr "Fondi trasferiti" - -#: www/views/modals/txp-details.html:57 -msgid "Multiple recipients" -msgstr "Più destinatari" - -#: www/views/tab-import-phrase.html:8 -msgid "NOTE: To import a wallet from a 3rd party software, please go to Add Wallet > Create Wallet, and specify the Recovery Phrase there." -msgstr "Nota: Per importare un portafoglio da un software di terze parti, si prega di andare in Aggiungi portafoglio > Crea portafoglio, e specificare la frase di recupero." - -#: www/views/addressbook.add.html:21 -#: www/views/addressbook.view.html:18 -#: www/views/preferences.html:15 -#: www/views/preferencesAlias.html:17 -msgid "Name" -msgstr "Nome" - -#: www/views/buyAmazon.html:55 -#: www/views/topup.html:63 -msgid "Network Fee" -msgstr "Commissione di rete" - -#: src/js/services/bwcError.js:47 -msgid "Network error" -msgstr "Errore di rete" - -#: www/views/includes/walletActivity.html:43 -msgid "New Proposal" -msgstr "Nuova proposta" - -#: src/js/controllers/addresses.js:131 -msgid "New address could not be generated. Please try again." -msgstr "Il nuovo indirizzo non può essere generato. Si prega di riprovare." - -#: www/views/add.html:14 -msgid "New personal wallet" -msgstr "Nuovo portafoglio personale" - -#: www/views/includes/nextSteps.html:3 -msgid "Next steps" -msgstr "Prossimi passi" - -#: www/views/tab-receive.html:16 -msgid "No Wallet" -msgstr "Nessun Portafoglio" - -#: src/js/controllers/buyAmazon.js:114 -msgid "No access key defined" -msgstr "" - -#: www/views/onboarding/backupRequest.html:5 -msgid "No backup, no bitcoin." -msgstr "Nessun backup, nessun bitcoin." - -#: www/views/addressbook.html:19 -msgid "No contacts yet" -msgstr "Ancora nessun contatto" - -#: www/views/preferencesExternal.html:12 -msgid "No hardware information available." -msgstr "Nessuna informazione del'hardware disponibile." - -#: www/views/tab-import-hardware.html:3 -msgid "No hardware wallets supported on this device" -msgstr "Nessun portafoglio hardware supportato da questo dispositivo" - -#: www/views/proposals.html:24 -msgid "No pending proposals" -msgstr "Nessuna proposta in attesa" - -#: www/views/activity.html:25 -msgid "No recent transactions" -msgstr "Nessuna transazione recente" - -#: src/js/controllers/buyAmazon.js:43 -#: src/js/controllers/topup.js:46 -msgid "No signing proposal: No private key" -msgstr "" - -#: www/views/walletDetails.html:193 -msgid "No transactions yet" -msgstr "Ancora nessuna transazione" - -#: src/js/controllers/preferencesDelete.js:15 -msgid "No wallet found" -msgstr "Nessun portafoglio trovato" - -#: src/js/controllers/preferencesDelete.js:8 -msgid "No wallet selected" -msgstr "Nessun portafoglio selezionato" - -#: src/js/controllers/buyAmazon.js:298 -#: src/js/controllers/confirm.js:83 -#: src/js/controllers/topup.js:263 -msgid "No wallets available" -msgstr "Nessun portafoglio disponibile" - -#: www/views/paperWallet.html:47 -msgid "No wallets available to receive funds" -msgstr "Nessun portafoglo disponibile per ricevere i fondi" - -#: src/js/services/feeService.js:12 -msgid "Normal" -msgstr "Normale" - -#: src/js/services/bwcError.js:80 -msgid "Not authorized" -msgstr "Non autorizzato" - -#: src/js/controllers/confirm.js:276 -msgid "Not enough funds for fee" -msgstr "Non ci sono abbastanza fondi per la commissione" - -#: www/views/onboarding/tour.html:50 -msgid "Not even BitPay can access it." -msgstr "Nemmeno BitPay può accedervi." - -#: src/js/controllers/paperWallet.js:47 -msgid "Not funds found" -msgstr "Fondi non trovati" - -#: www/views/feedback/rateApp.html:3 -#: www/views/onboarding/notifications.html:8 -msgid "Not now" -msgstr "Non ora" - -#: www/views/includes/output.html:15 -msgid "Note" -msgstr "Nota" - -#: www/views/modals/wallets.html:25 -msgid "Notice: only 1-1 (single signature) wallets can be used for sell bitcoin" -msgstr "Avviso: solo i portafogli 1-1 (con singola firma) possono essere utilizzati per vendere bitcoin" - -#: www/views/preferencesNotifications.html:3 -#: www/views/tab-settings.html:46 -msgid "Notifications" -msgstr "Notifiche" - -#: www/views/onboarding/collectEmail.html:9 -msgid "Notifications by email" -msgstr "Notifiche via email" - -#: www/views/tx-details.html:117 -msgid "Notify me if confirmed" -msgstr "Notificami se confermato" - -#: www/views/preferencesNotifications.html:24 -msgid "Notify me when transactions are confirmed" -msgstr "" - -#: www/views/includes/backupNeededPopup.html:8 -msgid "Now is a good time to backup your wallet. If this device is lost, it is impossible to access your funds without a backup." -msgstr "Ora è un buon momento per effettuare un backup del tuo portafoglio. Se questo dispositivo andasse perso, sarebbe impossibile accedere ai tuoi fondi senza una copia di backup." - -#: www/views/backupWarning.html:11 -msgid "Now is a perfect time to assess your surroundings. Nearby windows? Hidden cameras? Shoulder-spies?" -msgstr "È il momento perfetto per valutare l'ambiente circostante. Finestre nelle vicinanze? Telecamere nascoste? Spie alle spalle?" - -#: src/js/controllers/buyAmazon.js:310 -#: src/js/controllers/topup.js:284 -#: src/js/services/popupService.js:16 -#: src/js/services/popupService.js:52 -#: src/js/services/popupService.js:61 -#: src/js/services/popupService.js:72 -#: www/views/modals/chooseFeeLevel.html:6 -msgid "OK" -msgstr "Ok" - -#: www/views/modals/tx-status.html:12 -#: www/views/modals/tx-status.html:24 -#: www/views/modals/tx-status.html:36 -#: www/views/modals/tx-status.html:46 -msgid "OKAY" -msgstr "VA BENE" - -#: www/views/modals/terms.html:15 -msgid "Official English Disclaimer" -msgstr "Dichiarazione di esclusione di responsabilità ufficiale in inglese" - -#: src/js/controllers/feedback/send.js:64 -msgid "Oh no!" -msgstr "Oh no!" - -#: www/views/tab-home.html:39 -msgid "On this screen you can see all your wallets, accounts, and assets." -msgstr "In questa schermata puoi vedere tutti i portafogli, gli account e i beni." - -#: src/js/controllers/bitpayCard.js:113 -#: src/js/controllers/tab-settings.js:47 -msgid "Open" -msgstr "Apri" - -#: src/js/controllers/preferencesLanguage.js:13 -msgid "Open Crowdin" -msgstr "Aprire Crowdin" - -#: src/js/controllers/preferencesAbout.js:15 -msgid "Open GitHub" -msgstr "Aprire Github" - -#: src/js/controllers/preferencesAbout.js:13 -msgid "Open GitHub Project" -msgstr "Aprire il progetto GitHub" - -#: src/js/controllers/bitpayCard.js:123 -#: src/js/controllers/tx-details.js:175 -msgid "Open Insight" -msgstr "Aprire Insight" - -#: www/views/tab-scan.html:22 -msgid "Open Settings" -msgstr "Apri Impostazioni" - -#: src/js/controllers/preferencesLanguage.js:11 -msgid "Open Translation Community" -msgstr "Aprire comunità traduttori" - -#: src/js/controllers/onboarding/terms.js:22 -msgid "Open Website" -msgstr "Apri sito" - -#: www/views/tab-receive.html:27 -msgid "Open wallet" -msgstr "Apri Portafoglio" - -#: www/views/includes/incomingDataMenu.html:19 -msgid "Open website" -msgstr "" - -#: www/views/bitpayCardIntro.html:34 -msgid "Order the BitPay Card" -msgstr "Ordinare la carta BitPay" - -#: www/views/join.html:102 -#: www/views/join.html:93 -#: www/views/tab-create-personal.html:67 -#: www/views/tab-create-personal.html:75 -#: www/views/tab-create-shared.html:104 -#: www/views/tab-create-shared.html:96 -#: www/views/tab-import-file.html:18 -#: www/views/tab-import-phrase.html:38 -msgid "Password" -msgstr "Password" - -#: src/js/controllers/import.js:83 -msgid "Password required. Make sure to enter your password in advanced options" -msgstr "Password necessaria. Assicurarsi di immettere la password nelle impostazioni avanzate" - -#: www/views/join.html:33 -msgid "Paste invitation here" -msgstr "Incolla qui l'invito" - -#: www/views/tab-import-file.html:13 -msgid "Paste the backup plain text code" -msgstr "Incolla qui il codice di backup" - -#: www/views/bitpayCardIntro.html:28 -msgid "Pay 0% fees to turn bitcoin into dollars." -msgstr "Pagare 0% di tasse per trasformare bitcoin in dollari." - -#: www/views/modals/paypro.html:18 -msgid "Pay To" -msgstr "Paga A" - -#: src/js/controllers/modals/txpDetails.js:45 -#: www/views/modals/tx-status.html:33 -msgid "Payment Accepted" -msgstr "Pagamento Accettato" - -#: www/views/confirm.html:25 -msgid "Payment Expires:" -msgstr "Scadenza del pagamento:" - -#: www/views/modals/txp-details.html:6 -msgid "Payment Proposal" -msgstr "Proposta di Pagamento" - -#: www/views/modals/tx-status.html:21 -msgid "Payment Proposal Created" -msgstr "Proposta di Pagamento Creata" - -#: www/views/tab-home.html:46 -msgid "Payment Proposals" -msgstr "Proposte di Pagamento" - -#: src/js/services/payproService.js:32 -msgid "Payment Protocol Invalid" -msgstr "Protocollo di pagamento non valido" - -#: src/js/services/payproService.js:18 -msgid "Payment Protocol not supported on Chrome App" -msgstr "Proposta di Pagamento non supportata dall'applicazione Chrome" - -#: www/views/includes/walletActivity.html:20 -msgid "Payment Received" -msgstr "Pagamento ricevuto" - -#: www/views/modals/tx-status.html:43 -#: www/views/modals/txp-details.html:43 -msgid "Payment Rejected" -msgstr "Pagamento Rifiutato" - -#: src/js/controllers/modals/txpDetails.js:42 -#: www/views/confirm.html:126 -#: www/views/includes/walletActivity.html:11 -#: www/views/modals/txp-details.html:42 -msgid "Payment Sent" -msgstr "Pagamento Inviato" - -#: www/views/modals/txp-details.html:32 -msgid "Payment accepted, but not yet broadcasted" -msgstr "Pagamento accettato, ma non ancora inviata alla rete" - -#: www/views/modals/txp-details.html:40 -msgid "Payment accepted. It will be broadcasted by Glidera. In case there is a problem, it can be deleted 6 hours after it was created." -msgstr "Pagamento accettato. Esso sarà trasmesso attraverso la rete Glidera. Nel caso in cui ci fosse un problema, si potrà eliminarlo 6 ore dopo che è stato creato." - -#: www/views/modals/txp-details.html:109 -msgid "Payment details" -msgstr "Dettagli pagamento" - -#: www/views/modals/paypro.html:6 -msgid "Payment request" -msgstr "Richiesta di pagamento" - -#: www/views/proposals.html:4 -msgid "Pending Proposals" -msgstr "Proposte in attesa" - -#: www/views/preferencesDeleteWallet.html:13 -msgid "Permanently delete this wallet." -msgstr "Eliminare definitivamente questo portafoglio." - -#: src/js/services/profileService.js:388 -msgid "Personal Wallet" -msgstr "Portafoglio Personale" - -#: www/views/backup.html:18 -msgid "Please carefully write down this phrase." -msgstr "Si prega di annotare accuratamente questa frase." - -#: www/views/tab-scan.html:20 -msgid "Please connect a camera to get started." -msgstr "Si prega di collegare una telecamera per iniziare." - -#: src/js/controllers/import.js:260 -msgid "Please enter the recovery phrase" -msgstr "Si prega di inserire la frase di recupero" - -#: src/js/controllers/create.js:168 -#: src/js/controllers/join.js:135 -msgid "Please enter the wallet recovery phrase" -msgstr "Si prega di inserire la frase di recupero del portafoglio" - -#: www/views/modals/pin.html:9 -msgid "Please enter your PIN" -msgstr "Inserisci il tuo PIN" - -#: www/views/backup.html:46 -msgid "Please tap each word in the correct order." -msgstr "Si prega di toccare ogni parola nell'ordine corretto." - -#: src/js/services/bwcError.js:101 -msgid "Please upgrade Copay to perform this action" -msgstr "Si prega di aggiornare Copay per eseguire questa azione" - -#: src/js/controllers/import.js:222 -msgid "Please, select your backup file" -msgstr "Per favore, selezione il tuo file di backup" - -#: www/views/bitpayCard.html:81 -msgid "Pre-Auth Holds" -msgstr "" - -#: www/views/tab-settings.html:40 -msgid "Preferences" -msgstr "Preferenze" - -#: src/js/services/onGoingProcess.js:38 -msgid "Preparing addresses..." -msgstr "Preparazione indirizzi..." - -#: src/js/controllers/export.js:198 -msgid "Preparing backup..." -msgstr "Preparando il backup..." - -#: src/js/routes.js:1188 -msgid "Press again to exit" -msgstr "Premi ancora per uscire" - -#: src/js/services/feeService.js:11 -msgid "Priority" -msgstr "Priorità" - -#: www/views/includes/incomingDataMenu.html:80 -msgid "Private Key" -msgstr "" - -#: src/js/controllers/paperWallet.js:137 -msgid "Private key encrypted. Enter password" -msgstr "Chiave privata crittografata. Inserisci la password" - -#: src/js/services/bwcError.js:35 -msgid "Private key is encrypted, cannot sign" -msgstr "La chiave privata è crittografata, non è possibile accedere" - -#: www/views/includes/walletActivity.html:51 -msgid "Proposal Accepted" -msgstr "Proposta accettata" - -#: src/js/controllers/modals/txpDetails.js:55 -#: src/js/controllers/tx-details.js:61 -#: www/views/confirm.html:127 -msgid "Proposal Created" -msgstr "Proposta creata" - -#: www/views/includes/walletActivity.html:27 -msgid "Proposal Deleted" -msgstr "Proposta eliminata" - -#: www/views/includes/walletActivity.html:35 -msgid "Proposal Rejected" -msgstr "Proposta respinta" - -#: www/views/walletDetails.html:178 -msgid "Proposals" -msgstr "Proposte" - -#: src/js/controllers/buyAmazon.js:281 -msgid "Purchase Amount is limited to {{limitPerDay}} {{currency}} per day" -msgstr "" - -#: www/views/onboarding/notifications.html:3 -msgid "Push Notifications" -msgstr "Notifiche push" - -#: www/views/preferencesNotifications.html:17 -msgid "Push notifications for {{appName}} are currently disabled. Enable them in the Settings app." -msgstr "Le notifiche push per {{appName}} sono attualmente disabilitate. Abilitale nelle impostazioni app." - -#: www/views/export.html:17 -msgid "QR Code" -msgstr "Codice QR" - -#: www/views/onboarding/disclaimer.html:13 -msgid "Quick review!" -msgstr "Breve recensione!" - -#: src/js/controllers/create.js:79 -#: src/js/controllers/join.js:65 -msgid "Random" -msgstr "Casuale" - -#: www/views/feedback/rateApp.html:14 -msgid "Rate on the app store" -msgstr "Valuta su App Store" - -#: www/views/addresses.html:52 -msgid "Read less" -msgstr "Riduci" - -#: www/views/addresses.html:51 -msgid "Read more" -msgstr "Ulteriori informazioni" - -#: www/views/tab-receive.html:3 -#: www/views/tabs.html:7 -msgid "Receive" -msgstr "Ricevi" - -#: www/views/customAmount.html:46 -msgid "Receive in" -msgstr "" - -#: www/views/includes/walletHistory.html:24 -#: www/views/tx-details.html:18 -msgid "Received" -msgstr "Ricevuti" - -#: src/js/controllers/tx-details.js:113 -msgid "Received Funds" -msgstr "Fondi ricevuti" - -#: www/views/includes/walletHistory.html:57 -#: www/views/tx-details.html:24 -msgid "Receiving" -msgstr "Ricezione" - -#: www/views/bitpayCard.html:60 -#: www/views/includes/walletHistory.html:3 -msgid "Recent" -msgstr "Recente" - -#: www/views/advancedSettings.html:20 -msgid "Recent Transaction Card" -msgstr "Transazione recente della carta" - -#: www/views/activity.html:4 -#: www/views/tab-home.html:58 -msgid "Recent Transactions" -msgstr "Transazioni recenti" - -#: www/views/amount.html:18 -#: www/views/tab-send.html:9 -msgid "Recipient" -msgstr "Destinatario" - -#: www/views/modals/txp-details.html:62 -msgid "Recipients" -msgstr "Destinatari" - -#: www/views/import.html:12 -msgid "Recovery phrase" -msgstr "Frase di Recupero" - -#: www/views/walletDetails.html:117 -#: www/views/walletDetails.html:36 -msgid "Recreate" -msgstr "Ricrea" - -#: src/js/services/onGoingProcess.js:26 -msgid "Recreating Wallet..." -msgstr "Ricreando Portafoglio..." - -#: src/js/controllers/modals/txpDetails.js:57 -#: src/js/controllers/tx-details.js:63 -msgid "Rejected" -msgstr "Respinto" - -#: src/js/services/onGoingProcess.js:27 -msgid "Rejecting payment proposal" -msgstr "Respingendo proposta di pagamento" - -#: www/views/preferencesAbout.html:9 -msgid "Release information" -msgstr "Informazioni sul rilascio" - -#: www/views/addressbook.view.html:36 -msgid "Remove" -msgstr "Rimuovere" - -#: src/js/controllers/preferencesBitpayServices.js:7 -msgid "Remove BitPay Account?" -msgstr "Rimuovere il conto BitPay?" - -#: src/js/controllers/preferencesBitpayServices.js:19 -msgid "Remove BitPay Card?" -msgstr "Rimuovere la Carta BitPay?" - -#: src/js/controllers/preferencesBitpayServices.js:8 -msgid "Removing your BitPay account will remove all associated BitPay account data from this device. Are you sure you would like to remove your BitPay Account ({{email}}) from this device?" -msgstr "La rimozione dell'account BitPay eliminerà tutti i dati del conto BitPay associati da questo dispositivo. Sei sicuro che vuoi rimuovere il tuo conto BitPay ({{email}}) da questo dispositivo?" - -#: www/views/join.html:113 -#: www/views/join.html:121 -#: www/views/tab-create-personal.html:84 -#: www/views/tab-create-personal.html:92 -#: www/views/tab-create-shared.html:113 -#: www/views/tab-create-shared.html:121 -#: www/views/tab-export-file.html:17 -msgid "Repeat password" -msgstr "Ripeti password" - -#: www/views/tab-export-file.html:16 -msgid "Repeat the password" -msgstr "Ripeti la password" - -#: www/views/preferences.html:55 -msgid "Request Fingerprint" -msgstr "Richiesta delle impronte digitali" - -#: www/views/tab-receive.html:45 -msgid "Request Specific amount" -msgstr "Richiedi un importo specifico" - -#: www/views/preferences.html:42 -msgid "Request Spending Password" -msgstr "Richiedere Password di spesa" - -#: www/views/tab-create-shared.html:42 -msgid "Required number of signatures" -msgstr "Selezionare il numero necessario di firme" - -#: www/views/onboarding/welcome.html:9 -msgid "Restore from backup" -msgstr "Ripristinare da backup" - -#: src/js/services/onGoingProcess.js:29 -msgid "Retrieving inputs information" -msgstr "Recupero delle informazioni iniziali" - -#: src/js/controllers/onboarding/tour.js:56 -msgid "Retry" -msgstr "Riprova" - -#: www/views/tab-scan.html:23 -msgid "Retry Camera" -msgstr "Riprova con fotocamera" - -#: www/views/addressbook.add.html:56 -#: www/views/includes/note.html:9 -#: www/views/preferencesAlias.html:21 -#: www/views/preferencesBwsUrl.html:25 -#: www/views/preferencesNotifications.html:46 -msgid "Save" -msgstr "Salva" - -#: www/views/tab-scan.html:3 -#: www/views/tabs.html:11 -msgid "Scan" -msgstr "Scansione" - -#: www/views/tab-scan.html:15 -msgid "Scan QR Codes" -msgstr "Scansiona il codici QR" - -#: www/views/addresses.html:31 -msgid "Scan addresses for funds" -msgstr "Scansione degli indirizzi per fondi" - -#: www/views/modals/fingerprintCheck.html:11 -msgid "Scan again" -msgstr "Ripetere la scansione" - -#: src/js/services/fingerprintService.js:56 -msgid "Scan your fingerprint please" -msgstr "Per cortesia procedere alla scansione dell'impronta digitale" - -#: src/js/services/onGoingProcess.js:30 -msgid "Scanning Wallet funds..." -msgstr "Scansione fondi Portafoglio..." - -#: www/views/includes/screenshotWarningModal.html:7 -msgid "Screenshots are not secure" -msgstr "Gli screenshot non sono sicuri" - -#: www/views/modals/search.html:6 -msgid "Search Transactions" -msgstr "Cerca Transazioni" - -#: www/views/tab-send.html:13 -msgid "Search or enter bitcoin address" -msgstr "Cerca o inserisci indirizzo bitcoin" - -#: www/views/modals/search.html:16 -msgid "Search transactions" -msgstr "Ricerca transazioni" - -#: www/views/preferencesAltCurrency.html:14 -msgid "Search your currency" -msgstr "Cerca la tua valuta" - -#: www/views/preferences.html:30 -msgid "Security" -msgstr "Sicurezza" - -#: www/views/tab-import-file.html:7 -msgid "Select a backup file" -msgstr "Seleziona un file di backup" - -#: src/js/controllers/tab-receive.js:133 -msgid "Select a wallet" -msgstr "Selezionare un portafoglio" - -#: www/views/modals/paypro.html:38 -msgid "Self-signed Certificate" -msgstr "Certificato autofirmato" - -#: src/js/services/onGoingProcess.js:41 -msgid "Selling Bitcoin..." -msgstr "Vendere Bitcoin..." - -#: www/views/feedback/send.html:13 -#: www/views/feedback/send.html:43 -#: www/views/tab-send.html:3 -#: www/views/tabs.html:15 -msgid "Send" -msgstr "Invia" - -#: www/views/feedback/send.html:3 -#: www/views/tab-settings.html:29 -msgid "Send Feedback" -msgstr "Invia Feedback" - -#: www/views/addressbook.view.html:31 -msgid "Send Money" -msgstr "Invia denaro" - -#: www/views/allAddresses.html:19 -msgid "Send addresses by email" -msgstr "Invia indirizzi via Email" - -#: www/views/preferencesLogs.html:13 -#: www/views/tab-export-file.html:82 -msgid "Send by email" -msgstr "Invia via email" - -#: src/js/controllers/confirm.js:151 -msgid "Send from" -msgstr "Inviata Da" - -#: www/views/includes/itemSelector.html:8 -msgid "Send max amount" -msgstr "Inviare l'importo massimo" - -#: www/views/includes/incomingDataMenu.html:46 -msgid "Send payment to this address" -msgstr "" - -#: www/views/feedback/rateApp.html:17 -msgid "Send us feedback instead" -msgstr "Inviaci invece i tuoi pareri" - -#: www/views/confirm.html:15 -#: www/views/includes/txp.html:12 -#: www/views/modals/txp-details.html:19 -#: www/views/tx-details.html:23 -msgid "Sending" -msgstr "Invio in corso" - -#: src/js/services/onGoingProcess.js:39 -msgid "Sending 2FA code..." -msgstr "Invio codice 2FA..." - -#: src/js/services/onGoingProcess.js:36 -msgid "Sending feedback..." -msgstr "Invio feedback..." - -#: www/views/confirm.html:16 -msgid "Sending maximum amount" -msgstr "Invio dell'importo massimo" - -#: src/js/services/onGoingProcess.js:31 -msgid "Sending transaction" -msgstr "Invio transazione" - -#: src/js/controllers/confirm.js:490 -msgid "Sending {{amountStr}} from your {{name}} wallet" -msgstr "L'invio di {{amountStr}} dal tuo portafoglio {{name}}" - -#: www/views/includes/walletHistory.html:42 -#: www/views/modals/tx-status.html:9 -#: www/views/topup.html:100 -#: www/views/tx-details.html:17 -msgid "Sent" -msgstr "Inviato" - -#: src/js/controllers/tx-details.js:112 -msgid "Sent Funds" -msgstr "Inviare Fondi" - -#: src/js/services/bwcError.js:38 -msgid "Server response could not be verified" -msgstr "La risposta del server non può essere verificata" - -#: src/js/controllers/buyAmazon.js:96 -msgid "Service not available" -msgstr "" - -#: www/views/includes/homeIntegrations.html:3 -msgid "Services" -msgstr "Servizi" - -#: www/views/preferencesLogs.html:3 -msgid "Session Log" -msgstr "Registro di sessione" - -#: www/views/preferencesAbout.html:35 -msgid "Session log" -msgstr "Registro sessione" - -#: www/views/tab-export-file.html:10 -msgid "Set up a password" -msgstr "Imposta una password" - -#: src/js/controllers/preferencesFee.js:84 -msgid "Set your own fee in satoshis/byte" -msgstr "" - -#: www/views/tab-settings.html:3 -#: www/views/tabs.html:19 -msgid "Settings" -msgstr "Impostazioni" - -#: www/views/feedback/complete.html:17 -#: www/views/feedback/complete.html:26 -msgid "Share the love by inviting your friends." -msgstr "Condividi il piacere invitando i tuoi amici." - -#: www/views/copayers.html:20 -msgid "Share this invitation with your copayers" -msgstr "Condividi questo invito con i tuoi copayers" - -#: src/js/controllers/feedback/complete.js:5 -#: www/views/tab-settings.html:36 -msgid "Share {{appName}}" -msgstr "Condividi {{appName}}" - -#: www/views/tab-import-hardware.html:24 -msgid "Shared Wallet" -msgstr "Portafoglio Condiviso" - -#: www/views/preferencesExternal.html:34 -msgid "Show Recovery Phrase" -msgstr "Visualizza Frase di Recupero" - -#: www/views/tab-receive.html:34 -msgid "Show address" -msgstr "Visualizza indirizzo" - -#: www/views/join.html:45 -#: www/views/tab-create-personal.html:25 -#: www/views/tab-create-shared.html:54 -#: www/views/tab-export-file.html:24 -#: www/views/tab-import-file.html:27 -#: www/views/tab-import-hardware.html:30 -#: www/views/tab-import-phrase.html:32 -msgid "Show advanced options" -msgstr "Mostra opzioni avanzate" - -#: www/views/tab-send.html:37 -msgid "Show bitcoin address" -msgstr "Visualizza indirizzo bitcoin" - -#: www/views/tab-send.html:59 -msgid "Show more" -msgstr "Mostra di più" - -#: src/js/services/bwcError.js:104 -msgid "Signatures rejected by server" -msgstr "Firme rifiutate dal server" - -#: src/js/services/onGoingProcess.js:32 -msgid "Signing transaction" -msgstr "Firmando transazione" - -#: 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 "Dal momento che solo tu controlli il tuo denaro, avrai allora bisogno di salvare la tua frase di backup nel caso in cui questa applicazione venga eliminata." - -#: www/views/tab-create-personal.html:120 -#: www/views/tab-create-shared.html:149 -msgid "Single Address Wallet" -msgstr "Singolo indirizzo di portafoglio" - -#: www/views/onboarding/collectEmail.html:40 -#: www/views/onboarding/tour.html:11 -msgid "Skip" -msgstr "Salta" - -#: src/js/controllers/modals/txpDetails.js:34 -msgid "Slide" -msgstr "Trascina" - -#: www/views/buyAmazon.html:96 -msgid "Slide to buy" -msgstr "" - -#: src/js/controllers/create.js:83 -#: src/js/controllers/join.js:68 -msgid "Specify Recovery Phrase..." -msgstr "Specificare la frase di recupero..." - -#: src/js/services/bwcError.js:92 -msgid "Spend proposal is not accepted" -msgstr "La proposta di pagamento non è accettata" - -#: src/js/services/bwcError.js:95 -msgid "Spend proposal not found" -msgstr "Proposta di pagamento non trovata" - -#: src/js/services/bwcError.js:137 -msgid "Spending Password needed" -msgstr "Necessaria password di spesa" - -#: www/views/walletDetails.html:162 -msgid "Spending this balance will need significant Bitcoin network fees" -msgstr "" - -#: www/views/tab-send.html:28 -msgid "Start sending bitcoin" -msgstr "Iniziare a inviare bitcoin" - -#: www/views/lockSetup.html:3 -msgid "Startup Lock" -msgstr "Blocco all'avvio" - -#: www/views/topup.html:101 -msgid "Success" -msgstr "" - -#: src/js/services/feeService.js:14 -msgid "Super Economy" -msgstr "Super Economica" - -#: www/views/paperWallet.html:7 -msgid "Sweep" -msgstr "Spazzola" - -#: www/views/includes/incomingDataMenu.html:89 -#: www/views/paperWallet.html:3 -msgid "Sweep paper wallet" -msgstr "Spazzare il portafoglio di carta" - -#: src/js/services/onGoingProcess.js:33 -msgid "Sweeping Wallet..." -msgstr "Spazzolamento Portafoglio..." - -#: www/views/preferencesDeleteWallet.html:16 -msgid "THIS ACTION CANNOT BE REVERSED" -msgstr "QUESTA AZIONE NON PUÒ ESSERE INVERTITA" - -#: www/views/onboarding/welcome.html:5 -msgid "Take control of your money,
get started with bitcoin." -msgstr "Prendi il controllo del tuo denaro,
inizia con bitcoin." - -#: www/views/walletDetails.html:140 -#: www/views/walletDetails.html:60 -msgid "Tap and hold to show" -msgstr "Toccare e tenere premuto per mostrare" - -#: www/views/walletDetails.html:112 -#: www/views/walletDetails.html:31 -msgid "Tap to retry" -msgstr "Tocca per riprovare" - -#: www/views/termsOfUse.html:3 -msgid "Terms Of Use" -msgstr "Termini di utilizzo" - -#: www/views/modals/terms.html:3 -#: www/views/onboarding/disclaimer.html:29 -#: www/views/onboarding/disclaimer.html:43 -#: www/views/preferencesAbout.html:30 -msgid "Terms of Use" -msgstr "Termini di Utilizzo" - -#: www/views/tab-create-personal.html:116 -#: www/views/tab-import-phrase.html:65 -msgid "Testnet" -msgstr "Testnet" - -#: www/views/includes/incomingDataMenu.html:61 -msgid "Text" -msgstr "" - -#: src/js/controllers/feedback/send.js:27 -#: src/js/controllers/feedback/send.js:76 -#: www/views/feedback/complete.html:20 -#: www/views/feedback/rateApp.html:4 -msgid "Thank you!" -msgstr "Grazie!" - -#: src/js/controllers/feedback/send.js:72 -msgid "Thanks!" -msgstr "Grazie!" - -#: src/js/controllers/feedback/send.js:73 -msgid "That's exciting to hear. We'd love to earn that fifth star from you – how could we improve your experience?" -msgstr "Questo è eccitante da sentire. Ci piacerebbe guadagnare quella quinta stella da te - come potremmo migliorare la tua esperienza?" - -#: src/js/services/ledger.js:152 -msgid "The Ledger Chrome application is not installed" -msgstr "Non è installata l'applicazione di contabilità Chrome" - -#: www/views/modals/wallet-balance.html:55 -msgid "The amount of bitcoin immediately spendable from this wallet." -msgstr "La quantità di bitcoin immediatamente spendibile da questo portafoglio." - -#: 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 "La quantità di bitcoin memorizzati in questo portafoglio è allocata come input per le sue proposte di transazione in sospeso. L'importo è determinato usando le transazioni in uscita non spese associate a questo portafoglio e potrebbero essere superiori agli importi effettivi associati con le vostre proposte di transazione in sospeso." - -#: www/views/modals/wallet-balance.html:74 -msgid "The amount of bitcoin stored in this wallet with less than 1 blockchain confirmation." -msgstr "La quantità di bitcoin memorizzati in questo portafoglio con meno di una conferma su blockchain." - -#: www/views/tab-import-phrase.html:5 -msgid "The derivation path" -msgstr "Il percorso di derivazione" - -#: www/views/onboarding/tour.html:37 -msgid "The exchange rate changes with the market." -msgstr "Le variazioni dei tassi di cambio con il mercato." - -#: www/views/preferencesFee.html:12 -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 "Più alta la commissione, maggiore sarà l'incentivo di un minatore ad includere tale transazione in un blocco. Le attuali commissioni sono determinate basandosi sul carico di rete e il criterio selezionato." - -#: www/views/addresses.html:51 -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 "È stato raggiunto il numero massimo di indirizzi consecutivi inutilizzati (20). Quando uno dei tuoi indirizzi inutilizzati riceve un pagamento, verrà generato un nuovo indirizzo e mostrato nella tua scheda di ricezione." - -#: src/js/controllers/onboarding/terms.js:21 -msgid "The official English Terms of Service are available on the BitPay website." -msgstr "I termini di servizio ufficiali in inglese sono disponibili sul sito web di BitPay." - -#: www/views/tab-import-phrase.html:4 -msgid "The password of the recovery phrase (if set)" -msgstr "La password della frase recupero (se impostata)" - -#: src/js/services/walletService.js:1140 -msgid "The payment was created but could not be completed. Please try again from home screen" -msgstr "Il pagamento è stato creato ma è stato impossibile completarlo. Per favore prova di nuovo dalla schermata iniziale" - -#: www/views/modals/txp-details.html:26 -msgid "The payment was removed by creator" -msgstr "Il pagamento è stato rimosso dal creatore" - -#: www/views/join.html:88 -#: www/views/tab-create-personal.html:61 -#: www/views/tab-create-shared.html:90 -#: www/views/tab-import-phrase.html:40 -msgid "The recovery phrase could require a password to be imported" -msgstr "La frase di recupero potrebbe richiedere una password per essere importata" - -#: src/js/services/bwcError.js:56 -msgid "The request could not be understood by the server" -msgstr "La richiesta potrebbe non essere compresa dal server" - -#: www/views/addresses.html:52 -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 "Il processo di ripristino verrà interrotto quando 20 indirizzi di fila verranno generati senza che contengano fondi. Per generare in modo sicuro più indirizzi, è necessario effettuare un pagamento ad uno degli indirizzi non utilizzati che è già stato generato." - -#: src/js/services/bwcError.js:98 -msgid "The spend proposal is not pending" -msgstr "La proposta di pagamento non è in sospeso" - -#: www/views/modals/wallet-balance.html:36 -msgid "The total amount of bitcoin stored in this wallet." -msgstr "La quantità totale di bitcoin depositati su questo portafoglio." - -#: www/views/preferencesHistory.html:27 -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 "La cronologia delle transazioni e ogni nuova transazione in entrata vengono memorizzate nella cache nell'app. Questa funzionalità la ripulisce e sincronizza nuovamente dal server" - -#: www/views/tab-import-phrase.html:6 -msgid "The wallet service URL" -msgstr "L'URL del servizio di portafoglio" - -#: src/js/controllers/tab-home.js:38 -msgid "There is a new version of {{appName}} available" -msgstr "C'è una nuova versione di {{appName}} disponibile" - -#: src/js/controllers/import.js:213 -#: src/js/controllers/import.js:237 -#: src/js/controllers/import.js:317 -msgid "There is an error in the form" -msgstr "C'è un errore nel form" - -#: src/js/controllers/feedback/send.js:61 -#: src/js/controllers/feedback/send.js:65 -msgid "There's obviously something we're doing wrong." -msgstr "C'è evidentemente qualcosa che stiamo sbagliando." - -#: src/js/controllers/feedback/rateCard.js:38 -msgid "This app is fantastic!" -msgstr "Questa applicazione è fantastica!" - -#: www/views/onboarding/tour.html:47 -msgid "This app stores your bitcoin with cutting-edge security." -msgstr "Questa app memorizza i tuoi bitcoin con sicurezza all'avanguardia." - -#: src/js/controllers/confirm.js:468 -msgid "This bitcoin payment request has expired." -msgstr "Questa richiesta di pagamento in bitcoin è scaduta." - -#: www/views/join.html:130 -#: www/views/tab-create-personal.html:101 -#: www/views/tab-create-shared.html:130 -msgid "This password cannot be recovered. If the password is lost, there is no way you could recover your funds." -msgstr "Questa password non può essere recuperata. Se si dimentica la password, non c'è alcun modo possibile per recuperare i fondi." - -#: www/views/backup.html:24 -msgid "This recovery phrase was created with a password. To recover this wallet both the recovery phrase and password are needed." -msgstr "Questa frase di recupero è stata creata con una password. Per recuperare questo portafoglio sono necessari sia la frase di recupero e che la password." - -#: www/views/tx-details.html:93 -msgid "This transaction amount is too small compared to current Bitcoin network fees. Spending these funds will need a Bitcoin network fee cost comparable to the funds itself." -msgstr "" - -#: www/views/tx-details.html:89 -msgid "This transaction could take a long time to confirm or could be dropped due to the low fees set by the sender" -msgstr "Questa operazione potrebbe richiedere molto tempo per essere confermata o potrebbe essere abbandonata a causa delle commissioni basse impostate dal mittente" - -#: www/views/walletDetails.html:116 -#: 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 "Questo portafoglio non è registrato al Bitcore Wallet Service (BWS). Puoi ricrearlo dalle informazioni locali." - -#: www/views/modals/txp-details.html:138 -#: www/views/tx-details.html:121 -msgid "Timeline" -msgstr "Cronologia" - -#: www/views/confirm.html:31 -#: www/views/includes/output.html:2 -#: www/views/modals/txp-details.html:111 -#: www/views/modals/txp-details.html:53 -#: www/views/tx-details.html:41 -#: www/views/tx-details.html:53 -msgid "To" -msgstr "A" - -#: www/views/tab-send.html:32 -msgid "To get started, buy bitcoin or share your address. You can receive bitcoin from any wallet or service." -msgstr "Per iniziare, acquista bitcoin o condividi il tuo indirizzo. È possibile ricevere bitcoin da qualsiasi servizio o portafoglio." - -#: www/views/tab-send.html:33 -msgid "To get started, you'll need to create a bitcoin wallet and get some bitcoin." -msgstr "Per iniziare, è necessario che tu crei un portafoglio bitcoin e ottenerne qualcuno." - -#: src/js/services/bitpayAccountService.js:73 -msgid "To {{reason}} you must first add your BitPay account - {{email}}" -msgstr "" - -#: src/js/services/onGoingProcess.js:48 -msgid "Top up in progress..." -msgstr "Ricarica in corso..." - -#: src/js/controllers/topup.js:205 -msgid "Top up {{amountStr}} to debit card ({{cardLastNumber}})" -msgstr "Ricaricare di {{amountStr}} sulla carta di debito ({{cardLastNumber}})" - -#: www/views/buyAmazon.html:61 -#: www/views/modals/wallet-balance.html:23 -#: www/views/topup.html:70 -msgid "Total" -msgstr "Totale" - -#: www/views/walletDetails.html:185 -msgid "Total Locked Balance" -msgstr "Totale Importo Bloccato" - -#: www/views/tab-create-shared.html:33 -msgid "Total number of copayers" -msgstr "Numero totale di copayer" - -#: www/views/addresses.html:81 -msgid "Total wallet inputs" -msgstr "" - -#: src/js/services/fingerprintService.js:63 -#: src/js/services/fingerprintService.js:68 -msgid "Touch ID Failed" -msgstr "Touch ID Fallito" - -#: src/js/controllers/tx-details.js:11 -msgid "Transaction" -msgstr "Transazione" - -#: www/views/confirm.html:128 -msgid "Transaction Created" -msgstr "" - -#: www/views/preferencesAdvanced.html:29 -#: www/views/preferencesHistory.html:3 -msgid "Transaction History" -msgstr "Cronologia delle transazioni" - -#: src/js/services/bwcError.js:83 -msgid "Transaction already broadcasted" -msgstr "Transazione già trasmessa" - -#: src/js/controllers/buyAmazon.js:306 -#: src/js/controllers/topup.js:279 -msgid "Transaction has not been created" -msgstr "" - -#: www/views/topup.html:104 -msgid "Transaction initiated" -msgstr "" - -#: src/js/controllers/tx-details.js:102 -msgid "Transaction not available at this time" -msgstr "Transazione non disponibile in questo momento" - -#: src/js/controllers/activity.js:45 -#: src/js/controllers/tab-home.js:174 -msgid "Transaction not found" -msgstr "Transazione non trovata" - -#: www/views/modals/chooseFeeLevel.html:54 -msgid "Transactions without fee are not supported." -msgstr "" - -#: src/js/controllers/paperWallet.js:110 -msgid "Transfer to" -msgstr "Trasferisci a" - -#: www/views/tab-send.html:67 -msgid "Transfer to Wallet" -msgstr "Trasferire su portafoglio" - -#: www/views/modals/pin.html:13 -msgid "Try again in {{expires}}" -msgstr "Provare di nuovo in {{expires}}" - -#: www/views/bitpayCardIntro.html:18 -msgid "Turn bitcoin into dollars, swipe anywhere Visa® is accepted." -msgstr "Trasformare i bitcoin in dollari, fai scorrere la Visa® ovunque sia accettata." - -#: www/views/tab-import-phrase.html:17 -msgid "Type the Recovery Phrase (usually 12 words)" -msgstr "Digitare la Frase di Recupero (tipicamente 12 parole)" - -#: src/js/controllers/backup.js:75 -msgid "Uh oh..." -msgstr "Oh oh..." - -#: www/views/tx-details.html:100 -msgid "Unconfirmed" -msgstr "Non confermato" - -#: www/views/preferencesUnit.html:4 -msgid "Unit" -msgstr "Unità" - -#: www/views/walletDetails.html:179 -msgid "Unsent transactions" -msgstr "Transazioni non inviate" - -#: www/views/addresses.html:39 -msgid "Unused Addresses" -msgstr "Indirizzi non utilizzati" - -#: www/views/addresses.html:50 -msgid "Unused Addresses Limit" -msgstr "Limite di indirizzi non utilizzati" - -#: src/js/controllers/tab-home.js:146 -msgid "Update Available" -msgstr "Aggiornamento Disponibile" - -#: www/views/proposals.html:14 -msgid "Updating pending proposals. Please stand by" -msgstr "Aggiornamento in attesa di proposte. Si prega di attendere" - -#: www/views/walletDetails.html:211 -msgid "Updating transaction history. Please stand by." -msgstr "Aggiornamento cronologia delle transazioni. Siete pregati di attendere." - -#: www/views/activity.html:14 -msgid "Updating... Please stand by" -msgstr "In aggiornamento... Attendere" - -#: src/js/services/feeService.js:10 -msgid "Urgent" -msgstr "Urgente" - -#: www/views/advancedSettings.html:11 -msgid "Use Unconfirmed Funds" -msgstr "Usa i fondi non confermati" - -#: src/js/services/onGoingProcess.js:34 -msgid "Validating recovery phrase..." -msgstr "Validazione della frase di recupero..." - -#: www/views/modals/fingerprintCheck.html:4 -msgid "Verify your identity" -msgstr "Verifica della tua identità" - -#: www/views/preferencesAbout.html:14 -#: www/views/preferencesExternal.html:25 -msgid "Version" -msgstr "Versione" - -#: www/views/tab-export-file.html:69 -msgid "View" -msgstr "Visualizza" - -#: www/views/addresses.html:34 -msgid "View All Addresses" -msgstr "Mostra tutti gli indirizzi" - -#: src/js/controllers/onboarding/terms.js:20 -msgid "View Terms of Service" -msgstr "Visualizza i termini di servizio" - -#: src/js/controllers/bitpayCard.js:122 -#: src/js/controllers/tx-details.js:174 -msgid "View Transaction on Insight" -msgstr "Visualizzazione della transazione su Insight" - -#: src/js/controllers/tab-home.js:148 -msgid "View Update" -msgstr "Visualizza aggiornamenti" - -#: www/views/tx-details.html:147 -msgid "View on blockchain" -msgstr "Mostra su blockchain" - -#: www/views/walletDetails.html:171 -msgid "WARNING: Key derivation is not working on this device/wallet. Actions cannot be performed on this wallet." -msgstr "ATTENZIONE: La derivazione della chiave non funziona su questo dispositivo/portafoglio. Le operazioni non possono essere eseguite su questo portafoglio." - -#: www/views/tab-export-file.html:45 -msgid "WARNING: Not including the private key allows to check the wallet balance, transaction history, and create spend proposals from the export. However, does not allow to approve (sign) proposals, so funds will not be accessible from the export." -msgstr "AVVISO: L'esclusione della chiave privata permette di controllare il bilancio del portafoglio, la cronologia delle transazioni e creare proposte di spesa dall'esportazione. Tuttavia, non consente di approvare le proposte (firma), così fondi non saranno accessibili dall'esportazione." - -#: www/views/tab-export-file.html:36 -msgid "WARNING: The private key of this wallet is not available. The export allows to check the wallet balance, transaction history, and create spend proposals from the export. However, does not allow to approve (sign) proposals, so funds will not be accessible from the export." -msgstr "AVVISO: La chiave privata di questo portafoglio non è disponibile. L'esportazione permette di controllare il bilancio del portafoglio, la cronologia delle transazioni e creare proposte di spesa dall'esportazione. Tuttavia, non consente di approvare le proposte (firma), così fondi non saranno accessibili dall'esportazione." - -#: www/views/modals/paypro.html:42 -msgid "WARNING: UNTRUSTED CERTIFICATE" -msgstr "ATTENZIONE: CERTIFICATO NON ATTENDIBILE" - -#: src/js/services/onGoingProcess.js:15 -msgid "Waiting for Ledger..." -msgstr "In attesa del Ledger..." - -#: src/js/services/onGoingProcess.js:16 -msgid "Waiting for Trezor..." -msgstr "In attesa del Trezor..." - -#: www/views/copayers.html:48 -msgid "Waiting for copayers" -msgstr "In attesa di copayers" - -#: www/views/copayers.html:53 -msgid "Waiting..." -msgstr "In attesa..." - -#: www/views/addresses.html:3 -#: www/views/preferencesAdvanced.html:17 -msgid "Wallet Addresses" -msgstr "Indirizzi del portafoglio" - -#: www/views/preferencesColor.html:4 -msgid "Wallet Color" -msgstr "Colore portafoglio" - -#: www/views/preferencesInformation.html:23 -msgid "Wallet Configuration (m-n)" -msgstr "Configurazione di portafoglio (m-n)" - -#: www/views/onboarding/collectEmail.html:5 -msgid "Wallet Created" -msgstr "Portafoglio creato" - -#: www/views/preferencesInformation.html:17 -msgid "Wallet Id" -msgstr "Id portafoglio" - -#: www/views/preferencesAdvanced.html:13 -#: www/views/preferencesInformation.html:3 -msgid "Wallet Information" -msgstr "Informazioni sul portafoglio" - -#: www/views/addresses.html:76 -msgid "Wallet Inputs" -msgstr "" - -#: www/views/join.html:26 -msgid "Wallet Invitation" -msgstr "Invito Portafoglio" - -#: www/views/join.html:57 -#: www/views/tab-create-personal.html:36 -#: www/views/tab-create-shared.html:65 -msgid "Wallet Key" -msgstr "Chiave del portafoglio" - -#: www/views/preferencesAlias.html:4 -msgid "Wallet Name" -msgstr "Nome Portafoglio" - -#: www/views/preferencesInformation.html:11 -msgid "Wallet Name (at creation)" -msgstr "Nome portafoglio (al momento della creazione)" - -#: www/views/preferencesInformation.html:29 -msgid "Wallet Network" -msgstr "Portafoglio di rete" - -#: www/views/join.html:74 -#: www/views/tab-create-personal.html:48 -#: www/views/tab-create-shared.html:77 -msgid "Wallet Recovery Phrase" -msgstr "Frase di recupero del portafoglio" - -#: src/js/services/bwcError.js:26 -msgid "Wallet Recovery Phrase is invalid" -msgstr "Frase di recupero del portafoglio non è valida" - -#: www/views/preferencesAdvanced.html:25 -#: www/views/tab-import-phrase.html:70 -msgid "Wallet Service URL" -msgstr "URL del servizio di portafoglio" - -#: www/views/preferences.html:4 -msgid "Wallet Settings" -msgstr "Impostazioni del portafoglio" - -#: www/views/tab-import-hardware.html:11 -#: www/views/tab-import-phrase.html:58 -msgid "Wallet Type" -msgstr "Tipo di portafoglio" - -#: src/js/services/bwcError.js:59 -msgid "Wallet already exists" -msgstr "Il portafoglio esiste già" - -#: src/js/services/profileService.js:498 -msgid "Wallet already in Copay" -msgstr "Portafoglio già in Copay" - -#: www/views/includes/walletActivity.html:6 -msgid "Wallet created" -msgstr "Portafoglio creato" - -#: www/views/copayers.html:58 -msgid "Wallet incomplete and broken" -msgstr "Portafoglio incompleto e danneggiato" - -#: src/js/services/bwcError.js:65 -msgid "Wallet is full" -msgstr "Portafoglio è pieno" - -#: src/js/services/bwcError.js:125 -msgid "Wallet is locked" -msgstr "Il portafoglio è bloccato" - -#: src/js/services/bwcError.js:128 -msgid "Wallet is not complete" -msgstr "Portafoglio non è completo" - -#: www/views/tab-create-personal.html:12 -#: www/views/tab-create-shared.html:12 -msgid "Wallet name" -msgstr "Nome Portafoglio" - -#: src/js/services/bwcError.js:131 -msgid "Wallet needs backup" -msgstr "Il portafoglio richiede password" - -#: www/views/tab-receive.html:59 -#: www/views/walletDetails.html:157 -msgid "Wallet not backed up" -msgstr "Portafoglio senza backup" - -#: src/js/services/bwcError.js:68 -msgid "Wallet not found" -msgstr "Portafoglio non trovato" - -#: src/js/controllers/tab-home.js:220 -msgid "Wallet not registered" -msgstr "Portafoglio non registrato" - -#: src/js/services/bwcError.js:29 -msgid "Wallet not registered at the wallet service. Recreate it from \"Create Wallet\" using \"Advanced Options\" to set your recovery phrase" -msgstr "Portafoglio non registrato presso il servizio di portafoglio. Ricrearlo da \"Creare portafoglio\" tramite \"Opzioni avanzate\" per impostare la tua frase di recupero" - -#: www/views/backup.html:11 -msgid "Wallet recovery phrase not available." -msgstr "Frase di recupero del portafoglio non disponibile." - -#: src/js/services/bwcError.js:50 -msgid "Wallet service not found" -msgstr "Wallet service non trovato" - -#: www/views/tab-home.html:69 -msgid "Wallets" -msgstr "Portafogli" - -#: www/views/tab-settings.html:102 -msgid "Wallets & Integrations" -msgstr "Portafogli & integrazioni" - -#: src/js/controllers/addressbookView.js:23 -#: src/js/controllers/modals/txpDetails.js:147 -#: src/js/controllers/modals/txpDetails.js:164 -#: src/js/controllers/preferencesDelete.js:25 -#: src/js/controllers/preferencesExternal.js:14 -#: www/views/preferencesDeleteWallet.html:11 -msgid "Warning!" -msgstr "Attenzione!" - -#: www/views/modals/txp-details.html:47 -msgid "Warning: this transaction has unconfirmed inputs" -msgstr "Attenzione: questa transazione ha inputs non confermati" - -#: src/js/controllers/onboarding/backupRequest.js:17 -msgid "Watch out!" -msgstr "Attento!" - -#: src/js/controllers/feedback/send.js:69 -msgid "We'd love to do better." -msgstr "Ci piacerebbe fare di più." - -#: www/views/backup.html:28 -msgid "We'll confirm on the next screen." -msgstr "Confermeremo la schermata successiva." - -#: src/js/controllers/feedback/send.js:77 -msgid "We're always looking for ways to improve {{appName}}." -msgstr "Siamo sempre alla ricerca di modi per migliorare {{appName}}." - -#: src/js/controllers/feedback/send.js:83 -msgid "We're always looking for ways to improve {{appName}}. How could we improve your experience?" -msgstr "Siamo sempre alla ricerca di modi per migliorare {{appName}}. Come potremmo migliorare la tua esperienza?" - -#: www/views/includes/incomingDataMenu.html:6 -msgid "Website" -msgstr "" - -#: www/views/preferencesLanguage.html:16 -msgid "We’re always looking for translation contributions! You can make corrections or help to make this app available in your native language by joining our community on Crowdin." -msgstr "Stiamo sempre cercando contributi alla traduzione! Si possono apportare correzioni o contribuire a rendere questa app disponibile nella tua lingua nativa unendo le nostre comunità su Crowdin." - -#: www/views/preferencesAlias.html:11 -msgid "What do you call this wallet?" -msgstr "Come chiameresti questo portafoglio?" - -#: www/views/preferencesAlias.html:12 -msgid "When this wallet was created, it was called “{{walletName}}”. You can change the name displayed on this device below." -msgstr "Quando è stato creato questo portafoglio, è stato chiamato “{{walletName}}”. È possibile modificare qui sotto il nome visualizzato su questo dispositivo." - -#: www/views/onboarding/collectEmail.html:10 -msgid "Where would you like to receive email notifications about payments?" -msgstr "Dove ti piacerebbe ricevere le notifiche sui pagamenti via email?" - -#: www/views/addresses.html:19 -msgid "Why?" -msgstr "Perche?" - -#: www/views/feedback/rateApp.html:10 -msgid "Would you be willing to rate {{appName}} in the app store?" -msgstr "Sareste disposti a votare {{appName}} sull'app store?" - -#: www/views/onboarding/notifications.html:4 -msgid "Would you like to receive push notifications about payments?" -msgstr "Vorresti ricevere le notifiche push sui pagamenti?" - -#: src/js/controllers/import.js:270 -msgid "Wrong number of recovery words:" -msgstr "Numero errato delle parole di recupero:" - -#: src/js/services/bwcError.js:140 -msgid "Wrong spending password" -msgstr "Password per spesa errata" - -#: www/views/modals/confirmation.html:7 -msgid "Yes" -msgstr "Sì" - -#: src/js/controllers/onboarding/backupRequest.js:25 -msgid "Yes, skip" -msgstr "Sì, saltare" - -#: src/js/controllers/onboarding/backupRequest.js:24 -msgid "You can create a backup later from your wallet settings." -msgstr "È possibile creare più tardi una copia di backup dalle impostazioni del tuo portafoglio." - -#: src/js/controllers/preferencesLanguage.js:12 -msgid "You can make contributions by signing up on our Crowdin community translation website. We’re looking forward to hearing from you!" -msgstr "È possibile contribuire registrandovi sulla comunità di traduzione Crowdin. Non vediamo l'ora di sentirvi!" - -#: www/views/tab-scan.html:16 -msgid "You can scan bitcoin addresses, payment requests, paper wallets, and more." -msgstr "È possibile scansionare indirizzi bitcoin, richieste di pagamento, portafogli di carta e altro ancora." - -#: 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 "Potete vedere gli ultimi sviluppi e contribuire a questa applicazione open source andando al nostro progetto su GitHub." - -#: www/views/onboarding/tour.html:19 -msgid "You can spend bitcoin at millions of websites and stores worldwide." -msgstr "Si può spendere bitcoin in milioni di siti web e negozi in tutto il mondo." - -#: www/views/backup.html:12 -msgid "You can still export it from Advanced > Export." -msgstr "È comunque possibile esportare da Avanzate > Esporta." - -#: www/views/onboarding/tour.html:32 -msgid "You can trade it for other currencies like US Dollars, Euros, or Pounds." -msgstr "È possibile scambiarlo con altre valute come i dollari USA, Euro o Sterline." - -#: www/views/onboarding/tour.html:46 -msgid "You control your bitcoin." -msgstr "Controlli i tuoi bitcoin." - -#: www/views/modals/chooseFeeLevel.html:63 -msgid "You should not set a fee higher than {{maxFeeRecommended}} satoshis/byte." -msgstr "" - -#: www/views/modals/bitpay-card-confirmation.html:5 -msgid "You will need to log back for fill in your BitPay Card." -msgstr "Sarà necessario accedere nuovamente per riempire la vostra carta BitPay." - -#: www/views/preferencesNotifications.html:34 -msgid "You'll receive email notifications about payments sent and received from your wallets." -msgstr "Riceverai notifiche e-mail per i pagamenti inviati e ricevuti dai tuoi portafogli." - -#: www/views/bitpayCard.html:50 -msgid "Your BitPay Card is ready. Add funds to your card to start using it at stores and ATMs worldwide." -msgstr "La carta BitPay è pronta. Aggiungi fondi alla tua carta per iniziare ad usarla presso i negozi e gli sportelli automatici in tutto il mondo." - -#: www/views/includes/confirmBackupPopup.html:6 -msgid "Your bitcoin wallet is backed up!" -msgstr "Il tuo portafoglio bitcoin ha eseguito il backup!" - -#: www/views/tab-home.html:36 -msgid "Your bitcoin wallet is ready!" -msgstr "Il tuo portafoglio bitcoin è pronto!" - -#: www/views/modals/chooseFeeLevel.html:60 -msgid "Your fee is lower than recommended." -msgstr "" - -#: www/views/feedback/send.html:42 -msgid "Your ideas, feedback, or comments" -msgstr "Vostre idee, feedback o commenti" - -#: www/views/tab-create-shared.html:22 -msgid "Your name" -msgstr "Il tuo nome" - -#: www/views/join.html:16 -msgid "Your nickname" -msgstr "Il tuo nickname" - -#: www/views/tab-export-file.html:11 -#: www/views/tab-import-file.html:20 -msgid "Your password" -msgstr "La tua password" - -#: www/views/buyAmazon.html:102 -msgid "Your purchase could not be completed" -msgstr "" - -#: www/views/buyAmazon.html:105 -msgid "Your purchase was added to the list of pending" -msgstr "" - -#: www/views/onboarding/backupRequest.html:10 -msgid "Your wallet is never saved to cloud storage or standard device backups." -msgstr "Il tuo portafoglio non viene mai salvato in archiviazione cloud o nel normale backup del dispositivo." - -#: src/js/services/walletService.js:1031 -msgid "Your wallet key will be encrypted. The Spending Password cannot be recovered. Be sure to write it down." -msgstr "La chiave del tuo portafoglio verrà cifrata. La Password Per Spendere non può essere recuperata. Assicurati di scrivertela." - -#: www/views/includes/walletSelector.html:23 -#: www/views/paperWallet.html:35 -#: www/views/tab-home.html:96 -#: www/views/tab-receive.html:74 -#: www/views/walletDetails.html:139 -#: www/views/walletDetails.html:59 -msgid "[Balance Hidden]" -msgstr "[Fondi Nascosti]" - -#: src/js/controllers/bitpayCardIntro.js:11 -msgid "add your BitPay Visa card(s)" -msgstr "aggiungi la tua carta(e) BitPay Visa" - -#: www/views/includes/available-balance.html:8 -msgid "locked by pending payments" -msgstr "bloccati da pagamenti in sospeso" - -#: src/js/services/profileService.js:389 -msgid "me" -msgstr "io" - -#: www/views/addressbook.add.html:32 -msgid "name@example.com" -msgstr "nome@esempio.com" - -#: www/views/preferencesHistory.html:15 -msgid "preparing..." -msgstr "preparazione..." - -#: src/js/controllers/confirm.js:329 -#: src/js/controllers/modals/txpDetails.js:44 -msgid "to accept" -msgstr "per accettare" - -#: src/js/controllers/confirm.js:327 -msgid "to pay" -msgstr "a pagare" - -#: src/js/controllers/confirm.js:331 -#: src/js/controllers/modals/txpDetails.js:41 -msgid "to send" -msgstr "per inviare" - -#: src/js/controllers/buyAmazon.js:238 -msgid "{{amountStr}} for Amazon.com Gift Card" -msgstr "" - -#: www/views/preferencesBwsUrl.html:21 -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}} dipende dal servizio portafoglio di Bitcore (BWS) per informazioni blockchain, networking e sincronizzazione di Copayer. La configurazione predefinita fa riferimento a https://bws.bitpay.com (istanza di BitPay BWS pubblica)." - -#: src/js/controllers/confirm.js:358 -msgid "{{fee}} will be deducted for bitcoin networking fees." -msgstr "{{fee}} verranno detratti come commissione per il network." - -#: www/views/confirm.html:87 -msgid "{{tx.txp[wallet.id].feeRatePerStr}} of the sending amount" -msgstr "" - -#: www/views/walletDetails.html:212 -msgid "{{updatingTxHistoryProgress}} transactions downloaded" -msgstr "{{updatingTxHistoryProgress}} transazioni scaricate" - -#: www/views/copayers.html:46 -#: www/views/includes/walletInfo.html:12 -msgid "{{wallet.m}}-of-{{wallet.n}}" -msgstr "{{wallet.m}}-di-{{wallet.n}}" - diff --git a/i18n/po/ja.po b/i18n/po/ja.po deleted file mode 100644 index f446410d1..000000000 --- a/i18n/po/ja.po +++ /dev/null @@ -1,3365 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Project-Id-Version: copay\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: crowdin.com\n" -"X-Crowdin-Project: copay\n" -"X-Crowdin-Language: ja\n" -"X-Crowdin-File: template.pot\n" -"Last-Translator: cmgustavo83\n" -"Language-Team: Japanese\n" -"Language: ja\n" -"PO-Revision-Date: 2017-07-18 13:18-0400\n" - -#: www/views/modals/paypro.html:34 -msgid "(Trusted)" -msgstr "(信頼済み)" - -#: www/views/includes/txp.html:23 -#: www/views/includes/walletHistory.html:64 -msgid "(possible double spend)" -msgstr "(二重払い可能性あり)" - -#: www/views/modals/txp-details.html:161 -msgid "* A payment proposal can be deleted if 1) you are the creator, and no other copayer has signed, or 2) 24 hours have passed since the proposal was created." -msgstr "* 送金の提案の取下げは①他のウォレット参加者に署名されていなかった場合、提案者に提案を取り下げることができます。②提案の起案から24時間が経っても解決しなかった場合、全員に取り下げることができます。" - -#: www/views/tx-details.html:84 -msgid "- {{btx.feeRateStr}} of the transaction" -msgstr "- {{btx.feeRateStr}}のレート" - -#: www/views/modals/txp-details.html:104 -msgid "- {{tx.feeRateStr}} of the transaction" -msgstr "- {{tx.feeRateStr}}のレート" - -#: www/views/feedback/rateApp.html:7 -msgid "5-star ratings help us get {{appName}} into more hands, and more users means more resources can be committed to the app!" -msgstr "5つ星の評価をいただけると、もっとたくさんの人にこのアプリを届けることができます。そして、ユーザーが増えればこのアプリの改善に当てられる人員やリソースも増えます。" - -#: src/js/controllers/feedback/send.js:27 -#: www/views/feedback/complete.html:21 -msgid "A member of the team will review your feedback as soon as possible." -msgstr "ただちに開発メンバーでいただいた評価を拝読し参考にさせていただきます。" - -#: src/js/controllers/confirm.js:351 -msgid "A total of {{amountAboveMaxSizeStr}} were excluded. The maximum size allowed for a transaction was exceeded." -msgstr "注意:合計{{amountAboveMaxSizeStr}} を除外しました。取引に許可される最大サイズを超えました" - -#: src/js/controllers/confirm.js:345 -msgid "A total of {{amountBelowFeeStr}} were excluded. These funds come from UTXOs smaller than the network fee provided." -msgstr "注意:合計 {{amountBelowFeeStr}} を除外しました。これらのビットコインは手数料よりも低い額となるため除外しました。" - -#: src/js/controllers/preferencesAbout.js:6 -#: www/views/tab-settings.html:156 -msgid "About" -msgstr "このアプリについて" - -#: src/js/controllers/modals/txpDetails.js:56 -#: src/js/controllers/tx-details.js:62 -msgid "Accepted" -msgstr "承諾済" - -#: www/views/preferencesInformation.html:66 -msgid "Account" -msgstr "ポケット" - -#: www/views/join.html:69 -#: www/views/tab-create-personal.html:43 -#: www/views/tab-create-shared.html:72 -#: www/views/tab-import-hardware.html:19 -msgid "Account Number" -msgstr "ポケット番号" - -#: www/views/preferencesBitpayServices.html:23 -msgid "Accounts" -msgstr "アカウント一覧" - -#: www/views/bitpayCard.html:56 -msgid "Activity" -msgstr "履歴" - -#: src/js/services/bitpayAccountService.js:83 -msgid "Add Account" -msgstr "アカウントを追加" - -#: src/js/services/bitpayAccountService.js:69 -msgid "Add BitPay Account?" -msgstr "BitPay アカウントを追加しますか?" - -#: www/views/addressbook.add.html:4 -#: www/views/addressbook.html:22 -msgid "Add Contact" -msgstr "連絡先を追加" - -#: www/views/bitpayCard.html:28 -msgid "Add Funds" -msgstr "資金を追加" - -#: www/views/confirm.html:96 -msgid "Add Memo" -msgstr "メモを追加" - -#: www/views/join.html:84 -#: www/views/tab-create-personal.html:57 -#: www/views/tab-create-shared.html:86 -msgid "Add a password" -msgstr "復元フレーズ用パスワードを追加" - -#: www/views/includes/accountSelector.html:27 -msgid "Add account" -msgstr "アカウントを追加" - -#: www/views/join.html:87 -#: www/views/tab-create-personal.html:60 -#: www/views/tab-create-shared.html:89 -msgid "Add an optional password to secure the recovery phrase" -msgstr "フレーズを守るために任意のパスワードをかけて下さい" - -#: www/views/includes/incomingDataMenu.html:41 -msgid "Add as a contact" -msgstr "" - -#: src/js/controllers/confirm.js:374 -msgid "Add description" -msgstr "詳細を追加" - -#: www/views/topup.html:6 -msgid "Add funds" -msgstr "" - -#: src/js/services/bitpayAccountService.js:78 -msgid "Add this BitPay account ({{email}})?" -msgstr "このBitPayアカウント ({{email}}) を追加しますか?" - -#: www/views/add.html:3 -msgid "Add wallet" -msgstr "ウォレットを追加" - -#: www/views/addressbook.view.html:26 -#: www/views/customAmount.html:28 -#: www/views/modals/paypro.html:24 -msgid "Address" -msgstr "アドレス" - -#: www/views/addressbook.html:6 -#: www/views/tab-settings.html:13 -msgid "Address Book" -msgstr "アドレス帳" - -#: www/views/preferencesInformation.html:35 -msgid "Address Type" -msgstr "アドレスの種類" - -#: www/views/addresses.html:64 -msgid "Addresses With Balance" -msgstr "残高のあるアドレス" - -#: www/views/tab-settings.html:149 -msgid "Advanced" -msgstr "上級者向け" - -#: www/views/advancedSettings.html:3 -msgid "Advanced Settings" -msgstr "詳細の設定" - -#: www/views/bitpayCard.html:62 -msgid "All" -msgstr "すべて" - -#: www/views/allAddresses.html:3 -msgid "All Addresses" -msgstr "全アドレス" - -#: 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:25 -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 "通知を許可する" - -#: www/views/onboarding/disclaimer.html:14 -msgid "Almost done! Let's review." -msgstr "ほぼ完了!確認してみましょう。" - -#: www/views/preferencesAltCurrency.html:4 -#: www/views/tab-settings.html:74 -msgid "Alternative Currency" -msgstr "表示通貨" - -#: src/js/controllers/buyAmazon.js:97 -msgid "Amazon.com is not available at this moment. Please try back later." -msgstr "" - -#: www/views/amount.html:44 -#: www/views/customAmount.html:34 -#: www/views/includes/output.html:7 -msgid "Amount" -msgstr "金額" - -#: src/js/services/bwcError.js:110 -msgid "Amount below minimum allowed" -msgstr "送金可能最少額を下回っています" - -#: src/js/controllers/confirm.js:191 -msgid "Amount too big" -msgstr "金額が大きすぎます" - -#: www/views/includes/walletHistory.html:31 -msgid "Amount too low to spend" -msgstr "小さすぎて送れない額" - -#: src/js/controllers/tab-home.js:147 -msgid "An update to this app is available. For your security, please update to the latest version." -msgstr "このアプリのアップデートがあります。セキュリティーを保持するために最新版にアップデートして下さい。" - -#: www/views/backupWarning.html:14 -msgid "Anyone with your backup phrase can access or spend your bitcoin." -msgstr "復元フレーズを知る者はあなたのビットコインが勝手に送れてしまいます。" - -#: www/views/addresses.html:94 -msgid "Approximate Bitcoin network fee to transfer wallet's balance (with normal priority)" -msgstr "ウォレットの残高を送るために推測される必要なビットコインネットワーク手数料(優先度:普通)" - -#: www/views/backupWarning.html:10 -msgid "Are you being watched?" -msgstr "見られていませんか?" - -#: src/js/controllers/preferencesExternal.js:15 -msgid "Are you being watched? Anyone with your recovery phrase can access or spend your bitcoin." -msgstr "見られていますか? 復元フレーズを知る者はあなたのビットコインが勝手に送れてしまいます。" - -#: src/js/controllers/copayers.js:56 -msgid "Are you sure you want to cancel and delete this wallet?" -msgstr "本当にこのウォレットをキャンセルし、削除しても\n" -"宜しいですか?" - -#: src/js/controllers/addressbookView.js:24 -msgid "Are you sure you want to delete this contact?" -msgstr "本当にこの連絡先を削除しますか?" - -#: src/js/controllers/preferencesDelete.js:26 -msgid "Are you sure you want to delete this wallet?" -msgstr "本当にこのウォレットを削除しても\n" -"宜しいですか?" - -#: src/js/controllers/modals/txpDetails.js:148 -msgid "Are you sure you want to reject this transaction?" -msgstr "この取引を却下してもよろしいですか?" - -#: src/js/controllers/modals/txpDetails.js:165 -msgid "Are you sure you want to remove this transaction?" -msgstr "この取引を破棄してもよろしいですか?" - -#: src/js/controllers/onboarding/backupRequest.js:23 -msgid "Are you sure you want to skip it?" -msgstr "本当にバックアップの手順を飛ばしても良いですか?" - -#: www/views/modals/bitpay-card-confirmation.html:4 -msgid "Are you sure you would like to log out of your BitPay Card account?" -msgstr "BitPayカードアカウントからログアウトしてもよろしいですか?" - -#: src/js/controllers/preferencesBitpayCard.js:7 -#: src/js/controllers/preferencesBitpayServices.js:20 -msgid "Are you sure you would like to remove your BitPay Card ({{lastFourDigits}}) from this device?" -msgstr "この端末から BitPay カード ({{lastFourDigits}}) を本当に削除してもよろしいですか?" - -#: www/views/includes/walletInfo.html:5 -msgid "Auditable" -msgstr "監査用" - -#: www/views/modals/wallet-balance.html:42 -msgid "Available" -msgstr "即座送金可能" - -#: www/views/includes/available-balance.html:3 -msgid "Available Balance" -msgstr "送金可能残高" - -#: www/views/modals/chooseFeeLevel.html:24 -#: www/views/preferencesFee.html:15 -msgid "Average confirmation time" -msgstr "平均承認時間" - -#: www/views/join.html:140 -#: www/views/tab-create-personal.html:111 -#: www/views/tab-create-shared.html:140 -#: www/views/tab-import-phrase.html:48 -msgid "BIP32 path for address derivation" -msgstr "階級アドレス派生のパス" - -#: www/views/preferences.html:34 -msgid "Backup" -msgstr "バックアップ" - -#: www/views/includes/backupNeededPopup.html:7 -msgid "Backup Needed" -msgstr "要バックアップ" - -#: src/js/controllers/lockSetup.js:87 -msgid "Backup all livenet wallets before using this function" -msgstr "この機能を使う前に必ず全てのウォレットの復元フレーズのバックアップを取って下さい!" - -#: www/views/preferences.html:36 -#: www/views/tab-settings.html:120 -msgid "Backup needed" -msgstr "要バックアップ" - -#: www/views/includes/backupNeededPopup.html:9 -msgid "Backup now" -msgstr "今すぐバックアップ" - -#: www/views/onboarding/backupRequest.html:11 -#: www/views/tab-export-file.html:89 -msgid "Backup wallet" -msgstr "ウォレットをバックアップ" - -#: src/js/controllers/lockSetup.js:84 -msgid "Backup your wallet before using this function" -msgstr "この機能を使う前に必ず復元フレーズのバックアップを取って下さい!" - -#: src/js/services/profileService.js:430 -msgid "Bad wallet invitation" -msgstr "不正なウォレット招待コード" - -#: www/views/preferencesInformation.html:96 -msgid "Balance By Address" -msgstr "アドレスごとの残高" - -#: www/views/includes/confirmBackupPopup.html:7 -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 "書き留めた復元フレーズは金庫など、安全な場所にて保管して下さい。このアプリが削除されたら、復元フレーズが必須になってきます。" - -#: www/views/preferencesBitpayServices.html:9 -msgid "BitPay Visa® Cards" -msgstr "BitPayのVISA® カード" - -#: www/views/addressbook.add.html:38 -#: www/views/includes/incomingDataMenu.html:29 -msgid "Bitcoin Address" -msgstr "ビットコインアドレス" - -#: www/views/modals/chooseFeeLevel.html:4 -#: www/views/preferencesFee.html:4 -#: www/views/tab-settings.html:85 -msgid "Bitcoin Network Fee Policy" -msgstr "ビットコインネットワークの手数料設定" - -#: www/views/tab-settings.html:63 -msgid "Bitcoin Unit" -msgstr "Bitcoin 単位" - -#: www/views/onboarding/tour.html:31 -msgid "Bitcoin is a currency." -msgstr "ビットコインは通貨の一つ" - -#: www/views/onboarding/disclaimer.html:15 -msgid "Bitcoin is different – it cannot be safely held with a bank or web service." -msgstr "ビットコインは違う – 銀行やウェブのサービスに安全に預けることはできません。" - -#: www/views/onboarding/tour.html:18 -msgid "Bitcoin is secure,
digital money." -msgstr "ビットコインは世界で
最も安全な仮想通貨。" - -#: www/views/preferencesFee.html:11 -msgid "Bitcoin transactions include a fee collected by miners on the network." -msgstr "ビットコインの取引はネットワークの安全を守る「採掘者」と呼ばれる者達に送る手数料が含まれます。" - -#: www/views/buyAmazon.html:108 -msgid "Bought {{amountUnitStr}}" -msgstr "" - -#: www/views/modals/txp-details.html:36 -msgid "Broadcast Payment" -msgstr "取引送信" - -#: src/js/controllers/modals/txpDetails.js:58 -#: src/js/controllers/tx-details.js:64 -msgid "Broadcasted" -msgstr "送信済み" - -#: src/js/services/onGoingProcess.js:11 -msgid "Broadcasting transaction" -msgstr "取引送信中" - -#: www/views/unsupported.html:6 -msgid "Browser unsupported" -msgstr "ブラウザ未対応" - -#: www/views/buyAmazon.html:5 -msgid "Buy" -msgstr "" - -#: www/views/includes/buyAndSellCard.html:3 -msgid "Buy & Sell Bitcoin" -msgstr "ビットコインの購入&売却" - -#: www/views/tab-send.html:35 -msgid "Buy Bitcoin" -msgstr "ビットコインを購入" - -#: src/js/controllers/buyAmazon.js:332 -msgid "Buy from" -msgstr "" - -#: src/js/services/onGoingProcess.js:40 -msgid "Buying Bitcoin..." -msgstr "ビットコインを購入中..." - -#: src/js/services/onGoingProcess.js:12 -msgid "Calculating fee" -msgstr "手数料計算中..." - -#: src/js/controllers/buyAmazon.js:311 -#: src/js/controllers/confirm.js:495 -#: src/js/controllers/topup.js:285 -#: src/js/services/popupService.js:62 -#: src/js/services/popupService.js:73 -#: www/views/addressbook.add.html:10 -#: www/views/feedback/send.html:5 -#: www/views/includes/incomingDataMenu.html:22 -#: www/views/includes/incomingDataMenu.html:54 -#: www/views/includes/incomingDataMenu.html:73 -#: www/views/includes/incomingDataMenu.html:97 -#: www/views/includes/note.html:6 -#: www/views/modals/bitpay-card-confirmation.html:8 -#: www/views/modals/confirmation.html:13 -msgid "Cancel" -msgstr "キャンセル" - -#: www/views/copayers.html:36 -msgid "Cancel invitation" -msgstr "招待状のキャンセル" - -#: src/js/controllers/onboarding/tour.js:52 -msgid "Cannot Create Wallet" -msgstr "ウォレットを作成できません。" - -#: src/js/services/profileService.js:426 -msgid "Cannot join the same wallet more that once" -msgstr "同じ端末で同じウォレットに複数回参加することができません。" - -#: www/views/includes/bitpayCardsCard.html:2 -msgid "Cards" -msgstr "カード" - -#: www/views/modals/paypro.html:30 -msgid "Certified by" -msgstr "証明元:" - -#: www/views/preferencesExternal.html:19 -msgid "Check installation and retry." -msgstr "正しくインストールされたか確認してから再度お試し下さい。" - -#: www/views/tab-import-file.html:4 -msgid "Choose a backup file from your computer" -msgstr "パソコンからバックアップファイルを選択して下さい。" - -#: www/views/modals/wallets.html:9 -msgid "Choose your destination wallet" -msgstr "宛先ウォレットの選択" - -#: www/views/modals/wallets.html:10 -msgid "Choose your source wallet" -msgstr "送金元のウォレットを選択して下さい" - -#: www/views/backup.html:54 -msgid "Clear" -msgstr "やり直し" - -#: www/views/preferencesHistory.html:24 -msgid "Clear cache" -msgstr "キャッシュを消去" - -#: src/js/controllers/modals/txpDetails.js:34 -msgid "Click" -msgstr "クリックして" - -#: www/views/customAmount.html:4 -#: www/views/modals/paypro.html:4 -#: www/views/modals/pin.html:3 -#: www/views/modals/search.html:3 -#: www/views/modals/wallet-balance.html:3 -#: www/views/modals/wallets.html:5 -msgid "Close" -msgstr "閉じる" - -#: www/views/preferences.html:22 -msgid "Color" -msgstr "色" - -#: www/views/preferencesAbout.html:21 -msgid "Commit hash" -msgstr "コミットのハッシュ値" - -#: www/views/preferences.html:48 -msgid "Complete the backup process to use this option" -msgstr "この機能をご利用いただくにはバックアップを行う必要があります" - -#: www/views/bitpayCard.html:93 -msgid "Completed" -msgstr "完了" - -#: src/js/controllers/buyAmazon.js:309 -#: src/js/controllers/confirm.js:494 -#: src/js/controllers/copayers.js:55 -#: src/js/controllers/topup.js:283 -#: www/views/backup.html:53 -#: www/views/backup.html:72 -#: www/views/confirm.html:4 -#: www/views/onboarding/collectEmail.html:32 -msgid "Confirm" -msgstr "確認" - -#: www/views/modals/terms.html:26 -#: www/views/onboarding/disclaimer.html:44 -msgid "Confirm & Finish" -msgstr "承諾して終了する" - -#: www/views/buyAmazon.html:90 -msgid "Confirm purchase" -msgstr "" - -#: www/views/modals/pin.html:10 -msgid "Confirm your PIN" -msgstr "確認のためPINを再入力してください" - -#: src/js/services/walletService.js:1034 -msgid "Confirm your new spending password" -msgstr "新しい送金時パスワードを確認してください" - -#: www/views/tx-details.html:98 -msgid "Confirmations" -msgstr "承認回数" - -#: www/views/bitpayCard.html:68 -#: www/views/modals/wallet-balance.html:61 -msgid "Confirming" -msgstr "承認中" - -#: www/views/bitpayCardIntro.html:37 -msgid "Connect my BitPay Card" -msgstr "BitPay カードを接続" - -#: src/js/services/onGoingProcess.js:13 -msgid "Connecting to Coinbase..." -msgstr "Coinbase に接続中…" - -#: src/js/services/onGoingProcess.js:14 -msgid "Connecting to Glidera..." -msgstr "Glidera に接続中…" - -#: src/js/services/bwcError.js:53 -msgid "Connection reset by peer" -msgstr "接続がピアによってリセットされました" - -#: www/views/tab-send.html:45 -msgid "Contacts" -msgstr "連絡先" - -#: www/views/onboarding/notifications.html:9 -msgid "Continue" -msgstr "続ける" - -#: www/views/preferencesLanguage.html:26 -msgid "Contribute Translations" -msgstr "翻訳に協力" - -#: src/js/services/bwcError.js:62 -msgid "Copayer already in this wallet" -msgstr "ウォレット参加者が既に存在しています。" - -#: src/js/services/bwcError.js:77 -msgid "Copayer already voted on this spend proposal" -msgstr "ウォレット参加者が既に送金の提案の意思表明をしています。" - -#: src/js/services/bwcError.js:107 -msgid "Copayer data mismatch" -msgstr "ウォレット参加者のデータ不整合" - -#: www/views/includes/walletActivity.html:2 -msgid "Copayer joined" -msgstr "ウォレット参加者が加わりました" - -#: www/views/preferencesInformation.html:88 -msgid "Copayer {{$index}}" -msgstr "ウォレット参加者 {{$index}}" - -#: src/js/controllers/copayers.js:79 -#: src/js/controllers/export.js:193 -#: www/views/includes/copyToClipboard.html:4 -msgid "Copied to clipboard" -msgstr "クリップボードにコピーしました" - -#: www/views/tab-export-file.html:94 -msgid "Copy this text as it is to a safe place (notepad or email)" -msgstr "このテキストを安全な場所に貼り付けて保管して下さい (メモ帳やメールの下書きなど)" - -#: www/views/includes/incomingDataMenu.html:51 -#: www/views/includes/incomingDataMenu.html:70 -#: www/views/includes/incomingDataMenu.html:94 -#: www/views/preferencesLogs.html:10 -#: www/views/tab-export-file.html:78 -msgid "Copy to clipboard" -msgstr "クリップボードへコピー" - -#: www/views/tab-import-phrase.html:2 -msgid "Could not access the wallet at the server. Please check:" -msgstr "サーバーにてウォレットの確認ができませんでした。こちらをご確認下さい:" - -#: src/js/controllers/buyAmazon.js:101 -msgid "Could not access to Amazon.com" -msgstr "" - -#: src/js/services/profileService.js:493 -msgid "Could not access wallet" -msgstr "ウォレットにアクセスできませんでした。" - -#: src/js/controllers/confirm.js:185 -msgid "Could not add message to imported wallet without shared encrypting key" -msgstr "共有キー無しでインポートされたウォレットへのメッセージの追加ができません" - -#: src/js/controllers/modals/txpDetails.js:193 -msgid "Could not broadcast payment" -msgstr "送金を配信できませんでした。" - -#: src/js/services/bwcError.js:41 -msgid "Could not build transaction" -msgstr "取引を作成できませんでした。" - -#: src/js/services/walletService.js:857 -msgid "Could not create address" -msgstr "アドレスを生成できませんでした。" - -#: src/js/controllers/topup.js:91 -msgid "Could not create the invoice" -msgstr "請求を作成できませんでした" - -#: src/js/controllers/buyAmazon.js:163 -#: src/js/controllers/topup.js:141 -msgid "Could not create transaction" -msgstr "取引を作成できませんでした。" - -#: src/js/services/profileService.js:342 -msgid "Could not create using the specified extended private key" -msgstr "指定された拡張秘密鍵で作成できませんでした。" - -#: src/js/services/profileService.js:353 -msgid "Could not create using the specified extended public key" -msgstr "指定された拡張公開鍵で作成できませんでした。" - -#: src/js/services/profileService.js:335 -msgid "Could not create: Invalid wallet recovery phrase" -msgstr "作成できません:ウォレットの復元フレーズが不正です。" - -#: src/js/controllers/import.js:99 -msgid "Could not decrypt file, check your password" -msgstr "複合化できませんでした。パスワードが正しいかご確認下さい。" - -#: src/js/controllers/modals/txpDetails.js:175 -msgid "Could not delete payment proposal" -msgstr "送金の提案を削除できませんでした" - -#: src/js/services/feeService.js:72 -msgid "Could not get dynamic fee" -msgstr "手数料の金額を取得できませんでした。" - -#: src/js/services/feeService.js:42 -msgid "Could not get dynamic fee for level: {{feeLevel}}" -msgstr "次の手数料レートを取得できませんでした: {{feeLevel}}" - -#: src/js/controllers/modals/feeLevels.js:113 -msgid "Could not get fee levels" -msgstr "" - -#: src/js/controllers/buyAmazon.js:121 -#: src/js/controllers/topup.js:99 -msgid "Could not get the invoice" -msgstr "請求の取得ができませんでした" - -#: src/js/controllers/bitpayCard.js:66 -msgid "Could not get transactions" -msgstr "取引を取得できませんでした。" - -#: src/js/services/profileService.js:595 -#: src/js/services/profileService.js:629 -#: src/js/services/profileService.js:652 -msgid "Could not import" -msgstr "インポートできませんでした。" - -#: src/js/services/profileService.js:564 -msgid "Could not import. Check input file and spending password" -msgstr "インポートできませんでした。入力ファイルとパスワードが正しいかご確認下さい。" - -#: src/js/services/profileService.js:439 -msgid "Could not join wallet" -msgstr "ウォレットに参加できませんでした。" - -#: src/js/controllers/modals/txpDetails.js:155 -msgid "Could not reject payment" -msgstr "送金を却下できませんでした。" - -#: src/js/controllers/preferencesBitpayServices.js:33 -msgid "Could not remove account" -msgstr "アカウントを削除できませんでした。" - -#: src/js/controllers/preferencesBitpayCard.js:20 -#: src/js/controllers/preferencesBitpayServices.js:50 -msgid "Could not remove card" -msgstr "カードを削除できませんでした。" - -#: src/js/services/walletService.js:776 -msgid "Could not save preferences on the server" -msgstr "設定をサーバーと同期できませんでした。" - -#: src/js/controllers/modals/txpDetails.js:141 -msgid "Could not send payment" -msgstr "送金できませんでした。" - -#: src/js/controllers/buyAmazon.js:323 -#: src/js/controllers/topup.js:297 -msgid "Could not send transaction" -msgstr "取引が送れませんでした" - -#: www/views/walletDetails.html:199 -msgid "Could not update transaction history" -msgstr "取引履歴を更新できませんでした。" - -#: src/js/controllers/addresses.js:34 -#: src/js/controllers/addresses.js:42 -#: src/js/controllers/copayers.js:30 -#: src/js/controllers/walletDetails.js:78 -msgid "Could not update wallet" -msgstr "ウォレットが更新できませんでした。" - -#: www/views/tab-create-personal.html:3 -msgid "Create Personal Wallet" -msgstr "個人用ウォレットを作成" - -#: www/views/tab-create-shared.html:3 -msgid "Create Shared Wallet" -msgstr "共有ウォレットを作成" - -#: www/views/onboarding/tour.html:51 -#: www/views/tab-home.html:77 -#: www/views/tab-send.html:36 -msgid "Create bitcoin wallet" -msgstr "ビットコインウォレット作成" - -#: www/views/tab-create-personal.html:129 -msgid "Create new wallet" -msgstr "新規ウォレット作成" - -#: www/views/add.html:22 -msgid "Create shared wallet" -msgstr "共有ウォレットを作成" - -#: www/views/tab-create-shared.html:158 -msgid "Create {{formData.requiredCopayers}}-of-{{formData.totalCopayers}} wallet" -msgstr "{{formData.requiredCopayers}}-of-{{formData.totalCopayers}} ウォレットを作成" - -#: www/views/modals/txp-details.html:83 -#: www/views/tx-details.html:62 -msgid "Created by" -msgstr "作成者" - -#: src/js/services/onGoingProcess.js:18 -msgid "Creating Wallet..." -msgstr "ウォレット作成中…" - -#: src/js/services/onGoingProcess.js:17 -msgid "Creating transaction" -msgstr "取引作成中…" - -#: www/views/modals/chooseFeeLevel.html:34 -#: www/views/preferencesFee.html:20 -msgid "Current fee rate for this policy" -msgstr "この設定の現在の手数料レート" - -#: src/js/services/feeService.js:15 -msgid "Custom" -msgstr "" - -#: www/views/customAmount.html:9 -msgid "Custom Amount" -msgstr "金額を入力" - -#: src/js/controllers/preferencesFee.js:84 -msgid "Custom Fee" -msgstr "" - -#: www/views/modals/txp-details.html:89 -#: www/views/tx-details.html:68 -msgid "Date" -msgstr "日付" - -#: www/views/preferencesDeleteWallet.html:21 -msgid "Delete" -msgstr "削除する" - -#: www/views/modals/txp-details.html:166 -msgid "Delete Payment Proposal" -msgstr "送金の提案を削除" - -#: www/views/preferencesAdvanced.html:33 -#: www/views/preferencesDeleteWallet.html:3 -msgid "Delete Wallet" -msgstr "ウォレットを削除" - -#: www/views/copayers.html:59 -msgid "Delete it and create a new one" -msgstr "削除して新規作成" - -#: src/js/services/onGoingProcess.js:19 -msgid "Deleting Wallet..." -msgstr "ウォレット削除中…" - -#: src/js/services/onGoingProcess.js:28 -msgid "Deleting payment proposal" -msgstr "送金の提案を削除" - -#: www/views/join.html:138 -#: www/views/tab-create-personal.html:109 -#: www/views/tab-create-shared.html:138 -#: www/views/tab-import-phrase.html:46 -msgid "Derivation Path" -msgstr "派生パス" - -#: www/views/preferencesInformation.html:41 -msgid "Derivation Strategy" -msgstr "派生パス" - -#: www/views/buyAmazon.html:39 -#: www/views/topup.html:45 -msgid "Details" -msgstr "" - -#: src/js/controllers/lockSetup.js:9 -#: src/js/controllers/tab-settings.js:60 -msgid "Disabled" -msgstr "無効" - -#: www/views/includes/backupNeededPopup.html:10 -#: www/views/onboarding/backupRequest.html:12 -msgid "Do it later" -msgstr "後で行う" - -#: www/views/tab-export-file.html:29 -msgid "Do not include private key" -msgstr "秘密鍵を含めない" - -#: www/views/preferencesLanguage.html:21 -msgid "Don't see your language on Crowdin? Contact the Owner on Crowdin! We'd love to support your language." -msgstr "ご自分の言語はCrowdinで見当たりませんか?Crowdinの管理者に連絡とってみてください。是非とも対応したく思っております。" - -#: www/views/tab-export-file.html:59 -#: www/views/tab-home.html:22 -msgid "Download" -msgstr "ダウンロード" - -#: www/views/addresses.html:19 -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 "12個の単語から無限大のアドレスを生成することができ、それをビットコインウォレットと呼びます。送金を受け取る度に新しいアドレスを生成して受取画面でお見せします。" - -#: src/js/services/feeService.js:13 -msgid "Economy" -msgstr "節約" - -#: www/views/onboarding/collectEmail.html:27 -msgid "Edit" -msgstr "編集" - -#: www/views/addressbook.add.html:29 -#: www/views/addressbook.view.html:22 -msgid "Email" -msgstr "電子メール" - -#: www/views/preferencesNotifications.html:42 -msgid "Email Address" -msgstr "メールアドレス" - -#: src/js/services/bwcError.js:122 -msgid "Empty addresses limit reached. New addresses cannot be generated." -msgstr "未使用アドレスを生成しすぎたため、これ以上アドレスを生成することができません。" - -#: www/views/tab-scan.html:19 -msgid "Enable camera access in your device settings to get started." -msgstr "端末の設定でカメラの使用許可をしないとスキャンができません。" - -#: www/views/preferencesNotifications.html:29 -msgid "Enable email notifications" -msgstr "メール通知を有効化" - -#: www/views/preferencesNotifications.html:12 -msgid "Enable push notifications" -msgstr "プッシュ通知を有効化" - -#: www/views/tab-scan.html:18 -msgid "Enable the camera to get started." -msgstr "始めるためにカメラを有効にして下さい。" - -#: www/views/amount.html:4 -msgid "Enter Amount" -msgstr "金額を入力" - -#: src/js/services/walletService.js:1048 -#: src/js/services/walletService.js:1063 -msgid "Enter Spending Password" -msgstr "送金時のパスワード入力して下さい。" - -#: src/js/services/bitpayAccountService.js:110 -msgid "Enter Two Factor for your BitPay account" -msgstr "BitPay アカウントの2段階認証コードを入力して下さい" - -#: www/views/modals/chooseFeeLevel.html:41 -msgid "Enter custom fee" -msgstr "" - -#: src/js/services/walletService.js:1030 -msgid "Enter new spending password" -msgstr "新しい送金時パスワードを入力してください" - -#: www/views/join.html:76 -#: www/views/tab-create-personal.html:49 -#: www/views/tab-create-shared.html:78 -msgid "Enter the recovery phrase (BIP39)" -msgstr "復元フレーズの単語をご入力下さい。" - -#: www/views/onboarding/collectEmail.html:13 -msgid "Enter your email" -msgstr "メールアドレスを入力してください" - -#: www/views/backup.html:62 -msgid "Enter your password" -msgstr "パスワードを入力して下さい。" - -#. Trying to import a malformed wallet export QR code -#: src/js/controllers/activity.js:45 -#: src/js/controllers/addressbookAdd.js:30 -#: src/js/controllers/addressbookView.js:29 -#: src/js/controllers/addresses.js:130 -#: src/js/controllers/addresses.js:131 -#: src/js/controllers/bitpayCard.js:66 -#: src/js/controllers/bitpayCardIntro.js:40 -#: src/js/controllers/bitpayCardIntro.js:81 -#: src/js/controllers/buyAmazon.js:23 -#: src/js/controllers/buyAmazon.js:34 -#: src/js/controllers/confirm.js:276 -#: src/js/controllers/copayers.js:67 -#: src/js/controllers/create.js:155 -#: src/js/controllers/create.js:168 -#: src/js/controllers/create.js:175 -#: src/js/controllers/create.js:197 -#: src/js/controllers/create.js:204 -#: src/js/controllers/create.js:222 -#: src/js/controllers/export.js:109 -#: src/js/controllers/export.js:115 -#: src/js/controllers/export.js:126 -#: src/js/controllers/export.js:154 -#: src/js/controllers/export.js:160 -#: src/js/controllers/export.js:171 -#: src/js/controllers/export.js:47 -#: src/js/controllers/export.js:53 -#: src/js/controllers/feedback/send.js:23 -#: src/js/controllers/import.js:104 -#: src/js/controllers/import.js:116 -#: src/js/controllers/import.js:134 -#: src/js/controllers/import.js:185 -#: src/js/controllers/import.js:213 -#: src/js/controllers/import.js:222 -#: src/js/controllers/import.js:237 -#: src/js/controllers/import.js:249 -#: src/js/controllers/import.js:260 -#: src/js/controllers/import.js:270 -#: src/js/controllers/import.js:294 -#: src/js/controllers/import.js:307 -#: src/js/controllers/import.js:317 -#: src/js/controllers/import.js:327 -#: src/js/controllers/import.js:351 -#: src/js/controllers/import.js:364 -#: src/js/controllers/import.js:70 -#: src/js/controllers/import.js:83 -#: src/js/controllers/join.js:121 -#: src/js/controllers/join.js:135 -#: src/js/controllers/join.js:142 -#: src/js/controllers/join.js:165 -#: src/js/controllers/join.js:173 -#: src/js/controllers/join.js:191 -#: src/js/controllers/modals/feeLevels.js:10 -#: src/js/controllers/modals/txpDetails.js:134 -#: src/js/controllers/paperWallet.js:47 -#: src/js/controllers/preferencesBitpayCard.js:20 -#: src/js/controllers/preferencesBitpayServices.js:33 -#: src/js/controllers/preferencesBitpayServices.js:50 -#: src/js/controllers/preferencesDelete.js:37 -#: src/js/controllers/preferencesExternal.js:20 -#: src/js/controllers/tab-home.js:174 -#: src/js/controllers/tab-send.js:132 -#: src/js/controllers/tabsController.js:36 -#: src/js/controllers/tabsController.js:7 -#: src/js/controllers/topup.js:20 -#: src/js/controllers/topup.js:31 -#: src/js/controllers/tx-details.js:102 -#: src/js/services/incomingData.js:98 -msgid "Error" -msgstr "エラー" - -#: src/js/controllers/confirm.js:447 -msgid "Error at confirm" -msgstr "確認のエラー" - -#: src/js/controllers/buyAmazon.js:178 -msgid "Error creating gift card" -msgstr "" - -#: src/js/controllers/buyAmazon.js:93 -msgid "Error creating the invoice" -msgstr "" - -#: src/js/services/profileService.js:396 -msgid "Error creating wallet" -msgstr "ウォレット作成時にエラー" - -#: src/js/controllers/confirm.js:266 -msgid "Error getting SendMax information" -msgstr "全額送金データ取得時にエラー" - -#: src/js/controllers/buyAmazon.js:135 -#: src/js/controllers/topup.js:113 -msgid "Error in Payment Protocol" -msgstr "支払い検証のエラー" - -#: src/js/controllers/bitpayCardIntro.js:14 -msgid "Error pairing BitPay Account" -msgstr "Bitpayアカウントを接続中にエラー" - -#: src/js/controllers/paperWallet.js:41 -msgid "Error scanning funds:" -msgstr "残高確認に失敗しました" - -#: src/js/controllers/paperWallet.js:91 -msgid "Error sweeping wallet:" -msgstr "ペーパーウォレット出金時にエラー" - -#: src/js/controllers/bitpayCardIntro.js:20 -msgid "Error updating Debit Cards" -msgstr "デビットカードの更新エラー" - -#: src/js/services/bwcError.js:143 -msgid "Exceeded daily limit of $500 per user" -msgstr "ユーザーの1日当たりの制限 500 米ドルを超えました" - -#: src/js/controllers/confirm.js:411 -#: www/views/confirm.html:27 -#: www/views/modals/txp-details.html:121 -msgid "Expired" -msgstr "期限切れ" - -#: www/views/modals/paypro.html:54 -#: www/views/modals/txp-details.html:127 -msgid "Expires" -msgstr "有効期限:" - -#: www/views/preferencesAdvanced.html:21 -msgid "Export Wallet" -msgstr "ウォレットをエクスポート" - -#: www/views/preferencesHistory.html:11 -#: www/views/preferencesHistory.html:14 -msgid "Export to file" -msgstr "ファイルへのエクスポート" - -#: www/views/export.html:3 -msgid "Export wallet" -msgstr "ウォレットをエクスポート" - -#: src/js/services/walletService.js:1175 -#: www/views/tab-export-qrCode.html:9 -msgid "Exporting via QR not supported for this wallet" -msgstr "このウォレットはQRによるエクスポートに対応していません" - -#: www/views/preferencesInformation.html:83 -msgid "Extended Public Keys" -msgstr "拡張公開鍵" - -#: src/js/services/onGoingProcess.js:20 -msgid "Extracting Wallet information..." -msgstr "" - -#: src/js/controllers/export.js:115 -#: src/js/controllers/export.js:126 -#: src/js/controllers/export.js:160 -#: src/js/controllers/export.js:171 -#: www/views/tab-export-file.html:4 -msgid "Failed to export" -msgstr "エクスポートに失敗しました。" - -#: www/views/tab-create-personal.html:14 -#: www/views/tab-create-shared.html:14 -msgid "Family vacation funds" -msgstr "家族旅行貯金" - -#: www/views/tx-details.html:81 -msgid "Fee" -msgstr "手数料" - -#: www/views/modals/chooseFeeLevel.html:73 -msgid "Fee level" -msgstr "" - -#: src/js/controllers/modals/feeLevels.js:101 -msgid "Fee level is not defined" -msgstr "" - -#: www/views/confirm.html:81 -#: www/views/modals/txp-details.html:101 -msgid "Fee:" -msgstr "手数料:" - -#: src/js/controllers/feedback/send.js:23 -msgid "Feedback could not be submitted. Please try again later." -msgstr "フォームを送信する事ができませんでした。時間をおいて再試行ください。" - -#: src/js/services/onGoingProcess.js:42 -msgid "Fetching BitPay Account..." -msgstr "BitPay アカウントを取得..." - -#: src/js/services/onGoingProcess.js:21 -msgid "Fetching payment information" -msgstr "" - -#: www/views/export.html:14 -#: www/views/import.html:16 -msgid "File/Text" -msgstr "ファイル/テキスト" - -#: src/js/services/fingerprintService.js:43 -#: src/js/services/fingerprintService.js:48 -msgid "Finger Scan Failed" -msgstr "指紋認証に失敗しました" - -#: src/js/controllers/feedback/send.js:34 -#: www/views/feedback/complete.html:7 -msgid "Finish" -msgstr "完了" - -#: www/views/tab-create-personal.html:121 -#: www/views/tab-create-shared.html:150 -msgid "For audit purposes" -msgstr "監査用機能" - -#: src/js/controllers/topup.js:306 -#: www/views/buyAmazon.html:29 -#: www/views/confirm.html:65 -#: www/views/modals/txp-details.html:74 -#: www/views/topup.html:34 -#: www/views/tx-details.html:52 -msgid "From" -msgstr "送信者" - -#: src/js/controllers/bitpayCardIntro.js:71 -msgid "From BitPay account" -msgstr " BitPayアカウントから" - -#: www/views/tab-import-phrase.html:54 -msgid "From Hardware Wallet" -msgstr "ハードウェアウォレットから" - -#: www/views/tab-export-qrCode.html:5 -msgid "From the destination device, go to Add wallet > Import wallet and scan this QR code" -msgstr "移行先の端末では、ウォレットを追加から、ウォレットをインポートの画面でQRをスキャンして下さい。" - -#: src/js/services/bwcError.js:74 -msgid "Funds are locked by pending spend proposals" -msgstr "協議中の送金の提案により、資金がロックされています。" - -#: www/views/paperWallet.html:16 -msgid "Funds found:" -msgstr "残高がありました:" - -#: www/views/topup.html:49 -msgid "Funds to be added" -msgstr "" - -#: www/views/paperWallet.html:53 -msgid "Funds transferred" -msgstr "入金されました" - -#: www/views/topup.html:103 -msgid "Funds were added to debit card" -msgstr "デビットカードへ入金されました" - -#: www/views/paperWallet.html:22 -msgid "Funds will be transferred to" -msgstr "送金先" - -#: www/views/tab-receive.html:51 -msgid "Generate new address" -msgstr "新規アドレスを生成" - -#: src/js/services/onGoingProcess.js:22 -msgid "Generating .csv file..." -msgstr "CSVファイル作成中…" - -#: src/js/services/onGoingProcess.js:37 -msgid "Generating new address..." -msgstr "新規アドレスを生成中..." - -#: www/views/bitpayCardIntro.html:23 -msgid "Get local cash anywhere you go, from any Visa® compatible ATM. ATM bank fees may apply." -msgstr "Visa®カード対応ATMから現地通貨をいつでも引き出せます。ATMの手数料はATMによって異なります。" - -#: www/views/onboarding/collectEmail.html:15 -msgid "Get news and updates from BitPay" -msgstr "BitPay からのニュースや更新情報を受け取ります。" - -#: www/views/bitpayCard.html:49 -#: www/views/onboarding/welcome.html:8 -msgid "Get started" -msgstr "始めよう" - -#: www/views/addressbook.html:20 -msgid "Get started by adding your first one." -msgstr "初めての連絡先を追加しましょう。" - -#: src/js/services/onGoingProcess.js:23 -msgid "Getting fee levels..." -msgstr "手数料レベルを取得しています…" - -#: www/views/buyAmazon.html:43 -msgid "Gift card" -msgstr "" - -#: src/js/controllers/buyAmazon.js:203 -msgid "Gift card expired" -msgstr "" - -#: www/views/buyAmazon.html:111 -msgid "Gift card generated and ready to use." -msgstr "" - -#: src/js/controllers/bitpayCard.js:114 -#: src/js/controllers/bitpayCard.js:124 -#: 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:149 -#: src/js/controllers/tab-settings.js:48 -#: src/js/controllers/tx-details.js:176 -msgid "Go Back" -msgstr "戻る" - -#: src/js/controllers/onboarding/backupRequest.js:20 -#: src/js/controllers/onboarding/backupRequest.js:26 -#: src/js/services/bitpayAccountService.js:84 -msgid "Go back" -msgstr "戻る" - -#: www/views/backupWarning.html:15 -#: www/views/includes/confirmBackupPopup.html:8 -#: www/views/onboarding/tour.html:23 -msgid "Got it" -msgstr "分かりました" - -#: www/views/preferencesInformation.html:47 -#: www/views/preferencesInformation.html:53 -msgid "Hardware Wallet" -msgstr "ハードウェアウォレット" - -#: www/views/preferencesExternal.html:18 -msgid "Hardware not connected." -msgstr "ハードウェアは接続されていません。" - -#: www/views/import.html:20 -msgid "Hardware wallet" -msgstr "ハードウェアウォレット" - -#: www/views/tab-settings.html:20 -msgid "Help & Support" -msgstr "ヘルプ&サポート" - -#: src/js/controllers/bitpayCard.js:112 -#: src/js/controllers/tab-settings.js:46 -msgid "Help and support information is available at the website." -msgstr "サポートに関する情報はウェブサイトに掲載しております。" - -#: www/views/addresses.html:25 -msgid "Hide" -msgstr "非表示" - -#: www/views/preferences.html:27 -msgid "Hide Balance" -msgstr "残高を非表示" - -#: www/views/advancedSettings.html:29 -msgid "Hide Next Steps Card" -msgstr "次のステップカードを非表示" - -#: www/views/join.html:46 -#: www/views/tab-create-personal.html:26 -#: www/views/tab-create-shared.html:55 -#: www/views/tab-export-file.html:25 -#: www/views/tab-import-file.html:28 -#: www/views/tab-import-hardware.html:31 -#: www/views/tab-import-phrase.html:33 -msgid "Hide advanced options" -msgstr "詳細設定を非表示" - -#: www/views/tabs.html:3 -msgid "Home" -msgstr "ホーム" - -#: src/js/controllers/feedback/send.js:61 -#: src/js/controllers/feedback/send.js:65 -#: src/js/controllers/feedback/send.js:69 -msgid "How could we improve your experience?" -msgstr "このアプリを改善するためにご意見下さい。" - -#: www/views/feedback/rateCard.html:3 -msgid "How do you like {{appName}}?" -msgstr "このアプリを使用してみて、どのようにお感じですか?" - -#: src/js/controllers/feedback/rateCard.js:29 -msgid "I don't like it" -msgstr "好きではない" - -#: www/views/onboarding/disclaimer.html:43 -msgid "I have read, understood, and agree to the Terms of Use." -msgstr "利用規約をよく読み、理解し、同意します。" - -#: www/views/modals/terms.html:22 -msgid "I have read, understood, and agree with the Terms of use." -msgstr "利用規約をよく読み、理解し、同意します。" - -#: www/views/join.html:134 -#: www/views/tab-create-personal.html:105 -#: www/views/tab-create-shared.html:134 -msgid "I have written it down" -msgstr "紙に書き留めました" - -#: src/js/controllers/feedback/rateCard.js:35 -msgid "I like the app" -msgstr "このアプリが好き" - -#: src/js/controllers/feedback/rateCard.js:26 -msgid "I think this app is terrible." -msgstr "このアプリは最悪です!" - -#: src/js/controllers/onboarding/backupRequest.js:19 -#: www/views/includes/screenshotWarningModal.html:9 -msgid "I understand" -msgstr "承知しました" - -#: www/views/onboarding/disclaimer.html:21 -msgid "I understand that if this app is moved to another device or deleted, my bitcoin can only be recovered with the backup phrase." -msgstr "このアプリが別の端末に移動されたり、削除されたりした場合に、含まれたビットコインが復元フレーズからのみ復元ができることを理解しています。" - -#: www/views/onboarding/disclaimer.html:18 -msgid "I understand that my funds are held securely on this device, not by a company." -msgstr "自分のビットコインがこの端末に入っていて、外部のサーバー等に保管は一切されていないことを理解しています。" - -#: www/views/backup.html:29 -msgid "I've written it down" -msgstr "紙に書き留めました" - -#: www/views/preferences.html:45 -msgid "If enabled, all sensitive information (private key and recovery phrase) and actions (spending and exporting) associated with this wallet will be protected." -msgstr "有効にした場合は、このウォレットに関連する全ての秘密情報(秘密鍵と復元フレーズ)と履歴情報(送金やエクスポート)は守られます。" - -#: www/views/advancedSettings.html:22 -msgid "If enabled, the Recent Transactions card - a list of transactions occuring across all wallets - will appear in the Home tab." -msgstr "有効にした場合、「最近の取引」カードがホームのメニューに表示されます。アプリに含まれる全ウォレットの取引が一覧できるカードです。" - -#: www/views/advancedSettings.html:13 -msgid "If enabled, wallets will also try to spend unconfirmed funds. This option may cause transaction delays." -msgstr "有効にした場合、ウォレットは未承認ビットコインも送金時の候補に含めます。これを有効にした場合、承認に時間がかかることがあります。" - -#: src/js/controllers/onboarding/backupRequest.js:18 -msgid "If this device is replaced or this app is deleted, neither you nor BitPay can recover your funds without a backup." -msgstr "この端末の機種変更をしたり、アプリを削除したりした場合、端末のバックアップを取っていてもビットコインは復元されません。BitPayは復元フレーズを知らないため、お金を失ったことになります。なので、絶対に復元フレーズを書き留めて安全な場所に保管して下さい。" - -#: www/views/feedback/complete.html:23 -msgid "If you have additional feedback, please let us know by tapping the \"Send feedback\" option in the Settings tab." -msgstr "他にご意見などありましたら、設定画面の「フィードバックの送信」をタップして下さい。" - -#: www/views/includes/screenshotWarningModal.html:8 -msgid "If you take a screenshot, your backup may be viewed by other apps. You can make a safe backup with physical paper and a pen." -msgstr "画面写真を撮ってしまうと、その時点で他のアプリに見られるようになりますので、そのアプリの運営者が安易にビットコインを全て盗めます。安全にバックアップを取るには、紙とボールペンで書き留めましょう。" - -#: www/views/tab-import-hardware.html:42 -#: www/views/tab-import-phrase.html:77 -msgid "Import" -msgstr "インポート" - -#: www/views/import.html:3 -msgid "Import Wallet" -msgstr "ウォレットをインポート" - -#: www/views/tab-import-file.html:39 -msgid "Import backup" -msgstr "バックアップをインポート" - -#: www/views/add.html:38 -msgid "Import wallet" -msgstr "ウォレットをインポート" - -#: src/js/services/onGoingProcess.js:24 -msgid "Importing Wallet..." -msgstr "ウォレットインポート中…" - -#: www/views/backup.html:65 -msgid "In order to verify your wallet backup, please type your password." -msgstr "ウォレットのバックアップを確認するためには、復元フレーズ用のパスワードをご入力下さい。" - -#: www/views/includes/walletItem.html:11 -#: www/views/includes/walletSelector.html:18 -#: www/views/tab-home.html:90 -#: www/views/tab-settings.html:117 -msgid "Incomplete" -msgstr "未完成" - -#: www/views/tab-receive.html:22 -msgid "Incomplete wallet" -msgstr "未完成のウォレット" - -#: www/views/modals/pin.html:12 -msgid "Incorrect PIN, try again." -msgstr "PINが間違っています。もう一度やり直して下さい。" - -#. Trying to import a malformed wallet export QR code -#: src/js/controllers/import.js:70 -msgid "Incorrect code format" -msgstr "コードの形式が異なります" - -#: src/js/services/bwcError.js:113 -msgid "Incorrect network address" -msgstr "サーバーのアドレスが不正です" - -#: src/js/controllers/confirm.js:112 -#: src/js/controllers/confirm.js:275 -#: src/js/services/bwcError.js:44 -msgid "Insufficient funds" -msgstr "残高不足" - -#: src/js/controllers/topup.js:164 -#: src/js/controllers/topup.js:176 -#: src/js/services/bwcError.js:71 -msgid "Insufficient funds for fee" -msgstr "手数料付けるには残高が足りません" - -#: www/views/includes/walletHistory.html:49 -msgid "Invalid" -msgstr "無効" - -#: src/js/controllers/buyAmazon.js:136 -#: src/js/controllers/topup.js:114 -msgid "Invalid URL" -msgstr "無効なURL" - -#: src/js/controllers/create.js:175 -#: src/js/controllers/import.js:327 -#: src/js/controllers/join.js:142 -msgid "Invalid account number" -msgstr "無効なポケット番号です。" - -#: src/js/services/bwcError.js:119 -msgid "Invalid address" -msgstr "不正アドレス" - -#: src/js/controllers/tabsController.js:7 -msgid "Invalid data" -msgstr "無効のデータ" - -#: src/js/controllers/create.js:155 -#: src/js/controllers/import.js:249 -#: src/js/controllers/join.js:121 -msgid "Invalid derivation path" -msgstr "無効な派生パス" - -#: src/js/controllers/copayers.js:90 -msgid "Invitation to share a {{appName}} Wallet" -msgstr "{{appName}} 共有ウォレットへの招待" - -#: www/views/buyAmazon.html:49 -#: www/views/topup.html:56 -msgid "Invoice Fee" -msgstr "" - -#: src/js/controllers/feedback/send.js:79 -msgid "Is there anything we could do better?" -msgstr "もっと頑張って欲しいところはありますか?" - -#: www/views/backup.html:47 -msgid "Is this correct?" -msgstr "正しいですか?" - -#: www/views/onboarding/collectEmail.html:22 -msgid "Is this email address correct?" -msgstr "このメールアドレスで宜しいですか?" - -#: www/views/addresses.html:25 -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 -msgid "It's important that you write your backup phrase down correctly. If something happens to your wallet, you'll need this backup to recover your money. Please review your backup and try again." -msgstr "正確に復元フレーズを書き留めることが大変重要です。このアプリやこの端末に問題が発生したりデータが破損したりすると、ビットコインの残高を元に戻すためには復元フレーズが必須になってきます。バックアップを再確認して、もう一度お試し下さい。" - -#: www/views/join.html:148 -msgid "Join" -msgstr "参加" - -#: src/js/controllers/copayers.js:85 -msgid "Join my {{appName}} Wallet. Here is the invitation code: {{secret}} You can download {{appName}} for your phone or desktop at {{appUrl}}" -msgstr "{{appName}}の共有ウォレット作りました: {{secret}} この招待コードを入力して、ウォレットに参加して下さい。アプリのダウンロードは {{appUrl}} にてどうぞ!" - -#: www/views/add.html:30 -#: www/views/join.html:5 -msgid "Join shared wallet" -msgstr "共有ウォレットに参加" - -#: src/js/services/onGoingProcess.js:25 -msgid "Joining Wallet..." -msgstr "ウォレット参加中…" - -#: www/views/onboarding/tour.html:22 -msgid "Just scan the code to pay." -msgstr "コードを読み取って送金できます" - -#: src/js/services/bwcError.js:116 -msgid "Key already associated with an existing wallet" -msgstr "この鍵は既存のウォレットにて登録されています" - -#: www/views/preferencesLanguage.html:4 -#: www/views/tab-settings.html:53 -msgid "Language" -msgstr "言語設定" - -#: www/views/bitpayCard.html:61 -msgid "Last Month" -msgstr "先月" - -#: www/views/backup.html:36 -msgid "Let's verify your backup phrase." -msgstr "復元フレーズを確認しましょう。" - -#: www/views/addresses.html:45 -#: www/views/allAddresses.html:14 -msgid "Loading addresses..." -msgstr "アドレスを読み込んでいます..." - -#: src/js/services/onGoingProcess.js:35 -msgid "Loading transaction info..." -msgstr "取引情報の読み込み中..." - -#: www/views/tab-settings.html:95 -msgid "Lock App" -msgstr "アプリをロックする" - -#: src/js/controllers/lockSetup.js:23 -msgid "Lock by Fingerprint" -msgstr "指紋認証でロック" - -#: src/js/controllers/lockSetup.js:14 -msgid "Lock by PIN" -msgstr "PINでロック" - -#: 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 "Locktime待ち中です。新しい送金の提案が作成できるまであとしばらくお待ち下さい。" - -#: src/js/services/bwcError.js:89 -msgid "Locktime in effect. Please wait to remove this spend proposal" -msgstr "Locktime待ち中です。この送金の提案が削除できるまであとしばらくお待ち下さい。" - -#: www/views/modals/bitpay-card-confirmation.html:14 -msgid "Log out" -msgstr "ログアウト" - -#: www/views/addresses.html:87 -msgid "Low amount inputs" -msgstr "少額の入力" - -#: www/views/includes/walletHistory.html:27 -msgid "Low fees" -msgstr "低手数料" - -#: www/views/onboarding/tour.html:38 -msgid "Makes sense" -msgstr "わかりました" - -#: src/js/controllers/modals/search.js:61 -msgid "Matches:" -msgstr "結果:" - -#: www/views/includes/copayers.html:4 -#: www/views/preferencesInformation.html:79 -msgid "Me" -msgstr "自分" - -#: src/js/controllers/feedback/rateCard.js:32 -msgid "Meh - it's alright" -msgstr "まあまあです" - -#: src/js/controllers/tx-details.js:148 -#: www/views/modals/paypro.html:48 -#: www/views/modals/txp-details.html:95 -#: www/views/tx-details.html:74 -msgid "Memo" -msgstr "メモ" - -#: www/views/modals/txp-details.html:133 -msgid "Merchant Message" -msgstr "お店からのメッセージ:" - -#: src/js/services/bwcError.js:134 -msgid "Missing parameter" -msgstr "不足しているパラメータ" - -#: src/js/services/bwcError.js:32 -msgid "Missing private keys to sign" -msgstr "署名するための秘密鍵がありません。" - -#: www/views/preferences.html:60 -#: www/views/preferencesAdvanced.html:3 -msgid "More Options" -msgstr "その他オプション" - -#: www/views/includes/walletHistory.html:47 -#: www/views/tx-details.html:19 -msgid "Moved" -msgstr "移動済" - -#: src/js/controllers/tx-details.js:114 -msgid "Moved Funds" -msgstr "資金を移動済み" - -#: www/views/modals/txp-details.html:57 -msgid "Multiple recipients" -msgstr "複数送金先" - -#: www/views/tab-import-phrase.html:8 -msgid "NOTE: To import a wallet from a 3rd party software, please go to Add Wallet > Create Wallet, and specify the Recovery Phrase there." -msgstr "注意:他アプリのウォレットをインポートする場合、ウォレットを追加 > 新規ウォレット作成にて復元フレーズを指定するオプションを詳細設定にて有効にして下さい。" - -#: www/views/addressbook.add.html:21 -#: www/views/addressbook.view.html:18 -#: www/views/preferences.html:15 -#: www/views/preferencesAlias.html:17 -msgid "Name" -msgstr "名前" - -#: www/views/buyAmazon.html:55 -#: www/views/topup.html:63 -msgid "Network Fee" -msgstr "" - -#: src/js/services/bwcError.js:47 -msgid "Network error" -msgstr "ネットワークにエラーが発生した" - -#: www/views/includes/walletActivity.html:43 -msgid "New Proposal" -msgstr "新しい提案" - -#: src/js/controllers/addresses.js:131 -msgid "New address could not be generated. Please try again." -msgstr "アドレスを生成できませんでした。もう一度やり直してください。" - -#: www/views/add.html:14 -msgid "New personal wallet" -msgstr "個人用ウォレットを作成" - -#: www/views/includes/nextSteps.html:3 -msgid "Next steps" -msgstr "次のステップ" - -#: www/views/tab-receive.html:16 -msgid "No Wallet" -msgstr "ウォレットが無いよ…(´・ω・`)" - -#: src/js/controllers/buyAmazon.js:114 -msgid "No access key defined" -msgstr "" - -#: www/views/onboarding/backupRequest.html:5 -msgid "No backup, no bitcoin." -msgstr "バックアップは非常に重要です!" - -#: www/views/addressbook.html:19 -msgid "No contacts yet" -msgstr "連絡先が無い" - -#: www/views/preferencesExternal.html:12 -msgid "No hardware information available." -msgstr "ハードウェア情報はありません" - -#: www/views/tab-import-hardware.html:3 -msgid "No hardware wallets supported on this device" -msgstr "この端末ではハードウェアウォレットがサポートされていません" - -#: www/views/proposals.html:24 -msgid "No pending proposals" -msgstr "保留中の提案はありません" - -#: www/views/activity.html:25 -msgid "No recent transactions" -msgstr "最近の取引がありません" - -#: src/js/controllers/buyAmazon.js:43 -#: src/js/controllers/topup.js:46 -msgid "No signing proposal: No private key" -msgstr "提案に署名できない:秘密鍵がありません" - -#: www/views/walletDetails.html:193 -msgid "No transactions yet" -msgstr "取引がありません" - -#: src/js/controllers/preferencesDelete.js:15 -msgid "No wallet found" -msgstr "ウォレットが見つかりません" - -#: src/js/controllers/preferencesDelete.js:8 -msgid "No wallet selected" -msgstr "ウォレットが選択されていません" - -#: src/js/controllers/buyAmazon.js:298 -#: src/js/controllers/confirm.js:83 -#: src/js/controllers/topup.js:263 -msgid "No wallets available" -msgstr "" - -#: www/views/paperWallet.html:47 -msgid "No wallets available to receive funds" -msgstr "ペーパーウォレットの出金を受け取るためのウォレットが入っていません。" - -#: src/js/services/feeService.js:12 -msgid "Normal" -msgstr "通常" - -#: src/js/services/bwcError.js:80 -msgid "Not authorized" -msgstr "権限がありません。" - -#: src/js/controllers/confirm.js:276 -msgid "Not enough funds for fee" -msgstr "手数料含めたら残高が不足しています。" - -#: www/views/onboarding/tour.html:50 -msgid "Not even BitPay can access it." -msgstr "BitPayは管理できない。" - -#: src/js/controllers/paperWallet.js:47 -msgid "Not funds found" -msgstr "残高がありませんでした" - -#: www/views/feedback/rateApp.html:3 -#: www/views/onboarding/notifications.html:8 -msgid "Not now" -msgstr "今はしない" - -#: www/views/includes/output.html:15 -msgid "Note" -msgstr "メモ" - -#: www/views/modals/wallets.html:25 -msgid "Notice: only 1-1 (single signature) wallets can be used for sell bitcoin" -msgstr "注意: ビットコインの売却は 1-of-1 (単一署名) のウォレットからしか行えません。" - -#: www/views/preferencesNotifications.html:3 -#: www/views/tab-settings.html:46 -msgid "Notifications" -msgstr "通知設定" - -#: www/views/onboarding/collectEmail.html:9 -msgid "Notifications by email" -msgstr "メール通知" - -#: www/views/tx-details.html:117 -msgid "Notify me if confirmed" -msgstr "取引承認時に通知" - -#: www/views/preferencesNotifications.html:24 -msgid "Notify me when transactions are confirmed" -msgstr "" - -#: www/views/includes/backupNeededPopup.html:8 -msgid "Now is a good time to backup your wallet. If this device is lost, it is impossible to access your funds without a backup." -msgstr "お金を受け取る前に、このウォレットのバックアップを取っておくことを強くオススメします。一ウォレットごとにバックアップは一回です。バックアップを取らないまま、この端末が紛失・故障されてしまったら全残高が消失されてしまいます。" - -#: www/views/backupWarning.html:11 -msgid "Now is a perfect time to assess your surroundings. Nearby windows? Hidden cameras? Shoulder-spies?" -msgstr "今一度周りの環境をよく見てみましょう。隠しカメラ、窓、覗いてくる人などありませんか?" - -#: src/js/controllers/buyAmazon.js:310 -#: src/js/controllers/topup.js:284 -#: src/js/services/popupService.js:16 -#: src/js/services/popupService.js:52 -#: src/js/services/popupService.js:61 -#: src/js/services/popupService.js:72 -#: www/views/modals/chooseFeeLevel.html:6 -msgid "OK" -msgstr "OK" - -#: www/views/modals/tx-status.html:12 -#: www/views/modals/tx-status.html:24 -#: www/views/modals/tx-status.html:36 -#: www/views/modals/tx-status.html:46 -msgid "OKAY" -msgstr "OK" - -#: www/views/modals/terms.html:15 -msgid "Official English Disclaimer" -msgstr "公式免責事項 (英語)" - -#: src/js/controllers/feedback/send.js:64 -msgid "Oh no!" -msgstr "おっと!" - -#: www/views/tab-home.html:39 -msgid "On this screen you can see all your wallets, accounts, and assets." -msgstr "この画面では、全てのウォレット、アカウント、資産が閲覧できます。" - -#: src/js/controllers/bitpayCard.js:113 -#: src/js/controllers/tab-settings.js:47 -msgid "Open" -msgstr "開く" - -#: src/js/controllers/preferencesLanguage.js:13 -msgid "Open Crowdin" -msgstr "Crowdinを開く" - -#: src/js/controllers/preferencesAbout.js:15 -msgid "Open GitHub" -msgstr "GitHubを開く" - -#: src/js/controllers/preferencesAbout.js:13 -msgid "Open GitHub Project" -msgstr "GitHub のプロジェクトを開く" - -#: src/js/controllers/bitpayCard.js:123 -#: src/js/controllers/tx-details.js:175 -msgid "Open Insight" -msgstr "Insightを開く" - -#: www/views/tab-scan.html:22 -msgid "Open Settings" -msgstr "設定を開く" - -#: src/js/controllers/preferencesLanguage.js:11 -msgid "Open Translation Community" -msgstr "翻訳ページを開く" - -#: src/js/controllers/onboarding/terms.js:22 -msgid "Open Website" -msgstr "サイトを開く" - -#: www/views/tab-receive.html:27 -msgid "Open wallet" -msgstr "ウォレットを開く" - -#: www/views/includes/incomingDataMenu.html:19 -msgid "Open website" -msgstr "" - -#: www/views/bitpayCardIntro.html:34 -msgid "Order the BitPay Card" -msgstr "BitPay カードを申し込み" - -#: www/views/join.html:102 -#: www/views/join.html:93 -#: www/views/tab-create-personal.html:67 -#: www/views/tab-create-personal.html:75 -#: www/views/tab-create-shared.html:104 -#: www/views/tab-create-shared.html:96 -#: www/views/tab-import-file.html:18 -#: www/views/tab-import-phrase.html:38 -msgid "Password" -msgstr "パスワード" - -#: src/js/controllers/import.js:83 -msgid "Password required. Make sure to enter your password in advanced options" -msgstr "パスワードが必要です。上級者向け設定にてパスワードを入力してください。" - -#: www/views/join.html:33 -msgid "Paste invitation here" -msgstr "招待コードをこちらへ貼り付けて下さい" - -#: www/views/tab-import-file.html:13 -msgid "Paste the backup plain text code" -msgstr "バックアップの文字をここに貼り付けて下さい" - -#: www/views/bitpayCardIntro.html:28 -msgid "Pay 0% fees to turn bitcoin into dollars." -msgstr "0% 手数料でビットコインを米ドルに替える" - -#: www/views/modals/paypro.html:18 -msgid "Pay To" -msgstr "支払い先" - -#: src/js/controllers/modals/txpDetails.js:45 -#: www/views/modals/tx-status.html:33 -msgid "Payment Accepted" -msgstr "支払いが完了しました" - -#: www/views/confirm.html:25 -msgid "Payment Expires:" -msgstr "支払い請求の有効期限:" - -#: www/views/modals/txp-details.html:6 -msgid "Payment Proposal" -msgstr "送金の提案" - -#: www/views/modals/tx-status.html:21 -msgid "Payment Proposal Created" -msgstr "送金の提案が作成されました" - -#: www/views/tab-home.html:46 -msgid "Payment Proposals" -msgstr "送金の提案" - -#: src/js/services/payproService.js:32 -msgid "Payment Protocol Invalid" -msgstr "ペイメントプロトコルが不正です。" - -#: src/js/services/payproService.js:18 -msgid "Payment Protocol not supported on Chrome App" -msgstr "クロームのアプリではペイメントプロトコールがサポートされていません。" - -#: www/views/includes/walletActivity.html:20 -msgid "Payment Received" -msgstr "送金が受領されました" - -#: www/views/modals/tx-status.html:43 -#: www/views/modals/txp-details.html:43 -msgid "Payment Rejected" -msgstr "送金が却下されました" - -#: src/js/controllers/modals/txpDetails.js:42 -#: www/views/confirm.html:126 -#: www/views/includes/walletActivity.html:11 -#: www/views/modals/txp-details.html:42 -msgid "Payment Sent" -msgstr "送金が完了しました" - -#: www/views/modals/txp-details.html:32 -msgid "Payment accepted, but not yet broadcasted" -msgstr "取引が承認されましたが、まだ送信していません。" - -#: www/views/modals/txp-details.html:40 -msgid "Payment accepted. It will be broadcasted by Glidera. In case there is a problem, it can be deleted 6 hours after it was created." -msgstr "取引が承認されました。Glideraより送信されます。問題があった場合、送金命令を出す6時間以内に取り消すことができます。" - -#: www/views/modals/txp-details.html:109 -msgid "Payment details" -msgstr "支払いの詳細" - -#: www/views/modals/paypro.html:6 -msgid "Payment request" -msgstr "支払い請求" - -#: www/views/proposals.html:4 -msgid "Pending Proposals" -msgstr "保留中の提案" - -#: www/views/preferencesDeleteWallet.html:13 -msgid "Permanently delete this wallet." -msgstr "ウォレットを完全に削除する" - -#: src/js/services/profileService.js:388 -msgid "Personal Wallet" -msgstr "個人用ウォレット" - -#: www/views/backup.html:18 -msgid "Please carefully write down this phrase." -msgstr "丁寧に復元フレーズを紙に書き留めて下さい" - -#: www/views/tab-scan.html:20 -msgid "Please connect a camera to get started." -msgstr "始めるためにカメラを接続して下さい。" - -#: src/js/controllers/import.js:260 -msgid "Please enter the recovery phrase" -msgstr "復元フレーズをご入力下さい" - -#: src/js/controllers/create.js:168 -#: src/js/controllers/join.js:135 -msgid "Please enter the wallet recovery phrase" -msgstr "復元フレーズをご入力下さい" - -#: www/views/modals/pin.html:9 -msgid "Please enter your PIN" -msgstr "PIN コードを入力してください。" - -#: www/views/backup.html:46 -msgid "Please tap each word in the correct order." -msgstr "正しい順序で各単語をタップしてください。" - -#: src/js/services/bwcError.js:101 -msgid "Please upgrade Copay to perform this action" -msgstr "この操作を実行するにはCopayを最新バージョンに更新してください" - -#: src/js/controllers/import.js:222 -msgid "Please, select your backup file" -msgstr "バックアップファイルを選択" - -#: www/views/bitpayCard.html:81 -msgid "Pre-Auth Holds" -msgstr "承認前の保留" - -#: www/views/tab-settings.html:40 -msgid "Preferences" -msgstr "設定" - -#: src/js/services/onGoingProcess.js:38 -msgid "Preparing addresses..." -msgstr "アドレスを処理中…" - -#: src/js/controllers/export.js:198 -msgid "Preparing backup..." -msgstr "バックアップを準備中..." - -#: src/js/routes.js:1188 -msgid "Press again to exit" -msgstr "もう一度押して終了" - -#: src/js/services/feeService.js:11 -msgid "Priority" -msgstr "優先" - -#: www/views/includes/incomingDataMenu.html:80 -msgid "Private Key" -msgstr "" - -#: src/js/controllers/paperWallet.js:137 -msgid "Private key encrypted. Enter password" -msgstr "秘密鍵は暗号化されています。復号化パスワードを入力して下さい。" - -#: src/js/services/bwcError.js:35 -msgid "Private key is encrypted, cannot sign" -msgstr "秘密鍵が暗号化されており署名できません。" - -#: www/views/includes/walletActivity.html:51 -msgid "Proposal Accepted" -msgstr "提案が承諾されました" - -#: src/js/controllers/modals/txpDetails.js:55 -#: src/js/controllers/tx-details.js:61 -#: www/views/confirm.html:127 -msgid "Proposal Created" -msgstr "提案が作成されました" - -#: www/views/includes/walletActivity.html:27 -msgid "Proposal Deleted" -msgstr "提案が削除されました" - -#: www/views/includes/walletActivity.html:35 -msgid "Proposal Rejected" -msgstr "提案が却下されました" - -#: www/views/walletDetails.html:178 -msgid "Proposals" -msgstr "提案" - -#: src/js/controllers/buyAmazon.js:281 -msgid "Purchase Amount is limited to {{limitPerDay}} {{currency}} per day" -msgstr "" - -#: www/views/onboarding/notifications.html:3 -msgid "Push Notifications" -msgstr "プッシュ通知" - -#: www/views/preferencesNotifications.html:17 -msgid "Push notifications for {{appName}} are currently disabled. Enable them in the Settings app." -msgstr "{{appName}}のプッシュ通知は現在無効です。アプリ設定で有効にします。" - -#: www/views/export.html:17 -msgid "QR Code" -msgstr "QRコード" - -#: www/views/onboarding/disclaimer.html:13 -msgid "Quick review!" -msgstr "おさらい!" - -#: src/js/controllers/create.js:79 -#: src/js/controllers/join.js:65 -msgid "Random" -msgstr "乱数" - -#: www/views/feedback/rateApp.html:14 -msgid "Rate on the app store" -msgstr "App Storeで評価" - -#: www/views/addresses.html:52 -msgid "Read less" -msgstr "非表示にする" - -#: www/views/addresses.html:51 -msgid "Read more" -msgstr "もっと読む" - -#: www/views/tab-receive.html:3 -#: www/views/tabs.html:7 -msgid "Receive" -msgstr "受取" - -#: www/views/customAmount.html:46 -msgid "Receive in" -msgstr "" - -#: www/views/includes/walletHistory.html:24 -#: www/views/tx-details.html:18 -msgid "Received" -msgstr "受取済み" - -#: src/js/controllers/tx-details.js:113 -msgid "Received Funds" -msgstr "受領した資金" - -#: www/views/includes/walletHistory.html:57 -#: www/views/tx-details.html:24 -msgid "Receiving" -msgstr "受け取り中" - -#: www/views/bitpayCard.html:60 -#: www/views/includes/walletHistory.html:3 -msgid "Recent" -msgstr "履歴" - -#: www/views/advancedSettings.html:20 -msgid "Recent Transaction Card" -msgstr "最近の取引カード" - -#: www/views/activity.html:4 -#: www/views/tab-home.html:58 -msgid "Recent Transactions" -msgstr "最近の取引" - -#: www/views/amount.html:18 -#: www/views/tab-send.html:9 -msgid "Recipient" -msgstr "受取人" - -#: www/views/modals/txp-details.html:62 -msgid "Recipients" -msgstr "受取人" - -#: www/views/import.html:12 -msgid "Recovery phrase" -msgstr "復元フレーズ" - -#: www/views/walletDetails.html:117 -#: www/views/walletDetails.html:36 -msgid "Recreate" -msgstr "再登録" - -#: src/js/services/onGoingProcess.js:26 -msgid "Recreating Wallet..." -msgstr "ウォレットを再作成中…" - -#: src/js/controllers/modals/txpDetails.js:57 -#: src/js/controllers/tx-details.js:63 -msgid "Rejected" -msgstr "却下済み" - -#: src/js/services/onGoingProcess.js:27 -msgid "Rejecting payment proposal" -msgstr "送金の提案却下中" - -#: www/views/preferencesAbout.html:9 -msgid "Release information" -msgstr "リリース情報" - -#: www/views/addressbook.view.html:36 -msgid "Remove" -msgstr "削除" - -#: src/js/controllers/preferencesBitpayServices.js:7 -msgid "Remove BitPay Account?" -msgstr "BitPay アカウントの接続を解除しますか?" - -#: src/js/controllers/preferencesBitpayServices.js:19 -msgid "Remove BitPay Card?" -msgstr "BitPay カードを削除しますか?" - -#: src/js/controllers/preferencesBitpayServices.js:8 -msgid "Removing your BitPay account will remove all associated BitPay account data from this device. Are you sure you would like to remove your BitPay Account ({{email}}) from this device?" -msgstr "BitPay アカウントを削除すると、このデバイスからすべての関連付けられている BitPay のアカウントデータが削除されます。本当にこのデバイスから BitPay アカウント ({{email}}) を削除してもよろしいですか。" - -#: www/views/join.html:113 -#: www/views/join.html:121 -#: www/views/tab-create-personal.html:84 -#: www/views/tab-create-personal.html:92 -#: www/views/tab-create-shared.html:113 -#: www/views/tab-create-shared.html:121 -#: www/views/tab-export-file.html:17 -msgid "Repeat password" -msgstr "パスワードを再入力" - -#: www/views/tab-export-file.html:16 -msgid "Repeat the password" -msgstr "パスワードの再入力" - -#: www/views/preferences.html:55 -msgid "Request Fingerprint" -msgstr "指紋を要求" - -#: www/views/tab-receive.html:45 -msgid "Request Specific amount" -msgstr "指定金額を要求" - -#: www/views/preferences.html:42 -msgid "Request Spending Password" -msgstr "送金時のパスワード入力" - -#: www/views/tab-create-shared.html:42 -msgid "Required number of signatures" -msgstr "必要な署名の数を選択" - -#: www/views/onboarding/welcome.html:9 -msgid "Restore from backup" -msgstr "バックアップから復元" - -#: src/js/services/onGoingProcess.js:29 -msgid "Retrieving inputs information" -msgstr "入力情報の取得中" - -#: src/js/controllers/onboarding/tour.js:56 -msgid "Retry" -msgstr "やり直し" - -#: www/views/tab-scan.html:23 -msgid "Retry Camera" -msgstr "カメラを再試行" - -#: www/views/addressbook.add.html:56 -#: www/views/includes/note.html:9 -#: www/views/preferencesAlias.html:21 -#: www/views/preferencesBwsUrl.html:25 -#: www/views/preferencesNotifications.html:46 -msgid "Save" -msgstr "保存" - -#: www/views/tab-scan.html:3 -#: www/views/tabs.html:11 -msgid "Scan" -msgstr "スキャン" - -#: www/views/tab-scan.html:15 -msgid "Scan QR Codes" -msgstr "QRコードを読み取る" - -#: www/views/addresses.html:31 -msgid "Scan addresses for funds" -msgstr "アドレスの残高照会" - -#: www/views/modals/fingerprintCheck.html:11 -msgid "Scan again" -msgstr "もう一度スキャンし直してください。" - -#: src/js/services/fingerprintService.js:56 -msgid "Scan your fingerprint please" -msgstr "指紋をスキャンしてください" - -#: src/js/services/onGoingProcess.js:30 -msgid "Scanning Wallet funds..." -msgstr "ウォレット残高照会中…" - -#: www/views/includes/screenshotWarningModal.html:7 -msgid "Screenshots are not secure" -msgstr "画面写真を撮ってしまうと危険です!" - -#: www/views/modals/search.html:6 -msgid "Search Transactions" -msgstr "取引を検索" - -#: www/views/tab-send.html:13 -msgid "Search or enter bitcoin address" -msgstr "連絡先検索かビットコインアドレスを指定" - -#: www/views/modals/search.html:16 -msgid "Search transactions" -msgstr "取引を検索" - -#: www/views/preferencesAltCurrency.html:14 -msgid "Search your currency" -msgstr "通貨を検索" - -#: www/views/preferences.html:30 -msgid "Security" -msgstr "セキュリティ" - -#: www/views/tab-import-file.html:7 -msgid "Select a backup file" -msgstr "バックアップファイルを選択" - -#: src/js/controllers/tab-receive.js:133 -msgid "Select a wallet" -msgstr "ウォレットを選択" - -#: www/views/modals/paypro.html:38 -msgid "Self-signed Certificate" -msgstr "自己署名証明書" - -#: src/js/services/onGoingProcess.js:41 -msgid "Selling Bitcoin..." -msgstr "ビットコインを売却中..." - -#: www/views/feedback/send.html:13 -#: www/views/feedback/send.html:43 -#: www/views/tab-send.html:3 -#: www/views/tabs.html:15 -msgid "Send" -msgstr "送信" - -#: www/views/feedback/send.html:3 -#: www/views/tab-settings.html:29 -msgid "Send Feedback" -msgstr "フィードバックの送信" - -#: www/views/addressbook.view.html:31 -msgid "Send Money" -msgstr "送金する" - -#: www/views/allAddresses.html:19 -msgid "Send addresses by email" -msgstr "ビットコインアドレスをメールにて共有" - -#: www/views/preferencesLogs.html:13 -#: www/views/tab-export-file.html:82 -msgid "Send by email" -msgstr "メールで送信" - -#: src/js/controllers/confirm.js:151 -msgid "Send from" -msgstr "ここから送金" - -#: www/views/includes/itemSelector.html:8 -msgid "Send max amount" -msgstr "全残高を送金" - -#: www/views/includes/incomingDataMenu.html:46 -msgid "Send payment to this address" -msgstr "" - -#: www/views/feedback/rateApp.html:17 -msgid "Send us feedback instead" -msgstr "代わりにフィードバックを送信" - -#: www/views/confirm.html:15 -#: www/views/includes/txp.html:12 -#: www/views/modals/txp-details.html:19 -#: www/views/tx-details.html:23 -msgid "Sending" -msgstr "送信中" - -#: src/js/services/onGoingProcess.js:39 -msgid "Sending 2FA code..." -msgstr "2段階認証コードを送信中…" - -#: src/js/services/onGoingProcess.js:36 -msgid "Sending feedback..." -msgstr "フィードバックを送信中..." - -#: www/views/confirm.html:16 -msgid "Sending maximum amount" -msgstr "全残高を送金" - -#: src/js/services/onGoingProcess.js:31 -msgid "Sending transaction" -msgstr "取引送信中" - -#: src/js/controllers/confirm.js:490 -msgid "Sending {{amountStr}} from your {{name}} wallet" -msgstr "ウォレット {{name}} から {{amountStr}} の送金を行います。" - -#: www/views/includes/walletHistory.html:42 -#: www/views/modals/tx-status.html:9 -#: www/views/topup.html:100 -#: www/views/tx-details.html:17 -msgid "Sent" -msgstr "送金済み" - -#: src/js/controllers/tx-details.js:112 -msgid "Sent Funds" -msgstr "資金を送金済み" - -#: src/js/services/bwcError.js:38 -msgid "Server response could not be verified" -msgstr "サーバーからの返答を検証できませんでした" - -#: src/js/controllers/buyAmazon.js:96 -msgid "Service not available" -msgstr "" - -#: www/views/includes/homeIntegrations.html:3 -msgid "Services" -msgstr "サービス" - -#: www/views/preferencesLogs.html:3 -msgid "Session Log" -msgstr "セッションのログ" - -#: www/views/preferencesAbout.html:35 -msgid "Session log" -msgstr "セッションのログ" - -#: www/views/tab-export-file.html:10 -msgid "Set up a password" -msgstr "パスワードを設定" - -#: src/js/controllers/preferencesFee.js:84 -msgid "Set your own fee in satoshis/byte" -msgstr "" - -#: www/views/tab-settings.html:3 -#: www/views/tabs.html:19 -msgid "Settings" -msgstr "設定" - -#: www/views/feedback/complete.html:17 -#: www/views/feedback/complete.html:26 -msgid "Share the love by inviting your friends." -msgstr "是非友達と共有して下さい" - -#: www/views/copayers.html:20 -msgid "Share this invitation with your copayers" -msgstr "ウォレット参加者に\n" -"この招待コードを\n" -"送って下さい。" - -#: src/js/controllers/feedback/complete.js:5 -#: www/views/tab-settings.html:36 -msgid "Share {{appName}}" -msgstr "{{appName}}を共有" - -#: www/views/tab-import-hardware.html:24 -msgid "Shared Wallet" -msgstr "共有ウォレットに参加" - -#: www/views/preferencesExternal.html:34 -msgid "Show Recovery Phrase" -msgstr "復元フレーズを表示" - -#: www/views/tab-receive.html:34 -msgid "Show address" -msgstr "アドレスを表示" - -#: www/views/join.html:45 -#: www/views/tab-create-personal.html:25 -#: www/views/tab-create-shared.html:54 -#: www/views/tab-export-file.html:24 -#: www/views/tab-import-file.html:27 -#: www/views/tab-import-hardware.html:30 -#: www/views/tab-import-phrase.html:32 -msgid "Show advanced options" -msgstr "詳細設定を表示" - -#: www/views/tab-send.html:37 -msgid "Show bitcoin address" -msgstr "ビットコインアドレスを表示" - -#: www/views/tab-send.html:59 -msgid "Show more" -msgstr "すべて表示" - -#: src/js/services/bwcError.js:104 -msgid "Signatures rejected by server" -msgstr "サーバーより署名が却下されました。" - -#: src/js/services/onGoingProcess.js:32 -msgid "Signing transaction" -msgstr "取引署名中" - -#: 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 "ビットコインの管理は全てご自身でしていただくため、端末やアプリの不具合や削除に備えるために復元フレーズを書き留めていただきます。" - -#: www/views/tab-create-personal.html:120 -#: www/views/tab-create-shared.html:149 -msgid "Single Address Wallet" -msgstr "単一アドレスウォレット" - -#: www/views/onboarding/collectEmail.html:40 -#: www/views/onboarding/tour.html:11 -msgid "Skip" -msgstr "スキップ" - -#: src/js/controllers/modals/txpDetails.js:34 -msgid "Slide" -msgstr "スライドして" - -#: www/views/buyAmazon.html:96 -msgid "Slide to buy" -msgstr "" - -#: src/js/controllers/create.js:83 -#: src/js/controllers/join.js:68 -msgid "Specify Recovery Phrase..." -msgstr "復元フレーズを指定…" - -#: src/js/services/bwcError.js:92 -msgid "Spend proposal is not accepted" -msgstr "送金の提案が受諾されませんでした。" - -#: src/js/services/bwcError.js:95 -msgid "Spend proposal not found" -msgstr "送金の提案が見つかりませんでした。" - -#: src/js/services/bwcError.js:137 -msgid "Spending Password needed" -msgstr "パスワードが必要" - -#: www/views/walletDetails.html:162 -msgid "Spending this balance will need significant Bitcoin network fees" -msgstr "この入力の組み合わせを送金するために膨大なビットコインネットワーク手数料を必要とします" - -#: www/views/tab-send.html:28 -msgid "Start sending bitcoin" -msgstr "ビットコインの送金を始めましょう" - -#: www/views/lockSetup.html:3 -msgid "Startup Lock" -msgstr "起動ロック" - -#: www/views/topup.html:101 -msgid "Success" -msgstr "成功" - -#: src/js/services/feeService.js:14 -msgid "Super Economy" -msgstr "超節約" - -#: www/views/paperWallet.html:7 -msgid "Sweep" -msgstr "全残高インポート" - -#: www/views/includes/incomingDataMenu.html:89 -#: www/views/paperWallet.html:3 -msgid "Sweep paper wallet" -msgstr "ペーパーウォレットの全残高インポート" - -#: src/js/services/onGoingProcess.js:33 -msgid "Sweeping Wallet..." -msgstr "ビットコイン回収中…" - -#: www/views/preferencesDeleteWallet.html:16 -msgid "THIS ACTION CANNOT BE REVERSED" -msgstr "***注意*** このアクションを元に戻すことはできません!!!" - -#: www/views/onboarding/welcome.html:5 -msgid "Take control of your money,
get started with bitcoin." -msgstr "お金のコントロールを取り戻そう、
ビットコインをはじめよう" - -#: www/views/walletDetails.html:140 -#: www/views/walletDetails.html:60 -msgid "Tap and hold to show" -msgstr "長押しで表示" - -#: www/views/walletDetails.html:112 -#: www/views/walletDetails.html:31 -msgid "Tap to retry" -msgstr "タップしてやり直し" - -#: www/views/termsOfUse.html:3 -msgid "Terms Of Use" -msgstr "利用規約" - -#: www/views/modals/terms.html:3 -#: www/views/onboarding/disclaimer.html:29 -#: www/views/onboarding/disclaimer.html:43 -#: www/views/preferencesAbout.html:30 -msgid "Terms of Use" -msgstr "利用規約" - -#: www/views/tab-create-personal.html:116 -#: www/views/tab-import-phrase.html:65 -msgid "Testnet" -msgstr "テスト用ネットワーク" - -#: www/views/includes/incomingDataMenu.html:61 -msgid "Text" -msgstr "" - -#: src/js/controllers/feedback/send.js:27 -#: src/js/controllers/feedback/send.js:76 -#: www/views/feedback/complete.html:20 -#: www/views/feedback/rateApp.html:4 -msgid "Thank you!" -msgstr "ありがとうございます!" - -#: src/js/controllers/feedback/send.js:72 -msgid "Thanks!" -msgstr "ありがとうございます。" - -#: src/js/controllers/feedback/send.js:73 -msgid "That's exciting to hear. We'd love to earn that fifth star from you – how could we improve your experience?" -msgstr "嬉しい限りです!是非5つ星のアプリを目指したいため、このアプリの改善するにはどうしたら良いと思いますか?" - -#: src/js/services/ledger.js:152 -msgid "The Ledger Chrome application is not installed" -msgstr "Ledgerのクロームアプリがインストールされていません。" - -#: 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 "このウォレットの1承認未満の残高。" - -#: www/views/tab-import-phrase.html:5 -msgid "The derivation path" -msgstr "派生パス" - -#: www/views/onboarding/tour.html:37 -msgid "The exchange rate changes with the market." -msgstr "為替レートは市場と共に変動する" - -#: www/views/preferencesFee.html:12 -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:51 -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 "連続未使用アドレスの上限(20)に達しました。どれかにアドレスにビットコインが少量でも入れば再び受取画面にて新しいアドレスを生成することができるようになります。" - -#: src/js/controllers/onboarding/terms.js:21 -msgid "The official English Terms of Service are available on the BitPay website." -msgstr "英語公式の規約は BitPay のウェブサイトにてご覧いただけます。" - -#: www/views/tab-import-phrase.html:4 -msgid "The password of the recovery phrase (if set)" -msgstr "復元フレーズ用のパスワード(設定してある場合のみ)" - -#: src/js/services/walletService.js:1140 -msgid "The payment was created but could not be completed. Please try again from home screen" -msgstr "送金の提案は作成されましたが完了できませんでした。ホーム画面からやり直して下さい。" - -#: www/views/modals/txp-details.html:26 -msgid "The payment was removed by creator" -msgstr "送金の提案が作成者により削除されました" - -#: www/views/join.html:88 -#: www/views/tab-create-personal.html:61 -#: www/views/tab-create-shared.html:90 -#: www/views/tab-import-phrase.html:40 -msgid "The recovery phrase could require a password to be imported" -msgstr "復元フレーズにパスワードをかけることが\n" -"できるのでかけてある場合は\n" -"インポート時に必要です。" - -#: src/js/services/bwcError.js:56 -msgid "The request could not be understood by the server" -msgstr "サーバーが要求を処理できませんでした。" - -#: www/views/addresses.html:52 -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 "復元のプロセスは残高の無いアドレスを20個連続で生成した場合に中止します。更にアドレスを生成したい場合は既存の20個のアドレスのどれかにビットコインを少量でも入金しますと、新しいアドレスが生成できます。" - -#: src/js/services/bwcError.js:98 -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:27 -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 "取引履歴は新規の取引が現れる度に端末にキャッシュとして保存されます。この機能はそのキャッシュを削除し、全ての取引履歴を初期の状態からサーバーに問い合わせ直します。" - -#: www/views/tab-import-phrase.html:6 -msgid "The wallet service URL" -msgstr "ウォレットサービスのURL" - -#: src/js/controllers/tab-home.js:38 -msgid "There is a new version of {{appName}} available" -msgstr "{{appName}} の新しいバージョンがあります。" - -#: src/js/controllers/import.js:213 -#: src/js/controllers/import.js:237 -#: src/js/controllers/import.js:317 -msgid "There is an error in the form" -msgstr "フォームにエラーがありました" - -#: src/js/controllers/feedback/send.js:61 -#: src/js/controllers/feedback/send.js:65 -msgid "There's obviously something we're doing wrong." -msgstr "このアプリで何か間違ったことをやっているようです。" - -#: src/js/controllers/feedback/rateCard.js:38 -msgid "This app is fantastic!" -msgstr "このアプリは素晴らしいです!" - -#: www/views/onboarding/tour.html:47 -msgid "This app stores your bitcoin with cutting-edge security." -msgstr "このアプリは、最先端のセキュリティであなたのビットコインをお守りします。" - -#: src/js/controllers/confirm.js:468 -msgid "This bitcoin payment request has expired." -msgstr "ビットコインペイメントの請求期限が切れています。" - -#: www/views/join.html:130 -#: www/views/tab-create-personal.html:101 -#: www/views/tab-create-shared.html:130 -msgid "This password cannot be recovered. If the password is lost, there is no way you could recover your funds." -msgstr "このパスワードは復元できません。リセットすることができません。弊社のサーバーで管理するものではありません。復元フレーズとセットで必ず書き留めておいて下さい。復元フレーズとこのパスワードのどれかを忘れてしまうと、ビットコインを復元することができません。ご注意下さい。" - -#: www/views/backup.html:24 -msgid "This recovery phrase was created with a password. To recover this wallet both the recovery phrase and password are needed." -msgstr "この復元フレーズにパスワードがかかっています。このウォレットを復元するためには、復元フレーズに加え、パスワードも必要です。" - -#: www/views/tx-details.html:93 -msgid "This transaction amount is too small compared to current Bitcoin network fees. Spending these funds will need a Bitcoin network fee cost comparable to the funds itself." -msgstr "この取引の金額はビットコインネットワーク手数料より低いです。送金額より大きい手数料を払ってしまうことになります。" - -#: www/views/tx-details.html:89 -msgid "This transaction could take a long time to confirm or could be dropped due to the low fees set by the sender" -msgstr "この取引は承認されるまで非常に時間のかかる可能性があります。承認されずにネットワークに捨てられてしまう危険性もありますので、承認されるまでお待ちいただくことを強くおすすめします。" - -#: www/views/walletDetails.html:116 -#: 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 "現在設定中のBitcore Wallet Service (BWS) サーバーにて、このウォレットの登録がありません。再登録を行うこともできます。" - -#: www/views/modals/txp-details.html:138 -#: www/views/tx-details.html:121 -msgid "Timeline" -msgstr "履歴" - -#: www/views/confirm.html:31 -#: www/views/includes/output.html:2 -#: www/views/modals/txp-details.html:111 -#: www/views/modals/txp-details.html:53 -#: www/views/tx-details.html:41 -#: www/views/tx-details.html:53 -msgid "To" -msgstr "宛先" - -#: www/views/tab-send.html:32 -msgid "To get started, buy bitcoin or share your address. You can receive bitcoin from any wallet or service." -msgstr "はじめるには、ビットコインを購入したり、アドレスを他の人に共有したりしましょう。どのビットコインウォレットやサービスから受け取れます。" - -#: www/views/tab-send.html:33 -msgid "To get started, you'll need to create a bitcoin wallet and get some bitcoin." -msgstr "はじめに、ビットコインウォレットを作成し、ビットコインを入手する必要があります。" - -#: src/js/services/bitpayAccountService.js:73 -msgid "To {{reason}} you must first add your BitPay account - {{email}}" -msgstr "{{reason}}:その前にBitPayアカウントを追加する必要があります - {{email}}" - -#: src/js/services/onGoingProcess.js:48 -msgid "Top up in progress..." -msgstr "残高補充処理中..." - -#: src/js/controllers/topup.js:205 -msgid "Top up {{amountStr}} to debit card ({{cardLastNumber}})" -msgstr "デビットカード ({{cardLastNumber}}) に {{amountStr}} の入金を行う" - -#: www/views/buyAmazon.html:61 -#: www/views/modals/wallet-balance.html:23 -#: www/views/topup.html:70 -msgid "Total" -msgstr "合計" - -#: www/views/walletDetails.html:185 -msgid "Total Locked Balance" -msgstr "ロック中の残高" - -#: www/views/tab-create-shared.html:33 -msgid "Total number of copayers" -msgstr "参加人数を選択して下さい。" - -#: www/views/addresses.html:81 -msgid "Total wallet inputs" -msgstr "合計ウォレット入力" - -#: src/js/services/fingerprintService.js:63 -#: src/js/services/fingerprintService.js:68 -msgid "Touch ID Failed" -msgstr "Touch ID が失敗しました。" - -#: src/js/controllers/tx-details.js:11 -msgid "Transaction" -msgstr "取引" - -#: www/views/confirm.html:128 -msgid "Transaction Created" -msgstr "" - -#: www/views/preferencesAdvanced.html:29 -#: www/views/preferencesHistory.html:3 -msgid "Transaction History" -msgstr "取引履歴" - -#: src/js/services/bwcError.js:83 -msgid "Transaction already broadcasted" -msgstr "取引は既に配信されました。" - -#: src/js/controllers/buyAmazon.js:306 -#: src/js/controllers/topup.js:279 -msgid "Transaction has not been created" -msgstr "" - -#: www/views/topup.html:104 -msgid "Transaction initiated" -msgstr "取引が開始されました" - -#: src/js/controllers/tx-details.js:102 -msgid "Transaction not available at this time" -msgstr "現在この取引はご覧いただけません。" - -#: src/js/controllers/activity.js:45 -#: src/js/controllers/tab-home.js:174 -msgid "Transaction not found" -msgstr "取引は見つかりません" - -#: www/views/modals/chooseFeeLevel.html:54 -msgid "Transactions without fee are not supported." -msgstr "" - -#: src/js/controllers/paperWallet.js:110 -msgid "Transfer to" -msgstr "移動先" - -#: www/views/tab-send.html:67 -msgid "Transfer to Wallet" -msgstr "ウォレットに移動" - -#: www/views/modals/pin.html:13 -msgid "Try again in {{expires}}" -msgstr "{{expires}} 経過後にもう一度試してください。" - -#: www/views/bitpayCardIntro.html:18 -msgid "Turn bitcoin into dollars, swipe anywhere Visa® is accepted." -msgstr "瞬時にビットコインを米ドルに変換!Visa®カード利用可能店舗ならどこでも!" - -#: www/views/tab-import-phrase.html:17 -msgid "Type the Recovery Phrase (usually 12 words)" -msgstr "復元フレーズの単語 (通常 12 個) を入力して下さい。" - -#: src/js/controllers/backup.js:75 -msgid "Uh oh..." -msgstr "あら…" - -#: www/views/tx-details.html:100 -msgid "Unconfirmed" -msgstr "未承認" - -#: www/views/preferencesUnit.html:4 -msgid "Unit" -msgstr "単位" - -#: www/views/walletDetails.html:179 -msgid "Unsent transactions" -msgstr "未送信取引" - -#: www/views/addresses.html:39 -msgid "Unused Addresses" -msgstr "未使用アドレス" - -#: www/views/addresses.html:50 -msgid "Unused Addresses Limit" -msgstr "未使用アドレス生成上限" - -#: src/js/controllers/tab-home.js:146 -msgid "Update Available" -msgstr "利用可能なアップデートあり" - -#: www/views/proposals.html:14 -msgid "Updating pending proposals. Please stand by" -msgstr "協議中の送金提案を更新します。しばらくお待ちください。" - -#: www/views/walletDetails.html:211 -msgid "Updating transaction history. Please stand by." -msgstr "取引履歴を更新します。しばらくお待ちください。" - -#: www/views/activity.html:14 -msgid "Updating... Please stand by" -msgstr "更新中... お待ち下さい" - -#: src/js/services/feeService.js:10 -msgid "Urgent" -msgstr "緊急" - -#: www/views/advancedSettings.html:11 -msgid "Use Unconfirmed Funds" -msgstr "未承認ビットコインを使用" - -#: src/js/services/onGoingProcess.js:34 -msgid "Validating recovery phrase..." -msgstr "復元フレーズを検証中…" - -#: www/views/modals/fingerprintCheck.html:4 -msgid "Verify your identity" -msgstr "認証を行って下さい" - -#: www/views/preferencesAbout.html:14 -#: www/views/preferencesExternal.html:25 -msgid "Version" -msgstr "バージョン" - -#: www/views/tab-export-file.html:69 -msgid "View" -msgstr "表示" - -#: www/views/addresses.html:34 -msgid "View All Addresses" -msgstr "全アドレスを表示" - -#: src/js/controllers/onboarding/terms.js:20 -msgid "View Terms of Service" -msgstr "サービス利用規約を表示" - -#: src/js/controllers/bitpayCard.js:122 -#: src/js/controllers/tx-details.js:174 -msgid "View Transaction on Insight" -msgstr "Insightにて取引を表示" - -#: src/js/controllers/tab-home.js:148 -msgid "View Update" -msgstr "更新情報を表示" - -#: www/views/tx-details.html:147 -msgid "View on blockchain" -msgstr "ブロックチェーンで詳細を閲覧" - -#: www/views/walletDetails.html:171 -msgid "WARNING: Key derivation is not working on this device/wallet. Actions cannot be performed on this wallet." -msgstr "注意:このデバイスでは鍵の派生がちゃんと動いておりません。このウォレットは正常に動作しません。" - -#: www/views/tab-export-file.html:45 -msgid "WARNING: Not including the private key allows to check the wallet balance, transaction history, and create spend proposals from the export. However, does not allow to approve (sign) proposals, so funds will not be accessible from the export." -msgstr "注意:このウォレットは秘密鍵がありません。残高の確認、取引履歴の確認、送金の提案ができます。しかし、送金の提案を承諾 (署名) できません。" - -#: www/views/tab-export-file.html:36 -msgid "WARNING: The private key of this wallet is not available. The export allows to check the wallet balance, transaction history, and create spend proposals from the export. However, does not allow to approve (sign) proposals, so funds will not be accessible from the export." -msgstr "注意:このウォレットは秘密鍵がありません。残高の確認、取引履歴の確認、送金の提案ができます。しかし、送金の提案を承諾 (署名) できません。" - -#: www/views/modals/paypro.html:42 -msgid "WARNING: UNTRUSTED CERTIFICATE" -msgstr "警告: 信頼されていない証明書" - -#: src/js/services/onGoingProcess.js:15 -msgid "Waiting for Ledger..." -msgstr "Ledger を待っています..." - -#: src/js/services/onGoingProcess.js:16 -msgid "Waiting for Trezor..." -msgstr "Trezor を待っています..." - -#: www/views/copayers.html:48 -msgid "Waiting for copayers" -msgstr "ウォレット参加者を待っています" - -#: www/views/copayers.html:53 -msgid "Waiting..." -msgstr "少々お待ち下さい…" - -#: www/views/addresses.html:3 -#: www/views/preferencesAdvanced.html:17 -msgid "Wallet Addresses" -msgstr "ウォレットのアドレス" - -#: www/views/preferencesColor.html:4 -msgid "Wallet Color" -msgstr "ウォレットの色" - -#: www/views/preferencesInformation.html:23 -msgid "Wallet Configuration (m-n)" -msgstr "ウォレット構成 (m-of-n)" - -#: www/views/onboarding/collectEmail.html:5 -msgid "Wallet Created" -msgstr "ウォレットが作成されました" - -#: www/views/preferencesInformation.html:17 -msgid "Wallet Id" -msgstr "ウォレットID" - -#: www/views/preferencesAdvanced.html:13 -#: www/views/preferencesInformation.html:3 -msgid "Wallet Information" -msgstr "ウォレット詳細" - -#: www/views/addresses.html:76 -msgid "Wallet Inputs" -msgstr "ウォレットの入力" - -#: www/views/join.html:26 -msgid "Wallet Invitation" -msgstr "ウォレット招待" - -#: www/views/join.html:57 -#: www/views/tab-create-personal.html:36 -#: www/views/tab-create-shared.html:65 -msgid "Wallet Key" -msgstr "ウォレットの鍵" - -#: www/views/preferencesAlias.html:4 -msgid "Wallet Name" -msgstr "ウォレット名" - -#: www/views/preferencesInformation.html:11 -msgid "Wallet Name (at creation)" -msgstr "ウォレット名 (作成時)" - -#: www/views/preferencesInformation.html:29 -msgid "Wallet Network" -msgstr "ウォレットのネットワーク" - -#: www/views/join.html:74 -#: www/views/tab-create-personal.html:48 -#: www/views/tab-create-shared.html:77 -msgid "Wallet Recovery Phrase" -msgstr "復元フレーズ" - -#: src/js/services/bwcError.js:26 -msgid "Wallet Recovery Phrase is invalid" -msgstr "ウォレットシードが不正です。" - -#: www/views/preferencesAdvanced.html:25 -#: www/views/tab-import-phrase.html:70 -msgid "Wallet Service URL" -msgstr "ウォレットサービスのURL" - -#: www/views/preferences.html:4 -msgid "Wallet Settings" -msgstr "ウォレットの設定" - -#: www/views/tab-import-hardware.html:11 -#: www/views/tab-import-phrase.html:58 -msgid "Wallet Type" -msgstr "ウォレットタイプ" - -#: src/js/services/bwcError.js:59 -msgid "Wallet already exists" -msgstr "既存のウォレットです" - -#: src/js/services/profileService.js:498 -msgid "Wallet already in Copay" -msgstr "Copay内の既存のウォレットです" - -#: www/views/includes/walletActivity.html:6 -msgid "Wallet created" -msgstr "ウォレットが作成されました" - -#: www/views/copayers.html:58 -msgid "Wallet incomplete and broken" -msgstr "ウォレットが未完成で破損しています" - -#: src/js/services/bwcError.js:65 -msgid "Wallet is full" -msgstr "ウォレットがいっぱいです。" - -#: src/js/services/bwcError.js:125 -msgid "Wallet is locked" -msgstr "ウォレットがロックされています。" - -#: src/js/services/bwcError.js:128 -msgid "Wallet is not complete" -msgstr "ウォレットが未完成です。" - -#: www/views/tab-create-personal.html:12 -#: www/views/tab-create-shared.html:12 -msgid "Wallet name" -msgstr "ウォレット名" - -#: src/js/services/bwcError.js:131 -msgid "Wallet needs backup" -msgstr "ウォレットバックアップが必要" - -#: www/views/tab-receive.html:59 -#: www/views/walletDetails.html:157 -msgid "Wallet not backed up" -msgstr "ウォレットがバックアップされていません" - -#: src/js/services/bwcError.js:68 -msgid "Wallet not found" -msgstr "ウォレットが見つかりません。" - -#: src/js/controllers/tab-home.js:220 -msgid "Wallet not registered" -msgstr "ウォレットが未登録" - -#: src/js/services/bwcError.js:29 -msgid "Wallet not registered at the wallet service. Recreate it from \"Create Wallet\" using \"Advanced Options\" to set your recovery phrase" -msgstr "このウォレットは Wallet Service にて登録されていません。再び「新規作成」メニューから詳細設定を選び、復元フレーズをご入力下さい。" - -#: www/views/backup.html:11 -msgid "Wallet recovery phrase not available." -msgstr "ウォレットの復元フレーズが削除されているため表示できません。" - -#: src/js/services/bwcError.js:50 -msgid "Wallet service not found" -msgstr "Wallet serviceが見つかりません。" - -#: www/views/tab-home.html:69 -msgid "Wallets" -msgstr "ウォレット" - -#: www/views/tab-settings.html:102 -msgid "Wallets & Integrations" -msgstr "ウォレットと連動" - -#: src/js/controllers/addressbookView.js:23 -#: src/js/controllers/modals/txpDetails.js:147 -#: src/js/controllers/modals/txpDetails.js:164 -#: src/js/controllers/preferencesDelete.js:25 -#: src/js/controllers/preferencesExternal.js:14 -#: www/views/preferencesDeleteWallet.html:11 -msgid "Warning!" -msgstr "注意!" - -#: www/views/modals/txp-details.html:47 -msgid "Warning: this transaction has unconfirmed inputs" -msgstr "注意: この取引は未承認資金が含まれており、承認されるまで商品等をお渡しするのを待つことをお勧めします。" - -#: src/js/controllers/onboarding/backupRequest.js:17 -msgid "Watch out!" -msgstr "注意して下さい!" - -#: src/js/controllers/feedback/send.js:69 -msgid "We'd love to do better." -msgstr "サービスを改善していきます" - -#: www/views/backup.html:28 -msgid "We'll confirm on the next screen." -msgstr "次の画面で確認作業を行います。" - -#: src/js/controllers/feedback/send.js:77 -msgid "We're always looking for ways to improve {{appName}}." -msgstr "弊社では、{{appName}} を改善する方法を常に探しています。" - -#: src/js/controllers/feedback/send.js:83 -msgid "We're always looking for ways to improve {{appName}}. How could we improve your experience?" -msgstr "常に{{appName}}を改善したく思っております。どのようにしたら改善できると思いますか?" - -#: www/views/includes/incomingDataMenu.html:6 -msgid "Website" -msgstr "" - -#: www/views/preferencesLanguage.html:16 -msgid "We’re always looking for translation contributions! You can make corrections or help to make this app available in your native language by joining our community on Crowdin." -msgstr "常にボランティア翻訳者募集中です!Crowdinにてご自分の母国語の翻訳をしてこのアプリをより良いものにしてみませんか?" - -#: www/views/preferencesAlias.html:11 -msgid "What do you call this wallet?" -msgstr "このウォレットの名前は何ですか?" - -#: www/views/preferencesAlias.html:12 -msgid "When this wallet was created, it was called “{{walletName}}”. You can change the name displayed on this device below." -msgstr "このウォレットが作成された当時は「{{walletName}}」と名付けられましたが、この端末での表示名を下記にて変更することができます。" - -#: www/views/onboarding/collectEmail.html:10 -msgid "Where would you like to receive email notifications about payments?" -msgstr "送金発生時のメール通知はどのメールアドレスで受け取りますか?" - -#: www/views/addresses.html:19 -msgid "Why?" -msgstr "なぜ?" - -#: www/views/feedback/rateApp.html:10 -msgid "Would you be willing to rate {{appName}} in the app store?" -msgstr "アプリケーションストアにレビューを書いてみませんか?" - -#: www/views/onboarding/notifications.html:4 -msgid "Would you like to receive push notifications about payments?" -msgstr "送金発生時にプッシュ通知を受け取りますか?" - -#: src/js/controllers/import.js:270 -msgid "Wrong number of recovery words:" -msgstr "単語の数が間違っています:" - -#: src/js/services/bwcError.js:140 -msgid "Wrong spending password" -msgstr "不正なパスワード" - -#: www/views/modals/confirmation.html:7 -msgid "Yes" -msgstr "はい" - -#: src/js/controllers/onboarding/backupRequest.js:25 -msgid "Yes, skip" -msgstr "飛ばす" - -#: src/js/controllers/onboarding/backupRequest.js:24 -msgid "You can create a backup later from your wallet settings." -msgstr "ウォレットの設定から、後でバックアップを作成できます。" - -#: src/js/controllers/preferencesLanguage.js:12 -msgid "You can make contributions by signing up on our Crowdin community translation website. We’re looking forward to hearing from you!" -msgstr "Crowdinのサイトにて翻訳者登録をして、今すぐに投稿をいただけます。お待ちしております。" - -#: www/views/tab-scan.html:16 -msgid "You can scan bitcoin addresses, payment requests, paper wallets, and more." -msgstr "ビットコインアドレス、支払い請求、ペーパーウォレットなどをスキャンできます。" - -#: 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 "GitHubのページにて最近の開発動向を見たり、改善案のソースコードの貢献したりすることができます。" - -#: www/views/onboarding/tour.html:19 -msgid "You can spend bitcoin at millions of websites and stores worldwide." -msgstr "世界中のECサイトや店舗でビットコインを使って支払いができます。" - -#: www/views/backup.html:12 -msgid "You can still export it from Advanced > Export." -msgstr "バックアップファイルの作成は「上級者向け」⇒「エクスポート」からアクセスできます。" - -#: www/views/onboarding/tour.html:32 -msgid "You can trade it for other currencies like US Dollars, Euros, or Pounds." -msgstr "米ドル、ユーロ、ポンドなど他の通貨との取引ができます。" - -#: www/views/onboarding/tour.html:46 -msgid "You control your bitcoin." -msgstr "ビットコインの自己管理" - -#: www/views/modals/chooseFeeLevel.html:63 -msgid "You should not set a fee higher than {{maxFeeRecommended}} satoshis/byte." -msgstr "" - -#: www/views/modals/bitpay-card-confirmation.html:5 -msgid "You will need to log back for fill in your BitPay Card." -msgstr "BitPayカードに入金するためにログインする必要があります。" - -#: www/views/preferencesNotifications.html:34 -msgid "You'll receive email notifications about payments sent and received from your wallets." -msgstr "メールアドレスにウォレットへの入金や出金に関する通知が送られます。" - -#: www/views/bitpayCard.html:50 -msgid "Your BitPay Card is ready. Add funds to your card to start using it at stores and ATMs worldwide." -msgstr "BitPayカードの準備が整いました。入金して全世界のお店やATMでご利用下さい。" - -#: www/views/includes/confirmBackupPopup.html:6 -msgid "Your bitcoin wallet is backed up!" -msgstr "ビットコインウォレットがバックアップされました!" - -#: www/views/tab-home.html:36 -msgid "Your bitcoin wallet is ready!" -msgstr "ビットコインウォレットが完成しました!" - -#: www/views/modals/chooseFeeLevel.html:60 -msgid "Your fee is lower than recommended." -msgstr "" - -#: www/views/feedback/send.html:42 -msgid "Your ideas, feedback, or comments" -msgstr "提案、評価、コメントなど" - -#: www/views/tab-create-shared.html:22 -msgid "Your name" -msgstr "自分の名前" - -#: www/views/join.html:16 -msgid "Your nickname" -msgstr "自分のハンドルネーム" - -#: www/views/tab-export-file.html:11 -#: www/views/tab-import-file.html:20 -msgid "Your password" -msgstr "パスワード" - -#: www/views/buyAmazon.html:102 -msgid "Your purchase could not be completed" -msgstr "" - -#: www/views/buyAmazon.html:105 -msgid "Your purchase was added to the list of pending" -msgstr "" - -#: www/views/onboarding/backupRequest.html:10 -msgid "Your wallet is never saved to cloud storage or standard device backups." -msgstr "ウォレットは一度もクラウドへ保存されたりすることはありませんし、携帯電話などに付いている標準バックアップ機能ではバックアップされません!!!!" - -#: src/js/services/walletService.js:1031 -msgid "Your wallet key will be encrypted. The Spending Password cannot be recovered. Be sure to write it down." -msgstr "ウォレットの鍵が暗号化されます。Copayでは送金時のパスワードをリセットしてくれる機能がありませんので、パスワードを忘れないよう、控えておいて下さい。" - -#: www/views/includes/walletSelector.html:23 -#: www/views/paperWallet.html:35 -#: www/views/tab-home.html:96 -#: www/views/tab-receive.html:74 -#: www/views/walletDetails.html:139 -#: www/views/walletDetails.html:59 -msgid "[Balance Hidden]" -msgstr "[残高非表示中]" - -#: src/js/controllers/bitpayCardIntro.js:11 -msgid "add your BitPay Visa card(s)" -msgstr "BitPay VISAカードを追加します" - -#: www/views/includes/available-balance.html:8 -msgid "locked by pending payments" -msgstr "未対応送金の提案によりロック中" - -#: src/js/services/profileService.js:389 -msgid "me" -msgstr "自分" - -#: www/views/addressbook.add.html:32 -msgid "name@example.com" -msgstr "name@example.com" - -#: www/views/preferencesHistory.html:15 -msgid "preparing..." -msgstr "準備中..." - -#: src/js/controllers/confirm.js:329 -#: src/js/controllers/modals/txpDetails.js:44 -msgid "to accept" -msgstr "承諾する" - -#: src/js/controllers/confirm.js:327 -msgid "to pay" -msgstr "支払う" - -#: src/js/controllers/confirm.js:331 -#: src/js/controllers/modals/txpDetails.js:41 -msgid "to send" -msgstr "送金する" - -#: src/js/controllers/buyAmazon.js:238 -msgid "{{amountStr}} for Amazon.com Gift Card" -msgstr "" - -#: www/views/preferencesBwsUrl.html:21 -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}}はブロックチェーンの情報を取得したり参加者を同期させたりするためにBitcore Wallet Service (BWS)に依存します。初期値としてBitPay社が提供する https://bws.bitpay.com (BitPay公式のBWSサーバー)を設定していますが、独自で運用してウォレットをそちらに接続しても構いません。" - -#: src/js/controllers/confirm.js:358 -msgid "{{fee}} will be deducted for bitcoin networking fees." -msgstr "{{fee}} のビットコインネットワーク手数料が差し引かれます。" - -#: www/views/confirm.html:87 -msgid "{{tx.txp[wallet.id].feeRatePerStr}} of the sending amount" -msgstr "送金額に対する {{tx.txp[wallet.id].feeRatePerStr}}" - -#: www/views/walletDetails.html:212 -msgid "{{updatingTxHistoryProgress}} transactions downloaded" -msgstr "{{updatingTxHistoryProgress}} 個の取引ダウンロード済み" - -#: www/views/copayers.html:46 -#: www/views/includes/walletInfo.html:12 -msgid "{{wallet.m}}-of-{{wallet.n}}" -msgstr "{{wallet.m}}-of-{{wallet.n}}" - diff --git a/i18n/po/pl.po b/i18n/po/pl.po deleted file mode 100644 index 8e8b645af..000000000 --- a/i18n/po/pl.po +++ /dev/null @@ -1,3359 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Project-Id-Version: copay\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: crowdin.com\n" -"X-Crowdin-Project: copay\n" -"X-Crowdin-Language: pl\n" -"X-Crowdin-File: template.pot\n" -"Last-Translator: cmgustavo83\n" -"Language-Team: Polish\n" -"Language: pl\n" -"PO-Revision-Date: 2017-07-18 13:18-0400\n" - -#: www/views/modals/paypro.html:34 -msgid "(Trusted)" -msgstr "(Zaufany)" - -#: www/views/includes/txp.html:23 -#: www/views/includes/walletHistory.html:64 -msgid "(possible double spend)" -msgstr "(możliwa podwójna wypłata)" - -#: www/views/modals/txp-details.html:161 -msgid "* A payment proposal can be deleted if 1) you are the creator, and no other copayer has signed, or 2) 24 hours have passed since the proposal was created." -msgstr "* Wniosek wypłaty może być usunięty jeśli: 1) Po utworzeniu nie zatwierdził go żaden inny współwłaściciel portfela lub 2) minęły 24 godziny od kiedy wniosek został utworzony." - -#: www/views/tx-details.html:84 -msgid "- {{btx.feeRateStr}} of the transaction" -msgstr "" - -#: www/views/modals/txp-details.html:104 -msgid "- {{tx.feeRateStr}} of the transaction" -msgstr "" - -#: www/views/feedback/rateApp.html:7 -msgid "5-star ratings help us get {{appName}} into more hands, and more users means more resources can be committed to the app!" -msgstr "5-gwiazdkowa ocena pozwoli na wzrost popularności {{appName}}, a większa ilość użytkowników da nam do dyspozycji więcej środków na rozwój aplikacji!" - -#: src/js/controllers/feedback/send.js:27 -#: www/views/feedback/complete.html:21 -msgid "A member of the team will review your feedback as soon as possible." -msgstr "Członek zespołu zweryfikuje twoją opinię tak szybko, jak to możliwe." - -#: src/js/controllers/confirm.js:351 -msgid "A total of {{amountAboveMaxSizeStr}} were excluded. The maximum size allowed for a transaction was exceeded." -msgstr "Uwaga: łącznie kwota {{amountAboveMaxSizeStr}} została wyłączona. Został przekroczony maksymalny rozmiar dozwolony dla transakcji." - -#: src/js/controllers/confirm.js:345 -msgid "A total of {{amountBelowFeeStr}} were excluded. These funds come from UTXOs smaller than the network fee provided." -msgstr "Uwaga: łącznie kwota {{amountBelowFeeStr}} została wyłączona. Środki te pochodzą z UTXOs mniejszych niż gwarantowana prowizja sieci." - -#: src/js/controllers/preferencesAbout.js:6 -#: www/views/tab-settings.html:156 -msgid "About" -msgstr "O programie" - -#: src/js/controllers/modals/txpDetails.js:56 -#: src/js/controllers/tx-details.js:62 -msgid "Accepted" -msgstr "Zatwierdzono" - -#: www/views/preferencesInformation.html:66 -msgid "Account" -msgstr "Konto" - -#: www/views/join.html:69 -#: www/views/tab-create-personal.html:43 -#: www/views/tab-create-shared.html:72 -#: www/views/tab-import-hardware.html:19 -msgid "Account Number" -msgstr "Numer konta" - -#: www/views/preferencesBitpayServices.html:23 -msgid "Accounts" -msgstr "Konta" - -#: www/views/bitpayCard.html:56 -msgid "Activity" -msgstr "Transakcje" - -#: src/js/services/bitpayAccountService.js:83 -msgid "Add Account" -msgstr "Dodaj konto" - -#: src/js/services/bitpayAccountService.js:69 -msgid "Add BitPay Account?" -msgstr "Dodać konto BitPay?" - -#: www/views/addressbook.add.html:4 -#: www/views/addressbook.html:22 -msgid "Add Contact" -msgstr "Dodaj kontakt" - -#: www/views/bitpayCard.html:28 -msgid "Add Funds" -msgstr "Dodaj środki" - -#: www/views/confirm.html:96 -msgid "Add Memo" -msgstr "Dodaj notatkę" - -#: www/views/join.html:84 -#: www/views/tab-create-personal.html:57 -#: www/views/tab-create-shared.html:86 -msgid "Add a password" -msgstr "Dodaj hasło" - -#: www/views/includes/accountSelector.html:27 -msgid "Add account" -msgstr "Dodaj konto" - -#: www/views/join.html:87 -#: www/views/tab-create-personal.html:60 -#: www/views/tab-create-shared.html:89 -msgid "Add an optional password to secure the recovery phrase" -msgstr "Dodaj opcjonalnie hasło w celu zabezpieczenia kluczowej frazy" - -#: www/views/includes/incomingDataMenu.html:41 -msgid "Add as a contact" -msgstr "" - -#: src/js/controllers/confirm.js:374 -msgid "Add description" -msgstr "Dodaj opis" - -#: www/views/topup.html:6 -msgid "Add funds" -msgstr "Dodaj fundusze" - -#: src/js/services/bitpayAccountService.js:78 -msgid "Add this BitPay account ({{email}})?" -msgstr "Dodać to konto BitPay ({{email}})?" - -#: www/views/add.html:3 -msgid "Add wallet" -msgstr "Dodaj portfel" - -#: www/views/addressbook.view.html:26 -#: www/views/customAmount.html:28 -#: www/views/modals/paypro.html:24 -msgid "Address" -msgstr "Adres" - -#: www/views/addressbook.html:6 -#: www/views/tab-settings.html:13 -msgid "Address Book" -msgstr "Książka adresowa" - -#: www/views/preferencesInformation.html:35 -msgid "Address Type" -msgstr "Rodzaj adresu" - -#: www/views/addresses.html:64 -msgid "Addresses With Balance" -msgstr "Adresy z funduszami" - -#: www/views/tab-settings.html:149 -msgid "Advanced" -msgstr "Zaawansowane" - -#: www/views/advancedSettings.html:3 -msgid "Advanced Settings" -msgstr "Ustawienia zaawansowane" - -#: www/views/bitpayCard.html:62 -msgid "All" -msgstr "Wszystko" - -#: www/views/allAddresses.html:3 -msgid "All Addresses" -msgstr "Wszystkie adresy" - -#: www/views/modals/wallet-balance.html:18 -msgid "All of your bitcoin wallet balance may not be available for immediate spending." -msgstr "Wszystkie salda portfela bitcoin mogą nie być dostępne do natychmiastowego wydania." - -#: www/views/tab-receive.html:25 -msgid "All signing devices must be added to this multisig wallet before bitcoin addresses can be created." -msgstr "Wszystkie podpisane urządzenia muszą zostać dodane do tego portfela przed utworzeniem adresów bitcoin." - -#: www/views/tab-scan.html:21 -msgid "Allow Camera Access" -msgstr "Zezwalaj na dostęp do kamery" - -#: www/views/onboarding/notifications.html:7 -msgid "Allow notifications" -msgstr "Pozwól na otrzymywanie powiadomień" - -#: www/views/onboarding/disclaimer.html:14 -msgid "Almost done! Let's review." -msgstr "Prawie gotowe! Dokonajmy przeglądu." - -#: www/views/preferencesAltCurrency.html:4 -#: www/views/tab-settings.html:74 -msgid "Alternative Currency" -msgstr "Alternatywna waluta" - -#: src/js/controllers/buyAmazon.js:97 -msgid "Amazon.com is not available at this moment. Please try back later." -msgstr "" - -#: www/views/amount.html:44 -#: www/views/customAmount.html:34 -#: www/views/includes/output.html:7 -msgid "Amount" -msgstr "Kwota" - -#: src/js/services/bwcError.js:110 -msgid "Amount below minimum allowed" -msgstr "Kwota poniżej minimum dozwolona" - -#: src/js/controllers/confirm.js:191 -msgid "Amount too big" -msgstr "Zbyt duża kwota" - -#: www/views/includes/walletHistory.html:31 -msgid "Amount too low to spend" -msgstr "Zbyt niska kwota do wysłania" - -#: src/js/controllers/tab-home.js:147 -msgid "An update to this app is available. For your security, please update to the latest version." -msgstr "Dostępna jest aktualizacja aplikacji. Ze względów bezpieczeństwa należy zaktualizować do najnowszej wersji." - -#: www/views/backupWarning.html:14 -msgid "Anyone with your backup phrase can access or spend your bitcoin." -msgstr "Każdy, kto ma Twoją kluczową frazę może uzyskać dostęp lub wydać Twoje bitcoiny." - -#: www/views/addresses.html:94 -msgid "Approximate Bitcoin network fee to transfer wallet's balance (with normal priority)" -msgstr "" - -#: www/views/backupWarning.html:10 -msgid "Are you being watched?" -msgstr "Czy jesteś obserwowany?" - -#: src/js/controllers/preferencesExternal.js:15 -msgid "Are you being watched? Anyone with your recovery phrase can access or spend your bitcoin." -msgstr "Czy jesteś obserwowany? Każdy, kto zdobędzie twoją kluczową frazę może uzyskać dostęp do portfela i wydać twoje bitcoiny." - -#: src/js/controllers/copayers.js:56 -msgid "Are you sure you want to cancel and delete this wallet?" -msgstr "Czy na pewno chcesz usunąć ten portfel?" - -#: src/js/controllers/addressbookView.js:24 -msgid "Are you sure you want to delete this contact?" -msgstr "" - -#: src/js/controllers/preferencesDelete.js:26 -msgid "Are you sure you want to delete this wallet?" -msgstr "Czy na pewno chcesz usunąć ten portfel?" - -#: src/js/controllers/modals/txpDetails.js:148 -msgid "Are you sure you want to reject this transaction?" -msgstr "Czy na pewno chcesz odrzucić tę transakcję?" - -#: src/js/controllers/modals/txpDetails.js:165 -msgid "Are you sure you want to remove this transaction?" -msgstr "Czy na pewno chcesz usunąć tę transakcję?" - -#: src/js/controllers/onboarding/backupRequest.js:23 -msgid "Are you sure you want to skip it?" -msgstr "Czy na pewno chcesz pominąć?" - -#: www/views/modals/bitpay-card-confirmation.html:4 -msgid "Are you sure you would like to log out of your BitPay Card account?" -msgstr "" - -#: src/js/controllers/preferencesBitpayCard.js:7 -#: src/js/controllers/preferencesBitpayServices.js:20 -msgid "Are you sure you would like to remove your BitPay Card ({{lastFourDigits}}) from this device?" -msgstr "Czy na pewno chcesz usunąć kartę BitPay ({{lastFourDigits}}) z tego urządzenia?" - -#: www/views/includes/walletInfo.html:5 -msgid "Auditable" -msgstr "Weryfikowalny" - -#: www/views/modals/wallet-balance.html:42 -msgid "Available" -msgstr "Dostępne" - -#: www/views/includes/available-balance.html:3 -msgid "Available Balance" -msgstr "Dostępne saldo" - -#: www/views/modals/chooseFeeLevel.html:24 -#: www/views/preferencesFee.html:15 -msgid "Average confirmation time" -msgstr "Spodziewany czas potwierdzania" - -#: www/views/join.html:140 -#: www/views/tab-create-personal.html:111 -#: www/views/tab-create-shared.html:140 -#: www/views/tab-import-phrase.html:48 -msgid "BIP32 path for address derivation" -msgstr "BIP32 ścieżka dla adresu derywacji" - -#: www/views/preferences.html:34 -msgid "Backup" -msgstr "Kopia zapasowa" - -#: www/views/includes/backupNeededPopup.html:7 -msgid "Backup Needed" -msgstr "Potrzebna kopia zapasowa" - -#: src/js/controllers/lockSetup.js:87 -msgid "Backup all livenet wallets before using this function" -msgstr "Zrób kopię zapasową wszystkich swoich portfeli przed użyciem tej funkcji" - -#: www/views/preferences.html:36 -#: www/views/tab-settings.html:120 -msgid "Backup needed" -msgstr "Potrzebna kopia zapasowa" - -#: www/views/includes/backupNeededPopup.html:9 -msgid "Backup now" -msgstr "Utwórz kopię zapasową teraz" - -#: www/views/onboarding/backupRequest.html:11 -#: www/views/tab-export-file.html:89 -msgid "Backup wallet" -msgstr "Kopia zapasowa portfela" - -#: src/js/controllers/lockSetup.js:84 -msgid "Backup your wallet before using this function" -msgstr "Zrób kopię zapasową portfela przed użyciem tej funkcji" - -#: src/js/services/profileService.js:430 -msgid "Bad wallet invitation" -msgstr "Nieprawidłowe zaproszenie" - -#: www/views/preferencesInformation.html:96 -msgid "Balance By Address" -msgstr "Saldo wg adresu" - -#: www/views/includes/confirmBackupPopup.html:7 -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 "Pamiętaj aby przechowywać swoją kluczową frazę w bezpiecznym miejscu. Jeśli ta aplikacja zostanie usunięta, nie będziesz mógł bez niej odzyskać swoich pieniędzy." - -#: www/views/preferencesBitpayServices.html:9 -msgid "BitPay Visa® Cards" -msgstr "Karty BitPay Visa®" - -#: www/views/addressbook.add.html:38 -#: www/views/includes/incomingDataMenu.html:29 -msgid "Bitcoin Address" -msgstr "Adres bitcoin" - -#: www/views/modals/chooseFeeLevel.html:4 -#: www/views/preferencesFee.html:4 -#: www/views/tab-settings.html:85 -msgid "Bitcoin Network Fee Policy" -msgstr "Polityka prowizji sieci bitcoin" - -#: www/views/tab-settings.html:63 -msgid "Bitcoin Unit" -msgstr "Jednostki bitcoina" - -#: www/views/onboarding/tour.html:31 -msgid "Bitcoin is a currency." -msgstr "Bitcoin jest walutą." - -#: www/views/onboarding/disclaimer.html:15 -msgid "Bitcoin is different – it cannot be safely held with a bank or web service." -msgstr "Bitcoin jest inny – nie może być bezpiecznie przechowywany w banku lub usłudze internetowej." - -#: www/views/onboarding/tour.html:18 -msgid "Bitcoin is secure,
digital money." -msgstr "Bitcoin jest bezpieczny,
cyfrowe pieniądze." - -#: www/views/preferencesFee.html:11 -msgid "Bitcoin transactions include a fee collected by miners on the network." -msgstr "Transakcje Bitcoin obejmują prowizję pobieraną przez górników w sieci." - -#: www/views/buyAmazon.html:108 -msgid "Bought {{amountUnitStr}}" -msgstr "" - -#: www/views/modals/txp-details.html:36 -msgid "Broadcast Payment" -msgstr "Przekaż płatność" - -#: src/js/controllers/modals/txpDetails.js:58 -#: src/js/controllers/tx-details.js:64 -msgid "Broadcasted" -msgstr "Nadawane" - -#: src/js/services/onGoingProcess.js:11 -msgid "Broadcasting transaction" -msgstr "Przekazywanie transakcji" - -#: www/views/unsupported.html:6 -msgid "Browser unsupported" -msgstr "Przeglądarka nieobsługiwana" - -#: www/views/buyAmazon.html:5 -msgid "Buy" -msgstr "" - -#: www/views/includes/buyAndSellCard.html:3 -msgid "Buy & Sell Bitcoin" -msgstr "Kup & sprzedaj bitcoiny" - -#: www/views/tab-send.html:35 -msgid "Buy Bitcoin" -msgstr "Kup bitcoiny" - -#: src/js/controllers/buyAmazon.js:332 -msgid "Buy from" -msgstr "" - -#: src/js/services/onGoingProcess.js:40 -msgid "Buying Bitcoin..." -msgstr "Zakup bitcoinów..." - -#: src/js/services/onGoingProcess.js:12 -msgid "Calculating fee" -msgstr "Obliczanie prowizji" - -#: src/js/controllers/buyAmazon.js:311 -#: src/js/controllers/confirm.js:495 -#: src/js/controllers/topup.js:285 -#: src/js/services/popupService.js:62 -#: src/js/services/popupService.js:73 -#: www/views/addressbook.add.html:10 -#: www/views/feedback/send.html:5 -#: www/views/includes/incomingDataMenu.html:22 -#: www/views/includes/incomingDataMenu.html:54 -#: www/views/includes/incomingDataMenu.html:73 -#: www/views/includes/incomingDataMenu.html:97 -#: www/views/includes/note.html:6 -#: www/views/modals/bitpay-card-confirmation.html:8 -#: www/views/modals/confirmation.html:13 -msgid "Cancel" -msgstr "Anuluj" - -#: www/views/copayers.html:36 -msgid "Cancel invitation" -msgstr "Anuluj zaproszenie" - -#: src/js/controllers/onboarding/tour.js:52 -msgid "Cannot Create Wallet" -msgstr "Nie można utworzyć portfela" - -#: src/js/services/profileService.js:426 -msgid "Cannot join the same wallet more that once" -msgstr "Nie można dołączyć tego samego portfela więcej niż raz" - -#: www/views/includes/bitpayCardsCard.html:2 -msgid "Cards" -msgstr "Karty" - -#: www/views/modals/paypro.html:30 -msgid "Certified by" -msgstr "Certyfikowane przez" - -#: www/views/preferencesExternal.html:19 -msgid "Check installation and retry." -msgstr "Sprawdź instalację i ponów próbę." - -#: www/views/tab-import-file.html:4 -msgid "Choose a backup file from your computer" -msgstr "Wybierz plik kopii zapasowej z komputera" - -#: www/views/modals/wallets.html:9 -msgid "Choose your destination wallet" -msgstr "Wybierz swój portfel docelowy" - -#: www/views/modals/wallets.html:10 -msgid "Choose your source wallet" -msgstr "Wybierz swój portfel źródłowy" - -#: www/views/backup.html:54 -msgid "Clear" -msgstr "Wyczyść" - -#: www/views/preferencesHistory.html:24 -msgid "Clear cache" -msgstr "Wyczyść pamięć podręczną" - -#: src/js/controllers/modals/txpDetails.js:34 -msgid "Click" -msgstr "Kliknij" - -#: www/views/customAmount.html:4 -#: www/views/modals/paypro.html:4 -#: www/views/modals/pin.html:3 -#: www/views/modals/search.html:3 -#: www/views/modals/wallet-balance.html:3 -#: www/views/modals/wallets.html:5 -msgid "Close" -msgstr "Zamknij" - -#: www/views/preferences.html:22 -msgid "Color" -msgstr "Kolor" - -#: www/views/preferencesAbout.html:21 -msgid "Commit hash" -msgstr "Zatwierdzony hash" - -#: www/views/preferences.html:48 -msgid "Complete the backup process to use this option" -msgstr "Zakończ proces tworzenia kopii zapasowej, aby użyć tej opcji" - -#: www/views/bitpayCard.html:93 -msgid "Completed" -msgstr "Zakończono" - -#: src/js/controllers/buyAmazon.js:309 -#: src/js/controllers/confirm.js:494 -#: src/js/controllers/copayers.js:55 -#: src/js/controllers/topup.js:283 -#: www/views/backup.html:53 -#: www/views/backup.html:72 -#: www/views/confirm.html:4 -#: www/views/onboarding/collectEmail.html:32 -msgid "Confirm" -msgstr "Potwierdź" - -#: www/views/modals/terms.html:26 -#: www/views/onboarding/disclaimer.html:44 -msgid "Confirm & Finish" -msgstr "Potwierdź & zakończenie" - -#: www/views/buyAmazon.html:90 -msgid "Confirm purchase" -msgstr "" - -#: www/views/modals/pin.html:10 -msgid "Confirm your PIN" -msgstr "Potwierdź kod PIN" - -#: src/js/services/walletService.js:1034 -msgid "Confirm your new spending password" -msgstr "Potwierdź nowe hasło wypłat" - -#: www/views/tx-details.html:98 -msgid "Confirmations" -msgstr "Potwierdzenia" - -#: www/views/bitpayCard.html:68 -#: www/views/modals/wallet-balance.html:61 -msgid "Confirming" -msgstr "Potwierdzający" - -#: www/views/bitpayCardIntro.html:37 -msgid "Connect my BitPay Card" -msgstr "Podłącz kartę BitPay" - -#: src/js/services/onGoingProcess.js:13 -msgid "Connecting to Coinbase..." -msgstr "Łączenie z Coinbase..." - -#: src/js/services/onGoingProcess.js:14 -msgid "Connecting to Glidera..." -msgstr "Łączenie z Gildera..." - -#: src/js/services/bwcError.js:53 -msgid "Connection reset by peer" -msgstr "Połączenie zostało zresetowane" - -#: www/views/tab-send.html:45 -msgid "Contacts" -msgstr "Kontakty" - -#: www/views/onboarding/notifications.html:9 -msgid "Continue" -msgstr "Dalej" - -#: www/views/preferencesLanguage.html:26 -msgid "Contribute Translations" -msgstr "Wkład do tłumaczenia" - -#: src/js/services/bwcError.js:62 -msgid "Copayer already in this wallet" -msgstr "Użytkownik jest już w tym portfelu" - -#: src/js/services/bwcError.js:77 -msgid "Copayer already voted on this spend proposal" -msgstr "Użytkownik głosował już za tym wnioskiem wypłaty" - -#: src/js/services/bwcError.js:107 -msgid "Copayer data mismatch" -msgstr "Niezgodność danych współwłaściciela portfela" - -#: www/views/includes/walletActivity.html:2 -msgid "Copayer joined" -msgstr "Współwłaściciel dołączył" - -#: www/views/preferencesInformation.html:88 -msgid "Copayer {{$index}}" -msgstr "Współwłaściciele {{$index}}" - -#: src/js/controllers/copayers.js:79 -#: src/js/controllers/export.js:193 -#: www/views/includes/copyToClipboard.html:4 -msgid "Copied to clipboard" -msgstr "Skopiowano do schowka" - -#: www/views/tab-export-file.html:94 -msgid "Copy this text as it is to a safe place (notepad or email)" -msgstr "Skopiuj ten tekst w bezpiecznym miejscu (notatnik lub e-mail)" - -#: www/views/includes/incomingDataMenu.html:51 -#: www/views/includes/incomingDataMenu.html:70 -#: www/views/includes/incomingDataMenu.html:94 -#: www/views/preferencesLogs.html:10 -#: www/views/tab-export-file.html:78 -msgid "Copy to clipboard" -msgstr "Skopiuj do schowka" - -#: www/views/tab-import-phrase.html:2 -msgid "Could not access the wallet at the server. Please check:" -msgstr "Nie można uzyskać dostępu do portfela na serwerze. Proszę sprawdzić:" - -#: src/js/controllers/buyAmazon.js:101 -msgid "Could not access to Amazon.com" -msgstr "" - -#: src/js/services/profileService.js:493 -msgid "Could not access wallet" -msgstr "Nie można uzyskać dostępu do portfela" - -#: src/js/controllers/confirm.js:185 -msgid "Could not add message to imported wallet without shared encrypting key" -msgstr "Nie można dodać wiadomość do importowanego portfela bez udostępnionego klucza szyfrowania" - -#: src/js/controllers/modals/txpDetails.js:193 -msgid "Could not broadcast payment" -msgstr "Wypłata nie może zostać wysłana" - -#: src/js/services/bwcError.js:41 -msgid "Could not build transaction" -msgstr "Nie udało się utworzyć transakcji" - -#: src/js/services/walletService.js:857 -msgid "Could not create address" -msgstr "Nie można utworzyć adresu" - -#: src/js/controllers/topup.js:91 -msgid "Could not create the invoice" -msgstr "" - -#: src/js/controllers/buyAmazon.js:163 -#: src/js/controllers/topup.js:141 -msgid "Could not create transaction" -msgstr "Nie można utworzyć transakcji" - -#: src/js/services/profileService.js:342 -msgid "Could not create using the specified extended private key" -msgstr "Nie można utworzyć przy użyciu określonego rozszerzonego klucza prywatnego" - -#: src/js/services/profileService.js:353 -msgid "Could not create using the specified extended public key" -msgstr "Nie można utworzyć przy użyciu określonego rozszerzonego klucza publicznego" - -#: src/js/services/profileService.js:335 -msgid "Could not create: Invalid wallet recovery phrase" -msgstr "Nie można utworzyć: niepoprawna kluczowa fraza" - -#: src/js/controllers/import.js:99 -msgid "Could not decrypt file, check your password" -msgstr "Nie można odszyfrować pliku, sprawdź hasło" - -#: src/js/controllers/modals/txpDetails.js:175 -msgid "Could not delete payment proposal" -msgstr "Nie można usunąć wniosku wypłaty" - -#: src/js/services/feeService.js:72 -msgid "Could not get dynamic fee" -msgstr "Nie można pobrać dynamicznej prowizji" - -#: src/js/services/feeService.js:42 -msgid "Could not get dynamic fee for level: {{feeLevel}}" -msgstr "Nie można uzyskać dynamicznej prowizji dla poziomu: {{feeLevel}}" - -#: src/js/controllers/modals/feeLevels.js:113 -msgid "Could not get fee levels" -msgstr "" - -#: src/js/controllers/buyAmazon.js:121 -#: src/js/controllers/topup.js:99 -msgid "Could not get the invoice" -msgstr "" - -#: src/js/controllers/bitpayCard.js:66 -msgid "Could not get transactions" -msgstr "Nie można pobrać transakcji" - -#: src/js/services/profileService.js:595 -#: src/js/services/profileService.js:629 -#: src/js/services/profileService.js:652 -msgid "Could not import" -msgstr "Nie można zaimportować" - -#: src/js/services/profileService.js:564 -msgid "Could not import. Check input file and spending password" -msgstr "Nie można zaimportować. Sprawdź plik wejściowy i hasło" - -#: src/js/services/profileService.js:439 -msgid "Could not join wallet" -msgstr "Nie można dołączyć portfela" - -#: src/js/controllers/modals/txpDetails.js:155 -msgid "Could not reject payment" -msgstr "Wypłata nie może być odrzucona" - -#: src/js/controllers/preferencesBitpayServices.js:33 -msgid "Could not remove account" -msgstr "Nie można usunąć konta" - -#: src/js/controllers/preferencesBitpayCard.js:20 -#: src/js/controllers/preferencesBitpayServices.js:50 -msgid "Could not remove card" -msgstr "Nie można usunąć karty" - -#: src/js/services/walletService.js:776 -msgid "Could not save preferences on the server" -msgstr "Nie można zapisać ustawień na serwerze" - -#: src/js/controllers/modals/txpDetails.js:141 -msgid "Could not send payment" -msgstr "Wypłata nie może zostać wysłana" - -#: src/js/controllers/buyAmazon.js:323 -#: src/js/controllers/topup.js:297 -msgid "Could not send transaction" -msgstr "Nie można wysłać transakcji" - -#: www/views/walletDetails.html:199 -msgid "Could not update transaction history" -msgstr "Nie można zaktualizować historii transakcji" - -#: src/js/controllers/addresses.js:34 -#: src/js/controllers/addresses.js:42 -#: src/js/controllers/copayers.js:30 -#: src/js/controllers/walletDetails.js:78 -msgid "Could not update wallet" -msgstr "Nie można zaktualizować portfela" - -#: www/views/tab-create-personal.html:3 -msgid "Create Personal Wallet" -msgstr "Utwórz osobisty portfel" - -#: www/views/tab-create-shared.html:3 -msgid "Create Shared Wallet" -msgstr "Utwórz współdzielony portfel" - -#: www/views/onboarding/tour.html:51 -#: www/views/tab-home.html:77 -#: www/views/tab-send.html:36 -msgid "Create bitcoin wallet" -msgstr "Utwórz portfel bitcoin" - -#: www/views/tab-create-personal.html:129 -msgid "Create new wallet" -msgstr "Utwórz nowy portfel" - -#: www/views/add.html:22 -msgid "Create shared wallet" -msgstr "Utwórz współdzielony portfel" - -#: www/views/tab-create-shared.html:158 -msgid "Create {{formData.requiredCopayers}}-of-{{formData.totalCopayers}} wallet" -msgstr "Utwórz portfel {{formData.requiredCopayers}} z {{formData.totalCopayers}}" - -#: www/views/modals/txp-details.html:83 -#: www/views/tx-details.html:62 -msgid "Created by" -msgstr "Utworzony przez" - -#: src/js/services/onGoingProcess.js:18 -msgid "Creating Wallet..." -msgstr "Tworzenie portfela..." - -#: src/js/services/onGoingProcess.js:17 -msgid "Creating transaction" -msgstr "Tworzenie transakcji" - -#: www/views/modals/chooseFeeLevel.html:34 -#: www/views/preferencesFee.html:20 -msgid "Current fee rate for this policy" -msgstr "Aktualna stawka prowizji dla tej polityki" - -#: src/js/services/feeService.js:15 -msgid "Custom" -msgstr "" - -#: www/views/customAmount.html:9 -msgid "Custom Amount" -msgstr "Kwota własna" - -#: src/js/controllers/preferencesFee.js:84 -msgid "Custom Fee" -msgstr "" - -#: www/views/modals/txp-details.html:89 -#: www/views/tx-details.html:68 -msgid "Date" -msgstr "Data" - -#: www/views/preferencesDeleteWallet.html:21 -msgid "Delete" -msgstr "Usuń" - -#: www/views/modals/txp-details.html:166 -msgid "Delete Payment Proposal" -msgstr "Usuń wniosek wypłaty" - -#: www/views/preferencesAdvanced.html:33 -#: www/views/preferencesDeleteWallet.html:3 -msgid "Delete Wallet" -msgstr "Usuń portfel" - -#: www/views/copayers.html:59 -msgid "Delete it and create a new one" -msgstr "Usuń i utwórz nowy portfel" - -#: src/js/services/onGoingProcess.js:19 -msgid "Deleting Wallet..." -msgstr "Usuwanie portfela..." - -#: src/js/services/onGoingProcess.js:28 -msgid "Deleting payment proposal" -msgstr "Usuń propozycję płatności" - -#: www/views/join.html:138 -#: www/views/tab-create-personal.html:109 -#: www/views/tab-create-shared.html:138 -#: www/views/tab-import-phrase.html:46 -msgid "Derivation Path" -msgstr "Ścieżka derywacji" - -#: www/views/preferencesInformation.html:41 -msgid "Derivation Strategy" -msgstr "Strategia derywacji" - -#: www/views/buyAmazon.html:39 -#: www/views/topup.html:45 -msgid "Details" -msgstr "Szczegóły" - -#: src/js/controllers/lockSetup.js:9 -#: src/js/controllers/tab-settings.js:60 -msgid "Disabled" -msgstr "Wyłącz" - -#: www/views/includes/backupNeededPopup.html:10 -#: www/views/onboarding/backupRequest.html:12 -msgid "Do it later" -msgstr "Zrób to później" - -#: www/views/tab-export-file.html:29 -msgid "Do not include private key" -msgstr "Nie uwzględniaj klucza prywatnego" - -#: www/views/preferencesLanguage.html:21 -msgid "Don't see your language on Crowdin? Contact the Owner on Crowdin! We'd love to support your language." -msgstr "Nie widzisz swojego języka na Crowdin? Skontaktuj się z właścicielem projektu, ponieważ bardzo chcielibyśmy, wspierać twój język." - -#: www/views/tab-export-file.html:59 -#: www/views/tab-home.html:22 -msgid "Download" -msgstr "Pobierz" - -#: www/views/addresses.html:19 -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 "Każdy portfel bitcoin może wygenerować miliardy adresów z twojej 12-wyrazowej kopii zapasowej. Nowy adres jest automatycznie generowany i pokazany za każdym razem, kiedy otrzymasz płatność." - -#: src/js/services/feeService.js:13 -msgid "Economy" -msgstr "Ekonomiczna" - -#: www/views/onboarding/collectEmail.html:27 -msgid "Edit" -msgstr "Edytuj" - -#: www/views/addressbook.add.html:29 -#: www/views/addressbook.view.html:22 -msgid "Email" -msgstr "E-mail" - -#: www/views/preferencesNotifications.html:42 -msgid "Email Address" -msgstr "Adres e-mail" - -#: src/js/services/bwcError.js:122 -msgid "Empty addresses limit reached. New addresses cannot be generated." -msgstr "Puste adresy osiągnęły limit. Nowe adresy nie mogą być generowane." - -#: www/views/tab-scan.html:19 -msgid "Enable camera access in your device settings to get started." -msgstr "Udostępnij kamerę w ustawieniach urządzenia, aby rozpocząć pracę." - -#: www/views/preferencesNotifications.html:29 -msgid "Enable email notifications" -msgstr "Włącz powiadomienia e-mail" - -#: www/views/preferencesNotifications.html:12 -msgid "Enable push notifications" -msgstr "Włącz powiadomienia" - -#: www/views/tab-scan.html:18 -msgid "Enable the camera to get started." -msgstr "Włącz kamerę aby rozpocząć." - -#: www/views/amount.html:4 -msgid "Enter Amount" -msgstr "Podaj ilość" - -#: src/js/services/walletService.js:1048 -#: src/js/services/walletService.js:1063 -msgid "Enter Spending Password" -msgstr "Wprowadź hasło wypłaty" - -#: src/js/services/bitpayAccountService.js:110 -msgid "Enter Two Factor for your BitPay account" -msgstr "Wprowadź podwójne uwierzytelnienie swojego konta BitPay" - -#: www/views/modals/chooseFeeLevel.html:41 -msgid "Enter custom fee" -msgstr "" - -#: src/js/services/walletService.js:1030 -msgid "Enter new spending password" -msgstr "Wprowadź nowe hasło wypłaty" - -#: www/views/join.html:76 -#: www/views/tab-create-personal.html:49 -#: www/views/tab-create-shared.html:78 -msgid "Enter the recovery phrase (BIP39)" -msgstr "Wprowadź kluczową frazę (BIP39)" - -#: www/views/onboarding/collectEmail.html:13 -msgid "Enter your email" -msgstr "Wpisz swój adres e-mail" - -#: www/views/backup.html:62 -msgid "Enter your password" -msgstr "Wprowadź hasło" - -#. Trying to import a malformed wallet export QR code -#: src/js/controllers/activity.js:45 -#: src/js/controllers/addressbookAdd.js:30 -#: src/js/controllers/addressbookView.js:29 -#: src/js/controllers/addresses.js:130 -#: src/js/controllers/addresses.js:131 -#: src/js/controllers/bitpayCard.js:66 -#: src/js/controllers/bitpayCardIntro.js:40 -#: src/js/controllers/bitpayCardIntro.js:81 -#: src/js/controllers/buyAmazon.js:23 -#: src/js/controllers/buyAmazon.js:34 -#: src/js/controllers/confirm.js:276 -#: src/js/controllers/copayers.js:67 -#: src/js/controllers/create.js:155 -#: src/js/controllers/create.js:168 -#: src/js/controllers/create.js:175 -#: src/js/controllers/create.js:197 -#: src/js/controllers/create.js:204 -#: src/js/controllers/create.js:222 -#: src/js/controllers/export.js:109 -#: src/js/controllers/export.js:115 -#: src/js/controllers/export.js:126 -#: src/js/controllers/export.js:154 -#: src/js/controllers/export.js:160 -#: src/js/controllers/export.js:171 -#: src/js/controllers/export.js:47 -#: src/js/controllers/export.js:53 -#: src/js/controllers/feedback/send.js:23 -#: src/js/controllers/import.js:104 -#: src/js/controllers/import.js:116 -#: src/js/controllers/import.js:134 -#: src/js/controllers/import.js:185 -#: src/js/controllers/import.js:213 -#: src/js/controllers/import.js:222 -#: src/js/controllers/import.js:237 -#: src/js/controllers/import.js:249 -#: src/js/controllers/import.js:260 -#: src/js/controllers/import.js:270 -#: src/js/controllers/import.js:294 -#: src/js/controllers/import.js:307 -#: src/js/controllers/import.js:317 -#: src/js/controllers/import.js:327 -#: src/js/controllers/import.js:351 -#: src/js/controllers/import.js:364 -#: src/js/controllers/import.js:70 -#: src/js/controllers/import.js:83 -#: src/js/controllers/join.js:121 -#: src/js/controllers/join.js:135 -#: src/js/controllers/join.js:142 -#: src/js/controllers/join.js:165 -#: src/js/controllers/join.js:173 -#: src/js/controllers/join.js:191 -#: src/js/controllers/modals/feeLevels.js:10 -#: src/js/controllers/modals/txpDetails.js:134 -#: src/js/controllers/paperWallet.js:47 -#: src/js/controllers/preferencesBitpayCard.js:20 -#: src/js/controllers/preferencesBitpayServices.js:33 -#: src/js/controllers/preferencesBitpayServices.js:50 -#: src/js/controllers/preferencesDelete.js:37 -#: src/js/controllers/preferencesExternal.js:20 -#: src/js/controllers/tab-home.js:174 -#: src/js/controllers/tab-send.js:132 -#: src/js/controllers/tabsController.js:36 -#: src/js/controllers/tabsController.js:7 -#: src/js/controllers/topup.js:20 -#: src/js/controllers/topup.js:31 -#: src/js/controllers/tx-details.js:102 -#: src/js/services/incomingData.js:98 -msgid "Error" -msgstr "Błąd" - -#: src/js/controllers/confirm.js:447 -msgid "Error at confirm" -msgstr "Błąd w potwierdzeniu" - -#: src/js/controllers/buyAmazon.js:178 -msgid "Error creating gift card" -msgstr "" - -#: src/js/controllers/buyAmazon.js:93 -msgid "Error creating the invoice" -msgstr "" - -#: src/js/services/profileService.js:396 -msgid "Error creating wallet" -msgstr "Błąd podczas tworzenia portfela" - -#: src/js/controllers/confirm.js:266 -msgid "Error getting SendMax information" -msgstr "Wystąpił błąd podczas uzyskiwania informacji SendMax" - -#: src/js/controllers/buyAmazon.js:135 -#: src/js/controllers/topup.js:113 -msgid "Error in Payment Protocol" -msgstr "Błąd w protokole płatności" - -#: src/js/controllers/bitpayCardIntro.js:14 -msgid "Error pairing BitPay Account" -msgstr "Błąd parowania konta Bitpay" - -#: src/js/controllers/paperWallet.js:41 -msgid "Error scanning funds:" -msgstr "Błąd skanowania środków:" - -#: src/js/controllers/paperWallet.js:91 -msgid "Error sweeping wallet:" -msgstr "Błąd opróżniania portfela:" - -#: src/js/controllers/bitpayCardIntro.js:20 -msgid "Error updating Debit Cards" -msgstr "Błąd aktualizacji kart debetowych" - -#: src/js/services/bwcError.js:143 -msgid "Exceeded daily limit of $500 per user" -msgstr "Dzienny limit 500$ na użytkownika został przekroczony" - -#: src/js/controllers/confirm.js:411 -#: www/views/confirm.html:27 -#: www/views/modals/txp-details.html:121 -msgid "Expired" -msgstr "Wygasł" - -#: www/views/modals/paypro.html:54 -#: www/views/modals/txp-details.html:127 -msgid "Expires" -msgstr "Wygasa" - -#: www/views/preferencesAdvanced.html:21 -msgid "Export Wallet" -msgstr "Eksport portfela" - -#: www/views/preferencesHistory.html:11 -#: www/views/preferencesHistory.html:14 -msgid "Export to file" -msgstr "Eksportuj do pliku" - -#: www/views/export.html:3 -msgid "Export wallet" -msgstr "Eksportuj portfel" - -#: src/js/services/walletService.js:1175 -#: www/views/tab-export-qrCode.html:9 -msgid "Exporting via QR not supported for this wallet" -msgstr "Dla tego portfela nie jest obsługiwany eksport za pomocą kodu QR" - -#: www/views/preferencesInformation.html:83 -msgid "Extended Public Keys" -msgstr "Rozszerzone klucze publiczne" - -#: src/js/services/onGoingProcess.js:20 -msgid "Extracting Wallet information..." -msgstr "" - -#: src/js/controllers/export.js:115 -#: src/js/controllers/export.js:126 -#: src/js/controllers/export.js:160 -#: src/js/controllers/export.js:171 -#: www/views/tab-export-file.html:4 -msgid "Failed to export" -msgstr "Nie udało się wyeksportować" - -#: www/views/tab-create-personal.html:14 -#: www/views/tab-create-shared.html:14 -msgid "Family vacation funds" -msgstr "Środki na rodzinne wakacje" - -#: www/views/tx-details.html:81 -msgid "Fee" -msgstr "Prowizja" - -#: www/views/modals/chooseFeeLevel.html:73 -msgid "Fee level" -msgstr "" - -#: src/js/controllers/modals/feeLevels.js:101 -msgid "Fee level is not defined" -msgstr "" - -#: www/views/confirm.html:81 -#: www/views/modals/txp-details.html:101 -msgid "Fee:" -msgstr "Prowizja:" - -#: src/js/controllers/feedback/send.js:23 -msgid "Feedback could not be submitted. Please try again later." -msgstr "Twój komentarz nie może zostać wysłany. Spróbuj ponownie później." - -#: src/js/services/onGoingProcess.js:42 -msgid "Fetching BitPay Account..." -msgstr "Odzyskiwanie konta BitPay..." - -#: src/js/services/onGoingProcess.js:21 -msgid "Fetching payment information" -msgstr "" - -#: www/views/export.html:14 -#: www/views/import.html:16 -msgid "File/Text" -msgstr "Plik/Tekst" - -#: src/js/services/fingerprintService.js:43 -#: src/js/services/fingerprintService.js:48 -msgid "Finger Scan Failed" -msgstr "Skanowanie odcisku nie powiodło się" - -#: src/js/controllers/feedback/send.js:34 -#: www/views/feedback/complete.html:7 -msgid "Finish" -msgstr "Zakończ" - -#: www/views/tab-create-personal.html:121 -#: www/views/tab-create-shared.html:150 -msgid "For audit purposes" -msgstr "Do celów audytu" - -#: src/js/controllers/topup.js:306 -#: www/views/buyAmazon.html:29 -#: www/views/confirm.html:65 -#: www/views/modals/txp-details.html:74 -#: www/views/topup.html:34 -#: www/views/tx-details.html:52 -msgid "From" -msgstr "Z" - -#: src/js/controllers/bitpayCardIntro.js:71 -msgid "From BitPay account" -msgstr "Z konta BitPay" - -#: www/views/tab-import-phrase.html:54 -msgid "From Hardware Wallet" -msgstr "Z portfela sprzętowego" - -#: www/views/tab-export-qrCode.html:5 -msgid "From the destination device, go to Add wallet > Import wallet and scan this QR code" -msgstr "Z urządzenia docelowego, przejdź do Dodaj portfel > Import portfela i Zeskanuj ten kod QR" - -#: src/js/services/bwcError.js:74 -msgid "Funds are locked by pending spend proposals" -msgstr "Środki są zablokowane przez rozpatrywane wniosku wypłaty" - -#: www/views/paperWallet.html:16 -msgid "Funds found:" -msgstr "Znaleziono środki:" - -#: www/views/topup.html:49 -msgid "Funds to be added" -msgstr "Środki, które zostaną dodane" - -#: www/views/paperWallet.html:53 -msgid "Funds transferred" -msgstr "Środki przelewane" - -#: www/views/topup.html:103 -msgid "Funds were added to debit card" -msgstr "Fundusze zostały dodane do karty debetowej" - -#: www/views/paperWallet.html:22 -msgid "Funds will be transferred to" -msgstr "Środki będą przekazane do" - -#: www/views/tab-receive.html:51 -msgid "Generate new address" -msgstr "Generuj nowy adres" - -#: src/js/services/onGoingProcess.js:22 -msgid "Generating .csv file..." -msgstr "Generowanie pliku csv..." - -#: src/js/services/onGoingProcess.js:37 -msgid "Generating new address..." -msgstr "Generowanie nowego adresu..." - -#: www/views/bitpayCardIntro.html:23 -msgid "Get local cash anywhere you go, from any Visa® compatible ATM. ATM bank fees may apply." -msgstr "Wypłać pieniądze gdziekolwiek jesteś, z dowolnego bankomatu honorującego karty Visa®. Od tej transakcji bank może pobrać prowizję." - -#: www/views/onboarding/collectEmail.html:15 -msgid "Get news and updates from BitPay" -msgstr "Otrzymywanie wiadomości i aktualizacji z BitPay" - -#: www/views/bitpayCard.html:49 -#: www/views/onboarding/welcome.html:8 -msgid "Get started" -msgstr "Zacznij" - -#: www/views/addressbook.html:20 -msgid "Get started by adding your first one." -msgstr "Zacznij dodając swój pierwszy kontakt." - -#: src/js/services/onGoingProcess.js:23 -msgid "Getting fee levels..." -msgstr "Uzyskiwanie informacji o prowizji..." - -#: www/views/buyAmazon.html:43 -msgid "Gift card" -msgstr "" - -#: src/js/controllers/buyAmazon.js:203 -msgid "Gift card expired" -msgstr "" - -#: www/views/buyAmazon.html:111 -msgid "Gift card generated and ready to use." -msgstr "" - -#: src/js/controllers/bitpayCard.js:114 -#: src/js/controllers/bitpayCard.js:124 -#: 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:149 -#: src/js/controllers/tab-settings.js:48 -#: src/js/controllers/tx-details.js:176 -msgid "Go Back" -msgstr "Powrót" - -#: src/js/controllers/onboarding/backupRequest.js:20 -#: src/js/controllers/onboarding/backupRequest.js:26 -#: src/js/services/bitpayAccountService.js:84 -msgid "Go back" -msgstr "Powrót" - -#: www/views/backupWarning.html:15 -#: www/views/includes/confirmBackupPopup.html:8 -#: www/views/onboarding/tour.html:23 -msgid "Got it" -msgstr "Rozumiem" - -#: www/views/preferencesInformation.html:47 -#: www/views/preferencesInformation.html:53 -msgid "Hardware Wallet" -msgstr "Portfel sprzętowy" - -#: www/views/preferencesExternal.html:18 -msgid "Hardware not connected." -msgstr "Sprzęt nie podłączony." - -#: www/views/import.html:20 -msgid "Hardware wallet" -msgstr "Portfel sprzętowy" - -#: www/views/tab-settings.html:20 -msgid "Help & Support" -msgstr "Centrum pomocy" - -#: src/js/controllers/bitpayCard.js:112 -#: src/js/controllers/tab-settings.js:46 -msgid "Help and support information is available at the website." -msgstr "Informacja o pomocy i wsparciu technicznym jest dostępna na stronie internetowej." - -#: www/views/addresses.html:25 -msgid "Hide" -msgstr "Ukryj" - -#: www/views/preferences.html:27 -msgid "Hide Balance" -msgstr "Ukryj środki" - -#: www/views/advancedSettings.html:29 -msgid "Hide Next Steps Card" -msgstr "Ukryj następne kroki karty" - -#: www/views/join.html:46 -#: www/views/tab-create-personal.html:26 -#: www/views/tab-create-shared.html:55 -#: www/views/tab-export-file.html:25 -#: www/views/tab-import-file.html:28 -#: www/views/tab-import-hardware.html:31 -#: www/views/tab-import-phrase.html:33 -msgid "Hide advanced options" -msgstr "Ukryj opcje zaawansowane" - -#: www/views/tabs.html:3 -msgid "Home" -msgstr "Strona główna" - -#: src/js/controllers/feedback/send.js:61 -#: src/js/controllers/feedback/send.js:65 -#: src/js/controllers/feedback/send.js:69 -msgid "How could we improve your experience?" -msgstr "Co moglibyśmy jeszcze według Ciebie poprawić?" - -#: www/views/feedback/rateCard.html:3 -msgid "How do you like {{appName}}?" -msgstr "Jak Ci się podoba {{appName}}?" - -#: src/js/controllers/feedback/rateCard.js:29 -msgid "I don't like it" -msgstr "Nie podoba mi się" - -#: www/views/onboarding/disclaimer.html:43 -msgid "I have read, understood, and agree to the Terms of Use." -msgstr "Przeczytałem, zrozumiałem i wyrażam zgodę na warunki użytkowania." - -#: www/views/modals/terms.html:22 -msgid "I have read, understood, and agree with the Terms of use." -msgstr "Przeczytałem, zrozumiałem i zgadzam się z Warunkami użytkowania." - -#: www/views/join.html:134 -#: www/views/tab-create-personal.html:105 -#: www/views/tab-create-shared.html:134 -msgid "I have written it down" -msgstr "Zapisałem to" - -#: src/js/controllers/feedback/rateCard.js:35 -msgid "I like the app" -msgstr "Lubię aplikację" - -#: src/js/controllers/feedback/rateCard.js:26 -msgid "I think this app is terrible." -msgstr "Myślę, że ta aplikacja jest straszna." - -#: src/js/controllers/onboarding/backupRequest.js:19 -#: www/views/includes/screenshotWarningModal.html:9 -msgid "I understand" -msgstr "Rozumiem" - -#: www/views/onboarding/disclaimer.html:21 -msgid "I understand that if this app is moved to another device or deleted, my bitcoin can only be recovered with the backup phrase." -msgstr "Rozumiem, że jeśli aplikacja zostanie przeniesiona na inne urządzenie, lub usunięta moje bitcoiny mogą zostać odzyskane tylko przy użyciu kluczowej frazy." - -#: www/views/onboarding/disclaimer.html:18 -msgid "I understand that my funds are held securely on this device, not by a company." -msgstr "Rozumiem, że moje środki są bezpieczne na tym urządzeniu i nie znajdują się w posiadaniu spółki." - -#: www/views/backup.html:29 -msgid "I've written it down" -msgstr "Zapisałem to" - -#: www/views/preferences.html:45 -msgid "If enabled, all sensitive information (private key and recovery phrase) and actions (spending and exporting) associated with this wallet will be protected." -msgstr "Jeśli opcja jest włączona, wszystkie poufne informacje (klucz prywatny i kluczowa fraza) oraz operacje (wydatki i eksport) związane z tym portfelem będą chronione." - -#: www/views/advancedSettings.html:22 -msgid "If enabled, the Recent Transactions card - a list of transactions occuring across all wallets - will appear in the Home tab." -msgstr "Jeśli ta opcja jest włączona, na ekranie głównym pojawi się lista wszystkich transakcji z portfela." - -#: www/views/advancedSettings.html:13 -msgid "If enabled, wallets will also try to spend unconfirmed funds. This option may cause transaction delays." -msgstr "Jeśli opcja jest włączona, portfele będą również starać się wydawać niepotwierdzone środki. Może to prowadzić do opóźnień transakcji." - -#: src/js/controllers/onboarding/backupRequest.js:18 -msgid "If this device is replaced or this app is deleted, neither you nor BitPay can recover your funds without a backup." -msgstr "Jeśli to urządzenie zostanie wymienione lub jeśli aplikacja zostanie usunięta, ani ty, ani BitPay nie będzie mógł odzyskać środków bez kopii zapasowej." - -#: www/views/feedback/complete.html:23 -msgid "If you have additional feedback, please let us know by tapping the \"Send feedback\" option in the Settings tab." -msgstr "Jeśli masz dodatkowe uwagi, prosimy o poinformowanie nas poprzez naciśnięcie przycisku \"Wyślij zgłoszenie\" w zakładce Ustawienia." - -#: www/views/includes/screenshotWarningModal.html:8 -msgid "If you take a screenshot, your backup may be viewed by other apps. You can make a safe backup with physical paper and a pen." -msgstr "Jeśli zrobisz zrzut ekranu, twoja kopia zapasowa może być widziana przez inne aplikacje. Najbezpieczniejsza metoda utworzenia kopii zapasowej to długopis i papier." - -#: www/views/tab-import-hardware.html:42 -#: www/views/tab-import-phrase.html:77 -msgid "Import" -msgstr "Importuj" - -#: www/views/import.html:3 -msgid "Import Wallet" -msgstr "Importuj portfel" - -#: www/views/tab-import-file.html:39 -msgid "Import backup" -msgstr "Importuj kopię zapasową" - -#: www/views/add.html:38 -msgid "Import wallet" -msgstr "Importuj portfel" - -#: src/js/services/onGoingProcess.js:24 -msgid "Importing Wallet..." -msgstr "Importowanie portfela..." - -#: www/views/backup.html:65 -msgid "In order to verify your wallet backup, please type your password." -msgstr "W celu weryfikacji kopii zapasowej portfela wpisz swoje hasło." - -#: www/views/includes/walletItem.html:11 -#: www/views/includes/walletSelector.html:18 -#: www/views/tab-home.html:90 -#: www/views/tab-settings.html:117 -msgid "Incomplete" -msgstr "Nie wszyscy współwłaściciele dołączyli" - -#: www/views/tab-receive.html:22 -msgid "Incomplete wallet" -msgstr "Nie wszyscy współwłaściciele dołączyli" - -#: www/views/modals/pin.html:12 -msgid "Incorrect PIN, try again." -msgstr "Nieprawidłowy kod PIN. Spróbuj ponownie." - -#. Trying to import a malformed wallet export QR code -#: src/js/controllers/import.js:70 -msgid "Incorrect code format" -msgstr "Niepoprawny format kodu" - -#: src/js/services/bwcError.js:113 -msgid "Incorrect network address" -msgstr "Nieprawidłowy adres" - -#: src/js/controllers/confirm.js:112 -#: src/js/controllers/confirm.js:275 -#: src/js/services/bwcError.js:44 -msgid "Insufficient funds" -msgstr "Nie ma wystarczającej ilości środków" - -#: src/js/controllers/topup.js:164 -#: src/js/controllers/topup.js:176 -#: src/js/services/bwcError.js:71 -msgid "Insufficient funds for fee" -msgstr "Niewystarczające środki na prowizję" - -#: www/views/includes/walletHistory.html:49 -msgid "Invalid" -msgstr "Nieprawidłowy" - -#: src/js/controllers/buyAmazon.js:136 -#: src/js/controllers/topup.js:114 -msgid "Invalid URL" -msgstr "Nieprawidłowy adres URL" - -#: src/js/controllers/create.js:175 -#: src/js/controllers/import.js:327 -#: src/js/controllers/join.js:142 -msgid "Invalid account number" -msgstr "Nieprawidłowy numer konta" - -#: src/js/services/bwcError.js:119 -msgid "Invalid address" -msgstr "Nieprawidłowy adres" - -#: src/js/controllers/tabsController.js:7 -msgid "Invalid data" -msgstr "Nieprawidłowe dane" - -#: src/js/controllers/create.js:155 -#: src/js/controllers/import.js:249 -#: src/js/controllers/join.js:121 -msgid "Invalid derivation path" -msgstr "Nieprawidłowa ścieżka derywacji" - -#: src/js/controllers/copayers.js:90 -msgid "Invitation to share a {{appName}} Wallet" -msgstr "Zaproszenie do współdzielenia portfela {{appName}}" - -#: www/views/buyAmazon.html:49 -#: www/views/topup.html:56 -msgid "Invoice Fee" -msgstr "" - -#: src/js/controllers/feedback/send.js:79 -msgid "Is there anything we could do better?" -msgstr "Czy jest coś, co możemy poprawić?" - -#: www/views/backup.html:47 -msgid "Is this correct?" -msgstr "Czy dane są poprawne?" - -#: www/views/onboarding/collectEmail.html:22 -msgid "Is this email address correct?" -msgstr "Czy ten adres e-mail jest poprawny?" - -#: www/views/addresses.html:25 -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 "To dobry pomysł, aby uniknąć ponownego wykorzystywania adresów - to chroni Twoją prywatność i zabezpiecza Twoje bitcoiny przed hipotetycznymi atakami przez komputery kwantowe." - -#: src/js/controllers/backup.js:76 -msgid "It's important that you write your backup phrase down correctly. If something happens to your wallet, you'll need this backup to recover your money. Please review your backup and try again." -msgstr "Ważne, aby prawidłowo zapisać kluczową frazę. Jeśli coś stanie się z Twoim portfelem, będzie ona potrzebna, abyś mógł odzyskać pieniądze. Sprawdź dokładnie zapis i spróbuj ponownie." - -#: www/views/join.html:148 -msgid "Join" -msgstr "Dołącz" - -#: src/js/controllers/copayers.js:85 -msgid "Join my {{appName}} Wallet. Here is the invitation code: {{secret}} You can download {{appName}} for your phone or desktop at {{appUrl}}" -msgstr "Dołącz do mojego portfela {{appName}}. Kod zaproszenia: {{secret}}. Wersję desktopową lub aplikację na telefon można pobrać z {{appUrl}}" - -#: www/views/add.html:30 -#: www/views/join.html:5 -msgid "Join shared wallet" -msgstr "Dołącz do portfela" - -#: src/js/services/onGoingProcess.js:25 -msgid "Joining Wallet..." -msgstr "Dołączanie do portfela..." - -#: www/views/onboarding/tour.html:22 -msgid "Just scan the code to pay." -msgstr "Zeskanuj kod, aby zapłacić." - -#: src/js/services/bwcError.js:116 -msgid "Key already associated with an existing wallet" -msgstr "Klucz jest już powiązany z istniejącym portfelem" - -#: www/views/preferencesLanguage.html:4 -#: www/views/tab-settings.html:53 -msgid "Language" -msgstr "Język" - -#: www/views/bitpayCard.html:61 -msgid "Last Month" -msgstr "Zeszły miesiąc" - -#: www/views/backup.html:36 -msgid "Let's verify your backup phrase." -msgstr "Sprawdź swoją kluczową frazę." - -#: www/views/addresses.html:45 -#: www/views/allAddresses.html:14 -msgid "Loading addresses..." -msgstr "Ładowanie adresów..." - -#: src/js/services/onGoingProcess.js:35 -msgid "Loading transaction info..." -msgstr "Ładowanie informacji o transakcji..." - -#: www/views/tab-settings.html:95 -msgid "Lock App" -msgstr "Blokada aplikacji" - -#: src/js/controllers/lockSetup.js:23 -msgid "Lock by Fingerprint" -msgstr "Blokada przez odcisk palca" - -#: src/js/controllers/lockSetup.js:14 -msgid "Lock by PIN" -msgstr "Blokada przez PIN" - -#: www/views/modals/wallet-balance.html:80 -msgid "Locked" -msgstr "Zablokowane" - -#: src/js/services/bwcError.js:86 -msgid "Locktime in effect. Please wait to create a new spend proposal" -msgstr "Skuteczna blokada. Proszę czekać, aby utworzyć nowy wniosek wypłaty" - -#: src/js/services/bwcError.js:89 -msgid "Locktime in effect. Please wait to remove this spend proposal" -msgstr "Skuteczna blokada. Proszę czekać, aby usunąć wniosek wypłaty" - -#: www/views/modals/bitpay-card-confirmation.html:14 -msgid "Log out" -msgstr "Wyloguj się" - -#: www/views/addresses.html:87 -msgid "Low amount inputs" -msgstr "" - -#: www/views/includes/walletHistory.html:27 -msgid "Low fees" -msgstr "Niskie opłaty" - -#: www/views/onboarding/tour.html:38 -msgid "Makes sense" -msgstr "Brzmi sensownie" - -#: src/js/controllers/modals/search.js:61 -msgid "Matches:" -msgstr "Dopasowania:" - -#: www/views/includes/copayers.html:4 -#: www/views/preferencesInformation.html:79 -msgid "Me" -msgstr "Ja" - -#: src/js/controllers/feedback/rateCard.js:32 -msgid "Meh - it's alright" -msgstr "Spoko - może być" - -#: src/js/controllers/tx-details.js:148 -#: www/views/modals/paypro.html:48 -#: www/views/modals/txp-details.html:95 -#: www/views/tx-details.html:74 -msgid "Memo" -msgstr "Notatka" - -#: www/views/modals/txp-details.html:133 -msgid "Merchant Message" -msgstr "Wiadomość handlowa" - -#: src/js/services/bwcError.js:134 -msgid "Missing parameter" -msgstr "Brak parametru" - -#: src/js/services/bwcError.js:32 -msgid "Missing private keys to sign" -msgstr "Brak kluczy prywatnych do podpisania" - -#: www/views/preferences.html:60 -#: www/views/preferencesAdvanced.html:3 -msgid "More Options" -msgstr "Więcej opcji" - -#: www/views/includes/walletHistory.html:47 -#: www/views/tx-details.html:19 -msgid "Moved" -msgstr "Przeniesiony" - -#: src/js/controllers/tx-details.js:114 -msgid "Moved Funds" -msgstr "Przesuń środki" - -#: www/views/modals/txp-details.html:57 -msgid "Multiple recipients" -msgstr "Wielu odbiorców" - -#: www/views/tab-import-phrase.html:8 -msgid "NOTE: To import a wallet from a 3rd party software, please go to Add Wallet > Create Wallet, and specify the Recovery Phrase there." -msgstr "Uwaga: Aby zaimportować portfel z oprogramowania innego niż Copay, przejdź do \"Dodaj portfel\" > \"Utwórz portfel\", i podaj tam kluczową frazę." - -#: www/views/addressbook.add.html:21 -#: www/views/addressbook.view.html:18 -#: www/views/preferences.html:15 -#: www/views/preferencesAlias.html:17 -msgid "Name" -msgstr "Nazwa" - -#: www/views/buyAmazon.html:55 -#: www/views/topup.html:63 -msgid "Network Fee" -msgstr "Prowizja za użytkowanie sieci" - -#: src/js/services/bwcError.js:47 -msgid "Network error" -msgstr "Błąd sieci" - -#: www/views/includes/walletActivity.html:43 -msgid "New Proposal" -msgstr "Nowa propozycja" - -#: src/js/controllers/addresses.js:131 -msgid "New address could not be generated. Please try again." -msgstr "Nowy adres nie mógł zostać utworzony. Spróbuj jeszcze raz." - -#: www/views/add.html:14 -msgid "New personal wallet" -msgstr "Nowy portfel osobisty" - -#: www/views/includes/nextSteps.html:3 -msgid "Next steps" -msgstr "Kolejne kroki" - -#: www/views/tab-receive.html:16 -msgid "No Wallet" -msgstr "Brak portfela" - -#: src/js/controllers/buyAmazon.js:114 -msgid "No access key defined" -msgstr "" - -#: www/views/onboarding/backupRequest.html:5 -msgid "No backup, no bitcoin." -msgstr "Nie ma kopii zapasowej - nie ma bitcoinów." - -#: www/views/addressbook.html:19 -msgid "No contacts yet" -msgstr "Brak kontaktów" - -#: www/views/preferencesExternal.html:12 -msgid "No hardware information available." -msgstr "Brak dostępnych informacji o sprzęcie." - -#: www/views/tab-import-hardware.html:3 -msgid "No hardware wallets supported on this device" -msgstr "Portfele sprzętowe nie są obsługiwane przez to urządzenie" - -#: www/views/proposals.html:24 -msgid "No pending proposals" -msgstr "Brak propozycji płatności" - -#: www/views/activity.html:25 -msgid "No recent transactions" -msgstr "Brak wcześniejszych transakcji" - -#: src/js/controllers/buyAmazon.js:43 -#: src/js/controllers/topup.js:46 -msgid "No signing proposal: No private key" -msgstr "" - -#: www/views/walletDetails.html:193 -msgid "No transactions yet" -msgstr "Brak transakcji" - -#: src/js/controllers/preferencesDelete.js:15 -msgid "No wallet found" -msgstr "Nie znaleziono portfela" - -#: src/js/controllers/preferencesDelete.js:8 -msgid "No wallet selected" -msgstr "Nie wybrano portfela" - -#: src/js/controllers/buyAmazon.js:298 -#: src/js/controllers/confirm.js:83 -#: src/js/controllers/topup.js:263 -msgid "No wallets available" -msgstr "Brak dostępnych portfeli" - -#: www/views/paperWallet.html:47 -msgid "No wallets available to receive funds" -msgstr "Brak portfeli do otrzymania środków" - -#: src/js/services/feeService.js:12 -msgid "Normal" -msgstr "Zwykła" - -#: src/js/services/bwcError.js:80 -msgid "Not authorized" -msgstr "Brak autoryzacji" - -#: src/js/controllers/confirm.js:276 -msgid "Not enough funds for fee" -msgstr "Brak środków na opłacenie prowizji" - -#: www/views/onboarding/tour.html:50 -msgid "Not even BitPay can access it." -msgstr "Nawet BitPay nie ma do niego dostępu." - -#: src/js/controllers/paperWallet.js:47 -msgid "Not funds found" -msgstr "Nie znaleziono środków" - -#: www/views/feedback/rateApp.html:3 -#: www/views/onboarding/notifications.html:8 -msgid "Not now" -msgstr "Nie teraz" - -#: www/views/includes/output.html:15 -msgid "Note" -msgstr "Notatka" - -#: www/views/modals/wallets.html:25 -msgid "Notice: only 1-1 (single signature) wallets can be used for sell bitcoin" -msgstr "Uwaga: tylko 1-1 portfela (pojedynczy podpis) może być wykorzystywany do sprzedaży bitcoinów" - -#: www/views/preferencesNotifications.html:3 -#: www/views/tab-settings.html:46 -msgid "Notifications" -msgstr "Powiadomienia" - -#: www/views/onboarding/collectEmail.html:9 -msgid "Notifications by email" -msgstr "Powiadomienia e-mail" - -#: www/views/tx-details.html:117 -msgid "Notify me if confirmed" -msgstr "Powiadom mnie, jeśli potwierdzono" - -#: www/views/preferencesNotifications.html:24 -msgid "Notify me when transactions are confirmed" -msgstr "" - -#: www/views/includes/backupNeededPopup.html:8 -msgid "Now is a good time to backup your wallet. If this device is lost, it is impossible to access your funds without a backup." -msgstr "Najwyższy czas na wykonanie kopii zapasowej portfela. Jeśli utracisz to urządzenie, dostęp do środków bez kopii zapasowej będzie niemożliwy." - -#: www/views/backupWarning.html:11 -msgid "Now is a perfect time to assess your surroundings. Nearby windows? Hidden cameras? Shoulder-spies?" -msgstr "Nadszedł czas, aby sprawdzić swoje otoczenie. Czy jesteś w pobliżu okna? Czy są gdzieś ukryte kamery? Osoby zerkające przez ramię?" - -#: src/js/controllers/buyAmazon.js:310 -#: src/js/controllers/topup.js:284 -#: src/js/services/popupService.js:16 -#: src/js/services/popupService.js:52 -#: src/js/services/popupService.js:61 -#: src/js/services/popupService.js:72 -#: www/views/modals/chooseFeeLevel.html:6 -msgid "OK" -msgstr "OK" - -#: www/views/modals/tx-status.html:12 -#: www/views/modals/tx-status.html:24 -#: www/views/modals/tx-status.html:36 -#: www/views/modals/tx-status.html:46 -msgid "OKAY" -msgstr "W PORZĄDKU" - -#: www/views/modals/terms.html:15 -msgid "Official English Disclaimer" -msgstr "Oficjalna rezygnacja w języku angielskim" - -#: src/js/controllers/feedback/send.js:64 -msgid "Oh no!" -msgstr "O nie!" - -#: www/views/tab-home.html:39 -msgid "On this screen you can see all your wallets, accounts, and assets." -msgstr "Na tym ekranie można zobaczyć wszystkie swoje portfele, konta i środki." - -#: src/js/controllers/bitpayCard.js:113 -#: src/js/controllers/tab-settings.js:47 -msgid "Open" -msgstr "Otwórz" - -#: src/js/controllers/preferencesLanguage.js:13 -msgid "Open Crowdin" -msgstr "Otwórz Crowdin" - -#: src/js/controllers/preferencesAbout.js:15 -msgid "Open GitHub" -msgstr "Otwórz GitHub" - -#: src/js/controllers/preferencesAbout.js:13 -msgid "Open GitHub Project" -msgstr "Otwórz projekt GitHub" - -#: src/js/controllers/bitpayCard.js:123 -#: src/js/controllers/tx-details.js:175 -msgid "Open Insight" -msgstr "Otwórz Insight" - -#: www/views/tab-scan.html:22 -msgid "Open Settings" -msgstr "Otwórz ustawienia" - -#: src/js/controllers/preferencesLanguage.js:11 -msgid "Open Translation Community" -msgstr "Społeczność tłumaczy" - -#: src/js/controllers/onboarding/terms.js:22 -msgid "Open Website" -msgstr "Otwórz stronę internetową" - -#: www/views/tab-receive.html:27 -msgid "Open wallet" -msgstr "Otwórz portfel" - -#: www/views/includes/incomingDataMenu.html:19 -msgid "Open website" -msgstr "" - -#: www/views/bitpayCardIntro.html:34 -msgid "Order the BitPay Card" -msgstr "Zamów kartę BitPay" - -#: www/views/join.html:102 -#: www/views/join.html:93 -#: www/views/tab-create-personal.html:67 -#: www/views/tab-create-personal.html:75 -#: www/views/tab-create-shared.html:104 -#: www/views/tab-create-shared.html:96 -#: www/views/tab-import-file.html:18 -#: www/views/tab-import-phrase.html:38 -msgid "Password" -msgstr "Hasło" - -#: src/js/controllers/import.js:83 -msgid "Password required. Make sure to enter your password in advanced options" -msgstr "Wymagane hasło. Upewnij się, aby wprowadzić hasło w opcjach zaawansowanych" - -#: www/views/join.html:33 -msgid "Paste invitation here" -msgstr "Wklej tutaj zaproszenie" - -#: www/views/tab-import-file.html:13 -msgid "Paste the backup plain text code" -msgstr "Wklej tekst kodu kopii zapasowej" - -#: www/views/bitpayCardIntro.html:28 -msgid "Pay 0% fees to turn bitcoin into dollars." -msgstr "Zapłać 0% prowizji za wymianę bitcoinów na dolary." - -#: www/views/modals/paypro.html:18 -msgid "Pay To" -msgstr "Zapłać" - -#: src/js/controllers/modals/txpDetails.js:45 -#: www/views/modals/tx-status.html:33 -msgid "Payment Accepted" -msgstr "Wypłata zaakceptowana" - -#: www/views/confirm.html:25 -msgid "Payment Expires:" -msgstr "Płatność wygasa:" - -#: www/views/modals/txp-details.html:6 -msgid "Payment Proposal" -msgstr "Wniosek wypłaty" - -#: www/views/modals/tx-status.html:21 -msgid "Payment Proposal Created" -msgstr "Wniosek wypłaty utworzony" - -#: www/views/tab-home.html:46 -msgid "Payment Proposals" -msgstr "Wniosek wypłaty" - -#: src/js/services/payproService.js:32 -msgid "Payment Protocol Invalid" -msgstr "Protokół wypłaty nieprawidłowy" - -#: src/js/services/payproService.js:18 -msgid "Payment Protocol not supported on Chrome App" -msgstr "Protokół wypłaty nieobsługiwany przez Chrome" - -#: www/views/includes/walletActivity.html:20 -msgid "Payment Received" -msgstr "Płatność otrzymana" - -#: www/views/modals/tx-status.html:43 -#: www/views/modals/txp-details.html:43 -msgid "Payment Rejected" -msgstr "Wypłata odrzucona" - -#: src/js/controllers/modals/txpDetails.js:42 -#: www/views/confirm.html:126 -#: www/views/includes/walletActivity.html:11 -#: www/views/modals/txp-details.html:42 -msgid "Payment Sent" -msgstr "Płatność wysłana" - -#: www/views/modals/txp-details.html:32 -msgid "Payment accepted, but not yet broadcasted" -msgstr "Wypłata zaakceptowana, ale jeszcze nie nadana" - -#: www/views/modals/txp-details.html:40 -msgid "Payment accepted. It will be broadcasted by Glidera. In case there is a problem, it can be deleted 6 hours after it was created." -msgstr "Wypłata zaakceptowana. Będzie nadana przez Glidera. W przypadku wystąpienia problemu, może być usunięta 6 godzin po utworzeniu." - -#: www/views/modals/txp-details.html:109 -msgid "Payment details" -msgstr "Szczegóły wypłaty" - -#: www/views/modals/paypro.html:6 -msgid "Payment request" -msgstr "Wniosek o płatność" - -#: www/views/proposals.html:4 -msgid "Pending Proposals" -msgstr "Rozpatrywane płatności" - -#: www/views/preferencesDeleteWallet.html:13 -msgid "Permanently delete this wallet." -msgstr "Trwale usuń portfel." - -#: src/js/services/profileService.js:388 -msgid "Personal Wallet" -msgstr "Portfel osobisty" - -#: www/views/backup.html:18 -msgid "Please carefully write down this phrase." -msgstr "Proszę dokładnie zanotować tę kluczową frazę." - -#: www/views/tab-scan.html:20 -msgid "Please connect a camera to get started." -msgstr "Proszę podłączyć kamerę, aby zacząć." - -#: src/js/controllers/import.js:260 -msgid "Please enter the recovery phrase" -msgstr "Wpisz kluczową frazę" - -#: src/js/controllers/create.js:168 -#: src/js/controllers/join.js:135 -msgid "Please enter the wallet recovery phrase" -msgstr "Wpisz kluczową frazę portfela" - -#: www/views/modals/pin.html:9 -msgid "Please enter your PIN" -msgstr "Wprowadź kod PIN" - -#: www/views/backup.html:46 -msgid "Please tap each word in the correct order." -msgstr "Proszę wpisać każde słowo we właściwej kolejności." - -#: src/js/services/bwcError.js:101 -msgid "Please upgrade Copay to perform this action" -msgstr "Proszę uaktualnić Copay, by móc wykonać tę operację" - -#: src/js/controllers/import.js:222 -msgid "Please, select your backup file" -msgstr "Proszę wybrać plik kopii zapasowej" - -#: www/views/bitpayCard.html:81 -msgid "Pre-Auth Holds" -msgstr "" - -#: www/views/tab-settings.html:40 -msgid "Preferences" -msgstr "Ustawienia" - -#: src/js/services/onGoingProcess.js:38 -msgid "Preparing addresses..." -msgstr "Przygotowywanie adresów..." - -#: src/js/controllers/export.js:198 -msgid "Preparing backup..." -msgstr "Przygotowywanie kopii zapasowej..." - -#: src/js/routes.js:1188 -msgid "Press again to exit" -msgstr "Naciśnij ponownie, aby wyjść" - -#: src/js/services/feeService.js:11 -msgid "Priority" -msgstr "Priorytetowa" - -#: www/views/includes/incomingDataMenu.html:80 -msgid "Private Key" -msgstr "" - -#: src/js/controllers/paperWallet.js:137 -msgid "Private key encrypted. Enter password" -msgstr "Klucz prywatny jest zaszyfrowany. Wprowadź hasło" - -#: src/js/services/bwcError.js:35 -msgid "Private key is encrypted, cannot sign" -msgstr "Klucz prywatny jest zaszyfrowany, nie można podpisać" - -#: www/views/includes/walletActivity.html:51 -msgid "Proposal Accepted" -msgstr "Płatność przyjęta" - -#: src/js/controllers/modals/txpDetails.js:55 -#: src/js/controllers/tx-details.js:61 -#: www/views/confirm.html:127 -msgid "Proposal Created" -msgstr "Płatność utworzona" - -#: www/views/includes/walletActivity.html:27 -msgid "Proposal Deleted" -msgstr "Płatność usunięta" - -#: www/views/includes/walletActivity.html:35 -msgid "Proposal Rejected" -msgstr "Płatność odrzucona" - -#: www/views/walletDetails.html:178 -msgid "Proposals" -msgstr "Proponowane płatności" - -#: src/js/controllers/buyAmazon.js:281 -msgid "Purchase Amount is limited to {{limitPerDay}} {{currency}} per day" -msgstr "" - -#: www/views/onboarding/notifications.html:3 -msgid "Push Notifications" -msgstr "Wyskakujące powiadomienia" - -#: www/views/preferencesNotifications.html:17 -msgid "Push notifications for {{appName}} are currently disabled. Enable them in the Settings app." -msgstr "Wyskakujące powiadomienia {{appName}} są obecnie wyłączone. Włącz je w ustawieniach aplikacji." - -#: www/views/export.html:17 -msgid "QR Code" -msgstr "Kod QR" - -#: www/views/onboarding/disclaimer.html:13 -msgid "Quick review!" -msgstr "Szybki przegląd!" - -#: src/js/controllers/create.js:79 -#: src/js/controllers/join.js:65 -msgid "Random" -msgstr "Losowo" - -#: www/views/feedback/rateApp.html:14 -msgid "Rate on the app store" -msgstr "Oceń w App Store" - -#: www/views/addresses.html:52 -msgid "Read less" -msgstr "Zobacz mniej" - -#: www/views/addresses.html:51 -msgid "Read more" -msgstr "Zobacz więcej" - -#: www/views/tab-receive.html:3 -#: www/views/tabs.html:7 -msgid "Receive" -msgstr "Otrzymaj" - -#: www/views/customAmount.html:46 -msgid "Receive in" -msgstr "" - -#: www/views/includes/walletHistory.html:24 -#: www/views/tx-details.html:18 -msgid "Received" -msgstr "Otrzymane" - -#: src/js/controllers/tx-details.js:113 -msgid "Received Funds" -msgstr "Otrzymane środki" - -#: www/views/includes/walletHistory.html:57 -#: www/views/tx-details.html:24 -msgid "Receiving" -msgstr "Otrzymywanie" - -#: www/views/bitpayCard.html:60 -#: www/views/includes/walletHistory.html:3 -msgid "Recent" -msgstr "Ostatnie" - -#: www/views/advancedSettings.html:20 -msgid "Recent Transaction Card" -msgstr "Ostatnia transakcja kartą" - -#: www/views/activity.html:4 -#: www/views/tab-home.html:58 -msgid "Recent Transactions" -msgstr "Ostatnie transakcje" - -#: www/views/amount.html:18 -#: www/views/tab-send.html:9 -msgid "Recipient" -msgstr "Odbiorca" - -#: www/views/modals/txp-details.html:62 -msgid "Recipients" -msgstr "Odbiorcy" - -#: www/views/import.html:12 -msgid "Recovery phrase" -msgstr "Kluczowa fraza" - -#: www/views/walletDetails.html:117 -#: www/views/walletDetails.html:36 -msgid "Recreate" -msgstr "Przywróć" - -#: src/js/services/onGoingProcess.js:26 -msgid "Recreating Wallet..." -msgstr "Przywracanie portfela..." - -#: src/js/controllers/modals/txpDetails.js:57 -#: src/js/controllers/tx-details.js:63 -msgid "Rejected" -msgstr "Odrzucono" - -#: src/js/services/onGoingProcess.js:27 -msgid "Rejecting payment proposal" -msgstr "Odrzucenie płatności" - -#: www/views/preferencesAbout.html:9 -msgid "Release information" -msgstr "Informacje o wersji" - -#: www/views/addressbook.view.html:36 -msgid "Remove" -msgstr "Usuń" - -#: src/js/controllers/preferencesBitpayServices.js:7 -msgid "Remove BitPay Account?" -msgstr "Usunąć konto BitPay?" - -#: src/js/controllers/preferencesBitpayServices.js:19 -msgid "Remove BitPay Card?" -msgstr "Usunąć kartę BitPay?" - -#: src/js/controllers/preferencesBitpayServices.js:8 -msgid "Removing your BitPay account will remove all associated BitPay account data from this device. Are you sure you would like to remove your BitPay Account ({{email}}) from this device?" -msgstr "Usunięcie konta BitPay spowoduje usunięcie z tego urządzenia wszystkich skojarzonych z tym kontem danych. Czy na pewno chcesz usunąć konto BitPay ({{email}}) z tego urządzenia?" - -#: www/views/join.html:113 -#: www/views/join.html:121 -#: www/views/tab-create-personal.html:84 -#: www/views/tab-create-personal.html:92 -#: www/views/tab-create-shared.html:113 -#: www/views/tab-create-shared.html:121 -#: www/views/tab-export-file.html:17 -msgid "Repeat password" -msgstr "Powtórz hasło" - -#: www/views/tab-export-file.html:16 -msgid "Repeat the password" -msgstr "Powtórz hasło" - -#: www/views/preferences.html:55 -msgid "Request Fingerprint" -msgstr "Zapytaj o odcisk palca" - -#: www/views/tab-receive.html:45 -msgid "Request Specific amount" -msgstr "Prośba o konkretną kwotę" - -#: www/views/preferences.html:42 -msgid "Request Spending Password" -msgstr "Wprowadź hasło wypłaty" - -#: www/views/tab-create-shared.html:42 -msgid "Required number of signatures" -msgstr "Wymagana liczba podpisów" - -#: www/views/onboarding/welcome.html:9 -msgid "Restore from backup" -msgstr "Przywróć z kopii zapasowej" - -#: src/js/services/onGoingProcess.js:29 -msgid "Retrieving inputs information" -msgstr "Pobieranie informacji o danych wejściowych" - -#: src/js/controllers/onboarding/tour.js:56 -msgid "Retry" -msgstr "Spróbuj ponownie" - -#: www/views/tab-scan.html:23 -msgid "Retry Camera" -msgstr "Spróbuj ponownie z aparatem" - -#: www/views/addressbook.add.html:56 -#: www/views/includes/note.html:9 -#: www/views/preferencesAlias.html:21 -#: www/views/preferencesBwsUrl.html:25 -#: www/views/preferencesNotifications.html:46 -msgid "Save" -msgstr "Zapisz" - -#: www/views/tab-scan.html:3 -#: www/views/tabs.html:11 -msgid "Scan" -msgstr "Zeskanuj" - -#: www/views/tab-scan.html:15 -msgid "Scan QR Codes" -msgstr "Zeskanuj kod QR" - -#: www/views/addresses.html:31 -msgid "Scan addresses for funds" -msgstr "Skanuj adresy w celu znalezienia środków" - -#: www/views/modals/fingerprintCheck.html:11 -msgid "Scan again" -msgstr "Skanuj ponownie" - -#: src/js/services/fingerprintService.js:56 -msgid "Scan your fingerprint please" -msgstr "Proszę zeskanować linie papilarne" - -#: src/js/services/onGoingProcess.js:30 -msgid "Scanning Wallet funds..." -msgstr "Skanowanie środków portfela..." - -#: www/views/includes/screenshotWarningModal.html:7 -msgid "Screenshots are not secure" -msgstr "Zrzuty ekranu nie są bezpieczne" - -#: www/views/modals/search.html:6 -msgid "Search Transactions" -msgstr "Szukaj transakcji" - -#: www/views/tab-send.html:13 -msgid "Search or enter bitcoin address" -msgstr "Wyszukaj lub wpisz adres bitcoin" - -#: www/views/modals/search.html:16 -msgid "Search transactions" -msgstr "Szukaj transakcji" - -#: www/views/preferencesAltCurrency.html:14 -msgid "Search your currency" -msgstr "Znajdź swoją walutę" - -#: www/views/preferences.html:30 -msgid "Security" -msgstr "Bezpieczeństwo" - -#: www/views/tab-import-file.html:7 -msgid "Select a backup file" -msgstr "Wybierz plik kopii zapasowej" - -#: src/js/controllers/tab-receive.js:133 -msgid "Select a wallet" -msgstr "Wybierz portfel" - -#: www/views/modals/paypro.html:38 -msgid "Self-signed Certificate" -msgstr "Certyfikat z podpisem własnym" - -#: src/js/services/onGoingProcess.js:41 -msgid "Selling Bitcoin..." -msgstr "Sprzedawanie bitcoinów..." - -#: www/views/feedback/send.html:13 -#: www/views/feedback/send.html:43 -#: www/views/tab-send.html:3 -#: www/views/tabs.html:15 -msgid "Send" -msgstr "Wyślij" - -#: www/views/feedback/send.html:3 -#: www/views/tab-settings.html:29 -msgid "Send Feedback" -msgstr "Wyślij opinię" - -#: www/views/addressbook.view.html:31 -msgid "Send Money" -msgstr "Wyślij pieniądze" - -#: www/views/allAddresses.html:19 -msgid "Send addresses by email" -msgstr "Wyślij adresy przez e-mail" - -#: www/views/preferencesLogs.html:13 -#: www/views/tab-export-file.html:82 -msgid "Send by email" -msgstr "Wyślij przez e-mail" - -#: src/js/controllers/confirm.js:151 -msgid "Send from" -msgstr "Wyślij z" - -#: www/views/includes/itemSelector.html:8 -msgid "Send max amount" -msgstr "Wyślij całą kwotę" - -#: www/views/includes/incomingDataMenu.html:46 -msgid "Send payment to this address" -msgstr "" - -#: www/views/feedback/rateApp.html:17 -msgid "Send us feedback instead" -msgstr "Zamiast tego wyślij nam swoją opinię" - -#: www/views/confirm.html:15 -#: www/views/includes/txp.html:12 -#: www/views/modals/txp-details.html:19 -#: www/views/tx-details.html:23 -msgid "Sending" -msgstr "Wysyłanie" - -#: src/js/services/onGoingProcess.js:39 -msgid "Sending 2FA code..." -msgstr "Wysyłanie kodu 2FA..." - -#: src/js/services/onGoingProcess.js:36 -msgid "Sending feedback..." -msgstr "Wysyłanie opinii..." - -#: www/views/confirm.html:16 -msgid "Sending maximum amount" -msgstr "Wysyłanie całej kwoty" - -#: src/js/services/onGoingProcess.js:31 -msgid "Sending transaction" -msgstr "Wysyłanie transakcji" - -#: src/js/controllers/confirm.js:490 -msgid "Sending {{amountStr}} from your {{name}} wallet" -msgstr "Wysyłanie {{amountStr}} z twojego portfela {{name}}" - -#: www/views/includes/walletHistory.html:42 -#: www/views/modals/tx-status.html:9 -#: www/views/topup.html:100 -#: www/views/tx-details.html:17 -msgid "Sent" -msgstr "Wysłane" - -#: src/js/controllers/tx-details.js:112 -msgid "Sent Funds" -msgstr "Wysłane środki" - -#: src/js/services/bwcError.js:38 -msgid "Server response could not be verified" -msgstr "Odpowiedź serwera nie mogła zostać zweryfikowana" - -#: src/js/controllers/buyAmazon.js:96 -msgid "Service not available" -msgstr "" - -#: www/views/includes/homeIntegrations.html:3 -msgid "Services" -msgstr "Usługi" - -#: www/views/preferencesLogs.html:3 -msgid "Session Log" -msgstr "Dziennik sesji" - -#: www/views/preferencesAbout.html:35 -msgid "Session log" -msgstr "Dziennik sesji" - -#: www/views/tab-export-file.html:10 -msgid "Set up a password" -msgstr "Ustal hasło" - -#: src/js/controllers/preferencesFee.js:84 -msgid "Set your own fee in satoshis/byte" -msgstr "" - -#: www/views/tab-settings.html:3 -#: www/views/tabs.html:19 -msgid "Settings" -msgstr "Ustawienia" - -#: www/views/feedback/complete.html:17 -#: www/views/feedback/complete.html:26 -msgid "Share the love by inviting your friends." -msgstr "Podziel się miłością, zapraszając swoich przyjaciół." - -#: www/views/copayers.html:20 -msgid "Share this invitation with your copayers" -msgstr "Wyślij zaproszenie współwłaścicielom portfela" - -#: src/js/controllers/feedback/complete.js:5 -#: www/views/tab-settings.html:36 -msgid "Share {{appName}}" -msgstr "Podziel się {{appName}}" - -#: www/views/tab-import-hardware.html:24 -msgid "Shared Wallet" -msgstr "Współdzielony portfel" - -#: www/views/preferencesExternal.html:34 -msgid "Show Recovery Phrase" -msgstr "Pokaż kluczową frazę" - -#: www/views/tab-receive.html:34 -msgid "Show address" -msgstr "Pokaż adres" - -#: www/views/join.html:45 -#: www/views/tab-create-personal.html:25 -#: www/views/tab-create-shared.html:54 -#: www/views/tab-export-file.html:24 -#: www/views/tab-import-file.html:27 -#: www/views/tab-import-hardware.html:30 -#: www/views/tab-import-phrase.html:32 -msgid "Show advanced options" -msgstr "Pokaż opcje zaawansowane" - -#: www/views/tab-send.html:37 -msgid "Show bitcoin address" -msgstr "Pokaż adres bitcoin" - -#: www/views/tab-send.html:59 -msgid "Show more" -msgstr "Pokaż więcej" - -#: src/js/services/bwcError.js:104 -msgid "Signatures rejected by server" -msgstr "Podpisy odrzucone przez serwer" - -#: src/js/services/onGoingProcess.js:32 -msgid "Signing transaction" -msgstr "Podpisywanie transakcji" - -#: 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 "Ponieważ jedynie Ty kontrolujesz swoje pieniądze, musisz zapisać kluczową frazę na wypadek skasowania aplikacji {{appName}}." - -#: www/views/tab-create-personal.html:120 -#: www/views/tab-create-shared.html:149 -msgid "Single Address Wallet" -msgstr "Pojedynczy adres portfela" - -#: www/views/onboarding/collectEmail.html:40 -#: www/views/onboarding/tour.html:11 -msgid "Skip" -msgstr "Pomiń" - -#: src/js/controllers/modals/txpDetails.js:34 -msgid "Slide" -msgstr "Przesuń" - -#: www/views/buyAmazon.html:96 -msgid "Slide to buy" -msgstr "" - -#: src/js/controllers/create.js:83 -#: src/js/controllers/join.js:68 -msgid "Specify Recovery Phrase..." -msgstr "Podaj kluczową frazę..." - -#: src/js/services/bwcError.js:92 -msgid "Spend proposal is not accepted" -msgstr "Wniosek wypłaty nie został przyjęty" - -#: src/js/services/bwcError.js:95 -msgid "Spend proposal not found" -msgstr "Wniosek wypłaty nie został znaleziony" - -#: src/js/services/bwcError.js:137 -msgid "Spending Password needed" -msgstr "Wymagane hasło wypłat" - -#: www/views/walletDetails.html:162 -msgid "Spending this balance will need significant Bitcoin network fees" -msgstr "" - -#: www/views/tab-send.html:28 -msgid "Start sending bitcoin" -msgstr "Zacznij wysyłać bitcoiny" - -#: www/views/lockSetup.html:3 -msgid "Startup Lock" -msgstr "Blokada uruchamiania" - -#: www/views/topup.html:101 -msgid "Success" -msgstr "Udało się" - -#: src/js/services/feeService.js:14 -msgid "Super Economy" -msgstr "Super Ekonomiczna" - -#: www/views/paperWallet.html:7 -msgid "Sweep" -msgstr "Opróżnij" - -#: www/views/includes/incomingDataMenu.html:89 -#: www/views/paperWallet.html:3 -msgid "Sweep paper wallet" -msgstr "Wyczyść papierowy portfel" - -#: src/js/services/onGoingProcess.js:33 -msgid "Sweeping Wallet..." -msgstr "Sczytywanie portfela..." - -#: www/views/preferencesDeleteWallet.html:16 -msgid "THIS ACTION CANNOT BE REVERSED" -msgstr "TEJ CZYNNOŚCI NIE MOŻNA COFNĄĆ" - -#: www/views/onboarding/welcome.html:5 -msgid "Take control of your money,
get started with bitcoin." -msgstr "Przejmij kontrolę nad swoimi pieniędzmi,
zacznij korzystać z bitcoinów." - -#: www/views/walletDetails.html:140 -#: www/views/walletDetails.html:60 -msgid "Tap and hold to show" -msgstr "Dotknij i przytrzymaj, aby pokazać" - -#: www/views/walletDetails.html:112 -#: www/views/walletDetails.html:31 -msgid "Tap to retry" -msgstr "Ponów próbę" - -#: www/views/termsOfUse.html:3 -msgid "Terms Of Use" -msgstr "Warunki użytkowania" - -#: www/views/modals/terms.html:3 -#: www/views/onboarding/disclaimer.html:29 -#: www/views/onboarding/disclaimer.html:43 -#: www/views/preferencesAbout.html:30 -msgid "Terms of Use" -msgstr "Warunki użytkowania" - -#: www/views/tab-create-personal.html:116 -#: www/views/tab-import-phrase.html:65 -msgid "Testnet" -msgstr "Testnet" - -#: www/views/includes/incomingDataMenu.html:61 -msgid "Text" -msgstr "" - -#: src/js/controllers/feedback/send.js:27 -#: src/js/controllers/feedback/send.js:76 -#: www/views/feedback/complete.html:20 -#: www/views/feedback/rateApp.html:4 -msgid "Thank you!" -msgstr "Dziękujemy!" - -#: src/js/controllers/feedback/send.js:72 -msgid "Thanks!" -msgstr "Dzięki!" - -#: src/js/controllers/feedback/send.js:73 -msgid "That's exciting to hear. We'd love to earn that fifth star from you – how could we improve your experience?" -msgstr "Bardzo nam miło. Chcielibyśmy dostać od Ciebie 5 gwiazdek - co jeszcze możemy poprawić?" - -#: src/js/services/ledger.js:152 -msgid "The Ledger Chrome application is not installed" -msgstr "Aplikacja Ledger Chrome nie jest zainstalowana" - -#: www/views/modals/wallet-balance.html:55 -msgid "The amount of bitcoin immediately spendable from this wallet." -msgstr "Możliwa jest natychmiastowa wypłata wszystkich środków z tego portfela." - -#: 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 "Kwota bitcoinów przechowywana w tym portfelu, przydzielona jako wejście dla oczekujących wniosków wypłat. Kwota ta jest ustalana za pomocą niewykorzystanych wyjść transakcji związanych z tym portfelem i może przekroczyć kwoty związane z proponowanymi wnioskami wypłat." - -#: www/views/modals/wallet-balance.html:74 -msgid "The amount of bitcoin stored in this wallet with less than 1 blockchain confirmation." -msgstr "Ilość bitcoinów przechowywana w tym portfel z mniej niż jednym potwierdzeniem w blockchainie." - -#: www/views/tab-import-phrase.html:5 -msgid "The derivation path" -msgstr "Ścieżka derywacji" - -#: www/views/onboarding/tour.html:37 -msgid "The exchange rate changes with the market." -msgstr "Zmiany kursowe zależne od rynku." - -#: www/views/preferencesFee.html:12 -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 "Im wyższa prowizja, tym większa zachęta dla górników do zawarcia tej transakcji w bloku. Obecne prowizje ustala się w oparciu o obciążenia sieci i wybraną politykę." - -#: www/views/addresses.html:51 -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 "Maksymalna liczba kolejnych niewykorzystanych adresów (20) została osiągnięta. Gdy na jeden z nieużywanych adresów wpłynie zapłata, nowy adres zostanie wygenerowany i pokazany w zakładce Otrzymane." - -#: src/js/controllers/onboarding/terms.js:21 -msgid "The official English Terms of Service are available on the BitPay website." -msgstr "Oficjalne Warunki użytkowania w języku angielskim dostępne są na stronie internetowej BitPay." - -#: www/views/tab-import-phrase.html:4 -msgid "The password of the recovery phrase (if set)" -msgstr "Hasło kluczowej frazy (jeśli ustawione)" - -#: src/js/services/walletService.js:1140 -msgid "The payment was created but could not be completed. Please try again from home screen" -msgstr "Wypłata została utworzona, ale nie może być zakończona. Spróbuj ponownie na stronie głównej" - -#: www/views/modals/txp-details.html:26 -msgid "The payment was removed by creator" -msgstr "Wypłata została usunięta przez jej twórcę" - -#: www/views/join.html:88 -#: www/views/tab-create-personal.html:61 -#: www/views/tab-create-shared.html:90 -#: www/views/tab-import-phrase.html:40 -msgid "The recovery phrase could require a password to be imported" -msgstr "Kluczowa fraza może wymagać hasła do zaimportowania" - -#: src/js/services/bwcError.js:56 -msgid "The request could not be understood by the server" -msgstr "Wniosek nie został zrozumiany przez serwer" - -#: www/views/addresses.html:52 -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 "Proces przywracania będzie przerwany kiedy zostanie wygenerowanych 20 następujących po sobie adresów, na których nie ma żadnych środków. Aby bezpiecznie wygenerować więcej adresów, dokonaj płatności na jeden z nieużywanych adresów, które zostały już wygenerowane." - -#: src/js/services/bwcError.js:98 -msgid "The spend proposal is not pending" -msgstr "Wniosek o wypłatę nie jest w oczekujących" - -#: www/views/modals/wallet-balance.html:36 -msgid "The total amount of bitcoin stored in this wallet." -msgstr "Łączna ilość bitcoinów przechowywana w tym portfelu." - -#: www/views/preferencesHistory.html:27 -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 "Historia transakcji i każda nowoprzychodząca transakcja są zapisywane w aplikacji. Ta funkcja czyści te dane i ponownie synchronizuje z serwerem" - -#: www/views/tab-import-phrase.html:6 -msgid "The wallet service URL" -msgstr "Adres URL usługi portfela" - -#: src/js/controllers/tab-home.js:38 -msgid "There is a new version of {{appName}} available" -msgstr "Dostępna jest nowa wersja {{appName}}" - -#: src/js/controllers/import.js:213 -#: src/js/controllers/import.js:237 -#: src/js/controllers/import.js:317 -msgid "There is an error in the form" -msgstr "Wystąpił błąd w postaci" - -#: src/js/controllers/feedback/send.js:61 -#: src/js/controllers/feedback/send.js:65 -msgid "There's obviously something we're doing wrong." -msgstr "To oczywiste, że coś robimy źle." - -#: src/js/controllers/feedback/rateCard.js:38 -msgid "This app is fantastic!" -msgstr "Ta aplikacja jest fantastyczna!" - -#: www/views/onboarding/tour.html:47 -msgid "This app stores your bitcoin with cutting-edge security." -msgstr "Ta aplikacja przechowuje Twoje bitcoiny z zaawansowanymi zabezpieczeniami." - -#: src/js/controllers/confirm.js:468 -msgid "This bitcoin payment request has expired." -msgstr "Ten wniosek płatności wygasł." - -#: www/views/join.html:130 -#: www/views/tab-create-personal.html:101 -#: www/views/tab-create-shared.html:130 -msgid "This password cannot be recovered. If the password is lost, there is no way you could recover your funds." -msgstr "To hasło nie może zostać odzyskane. Jeśli je utracisz, nie będziesz mógł odzyskać swoich środków." - -#: www/views/backup.html:24 -msgid "This recovery phrase was created with a password. To recover this wallet both the recovery phrase and password are needed." -msgstr "Ta kluczowa fraza został utworzona przy użyciu hasła. Aby odzyskać portfel potrzebna jest kluczowa fraza i hasło." - -#: www/views/tx-details.html:93 -msgid "This transaction amount is too small compared to current Bitcoin network fees. Spending these funds will need a Bitcoin network fee cost comparable to the funds itself." -msgstr "" - -#: www/views/tx-details.html:89 -msgid "This transaction could take a long time to confirm or could be dropped due to the low fees set by the sender" -msgstr "Potwierdzenie transakcja może trwać długo lub zostać przerwane z powodu niskiej prowizji ustalonej przez nadawcę" - -#: www/views/walletDetails.html:116 -#: 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 "Ten portfel nie jest zarejestrowany na Bitcore Wallet Service (BWS). Możesz go odtworzyć z lokalnego nośnika." - -#: www/views/modals/txp-details.html:138 -#: www/views/tx-details.html:121 -msgid "Timeline" -msgstr "Historia" - -#: www/views/confirm.html:31 -#: www/views/includes/output.html:2 -#: www/views/modals/txp-details.html:111 -#: www/views/modals/txp-details.html:53 -#: www/views/tx-details.html:41 -#: www/views/tx-details.html:53 -msgid "To" -msgstr "Do" - -#: www/views/tab-send.html:32 -msgid "To get started, buy bitcoin or share your address. You can receive bitcoin from any wallet or service." -msgstr "Aby zacząć, kup bitcoiny lub udostępnij swój adres. Możesz otrzymać bitcoiny z dowolnego portfela lub usługi." - -#: www/views/tab-send.html:33 -msgid "To get started, you'll need to create a bitcoin wallet and get some bitcoin." -msgstr "Aby rozpocząć należy utworzyć portfel i dostać trochę bitcoinów." - -#: src/js/services/bitpayAccountService.js:73 -msgid "To {{reason}} you must first add your BitPay account - {{email}}" -msgstr "" - -#: src/js/services/onGoingProcess.js:48 -msgid "Top up in progress..." -msgstr "" - -#: src/js/controllers/topup.js:205 -msgid "Top up {{amountStr}} to debit card ({{cardLastNumber}})" -msgstr "" - -#: www/views/buyAmazon.html:61 -#: www/views/modals/wallet-balance.html:23 -#: www/views/topup.html:70 -msgid "Total" -msgstr "Łącznie" - -#: www/views/walletDetails.html:185 -msgid "Total Locked Balance" -msgstr "Łącznie zablokowane środki" - -#: www/views/tab-create-shared.html:33 -msgid "Total number of copayers" -msgstr "Liczba współwłaścicieli portfela" - -#: www/views/addresses.html:81 -msgid "Total wallet inputs" -msgstr "" - -#: src/js/services/fingerprintService.js:63 -#: src/js/services/fingerprintService.js:68 -msgid "Touch ID Failed" -msgstr "Odczyt Touch ID nie powiódł się" - -#: src/js/controllers/tx-details.js:11 -msgid "Transaction" -msgstr "Transakcja" - -#: www/views/confirm.html:128 -msgid "Transaction Created" -msgstr "" - -#: www/views/preferencesAdvanced.html:29 -#: www/views/preferencesHistory.html:3 -msgid "Transaction History" -msgstr "Historia transakcji" - -#: src/js/services/bwcError.js:83 -msgid "Transaction already broadcasted" -msgstr "Transakcja została już wysłana" - -#: src/js/controllers/buyAmazon.js:306 -#: src/js/controllers/topup.js:279 -msgid "Transaction has not been created" -msgstr "" - -#: www/views/topup.html:104 -msgid "Transaction initiated" -msgstr "" - -#: src/js/controllers/tx-details.js:102 -msgid "Transaction not available at this time" -msgstr "Transakcja w tej chwili niedostępna" - -#: src/js/controllers/activity.js:45 -#: src/js/controllers/tab-home.js:174 -msgid "Transaction not found" -msgstr "Nie znaleziono transakcji" - -#: www/views/modals/chooseFeeLevel.html:54 -msgid "Transactions without fee are not supported." -msgstr "" - -#: src/js/controllers/paperWallet.js:110 -msgid "Transfer to" -msgstr "Przekaż do" - -#: www/views/tab-send.html:67 -msgid "Transfer to Wallet" -msgstr "Przenieś do portfela" - -#: www/views/modals/pin.html:13 -msgid "Try again in {{expires}}" -msgstr "Spróbuj ponownie w {{expires}}" - -#: www/views/bitpayCardIntro.html:18 -msgid "Turn bitcoin into dollars, swipe anywhere Visa® is accepted." -msgstr "Zamień bitcoiny na dolary - płać wszędzie gdzie akceptowane są karty Visa ®." - -#: www/views/tab-import-phrase.html:17 -msgid "Type the Recovery Phrase (usually 12 words)" -msgstr "Wpisz kluczową frazę (zwyczajowo 12 słów)" - -#: src/js/controllers/backup.js:75 -msgid "Uh oh..." -msgstr "Ups..." - -#: www/views/tx-details.html:100 -msgid "Unconfirmed" -msgstr "Niepotwierdzone" - -#: www/views/preferencesUnit.html:4 -msgid "Unit" -msgstr "Jednostka" - -#: www/views/walletDetails.html:179 -msgid "Unsent transactions" -msgstr "Niewysłane transakcje" - -#: www/views/addresses.html:39 -msgid "Unused Addresses" -msgstr "Nieużywane adresy" - -#: www/views/addresses.html:50 -msgid "Unused Addresses Limit" -msgstr "Limit nieużywanych adresów" - -#: src/js/controllers/tab-home.js:146 -msgid "Update Available" -msgstr "Dostępna aktualizacja" - -#: www/views/proposals.html:14 -msgid "Updating pending proposals. Please stand by" -msgstr "Aktualizacja wniosków płatności. Proszę czekać" - -#: www/views/walletDetails.html:211 -msgid "Updating transaction history. Please stand by." -msgstr "Aktualizowanie historii transakcji. Proszę czekać." - -#: www/views/activity.html:14 -msgid "Updating... Please stand by" -msgstr "Aktualizacja... Proszę czekać" - -#: src/js/services/feeService.js:10 -msgid "Urgent" -msgstr "Pilna" - -#: www/views/advancedSettings.html:11 -msgid "Use Unconfirmed Funds" -msgstr "Użyj niepotwierdzonych środków" - -#: src/js/services/onGoingProcess.js:34 -msgid "Validating recovery phrase..." -msgstr "Sprawdzanie poprawności kluczowej frazy..." - -#: www/views/modals/fingerprintCheck.html:4 -msgid "Verify your identity" -msgstr "Weryfikacja konta użytkownika" - -#: www/views/preferencesAbout.html:14 -#: www/views/preferencesExternal.html:25 -msgid "Version" -msgstr "Wersja" - -#: www/views/tab-export-file.html:69 -msgid "View" -msgstr "Widok" - -#: www/views/addresses.html:34 -msgid "View All Addresses" -msgstr "Zobacz wszystkie adresy" - -#: src/js/controllers/onboarding/terms.js:20 -msgid "View Terms of Service" -msgstr "Zobacz zasady użytkowania" - -#: src/js/controllers/bitpayCard.js:122 -#: src/js/controllers/tx-details.js:174 -msgid "View Transaction on Insight" -msgstr "Zobacz transakcje na Insight" - -#: src/js/controllers/tab-home.js:148 -msgid "View Update" -msgstr "Zobacz aktualizacje" - -#: www/views/tx-details.html:147 -msgid "View on blockchain" -msgstr "Zobacz na blockchainie" - -#: www/views/walletDetails.html:171 -msgid "WARNING: Key derivation is not working on this device/wallet. Actions cannot be performed on this wallet." -msgstr "Ostrzeżenie: klucz derywacji nie działa na tym urządzeniu/portfelu. Działania dla tego portfela nie można wykonać." - -#: www/views/tab-export-file.html:45 -msgid "WARNING: Not including the private key allows to check the wallet balance, transaction history, and create spend proposals from the export. However, does not allow to approve (sign) proposals, so funds will not be accessible from the export." -msgstr "UWAGA: Jeśli plik eksportu nie zawiera klucza prywatnego, możliwe będzie jedynie sprawdzenie salda i historii transakcji, jak również wygenerowanie wniosków o płatność. Nie może być on jednak używany do sprawdzania poprawności (podpisywania) wniosków płatności, więc środki z wyeksportowanego pliku nie będą dostępne." - -#: www/views/tab-export-file.html:36 -msgid "WARNING: The private key of this wallet is not available. The export allows to check the wallet balance, transaction history, and create spend proposals from the export. However, does not allow to approve (sign) proposals, so funds will not be accessible from the export." -msgstr "UWAGA: Klucz prywatny nie jest dostępny. Ten eksport umożliwia sprawdzenie salda i historii transakcji, jak również wygenerowanie wniosków o płatność. Nie może być on jednak używany do sprawdzania poprawności (podpisywania) wniosków płatności, więc środki z wyeksportowanego pliku nie będą dostępne." - -#: www/views/modals/paypro.html:42 -msgid "WARNING: UNTRUSTED CERTIFICATE" -msgstr "OSTRZEŻENIE: CERTYFIKAT NIEZAUFANY" - -#: src/js/services/onGoingProcess.js:15 -msgid "Waiting for Ledger..." -msgstr "Oczekiwanie na Ledger..." - -#: src/js/services/onGoingProcess.js:16 -msgid "Waiting for Trezor..." -msgstr "Oczekiwanie na Trezor..." - -#: www/views/copayers.html:48 -msgid "Waiting for copayers" -msgstr "Oczekiwanie na współwłaścicieli portfela" - -#: www/views/copayers.html:53 -msgid "Waiting..." -msgstr "Oczekiwanie..." - -#: www/views/addresses.html:3 -#: www/views/preferencesAdvanced.html:17 -msgid "Wallet Addresses" -msgstr "Adresy portfela" - -#: www/views/preferencesColor.html:4 -msgid "Wallet Color" -msgstr "Kolor portfela" - -#: www/views/preferencesInformation.html:23 -msgid "Wallet Configuration (m-n)" -msgstr "Konfiguracja portfela (m-n)" - -#: www/views/onboarding/collectEmail.html:5 -msgid "Wallet Created" -msgstr "Portfel został utworzony" - -#: www/views/preferencesInformation.html:17 -msgid "Wallet Id" -msgstr "Id Portfela" - -#: www/views/preferencesAdvanced.html:13 -#: www/views/preferencesInformation.html:3 -msgid "Wallet Information" -msgstr "Informacje o portfelu" - -#: www/views/addresses.html:76 -msgid "Wallet Inputs" -msgstr "" - -#: www/views/join.html:26 -msgid "Wallet Invitation" -msgstr "Zaproszenie do portfela" - -#: www/views/join.html:57 -#: www/views/tab-create-personal.html:36 -#: www/views/tab-create-shared.html:65 -msgid "Wallet Key" -msgstr "Kluczowa fraza" - -#: www/views/preferencesAlias.html:4 -msgid "Wallet Name" -msgstr "Nazwa portfela" - -#: www/views/preferencesInformation.html:11 -msgid "Wallet Name (at creation)" -msgstr "Nazwa portfela (oryginalna)" - -#: www/views/preferencesInformation.html:29 -msgid "Wallet Network" -msgstr "Sieć portfela" - -#: www/views/join.html:74 -#: www/views/tab-create-personal.html:48 -#: www/views/tab-create-shared.html:77 -msgid "Wallet Recovery Phrase" -msgstr "Kluczowa fraza portfela" - -#: src/js/services/bwcError.js:26 -msgid "Wallet Recovery Phrase is invalid" -msgstr "Kluczowa fraza jest nieprawidłowa" - -#: www/views/preferencesAdvanced.html:25 -#: www/views/tab-import-phrase.html:70 -msgid "Wallet Service URL" -msgstr "Adres usług portfela" - -#: www/views/preferences.html:4 -msgid "Wallet Settings" -msgstr "Ustawienia portfela" - -#: www/views/tab-import-hardware.html:11 -#: www/views/tab-import-phrase.html:58 -msgid "Wallet Type" -msgstr "Rodzaj portfela" - -#: src/js/services/bwcError.js:59 -msgid "Wallet already exists" -msgstr "Portfel już istnieje" - -#: src/js/services/profileService.js:498 -msgid "Wallet already in Copay" -msgstr "Portfel jest już w Copay" - -#: www/views/includes/walletActivity.html:6 -msgid "Wallet created" -msgstr "Portfel został utworzony" - -#: www/views/copayers.html:58 -msgid "Wallet incomplete and broken" -msgstr "Portfel niekompletny lub uszkodzony" - -#: src/js/services/bwcError.js:65 -msgid "Wallet is full" -msgstr "Portfel jest pełny" - -#: src/js/services/bwcError.js:125 -msgid "Wallet is locked" -msgstr "Portfel jest zablokowany" - -#: src/js/services/bwcError.js:128 -msgid "Wallet is not complete" -msgstr "Portfel jest niekompletny" - -#: www/views/tab-create-personal.html:12 -#: www/views/tab-create-shared.html:12 -msgid "Wallet name" -msgstr "Nazwa portfela" - -#: src/js/services/bwcError.js:131 -msgid "Wallet needs backup" -msgstr "Portfel wymaga kopii zapasowej" - -#: www/views/tab-receive.html:59 -#: www/views/walletDetails.html:157 -msgid "Wallet not backed up" -msgstr "Portfel nie ma kopii zapasowej" - -#: src/js/services/bwcError.js:68 -msgid "Wallet not found" -msgstr "Nie znaleziono portfela" - -#: src/js/controllers/tab-home.js:220 -msgid "Wallet not registered" -msgstr "Portfel nie jest zarejestrowany" - -#: src/js/services/bwcError.js:29 -msgid "Wallet not registered at the wallet service. Recreate it from \"Create Wallet\" using \"Advanced Options\" to set your recovery phrase" -msgstr "Portfel nie jest zarejestrowany w Wallet Service. Odtwórz go używając polecenia \"Utwórz portfel\" z wykorzystaniem kluczowej frazy w ustawieniach zaawansowanych" - -#: www/views/backup.html:11 -msgid "Wallet recovery phrase not available." -msgstr "Kluczowa fraza niedostępna." - -#: src/js/services/bwcError.js:50 -msgid "Wallet service not found" -msgstr "Nie znaleziono serwera" - -#: www/views/tab-home.html:69 -msgid "Wallets" -msgstr "Portfele" - -#: www/views/tab-settings.html:102 -msgid "Wallets & Integrations" -msgstr "Portfele i integracja" - -#: src/js/controllers/addressbookView.js:23 -#: src/js/controllers/modals/txpDetails.js:147 -#: src/js/controllers/modals/txpDetails.js:164 -#: src/js/controllers/preferencesDelete.js:25 -#: src/js/controllers/preferencesExternal.js:14 -#: www/views/preferencesDeleteWallet.html:11 -msgid "Warning!" -msgstr "Ostrzeżenie!" - -#: www/views/modals/txp-details.html:47 -msgid "Warning: this transaction has unconfirmed inputs" -msgstr "Ostrzeżenie: ta transakcja ma niepotwierdzone dane wejściowe" - -#: src/js/controllers/onboarding/backupRequest.js:17 -msgid "Watch out!" -msgstr "Uważaj!" - -#: src/js/controllers/feedback/send.js:69 -msgid "We'd love to do better." -msgstr "Chcielibyśmy zrobić to lepiej." - -#: www/views/backup.html:28 -msgid "We'll confirm on the next screen." -msgstr "Potwierdzimy na następnym ekranie." - -#: src/js/controllers/feedback/send.js:77 -msgid "We're always looking for ways to improve {{appName}}." -msgstr "Zawsze szukamy sposobów na poprawę {{appName}}." - -#: src/js/controllers/feedback/send.js:83 -msgid "We're always looking for ways to improve {{appName}}. How could we improve your experience?" -msgstr "Zawsze szukamy sposobów na ulepszenie {{appName}}. Co Twoim zdaniem można jeszcze poprawić?" - -#: www/views/includes/incomingDataMenu.html:6 -msgid "Website" -msgstr "" - -#: www/views/preferencesLanguage.html:16 -msgid "We’re always looking for translation contributions! You can make corrections or help to make this app available in your native language by joining our community on Crowdin." -msgstr "Cały czas szukamy osób, które chciałyby przyłączyć się do tłumaczenia! Możesz dokonać korekt lub pomóc, aby aplikacja była dostępna w Twoim języku ojczystym przez dołączenie do naszej społeczności na Crowdin." - -#: www/views/preferencesAlias.html:11 -msgid "What do you call this wallet?" -msgstr "Jak chcesz nazwać ten portfel?" - -#: www/views/preferencesAlias.html:12 -msgid "When this wallet was created, it was called “{{walletName}}”. You can change the name displayed on this device below." -msgstr "Kiedy portfel został utworzony, otrzymał nazwę “{{walletName}}”. Możesz zmienić nazwę wyświetlaną poniżej." - -#: www/views/onboarding/collectEmail.html:10 -msgid "Where would you like to receive email notifications about payments?" -msgstr "Czy chcesz otrzymywać powiadomienia e-mail o płatnościach?" - -#: www/views/addresses.html:19 -msgid "Why?" -msgstr "Dlaczego?" - -#: www/views/feedback/rateApp.html:10 -msgid "Would you be willing to rate {{appName}} in the app store?" -msgstr "Czy zechciałbyś ocenić {{appName}} w app store?" - -#: www/views/onboarding/notifications.html:4 -msgid "Would you like to receive push notifications about payments?" -msgstr "Czy chcesz otrzymywać wyskakujące powiadomienia o płatnościach?" - -#: src/js/controllers/import.js:270 -msgid "Wrong number of recovery words:" -msgstr "Nieprawidłowa ilość słów frazy:" - -#: src/js/services/bwcError.js:140 -msgid "Wrong spending password" -msgstr "Nieprawidłowe hasło wypłat" - -#: www/views/modals/confirmation.html:7 -msgid "Yes" -msgstr "Tak" - -#: src/js/controllers/onboarding/backupRequest.js:25 -msgid "Yes, skip" -msgstr "Tak, pomiń" - -#: src/js/controllers/onboarding/backupRequest.js:24 -msgid "You can create a backup later from your wallet settings." -msgstr "Kopię zapasową można utworzyć później w ustawieniach portfela." - -#: src/js/controllers/preferencesLanguage.js:12 -msgid "You can make contributions by signing up on our Crowdin community translation website. We’re looking forward to hearing from you!" -msgstr "Możesz przyczynić się do rozwoju aplikacji rejestrując się na Crowdin - naszej stronie dla tłumaczy. Będziemy wdzięczni za kontakt!" - -#: www/views/tab-scan.html:16 -msgid "You can scan bitcoin addresses, payment requests, paper wallets, and more." -msgstr "Możesz zeskanować adresy bitcoin, wnioski płatności, portfele papierowe i wiele innych." - -#: 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 "Możesz zobaczyć postępy prac i przyczynić się do rozwoju tej aplikacji open source odwiedzając nasz projekt na GitHub." - -#: www/views/onboarding/tour.html:19 -msgid "You can spend bitcoin at millions of websites and stores worldwide." -msgstr "Bitcoiny możesz wydać w milionach sklepów i stron internetowych na całym świecie." - -#: www/views/backup.html:12 -msgid "You can still export it from Advanced > Export." -msgstr "Nadal możesz go wyeksportować w Zaawansowane > Eksport." - -#: www/views/onboarding/tour.html:32 -msgid "You can trade it for other currencies like US Dollars, Euros, or Pounds." -msgstr "Możesz je wymienić na inne waluty, takie jak dolary amerykańskie, euro lub funty." - -#: www/views/onboarding/tour.html:46 -msgid "You control your bitcoin." -msgstr "Ty kontrolujesz swoje bitcoiny." - -#: www/views/modals/chooseFeeLevel.html:63 -msgid "You should not set a fee higher than {{maxFeeRecommended}} satoshis/byte." -msgstr "" - -#: www/views/modals/bitpay-card-confirmation.html:5 -msgid "You will need to log back for fill in your BitPay Card." -msgstr "" - -#: www/views/preferencesNotifications.html:34 -msgid "You'll receive email notifications about payments sent and received from your wallets." -msgstr "Będziesz otrzymywać powiadomienia e-mail o płatności wysyłanych i odbieranych ze swoich portfeli." - -#: www/views/bitpayCard.html:50 -msgid "Your BitPay Card is ready. Add funds to your card to start using it at stores and ATMs worldwide." -msgstr "" - -#: www/views/includes/confirmBackupPopup.html:6 -msgid "Your bitcoin wallet is backed up!" -msgstr "Kopia zapasowa portfela została utworzona!" - -#: www/views/tab-home.html:36 -msgid "Your bitcoin wallet is ready!" -msgstr "Twój portfel jest gotowy!" - -#: www/views/modals/chooseFeeLevel.html:60 -msgid "Your fee is lower than recommended." -msgstr "" - -#: www/views/feedback/send.html:42 -msgid "Your ideas, feedback, or comments" -msgstr "Twoje pomysły, opinie lub komentarze" - -#: www/views/tab-create-shared.html:22 -msgid "Your name" -msgstr "Twój nick" - -#: www/views/join.html:16 -msgid "Your nickname" -msgstr "Twój nick" - -#: www/views/tab-export-file.html:11 -#: www/views/tab-import-file.html:20 -msgid "Your password" -msgstr "Twoje hasło" - -#: www/views/buyAmazon.html:102 -msgid "Your purchase could not be completed" -msgstr "" - -#: www/views/buyAmazon.html:105 -msgid "Your purchase was added to the list of pending" -msgstr "" - -#: www/views/onboarding/backupRequest.html:10 -msgid "Your wallet is never saved to cloud storage or standard device backups." -msgstr "Twój portfel nigdy nie jest przechowywany w chmurze lub na urządzeniach do tworzenia kopii zapasowych." - -#: src/js/services/walletService.js:1031 -msgid "Your wallet key will be encrypted. The Spending Password cannot be recovered. Be sure to write it down." -msgstr "Twój portfel będzie zaszyfrowany. Hasło wypłat nie będzie mogło być odzyskane. Pamiętaj, aby je zapisać." - -#: www/views/includes/walletSelector.html:23 -#: www/views/paperWallet.html:35 -#: www/views/tab-home.html:96 -#: www/views/tab-receive.html:74 -#: www/views/walletDetails.html:139 -#: www/views/walletDetails.html:59 -msgid "[Balance Hidden]" -msgstr "[Balans ukryty]" - -#: src/js/controllers/bitpayCardIntro.js:11 -msgid "add your BitPay Visa card(s)" -msgstr "dodaj swoje karty BitPay Visa" - -#: www/views/includes/available-balance.html:8 -msgid "locked by pending payments" -msgstr "zablokowane przez oczekujące wypłaty" - -#: src/js/services/profileService.js:389 -msgid "me" -msgstr "ja" - -#: www/views/addressbook.add.html:32 -msgid "name@example.com" -msgstr "nazwa@przyklad.com" - -#: www/views/preferencesHistory.html:15 -msgid "preparing..." -msgstr "Przygotowywanie..." - -#: src/js/controllers/confirm.js:329 -#: src/js/controllers/modals/txpDetails.js:44 -msgid "to accept" -msgstr "do akceptacji" - -#: src/js/controllers/confirm.js:327 -msgid "to pay" -msgstr "do zapłaty" - -#: src/js/controllers/confirm.js:331 -#: src/js/controllers/modals/txpDetails.js:41 -msgid "to send" -msgstr "do wysłania" - -#: src/js/controllers/buyAmazon.js:238 -msgid "{{amountStr}} for Amazon.com Gift Card" -msgstr "" - -#: www/views/preferencesBwsUrl.html:21 -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}} jest zależny od Bitcore Wallet Service (BWS) jeśli chodzi o informacje dotyczące blokcheina, sieci i synchronizacji współwłaścicieli portfela. Domyślnie jest to https://bws.bitpay.com (BitPay's public BWS instance)." - -#: src/js/controllers/confirm.js:358 -msgid "{{fee}} will be deducted for bitcoin networking fees." -msgstr "{{fee}} zostanie potrącone jako prowizja sieci bitcoin." - -#: www/views/confirm.html:87 -msgid "{{tx.txp[wallet.id].feeRatePerStr}} of the sending amount" -msgstr "" - -#: www/views/walletDetails.html:212 -msgid "{{updatingTxHistoryProgress}} transactions downloaded" -msgstr "{{updatingTxHistoryProgress}} transakcje pobrane" - -#: www/views/copayers.html:46 -#: www/views/includes/walletInfo.html:12 -msgid "{{wallet.m}}-of-{{wallet.n}}" -msgstr "{{wallet.m}}-z-{{wallet.n}}" - diff --git a/i18n/po/pt.po b/i18n/po/pt.po deleted file mode 100644 index 7548a4c3a..000000000 --- a/i18n/po/pt.po +++ /dev/null @@ -1,3359 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Project-Id-Version: copay\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: crowdin.com\n" -"X-Crowdin-Project: copay\n" -"X-Crowdin-Language: pt-BR\n" -"X-Crowdin-File: template.pot\n" -"Last-Translator: cmgustavo83\n" -"Language-Team: Portuguese, Brazilian\n" -"Language: pt\n" -"PO-Revision-Date: 2017-07-18 13:18-0400\n" - -#: www/views/modals/paypro.html:34 -msgid "(Trusted)" -msgstr "(Confiável)" - -#: www/views/includes/txp.html:23 -#: www/views/includes/walletHistory.html:64 -msgid "(possible double spend)" -msgstr "(Possível gasto duplo)" - -#: www/views/modals/txp-details.html:161 -msgid "* A payment proposal can be deleted if 1) you are the creator, and no other copayer has signed, or 2) 24 hours have passed since the proposal was created." -msgstr "* Uma proposta de pagamento pode ser apagada se 1) você é o criador e outro copayer não subscreveu, ou 2) Passaram-se 24 horas desde que a proposta foi criada." - -#: www/views/tx-details.html:84 -msgid "- {{btx.feeRateStr}} of the transaction" -msgstr "- {{btx.feeRateStr}} da transação" - -#: www/views/modals/txp-details.html:104 -msgid "- {{tx.feeRateStr}} of the transaction" -msgstr "- {{tx.feeRateStr}} da transação" - -#: www/views/feedback/rateApp.html:7 -msgid "5-star ratings help us get {{appName}} into more hands, and more users means more resources can be committed to the app!" -msgstr "Classificações de 5 estrelas ajudam-nos a que o {{appName}} chegue ás mãos de mais e mais utilizadores, que significa que mais recursos serão incluídos na aplicação!" - -#: src/js/controllers/feedback/send.js:27 -#: www/views/feedback/complete.html:21 -msgid "A member of the team will review your feedback as soon as possible." -msgstr "Um membro da equipa irá rever a sua avaliação assim que possível." - -#: src/js/controllers/confirm.js:351 -msgid "A total of {{amountAboveMaxSizeStr}} were excluded. The maximum size allowed for a transaction was exceeded." -msgstr "O montante de {{amountAboveMaxSizeStr}} foi excluido. O valor máximo permitido para uma transação foi excedido." - -#: src/js/controllers/confirm.js:345 -msgid "A total of {{amountBelowFeeStr}} were excluded. These funds come from UTXOs smaller than the network fee provided." -msgstr "O montante de {{amountBelowFeeStr}} foi excluido. Estes fundos vieram de UTXOs menores que a taxa de rede fornecida." - -#: src/js/controllers/preferencesAbout.js:6 -#: www/views/tab-settings.html:156 -msgid "About" -msgstr "Sobre" - -#: src/js/controllers/modals/txpDetails.js:56 -#: src/js/controllers/tx-details.js:62 -msgid "Accepted" -msgstr "Aceite" - -#: www/views/preferencesInformation.html:66 -msgid "Account" -msgstr "Conta" - -#: www/views/join.html:69 -#: www/views/tab-create-personal.html:43 -#: www/views/tab-create-shared.html:72 -#: www/views/tab-import-hardware.html:19 -msgid "Account Number" -msgstr "Número de conta" - -#: www/views/preferencesBitpayServices.html:23 -msgid "Accounts" -msgstr "Contas" - -#: www/views/bitpayCard.html:56 -msgid "Activity" -msgstr "Atividade" - -#: src/js/services/bitpayAccountService.js:83 -msgid "Add Account" -msgstr "Adicionar conta" - -#: src/js/services/bitpayAccountService.js:69 -msgid "Add BitPay Account?" -msgstr "Adicionar conta BitPay?" - -#: www/views/addressbook.add.html:4 -#: www/views/addressbook.html:22 -msgid "Add Contact" -msgstr "Adicionar contacto" - -#: www/views/bitpayCard.html:28 -msgid "Add Funds" -msgstr "Adicionar fundos" - -#: www/views/confirm.html:96 -msgid "Add Memo" -msgstr "Adicionar nota" - -#: www/views/join.html:84 -#: www/views/tab-create-personal.html:57 -#: www/views/tab-create-shared.html:86 -msgid "Add a password" -msgstr "Adicionar uma senha" - -#: www/views/includes/accountSelector.html:27 -msgid "Add account" -msgstr "Adicionar conta" - -#: www/views/join.html:87 -#: www/views/tab-create-personal.html:60 -#: www/views/tab-create-shared.html:89 -msgid "Add an optional password to secure the recovery phrase" -msgstr "Adicionar uma senha opcional para asegurar a frase de recuperação" - -#: www/views/includes/incomingDataMenu.html:41 -msgid "Add as a contact" -msgstr "" - -#: src/js/controllers/confirm.js:374 -msgid "Add description" -msgstr "Adicionar descrição" - -#: www/views/topup.html:6 -msgid "Add funds" -msgstr "Adicionar fundos" - -#: src/js/services/bitpayAccountService.js:78 -msgid "Add this BitPay account ({{email}})?" -msgstr "Adicionar esta conta BitPay ({{email}})?" - -#: www/views/add.html:3 -msgid "Add wallet" -msgstr "Adicionar carteira" - -#: www/views/addressbook.view.html:26 -#: www/views/customAmount.html:28 -#: www/views/modals/paypro.html:24 -msgid "Address" -msgstr "Endereço" - -#: www/views/addressbook.html:6 -#: www/views/tab-settings.html:13 -msgid "Address Book" -msgstr "Livros de endereços" - -#: www/views/preferencesInformation.html:35 -msgid "Address Type" -msgstr "Tipo de Endereço" - -#: www/views/addresses.html:64 -msgid "Addresses With Balance" -msgstr "Endereços com valores" - -#: www/views/tab-settings.html:149 -msgid "Advanced" -msgstr "Avançado" - -#: www/views/advancedSettings.html:3 -msgid "Advanced Settings" -msgstr "Definições avançadas" - -#: www/views/bitpayCard.html:62 -msgid "All" -msgstr "Todos" - -#: www/views/allAddresses.html:3 -msgid "All Addresses" -msgstr "Todos os endereços" - -#: www/views/modals/wallet-balance.html:18 -msgid "All of your bitcoin wallet balance may not be available for immediate spending." -msgstr "Todos os seus bitcoins na carteira poderão não estar disponíveis de imediato para gastar." - -#: www/views/tab-receive.html:25 -msgid "All signing devices must be added to this multisig wallet before bitcoin addresses can be created." -msgstr "Todos os dispositivos de autenticação devem ser adicionados a esta carteira de multi-assinatura antes dos endereços bitcoin poderem ser criados." - -#: www/views/tab-scan.html:21 -msgid "Allow Camera Access" -msgstr "Permitir o acesso à câmera" - -#: www/views/onboarding/notifications.html:7 -msgid "Allow notifications" -msgstr "Permitir notificações" - -#: www/views/onboarding/disclaimer.html:14 -msgid "Almost done! Let's review." -msgstr "Quase pronto! Vamos rever." - -#: www/views/preferencesAltCurrency.html:4 -#: www/views/tab-settings.html:74 -msgid "Alternative Currency" -msgstr "Moeda Alternativa" - -#: src/js/controllers/buyAmazon.js:97 -msgid "Amazon.com is not available at this moment. Please try back later." -msgstr "" - -#: www/views/amount.html:44 -#: www/views/customAmount.html:34 -#: www/views/includes/output.html:7 -msgid "Amount" -msgstr "Valor" - -#: src/js/services/bwcError.js:110 -msgid "Amount below minimum allowed" -msgstr "Montante abaixo do mínimo permitido" - -#: src/js/controllers/confirm.js:191 -msgid "Amount too big" -msgstr "Montante muito grande" - -#: www/views/includes/walletHistory.html:31 -msgid "Amount too low to spend" -msgstr "Quantidade muito baixa para gastar" - -#: src/js/controllers/tab-home.js:147 -msgid "An update to this app is available. For your security, please update to the latest version." -msgstr "Está disponível uma actualização para esta aplicação. Para sua segurança, por favor atualize para a versão mais recente." - -#: www/views/backupWarning.html:14 -msgid "Anyone with your backup phrase can access or spend your bitcoin." -msgstr "Qualquer pessoa com sua frase de segurança pode aceder ou gastar os seus bitcoins." - -#: www/views/addresses.html:94 -msgid "Approximate Bitcoin network fee to transfer wallet's balance (with normal priority)" -msgstr "Taxa de rede Bitcoin aproximada para transferir o saldo da carteira (com prioridade normal)" - -#: www/views/backupWarning.html:10 -msgid "Are you being watched?" -msgstr "Você está sendo vigiado?" - -#: src/js/controllers/preferencesExternal.js:15 -msgid "Are you being watched? Anyone with your recovery phrase can access or spend your bitcoin." -msgstr "Você está sendo observado? Qualquer pessoa com sua frase de recuperação pode acessar ou gastar seu bitcoin." - -#: src/js/controllers/copayers.js:56 -msgid "Are you sure you want to cancel and delete this wallet?" -msgstr "Tem certeza que deseja cancelar e eliminar esta carteira?" - -#: src/js/controllers/addressbookView.js:24 -msgid "Are you sure you want to delete this contact?" -msgstr "Tem certeza que deseja excluir este contato?" - -#: src/js/controllers/preferencesDelete.js:26 -msgid "Are you sure you want to delete this wallet?" -msgstr "Tem certeza que deseja excluir esta carteira?" - -#: src/js/controllers/modals/txpDetails.js:148 -msgid "Are you sure you want to reject this transaction?" -msgstr "Tem certeza que deseja cancelar esta transação?" - -#: src/js/controllers/modals/txpDetails.js:165 -msgid "Are you sure you want to remove this transaction?" -msgstr "Tem certeza que deseja remover esta transação?" - -#: src/js/controllers/onboarding/backupRequest.js:23 -msgid "Are you sure you want to skip it?" -msgstr "Tem a certeza que deseja ignorar?" - -#: www/views/modals/bitpay-card-confirmation.html:4 -msgid "Are you sure you would like to log out of your BitPay Card account?" -msgstr "Tem certeza que você deseja sair da sua conta do BitPay Card?" - -#: src/js/controllers/preferencesBitpayCard.js:7 -#: src/js/controllers/preferencesBitpayServices.js:20 -msgid "Are you sure you would like to remove your BitPay Card ({{lastFourDigits}}) from this device?" -msgstr "Tem a certeza de que quer remover o seu Cartão BitPay ({{lastFourDigits}}) deste dispositivo?" - -#: www/views/includes/walletInfo.html:5 -msgid "Auditable" -msgstr "Audivel" - -#: www/views/modals/wallet-balance.html:42 -msgid "Available" -msgstr "Disponível" - -#: www/views/includes/available-balance.html:3 -msgid "Available Balance" -msgstr "Saldo Disponível" - -#: www/views/modals/chooseFeeLevel.html:24 -#: www/views/preferencesFee.html:15 -msgid "Average confirmation time" -msgstr "Tempo de confirmação (em média)" - -#: www/views/join.html:140 -#: www/views/tab-create-personal.html:111 -#: www/views/tab-create-shared.html:140 -#: www/views/tab-import-phrase.html:48 -msgid "BIP32 path for address derivation" -msgstr "Pacote BIP32 para endereço de derivação" - -#: www/views/preferences.html:34 -msgid "Backup" -msgstr "Backup" - -#: www/views/includes/backupNeededPopup.html:7 -msgid "Backup Needed" -msgstr "Cópia de segurança necessária" - -#: src/js/controllers/lockSetup.js:87 -msgid "Backup all livenet wallets before using this function" -msgstr "Faça backup de todas as carteiras do livenet antes de usar esta função" - -#: www/views/preferences.html:36 -#: www/views/tab-settings.html:120 -msgid "Backup needed" -msgstr "Backup necessário" - -#: www/views/includes/backupNeededPopup.html:9 -msgid "Backup now" -msgstr "Backup agora" - -#: www/views/onboarding/backupRequest.html:11 -#: www/views/tab-export-file.html:89 -msgid "Backup wallet" -msgstr "Criar cópia da carteira" - -#: src/js/controllers/lockSetup.js:84 -msgid "Backup your wallet before using this function" -msgstr "Faça backup da sua carteira antes de usar esta função" - -#: src/js/services/profileService.js:430 -msgid "Bad wallet invitation" -msgstr "Convite para carteira inválido" - -#: www/views/preferencesInformation.html:96 -msgid "Balance By Address" -msgstr "Saldo por endereço" - -#: www/views/includes/confirmBackupPopup.html:7 -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 "Certifique-se de armazenar a sua frase de recuperação num lugar seguro. Se esta aplicação for eliminada o seu dinheiro não pode ser recuperado sem ela." - -#: www/views/preferencesBitpayServices.html:9 -msgid "BitPay Visa® Cards" -msgstr "Cartões BitPay Visa®" - -#: www/views/addressbook.add.html:38 -#: www/views/includes/incomingDataMenu.html:29 -msgid "Bitcoin Address" -msgstr "Endereço Bitcoin" - -#: www/views/modals/chooseFeeLevel.html:4 -#: www/views/preferencesFee.html:4 -#: www/views/tab-settings.html:85 -msgid "Bitcoin Network Fee Policy" -msgstr "Política de taxa de rede Bitcoin" - -#: www/views/tab-settings.html:63 -msgid "Bitcoin Unit" -msgstr "Unidade do Bitcoin" - -#: www/views/onboarding/tour.html:31 -msgid "Bitcoin is a currency." -msgstr "Bitcoin é uma moeda." - -#: www/views/onboarding/disclaimer.html:15 -msgid "Bitcoin is different – it cannot be safely held with a bank or web service." -msgstr "Bitcoin é diferente – ela não pode ser retida com segurança por um serviço web ou banco." - -#: www/views/onboarding/tour.html:18 -msgid "Bitcoin is secure,
digital money." -msgstr "Bitcoin é seguro,
moeda digital." - -#: www/views/preferencesFee.html:11 -msgid "Bitcoin transactions include a fee collected by miners on the network." -msgstr "As transações Bitcoin incluem uma taxa cobrada pelos mineiros na rede." - -#: www/views/buyAmazon.html:108 -msgid "Bought {{amountUnitStr}}" -msgstr "" - -#: www/views/modals/txp-details.html:36 -msgid "Broadcast Payment" -msgstr "Transmitir Pagamento" - -#: src/js/controllers/modals/txpDetails.js:58 -#: src/js/controllers/tx-details.js:64 -msgid "Broadcasted" -msgstr "Transmitido" - -#: src/js/services/onGoingProcess.js:11 -msgid "Broadcasting transaction" -msgstr "Transmitindo transação" - -#: www/views/unsupported.html:6 -msgid "Browser unsupported" -msgstr "Navegador não suportado" - -#: www/views/buyAmazon.html:5 -msgid "Buy" -msgstr "" - -#: www/views/includes/buyAndSellCard.html:3 -msgid "Buy & Sell Bitcoin" -msgstr "Comprar & Vender Bitcoin" - -#: www/views/tab-send.html:35 -msgid "Buy Bitcoin" -msgstr "Comprar Bitcoin" - -#: src/js/controllers/buyAmazon.js:332 -msgid "Buy from" -msgstr "" - -#: src/js/services/onGoingProcess.js:40 -msgid "Buying Bitcoin..." -msgstr "A comprar Bitcoin..." - -#: src/js/services/onGoingProcess.js:12 -msgid "Calculating fee" -msgstr "A calcular taxa" - -#: src/js/controllers/buyAmazon.js:311 -#: src/js/controllers/confirm.js:495 -#: src/js/controllers/topup.js:285 -#: src/js/services/popupService.js:62 -#: src/js/services/popupService.js:73 -#: www/views/addressbook.add.html:10 -#: www/views/feedback/send.html:5 -#: www/views/includes/incomingDataMenu.html:22 -#: www/views/includes/incomingDataMenu.html:54 -#: www/views/includes/incomingDataMenu.html:73 -#: www/views/includes/incomingDataMenu.html:97 -#: www/views/includes/note.html:6 -#: www/views/modals/bitpay-card-confirmation.html:8 -#: www/views/modals/confirmation.html:13 -msgid "Cancel" -msgstr "Cancelar" - -#: www/views/copayers.html:36 -msgid "Cancel invitation" -msgstr "Cancelar convite" - -#: src/js/controllers/onboarding/tour.js:52 -msgid "Cannot Create Wallet" -msgstr "Não é possível criar a carteira" - -#: src/js/services/profileService.js:426 -msgid "Cannot join the same wallet more that once" -msgstr "Não pode juntar-se a mesma carteira mais que uma vez" - -#: www/views/includes/bitpayCardsCard.html:2 -msgid "Cards" -msgstr "Cartões" - -#: www/views/modals/paypro.html:30 -msgid "Certified by" -msgstr "Certificado por" - -#: www/views/preferencesExternal.html:19 -msgid "Check installation and retry." -msgstr "Verifique a instalação e tente novamente." - -#: www/views/tab-import-file.html:4 -msgid "Choose a backup file from your computer" -msgstr "Escolha um arquivo de backup do seu computador" - -#: www/views/modals/wallets.html:9 -msgid "Choose your destination wallet" -msgstr "Escolha a sua carteira de destino" - -#: www/views/modals/wallets.html:10 -msgid "Choose your source wallet" -msgstr "Escolha a sua carteira de origem" - -#: www/views/backup.html:54 -msgid "Clear" -msgstr "Eliminar" - -#: www/views/preferencesHistory.html:24 -msgid "Clear cache" -msgstr "Limpar cache" - -#: src/js/controllers/modals/txpDetails.js:34 -msgid "Click" -msgstr "Clique" - -#: www/views/customAmount.html:4 -#: www/views/modals/paypro.html:4 -#: www/views/modals/pin.html:3 -#: www/views/modals/search.html:3 -#: www/views/modals/wallet-balance.html:3 -#: www/views/modals/wallets.html:5 -msgid "Close" -msgstr "Fechar" - -#: www/views/preferences.html:22 -msgid "Color" -msgstr "Cor" - -#: www/views/preferencesAbout.html:21 -msgid "Commit hash" -msgstr "Commit de hash" - -#: www/views/preferences.html:48 -msgid "Complete the backup process to use this option" -msgstr "Complete o processo de backup para usar esta opção" - -#: www/views/bitpayCard.html:93 -msgid "Completed" -msgstr "Concluído" - -#: src/js/controllers/buyAmazon.js:309 -#: src/js/controllers/confirm.js:494 -#: src/js/controllers/copayers.js:55 -#: src/js/controllers/topup.js:283 -#: www/views/backup.html:53 -#: www/views/backup.html:72 -#: www/views/confirm.html:4 -#: www/views/onboarding/collectEmail.html:32 -msgid "Confirm" -msgstr "Confirmar" - -#: www/views/modals/terms.html:26 -#: www/views/onboarding/disclaimer.html:44 -msgid "Confirm & Finish" -msgstr "Confirmar & Terminado" - -#: www/views/buyAmazon.html:90 -msgid "Confirm purchase" -msgstr "" - -#: www/views/modals/pin.html:10 -msgid "Confirm your PIN" -msgstr "Confirme o seu PIN" - -#: src/js/services/walletService.js:1034 -msgid "Confirm your new spending password" -msgstr "Confirme a nova senha de pagamento" - -#: www/views/tx-details.html:98 -msgid "Confirmations" -msgstr "Confirmações" - -#: www/views/bitpayCard.html:68 -#: www/views/modals/wallet-balance.html:61 -msgid "Confirming" -msgstr "A confirmar" - -#: www/views/bitpayCardIntro.html:37 -msgid "Connect my BitPay Card" -msgstr "Introduzir o meu cartão do BitPay" - -#: src/js/services/onGoingProcess.js:13 -msgid "Connecting to Coinbase..." -msgstr "A conectar ao Coinbase..." - -#: src/js/services/onGoingProcess.js:14 -msgid "Connecting to Glidera..." -msgstr "A conectar ao Glidera..." - -#: src/js/services/bwcError.js:53 -msgid "Connection reset by peer" -msgstr "Ligação redefinida pelo mesmo nível" - -#: www/views/tab-send.html:45 -msgid "Contacts" -msgstr "Contactos" - -#: www/views/onboarding/notifications.html:9 -msgid "Continue" -msgstr "Continuar" - -#: www/views/preferencesLanguage.html:26 -msgid "Contribute Translations" -msgstr "Contribuir para a tradução" - -#: src/js/services/bwcError.js:62 -msgid "Copayer already in this wallet" -msgstr "Copayer já está nesta carteira" - -#: src/js/services/bwcError.js:77 -msgid "Copayer already voted on this spend proposal" -msgstr "Copayer já votou nesta proposta de pagamento" - -#: src/js/services/bwcError.js:107 -msgid "Copayer data mismatch" -msgstr "Informação do Copayer inválida" - -#: www/views/includes/walletActivity.html:2 -msgid "Copayer joined" -msgstr "Copayer juntou-se" - -#: www/views/preferencesInformation.html:88 -msgid "Copayer {{$index}}" -msgstr "Copayer {{$index}}" - -#: src/js/controllers/copayers.js:79 -#: src/js/controllers/export.js:193 -#: www/views/includes/copyToClipboard.html:4 -msgid "Copied to clipboard" -msgstr "Copiado para a área de transferência" - -#: www/views/tab-export-file.html:94 -msgid "Copy this text as it is to a safe place (notepad or email)" -msgstr "Copie este texto como está para um lugar seguro (bloco de notas ou e-mail)" - -#: www/views/includes/incomingDataMenu.html:51 -#: www/views/includes/incomingDataMenu.html:70 -#: www/views/includes/incomingDataMenu.html:94 -#: www/views/preferencesLogs.html:10 -#: www/views/tab-export-file.html:78 -msgid "Copy to clipboard" -msgstr "Copiar para área de transferência" - -#: www/views/tab-import-phrase.html:2 -msgid "Could not access the wallet at the server. Please check:" -msgstr "Não foi possível acessar a carteira no servidor. Por favor, verifique:" - -#: src/js/controllers/buyAmazon.js:101 -msgid "Could not access to Amazon.com" -msgstr "" - -#: src/js/services/profileService.js:493 -msgid "Could not access wallet" -msgstr "Impossível aceder à carteira" - -#: src/js/controllers/confirm.js:185 -msgid "Could not add message to imported wallet without shared encrypting key" -msgstr "Não foi possível adicionar mensagem à carteira importada sem chave de criptografia compartilhada" - -#: src/js/controllers/modals/txpDetails.js:193 -msgid "Could not broadcast payment" -msgstr "Não foi possível transmitir o pagamento" - -#: src/js/services/bwcError.js:41 -msgid "Could not build transaction" -msgstr "Não foi possível criar a transacção" - -#: src/js/services/walletService.js:857 -msgid "Could not create address" -msgstr "Não foi possível criar o endereço" - -#: src/js/controllers/topup.js:91 -msgid "Could not create the invoice" -msgstr "Não foi possível criar a fatura" - -#: src/js/controllers/buyAmazon.js:163 -#: src/js/controllers/topup.js:141 -msgid "Could not create transaction" -msgstr "Não foi possível criar a transação" - -#: src/js/services/profileService.js:342 -msgid "Could not create using the specified extended private key" -msgstr "Não foi possível criar usando a chave privada estendida especificada" - -#: src/js/services/profileService.js:353 -msgid "Could not create using the specified extended public key" -msgstr "Não foi possível criar usando a chave privada estendida especificada" - -#: src/js/services/profileService.js:335 -msgid "Could not create: Invalid wallet recovery phrase" -msgstr "Não foi possível criar: Frase de recuperação de carteira inválida" - -#: src/js/controllers/import.js:99 -msgid "Could not decrypt file, check your password" -msgstr "Não foi possível descriptografar o arquivo, verifique sua senha" - -#: src/js/controllers/modals/txpDetails.js:175 -msgid "Could not delete payment proposal" -msgstr "Não foi possível excluir a proposta de pagamento" - -#: src/js/services/feeService.js:72 -msgid "Could not get dynamic fee" -msgstr "Não foi possível obter taxa dinâmica" - -#: src/js/services/feeService.js:42 -msgid "Could not get dynamic fee for level: {{feeLevel}}" -msgstr "Não foi possível obter a taxa dinâmica para nível: {{feeLevel}}" - -#: src/js/controllers/modals/feeLevels.js:113 -msgid "Could not get fee levels" -msgstr "" - -#: src/js/controllers/buyAmazon.js:121 -#: src/js/controllers/topup.js:99 -msgid "Could not get the invoice" -msgstr "Não foi possível obter a fatura" - -#: src/js/controllers/bitpayCard.js:66 -msgid "Could not get transactions" -msgstr "Não foi possível obter o histórico das transações" - -#: src/js/services/profileService.js:595 -#: src/js/services/profileService.js:629 -#: src/js/services/profileService.js:652 -msgid "Could not import" -msgstr "Não foi possível importar" - -#: src/js/services/profileService.js:564 -msgid "Could not import. Check input file and spending password" -msgstr "Não foi possível importar. Verifique o arquivo de entrada e senha de compra" - -#: src/js/services/profileService.js:439 -msgid "Could not join wallet" -msgstr "Impossível juntar à carteira" - -#: src/js/controllers/modals/txpDetails.js:155 -msgid "Could not reject payment" -msgstr "Não foi possível rejeitar o pagamento" - -#: src/js/controllers/preferencesBitpayServices.js:33 -msgid "Could not remove account" -msgstr "Não foi possível remover a conta" - -#: src/js/controllers/preferencesBitpayCard.js:20 -#: src/js/controllers/preferencesBitpayServices.js:50 -msgid "Could not remove card" -msgstr "Não foi possível remover o cartão" - -#: src/js/services/walletService.js:776 -msgid "Could not save preferences on the server" -msgstr "Não foi possível guardar as suas preferências no servidor" - -#: src/js/controllers/modals/txpDetails.js:141 -msgid "Could not send payment" -msgstr "Não foi possível enviar o pagamento" - -#: src/js/controllers/buyAmazon.js:323 -#: src/js/controllers/topup.js:297 -msgid "Could not send transaction" -msgstr "Não foi possível enviar a transação" - -#: www/views/walletDetails.html:199 -msgid "Could not update transaction history" -msgstr "Não foi possível atualizar o histórico de transações" - -#: src/js/controllers/addresses.js:34 -#: src/js/controllers/addresses.js:42 -#: src/js/controllers/copayers.js:30 -#: src/js/controllers/walletDetails.js:78 -msgid "Could not update wallet" -msgstr "Não foi possível atualizar a carteira" - -#: www/views/tab-create-personal.html:3 -msgid "Create Personal Wallet" -msgstr "Criar carteira pessoal" - -#: www/views/tab-create-shared.html:3 -msgid "Create Shared Wallet" -msgstr "Criar carteira partilhada" - -#: www/views/onboarding/tour.html:51 -#: www/views/tab-home.html:77 -#: www/views/tab-send.html:36 -msgid "Create bitcoin wallet" -msgstr "Criar carteira bitcoin" - -#: www/views/tab-create-personal.html:129 -msgid "Create new wallet" -msgstr "Criando nova carteira" - -#: www/views/add.html:22 -msgid "Create shared wallet" -msgstr "Criar carteira partilhada" - -#: www/views/tab-create-shared.html:158 -msgid "Create {{formData.requiredCopayers}}-of-{{formData.totalCopayers}} wallet" -msgstr "Criar carteira de {{formData.requiredCopayers}}-de-{{formData.totalCopayers}}" - -#: www/views/modals/txp-details.html:83 -#: www/views/tx-details.html:62 -msgid "Created by" -msgstr "Criado por" - -#: src/js/services/onGoingProcess.js:18 -msgid "Creating Wallet..." -msgstr "Criando Carteira…" - -#: src/js/services/onGoingProcess.js:17 -msgid "Creating transaction" -msgstr "Criando transação" - -#: www/views/modals/chooseFeeLevel.html:34 -#: www/views/preferencesFee.html:20 -msgid "Current fee rate for this policy" -msgstr "Taxa atual para esta política" - -#: src/js/services/feeService.js:15 -msgid "Custom" -msgstr "" - -#: www/views/customAmount.html:9 -msgid "Custom Amount" -msgstr "Montante personalizado" - -#: src/js/controllers/preferencesFee.js:84 -msgid "Custom Fee" -msgstr "" - -#: www/views/modals/txp-details.html:89 -#: www/views/tx-details.html:68 -msgid "Date" -msgstr "Data" - -#: www/views/preferencesDeleteWallet.html:21 -msgid "Delete" -msgstr "Eliminar" - -#: www/views/modals/txp-details.html:166 -msgid "Delete Payment Proposal" -msgstr "Excluir Proposta de Pagamento" - -#: www/views/preferencesAdvanced.html:33 -#: www/views/preferencesDeleteWallet.html:3 -msgid "Delete Wallet" -msgstr "Excluir Carteira" - -#: www/views/copayers.html:59 -msgid "Delete it and create a new one" -msgstr "Apagar e criar um novo" - -#: src/js/services/onGoingProcess.js:19 -msgid "Deleting Wallet..." -msgstr "A eliminar carteira..." - -#: src/js/services/onGoingProcess.js:28 -msgid "Deleting payment proposal" -msgstr "A eliminar proposta de pagamento" - -#: www/views/join.html:138 -#: www/views/tab-create-personal.html:109 -#: www/views/tab-create-shared.html:138 -#: www/views/tab-import-phrase.html:46 -msgid "Derivation Path" -msgstr "Caminho de derivação" - -#: www/views/preferencesInformation.html:41 -msgid "Derivation Strategy" -msgstr "Estratégia de derivação" - -#: www/views/buyAmazon.html:39 -#: www/views/topup.html:45 -msgid "Details" -msgstr "Detalhes" - -#: src/js/controllers/lockSetup.js:9 -#: src/js/controllers/tab-settings.js:60 -msgid "Disabled" -msgstr "Desativado" - -#: www/views/includes/backupNeededPopup.html:10 -#: www/views/onboarding/backupRequest.html:12 -msgid "Do it later" -msgstr "Fazê-lo mais tarde" - -#: www/views/tab-export-file.html:29 -msgid "Do not include private key" -msgstr "Não inclui chave privada" - -#: www/views/preferencesLanguage.html:21 -msgid "Don't see your language on Crowdin? Contact the Owner on Crowdin! We'd love to support your language." -msgstr "Não vê o seu idioma no Crowdin? Contacte o Dono no Crowdin! Nós adoraríamos suportar a sua linguagem." - -#: www/views/tab-export-file.html:59 -#: www/views/tab-home.html:22 -msgid "Download" -msgstr "Download" - -#: www/views/addresses.html:19 -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 "Cada carteira de Bitcoin pode gerar biliões de endereços através do seu backup de 12-palavras. Um novo endereço é gerado automáticamente e mostrado cada vez que receber um pagamento." - -#: src/js/services/feeService.js:13 -msgid "Economy" -msgstr "Economia" - -#: www/views/onboarding/collectEmail.html:27 -msgid "Edit" -msgstr "Editar" - -#: www/views/addressbook.add.html:29 -#: www/views/addressbook.view.html:22 -msgid "Email" -msgstr "Email" - -#: www/views/preferencesNotifications.html:42 -msgid "Email Address" -msgstr "Endereço de email" - -#: src/js/services/bwcError.js:122 -msgid "Empty addresses limit reached. New addresses cannot be generated." -msgstr "Limite de endereços vazios atingido. Novos endereço não podem ser gerados." - -#: www/views/tab-scan.html:19 -msgid "Enable camera access in your device settings to get started." -msgstr "Permita o acesso de câmera nas configurações do seu dispositivo para começar." - -#: www/views/preferencesNotifications.html:29 -msgid "Enable email notifications" -msgstr "Ativar notificações por email" - -#: www/views/preferencesNotifications.html:12 -msgid "Enable push notifications" -msgstr "Ativar notificações push" - -#: www/views/tab-scan.html:18 -msgid "Enable the camera to get started." -msgstr "Ative a câmera para começar." - -#: www/views/amount.html:4 -msgid "Enter Amount" -msgstr "Inserir montante" - -#: src/js/services/walletService.js:1048 -#: src/js/services/walletService.js:1063 -msgid "Enter Spending Password" -msgstr "Inserir senha de compra" - -#: src/js/services/bitpayAccountService.js:110 -msgid "Enter Two Factor for your BitPay account" -msgstr "Insira verificação dois passos para sua conta BitPay" - -#: www/views/modals/chooseFeeLevel.html:41 -msgid "Enter custom fee" -msgstr "" - -#: src/js/services/walletService.js:1030 -msgid "Enter new spending password" -msgstr "Insira a nova senha para pagamento" - -#: www/views/join.html:76 -#: www/views/tab-create-personal.html:49 -#: www/views/tab-create-shared.html:78 -msgid "Enter the recovery phrase (BIP39)" -msgstr "Digite a frase de recuperação (BIP39)" - -#: www/views/onboarding/collectEmail.html:13 -msgid "Enter your email" -msgstr "Digite seu e-mail" - -#: www/views/backup.html:62 -msgid "Enter your password" -msgstr "Digite sua senha" - -#. Trying to import a malformed wallet export QR code -#: src/js/controllers/activity.js:45 -#: src/js/controllers/addressbookAdd.js:30 -#: src/js/controllers/addressbookView.js:29 -#: src/js/controllers/addresses.js:130 -#: src/js/controllers/addresses.js:131 -#: src/js/controllers/bitpayCard.js:66 -#: src/js/controllers/bitpayCardIntro.js:40 -#: src/js/controllers/bitpayCardIntro.js:81 -#: src/js/controllers/buyAmazon.js:23 -#: src/js/controllers/buyAmazon.js:34 -#: src/js/controllers/confirm.js:276 -#: src/js/controllers/copayers.js:67 -#: src/js/controllers/create.js:155 -#: src/js/controllers/create.js:168 -#: src/js/controllers/create.js:175 -#: src/js/controllers/create.js:197 -#: src/js/controllers/create.js:204 -#: src/js/controllers/create.js:222 -#: src/js/controllers/export.js:109 -#: src/js/controllers/export.js:115 -#: src/js/controllers/export.js:126 -#: src/js/controllers/export.js:154 -#: src/js/controllers/export.js:160 -#: src/js/controllers/export.js:171 -#: src/js/controllers/export.js:47 -#: src/js/controllers/export.js:53 -#: src/js/controllers/feedback/send.js:23 -#: src/js/controllers/import.js:104 -#: src/js/controllers/import.js:116 -#: src/js/controllers/import.js:134 -#: src/js/controllers/import.js:185 -#: src/js/controllers/import.js:213 -#: src/js/controllers/import.js:222 -#: src/js/controllers/import.js:237 -#: src/js/controllers/import.js:249 -#: src/js/controllers/import.js:260 -#: src/js/controllers/import.js:270 -#: src/js/controllers/import.js:294 -#: src/js/controllers/import.js:307 -#: src/js/controllers/import.js:317 -#: src/js/controllers/import.js:327 -#: src/js/controllers/import.js:351 -#: src/js/controllers/import.js:364 -#: src/js/controllers/import.js:70 -#: src/js/controllers/import.js:83 -#: src/js/controllers/join.js:121 -#: src/js/controllers/join.js:135 -#: src/js/controllers/join.js:142 -#: src/js/controllers/join.js:165 -#: src/js/controllers/join.js:173 -#: src/js/controllers/join.js:191 -#: src/js/controllers/modals/feeLevels.js:10 -#: src/js/controllers/modals/txpDetails.js:134 -#: src/js/controllers/paperWallet.js:47 -#: src/js/controllers/preferencesBitpayCard.js:20 -#: src/js/controllers/preferencesBitpayServices.js:33 -#: src/js/controllers/preferencesBitpayServices.js:50 -#: src/js/controllers/preferencesDelete.js:37 -#: src/js/controllers/preferencesExternal.js:20 -#: src/js/controllers/tab-home.js:174 -#: src/js/controllers/tab-send.js:132 -#: src/js/controllers/tabsController.js:36 -#: src/js/controllers/tabsController.js:7 -#: src/js/controllers/topup.js:20 -#: src/js/controllers/topup.js:31 -#: src/js/controllers/tx-details.js:102 -#: src/js/services/incomingData.js:98 -msgid "Error" -msgstr "Erro" - -#: src/js/controllers/confirm.js:447 -msgid "Error at confirm" -msgstr "Erro na confirmação" - -#: src/js/controllers/buyAmazon.js:178 -msgid "Error creating gift card" -msgstr "" - -#: src/js/controllers/buyAmazon.js:93 -msgid "Error creating the invoice" -msgstr "" - -#: src/js/services/profileService.js:396 -msgid "Error creating wallet" -msgstr "Erro na criação da carteira" - -#: src/js/controllers/confirm.js:266 -msgid "Error getting SendMax information" -msgstr "Erro ao obter informações de SendMax" - -#: src/js/controllers/buyAmazon.js:135 -#: src/js/controllers/topup.js:113 -msgid "Error in Payment Protocol" -msgstr "Erro no Protocolo de Pagamento" - -#: src/js/controllers/bitpayCardIntro.js:14 -msgid "Error pairing BitPay Account" -msgstr "Erro de emparelhamento na Conta BitPay" - -#: src/js/controllers/paperWallet.js:41 -msgid "Error scanning funds:" -msgstr "Erro na varredura dos fundos:" - -#: src/js/controllers/paperWallet.js:91 -msgid "Error sweeping wallet:" -msgstr "Erro na varredura da carteira:" - -#: src/js/controllers/bitpayCardIntro.js:20 -msgid "Error updating Debit Cards" -msgstr "Erro na atualização dos Cartões de Débito" - -#: src/js/services/bwcError.js:143 -msgid "Exceeded daily limit of $500 per user" -msgstr "Excedido limite diário de $500 por usuário" - -#: src/js/controllers/confirm.js:411 -#: www/views/confirm.html:27 -#: www/views/modals/txp-details.html:121 -msgid "Expired" -msgstr "Expirado" - -#: www/views/modals/paypro.html:54 -#: www/views/modals/txp-details.html:127 -msgid "Expires" -msgstr "Expira" - -#: www/views/preferencesAdvanced.html:21 -msgid "Export Wallet" -msgstr "Exportar Carteira" - -#: www/views/preferencesHistory.html:11 -#: www/views/preferencesHistory.html:14 -msgid "Export to file" -msgstr "Exportar para arquivo" - -#: www/views/export.html:3 -msgid "Export wallet" -msgstr "Exportar carteira" - -#: src/js/services/walletService.js:1175 -#: www/views/tab-export-qrCode.html:9 -msgid "Exporting via QR not supported for this wallet" -msgstr "Exportação via QR code não suportada por essa carteira" - -#: www/views/preferencesInformation.html:83 -msgid "Extended Public Keys" -msgstr "Chave Pública Estendida" - -#: src/js/services/onGoingProcess.js:20 -msgid "Extracting Wallet information..." -msgstr "" - -#: src/js/controllers/export.js:115 -#: src/js/controllers/export.js:126 -#: src/js/controllers/export.js:160 -#: src/js/controllers/export.js:171 -#: www/views/tab-export-file.html:4 -msgid "Failed to export" -msgstr "Falha ao exportar" - -#: www/views/tab-create-personal.html:14 -#: www/views/tab-create-shared.html:14 -msgid "Family vacation funds" -msgstr "Fundos de férias com a família" - -#: www/views/tx-details.html:81 -msgid "Fee" -msgstr "Taxa" - -#: www/views/modals/chooseFeeLevel.html:73 -msgid "Fee level" -msgstr "" - -#: src/js/controllers/modals/feeLevels.js:101 -msgid "Fee level is not defined" -msgstr "" - -#: www/views/confirm.html:81 -#: www/views/modals/txp-details.html:101 -msgid "Fee:" -msgstr "Taxa:" - -#: src/js/controllers/feedback/send.js:23 -msgid "Feedback could not be submitted. Please try again later." -msgstr "Comentário pode não ter sido enviado. Por favor, tente novamente mais tarde." - -#: src/js/services/onGoingProcess.js:42 -msgid "Fetching BitPay Account..." -msgstr "Buscando Conta BitPay..." - -#: src/js/services/onGoingProcess.js:21 -msgid "Fetching payment information" -msgstr "" - -#: www/views/export.html:14 -#: www/views/import.html:16 -msgid "File/Text" -msgstr "Arquivo/Texto" - -#: src/js/services/fingerprintService.js:43 -#: src/js/services/fingerprintService.js:48 -msgid "Finger Scan Failed" -msgstr "Leitura de Impressão Digital falhou" - -#: src/js/controllers/feedback/send.js:34 -#: www/views/feedback/complete.html:7 -msgid "Finish" -msgstr "Encerrar" - -#: www/views/tab-create-personal.html:121 -#: www/views/tab-create-shared.html:150 -msgid "For audit purposes" -msgstr "Para fins de auditoria" - -#: src/js/controllers/topup.js:306 -#: www/views/buyAmazon.html:29 -#: www/views/confirm.html:65 -#: www/views/modals/txp-details.html:74 -#: www/views/topup.html:34 -#: www/views/tx-details.html:52 -msgid "From" -msgstr "De" - -#: src/js/controllers/bitpayCardIntro.js:71 -msgid "From BitPay account" -msgstr "De conta BitPay" - -#: www/views/tab-import-phrase.html:54 -msgid "From Hardware Wallet" -msgstr "De uma Carteira de Hardware" - -#: www/views/tab-export-qrCode.html:5 -msgid "From the destination device, go to Add wallet > Import wallet and scan this QR code" -msgstr "Do dispositivo de destino, go em Adicionar Carteira > Importar Carteira e faça a varredura do código QR" - -#: src/js/services/bwcError.js:74 -msgid "Funds are locked by pending spend proposals" -msgstr "O saldo está bloqueado por um pedido de gasto pendente" - -#: www/views/paperWallet.html:16 -msgid "Funds found:" -msgstr "Saldos encontrados:" - -#: www/views/topup.html:49 -msgid "Funds to be added" -msgstr "Fundos a ser adicionado" - -#: www/views/paperWallet.html:53 -msgid "Funds transferred" -msgstr "Saldos transferidos" - -#: www/views/topup.html:103 -msgid "Funds were added to debit card" -msgstr "Os fundos foram adicionados ao cartão de débito" - -#: www/views/paperWallet.html:22 -msgid "Funds will be transferred to" -msgstr "Os saldos serão transferidos para" - -#: www/views/tab-receive.html:51 -msgid "Generate new address" -msgstr "Gerar novo endereço" - -#: src/js/services/onGoingProcess.js:22 -msgid "Generating .csv file..." -msgstr "Gerando arquivo .csv..." - -#: src/js/services/onGoingProcess.js:37 -msgid "Generating new address..." -msgstr "Gerando novo endereço..." - -#: www/views/bitpayCardIntro.html:23 -msgid "Get local cash anywhere you go, from any Visa® compatible ATM. ATM bank fees may apply." -msgstr "Sacar dinheiro em qualquer lugar que você vá, de qualquer Caixa Eletrônico Visa® compatível. Tarifas bancárias podem ser geradas." - -#: www/views/onboarding/collectEmail.html:15 -msgid "Get news and updates from BitPay" -msgstr "Receba notícias e atualizações da BitPay" - -#: www/views/bitpayCard.html:49 -#: www/views/onboarding/welcome.html:8 -msgid "Get started" -msgstr "Começar" - -#: www/views/addressbook.html:20 -msgid "Get started by adding your first one." -msgstr "Comece adicionando o primeiro." - -#: src/js/services/onGoingProcess.js:23 -msgid "Getting fee levels..." -msgstr "Obtendo níveis de taxa..." - -#: www/views/buyAmazon.html:43 -msgid "Gift card" -msgstr "" - -#: src/js/controllers/buyAmazon.js:203 -msgid "Gift card expired" -msgstr "" - -#: www/views/buyAmazon.html:111 -msgid "Gift card generated and ready to use." -msgstr "" - -#: src/js/controllers/bitpayCard.js:114 -#: src/js/controllers/bitpayCard.js:124 -#: 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:149 -#: src/js/controllers/tab-settings.js:48 -#: src/js/controllers/tx-details.js:176 -msgid "Go Back" -msgstr "Retroceder" - -#: src/js/controllers/onboarding/backupRequest.js:20 -#: src/js/controllers/onboarding/backupRequest.js:26 -#: src/js/services/bitpayAccountService.js:84 -msgid "Go back" -msgstr "Retroceder" - -#: www/views/backupWarning.html:15 -#: www/views/includes/confirmBackupPopup.html:8 -#: www/views/onboarding/tour.html:23 -msgid "Got it" -msgstr "Compreendi" - -#: www/views/preferencesInformation.html:47 -#: www/views/preferencesInformation.html:53 -msgid "Hardware Wallet" -msgstr "Carteira de hardware" - -#: www/views/preferencesExternal.html:18 -msgid "Hardware not connected." -msgstr "Hardware não conectado." - -#: www/views/import.html:20 -msgid "Hardware wallet" -msgstr "Carteira de hardware" - -#: www/views/tab-settings.html:20 -msgid "Help & Support" -msgstr "Ajuda e suporte" - -#: src/js/controllers/bitpayCard.js:112 -#: src/js/controllers/tab-settings.js:46 -msgid "Help and support information is available at the website." -msgstr "Informações de Ajuda e Suporte estão disponíveis no site." - -#: www/views/addresses.html:25 -msgid "Hide" -msgstr "Esconder" - -#: www/views/preferences.html:27 -msgid "Hide Balance" -msgstr "Esconder saldos" - -#: www/views/advancedSettings.html:29 -msgid "Hide Next Steps Card" -msgstr "Esconder próximo passo do cartão" - -#: www/views/join.html:46 -#: www/views/tab-create-personal.html:26 -#: www/views/tab-create-shared.html:55 -#: www/views/tab-export-file.html:25 -#: www/views/tab-import-file.html:28 -#: www/views/tab-import-hardware.html:31 -#: www/views/tab-import-phrase.html:33 -msgid "Hide advanced options" -msgstr "Ocultar opções avançadas" - -#: www/views/tabs.html:3 -msgid "Home" -msgstr "Início" - -#: src/js/controllers/feedback/send.js:61 -#: src/js/controllers/feedback/send.js:65 -#: src/js/controllers/feedback/send.js:69 -msgid "How could we improve your experience?" -msgstr "Como poderíamos melhorar sua experiência?" - -#: www/views/feedback/rateCard.html:3 -msgid "How do you like {{appName}}?" -msgstr "Como você gosta do {{appName}}?" - -#: src/js/controllers/feedback/rateCard.js:29 -msgid "I don't like it" -msgstr "Eu não gosto" - -#: www/views/onboarding/disclaimer.html:43 -msgid "I have read, understood, and agree to the Terms of Use." -msgstr "Li, entendi e concordo com os Termos de uso." - -#: www/views/modals/terms.html:22 -msgid "I have read, understood, and agree with the Terms of use." -msgstr "Eu li, entendi, é concordo com os Termos de uso." - -#: www/views/join.html:134 -#: www/views/tab-create-personal.html:105 -#: www/views/tab-create-shared.html:134 -msgid "I have written it down" -msgstr "Eu escrevi isso" - -#: src/js/controllers/feedback/rateCard.js:35 -msgid "I like the app" -msgstr "Eu gosto da aplicação" - -#: src/js/controllers/feedback/rateCard.js:26 -msgid "I think this app is terrible." -msgstr "Acho que esta aplicação é terrível." - -#: src/js/controllers/onboarding/backupRequest.js:19 -#: www/views/includes/screenshotWarningModal.html:9 -msgid "I understand" -msgstr "Eu compreendi" - -#: www/views/onboarding/disclaimer.html:21 -msgid "I understand that if this app is moved to another device or deleted, my bitcoin can only be recovered with the backup phrase." -msgstr "Eu entendi que se esse aplicativo for movido para outro dispositivo ou deletado, meus bitcoins só podem ser recuperados com frase de backup." - -#: www/views/onboarding/disclaimer.html:18 -msgid "I understand that my funds are held securely on this device, not by a company." -msgstr "Eu entendi que meu saldo são mantidos em segurança neste dispositivo e não por uma empresa." - -#: www/views/backup.html:29 -msgid "I've written it down" -msgstr "Já escrevi isso" - -#: www/views/preferences.html:45 -msgid "If enabled, all sensitive information (private key and recovery phrase) and actions (spending and exporting) associated with this wallet will be protected." -msgstr "Se habilitado, todas as informações sensíveis (chave privada e frase de recuperação) e ações (gastos e exportações) associados à essa carteira será protegido." - -#: www/views/advancedSettings.html:22 -msgid "If enabled, the Recent Transactions card - a list of transactions occuring across all wallets - will appear in the Home tab." -msgstr "Se habilitado, o Cartão de Transações - Lista todas as transações que ocorreram em todas as Carteiras - aparecerá na aba Início." - -#: www/views/advancedSettings.html:13 -msgid "If enabled, wallets will also try to spend unconfirmed funds. This option may cause transaction delays." -msgstr "Se habilitado, as carteiras irão tentar gastar fundos não confirmados. Está opção pode causar atrasos de transações." - -#: src/js/controllers/onboarding/backupRequest.js:18 -msgid "If this device is replaced or this app is deleted, neither you nor BitPay can recover your funds without a backup." -msgstr "Se esse dispositivo é substituído ou este aplicativo deletado, nem você nem a BitPay poderá recuperar seus fundos sem um backup." - -#: www/views/feedback/complete.html:23 -msgid "If you have additional feedback, please let us know by tapping the \"Send feedback\" option in the Settings tab." -msgstr "Se você tem sugestões adicionais, por favor, informe-nos através da opção \"Enviar Sugestões\" na Aba Configurações." - -#: www/views/includes/screenshotWarningModal.html:8 -msgid "If you take a screenshot, your backup may be viewed by other apps. You can make a safe backup with physical paper and a pen." -msgstr "Se você fizer uma Captura de tela, seu backup poderá ser visto por outros aplicativos. Você pode fazer um backup físico com um papel e caneta." - -#: www/views/tab-import-hardware.html:42 -#: www/views/tab-import-phrase.html:77 -msgid "Import" -msgstr "Importar" - -#: www/views/import.html:3 -msgid "Import Wallet" -msgstr "Importar carteira" - -#: www/views/tab-import-file.html:39 -msgid "Import backup" -msgstr "Importar backup" - -#: www/views/add.html:38 -msgid "Import wallet" -msgstr "Importar carteira" - -#: src/js/services/onGoingProcess.js:24 -msgid "Importing Wallet..." -msgstr "A importar a carteira..." - -#: www/views/backup.html:65 -msgid "In order to verify your wallet backup, please type your password." -msgstr "A fim de verificar o seu backup de carteira, por favor, digite sua senha." - -#: www/views/includes/walletItem.html:11 -#: www/views/includes/walletSelector.html:18 -#: www/views/tab-home.html:90 -#: www/views/tab-settings.html:117 -msgid "Incomplete" -msgstr "Incompleto" - -#: www/views/tab-receive.html:22 -msgid "Incomplete wallet" -msgstr "Carteira incompleta" - -#: www/views/modals/pin.html:12 -msgid "Incorrect PIN, try again." -msgstr "PIN incorreto, tente novamente." - -#. Trying to import a malformed wallet export QR code -#: src/js/controllers/import.js:70 -msgid "Incorrect code format" -msgstr "Formato de código incorreto" - -#: src/js/services/bwcError.js:113 -msgid "Incorrect network address" -msgstr "Endereço de rede incorreto" - -#: src/js/controllers/confirm.js:112 -#: src/js/controllers/confirm.js:275 -#: src/js/services/bwcError.js:44 -msgid "Insufficient funds" -msgstr "Fundos insuficientes" - -#: src/js/controllers/topup.js:164 -#: src/js/controllers/topup.js:176 -#: src/js/services/bwcError.js:71 -msgid "Insufficient funds for fee" -msgstr "Fundos insuficientes para taxa" - -#: www/views/includes/walletHistory.html:49 -msgid "Invalid" -msgstr "Inválido" - -#: src/js/controllers/buyAmazon.js:136 -#: src/js/controllers/topup.js:114 -msgid "Invalid URL" -msgstr "URL inválida" - -#: src/js/controllers/create.js:175 -#: src/js/controllers/import.js:327 -#: src/js/controllers/join.js:142 -msgid "Invalid account number" -msgstr "Número de conta inválido" - -#: src/js/services/bwcError.js:119 -msgid "Invalid address" -msgstr "Endereço inválido" - -#: src/js/controllers/tabsController.js:7 -msgid "Invalid data" -msgstr "Dados inválidos" - -#: src/js/controllers/create.js:155 -#: src/js/controllers/import.js:249 -#: src/js/controllers/join.js:121 -msgid "Invalid derivation path" -msgstr "Caminho de derivação inválido" - -#: src/js/controllers/copayers.js:90 -msgid "Invitation to share a {{appName}} Wallet" -msgstr "Convite para compartilhar a Carteira {{appName}}" - -#: www/views/buyAmazon.html:49 -#: www/views/topup.html:56 -msgid "Invoice Fee" -msgstr "Taxa de Fatura" - -#: src/js/controllers/feedback/send.js:79 -msgid "Is there anything we could do better?" -msgstr "Há algo mais que podemos ajudar?" - -#: www/views/backup.html:47 -msgid "Is this correct?" -msgstr "Isto está correto?" - -#: www/views/onboarding/collectEmail.html:22 -msgid "Is this email address correct?" -msgstr "Este endereço de e-mail está correto?" - -#: www/views/addresses.html:25 -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 "É uma boa ideia evitar a reutilização de endereços - isto também protege a sua privacidade e mantém seus bitcoins seguros, contra prováveis ataques de computadores quânticos." - -#: src/js/controllers/backup.js:76 -msgid "It's important that you write your backup phrase down correctly. If something happens to your wallet, you'll need this backup to recover your money. Please review your backup and try again." -msgstr "É importante que você escreva sua frase backup corretamente. Se algo acontecer a sua carteira, você vai precisar deste backup para recuperar seu dinheiro. Por favor, revise seu backup e tente novamente." - -#: www/views/join.html:148 -msgid "Join" -msgstr "Participar" - -#: src/js/controllers/copayers.js:85 -msgid "Join my {{appName}} Wallet. Here is the invitation code: {{secret}} You can download {{appName}} for your phone or desktop at {{appUrl}}" -msgstr "Junte-se a minha Carteira {{appName}}. Aqui está o código de convite: {{secret}} você pode baixar {{appName}} para seu celular ou desktop em {{appUrl}}" - -#: www/views/add.html:30 -#: www/views/join.html:5 -msgid "Join shared wallet" -msgstr "Associando carteira compartilhada" - -#: src/js/services/onGoingProcess.js:25 -msgid "Joining Wallet..." -msgstr "Associando-se a Carteira…" - -#: www/views/onboarding/tour.html:22 -msgid "Just scan the code to pay." -msgstr "Apenas digitalize o código para pagar." - -#: src/js/services/bwcError.js:116 -msgid "Key already associated with an existing wallet" -msgstr "Chave já associada com uma carteira existente" - -#: www/views/preferencesLanguage.html:4 -#: www/views/tab-settings.html:53 -msgid "Language" -msgstr "Idioma" - -#: www/views/bitpayCard.html:61 -msgid "Last Month" -msgstr "Mês anterior" - -#: www/views/backup.html:36 -msgid "Let's verify your backup phrase." -msgstr "Vamos verificar a sua frase de backup." - -#: www/views/addresses.html:45 -#: www/views/allAddresses.html:14 -msgid "Loading addresses..." -msgstr "A carregar endereços..." - -#: src/js/services/onGoingProcess.js:35 -msgid "Loading transaction info..." -msgstr "A carregar informação da transação..." - -#: www/views/tab-settings.html:95 -msgid "Lock App" -msgstr "Bloquear aplicativo" - -#: src/js/controllers/lockSetup.js:23 -msgid "Lock by Fingerprint" -msgstr "Bloquear por impressão digital" - -#: src/js/controllers/lockSetup.js:14 -msgid "Lock by PIN" -msgstr "Bloquear por PIN" - -#: www/views/modals/wallet-balance.html:80 -msgid "Locked" -msgstr "Bloqueado" - -#: src/js/services/bwcError.js:86 -msgid "Locktime in effect. Please wait to create a new spend proposal" -msgstr "Bloqueio de tempo em ação. Por favor, espere para criar uma nova proposta de gasto." - -#: src/js/services/bwcError.js:89 -msgid "Locktime in effect. Please wait to remove this spend proposal" -msgstr "Bloqueio de tempo em ação. Por favor espere para remover esta proposta de gasto." - -#: www/views/modals/bitpay-card-confirmation.html:14 -msgid "Log out" -msgstr "Sair" - -#: www/views/addresses.html:87 -msgid "Low amount inputs" -msgstr "Quantidade de entrada baixa" - -#: www/views/includes/walletHistory.html:27 -msgid "Low fees" -msgstr "Baixas taxas" - -#: www/views/onboarding/tour.html:38 -msgid "Makes sense" -msgstr "Faz sentido" - -#: src/js/controllers/modals/search.js:61 -msgid "Matches:" -msgstr "Correspondências:" - -#: www/views/includes/copayers.html:4 -#: www/views/preferencesInformation.html:79 -msgid "Me" -msgstr "Eu" - -#: src/js/controllers/feedback/rateCard.js:32 -msgid "Meh - it's alright" -msgstr "Meh - está tudo bem" - -#: src/js/controllers/tx-details.js:148 -#: www/views/modals/paypro.html:48 -#: www/views/modals/txp-details.html:95 -#: www/views/tx-details.html:74 -msgid "Memo" -msgstr "Nota" - -#: www/views/modals/txp-details.html:133 -msgid "Merchant Message" -msgstr "Mensagem Publicitária" - -#: src/js/services/bwcError.js:134 -msgid "Missing parameter" -msgstr "Parâmetro em falta" - -#: src/js/services/bwcError.js:32 -msgid "Missing private keys to sign" -msgstr "Faltam chaves privadas para assinar" - -#: www/views/preferences.html:60 -#: www/views/preferencesAdvanced.html:3 -msgid "More Options" -msgstr "Mais opções" - -#: www/views/includes/walletHistory.html:47 -#: www/views/tx-details.html:19 -msgid "Moved" -msgstr "Movido" - -#: src/js/controllers/tx-details.js:114 -msgid "Moved Funds" -msgstr "Valores transferidos" - -#: www/views/modals/txp-details.html:57 -msgid "Multiple recipients" -msgstr "Vários destinatários" - -#: www/views/tab-import-phrase.html:8 -msgid "NOTE: To import a wallet from a 3rd party software, please go to Add Wallet > Create Wallet, and specify the Recovery Phrase there." -msgstr "Nota: Para importar uma carteira de software de terceiros, por favor, vá para: Adicionar carteira, Criar Carteira, e então especifique a frase de recuperação." - -#: www/views/addressbook.add.html:21 -#: www/views/addressbook.view.html:18 -#: www/views/preferences.html:15 -#: www/views/preferencesAlias.html:17 -msgid "Name" -msgstr "Nome" - -#: www/views/buyAmazon.html:55 -#: www/views/topup.html:63 -msgid "Network Fee" -msgstr "Taxa de Rede" - -#: src/js/services/bwcError.js:47 -msgid "Network error" -msgstr "Erro de rede" - -#: www/views/includes/walletActivity.html:43 -msgid "New Proposal" -msgstr "Nova proposta" - -#: src/js/controllers/addresses.js:131 -msgid "New address could not be generated. Please try again." -msgstr "Novo endereço não pode ser gerado. Por favor tente novamente" - -#: www/views/add.html:14 -msgid "New personal wallet" -msgstr "Nova carteira pessoal" - -#: www/views/includes/nextSteps.html:3 -msgid "Next steps" -msgstr "Próximos passos" - -#: www/views/tab-receive.html:16 -msgid "No Wallet" -msgstr "Sem carteira" - -#: src/js/controllers/buyAmazon.js:114 -msgid "No access key defined" -msgstr "" - -#: www/views/onboarding/backupRequest.html:5 -msgid "No backup, no bitcoin." -msgstr "Sem backup, sem bitcoin." - -#: www/views/addressbook.html:19 -msgid "No contacts yet" -msgstr "Ainda não existem contactos" - -#: www/views/preferencesExternal.html:12 -msgid "No hardware information available." -msgstr "Nenhuma informação de hardware disponível." - -#: www/views/tab-import-hardware.html:3 -msgid "No hardware wallets supported on this device" -msgstr "Não há carteiras de hardware com suporte neste dispositivo" - -#: www/views/proposals.html:24 -msgid "No pending proposals" -msgstr "Sem propostas pendentes" - -#: www/views/activity.html:25 -msgid "No recent transactions" -msgstr "Não há transações recentes" - -#: src/js/controllers/buyAmazon.js:43 -#: src/js/controllers/topup.js:46 -msgid "No signing proposal: No private key" -msgstr "Nenhuma proposta de assinatura: Nenhuma chave privada" - -#: www/views/walletDetails.html:193 -msgid "No transactions yet" -msgstr "Nenhuma transação ainda" - -#: src/js/controllers/preferencesDelete.js:15 -msgid "No wallet found" -msgstr "Carteira não encontrada" - -#: src/js/controllers/preferencesDelete.js:8 -msgid "No wallet selected" -msgstr "Sem carteira selecionada" - -#: src/js/controllers/buyAmazon.js:298 -#: src/js/controllers/confirm.js:83 -#: src/js/controllers/topup.js:263 -msgid "No wallets available" -msgstr "Não há carteiras disponíveis" - -#: www/views/paperWallet.html:47 -msgid "No wallets available to receive funds" -msgstr "Nenhuma Carteira disponível para receber fundos" - -#: src/js/services/feeService.js:12 -msgid "Normal" -msgstr "Normal" - -#: src/js/services/bwcError.js:80 -msgid "Not authorized" -msgstr "Não autorizada" - -#: src/js/controllers/confirm.js:276 -msgid "Not enough funds for fee" -msgstr "Não há fundos para taxa" - -#: www/views/onboarding/tour.html:50 -msgid "Not even BitPay can access it." -msgstr "Nem mesmo Bitpay pode acessar isso." - -#: src/js/controllers/paperWallet.js:47 -msgid "Not funds found" -msgstr "Nenhum fundo encontrado" - -#: www/views/feedback/rateApp.html:3 -#: www/views/onboarding/notifications.html:8 -msgid "Not now" -msgstr "Agora não" - -#: www/views/includes/output.html:15 -msgid "Note" -msgstr "Nota" - -#: www/views/modals/wallets.html:25 -msgid "Notice: only 1-1 (single signature) wallets can be used for sell bitcoin" -msgstr "Aviso: Apenas Carteiras 1-1 (de assinatura única) podem ser usadas para vender bitcoins" - -#: www/views/preferencesNotifications.html:3 -#: www/views/tab-settings.html:46 -msgid "Notifications" -msgstr "Notificações" - -#: www/views/onboarding/collectEmail.html:9 -msgid "Notifications by email" -msgstr "Notificações por e-mail" - -#: www/views/tx-details.html:117 -msgid "Notify me if confirmed" -msgstr "Me informe se confirmado" - -#: www/views/preferencesNotifications.html:24 -msgid "Notify me when transactions are confirmed" -msgstr "" - -#: www/views/includes/backupNeededPopup.html:8 -msgid "Now is a good time to backup your wallet. If this device is lost, it is impossible to access your funds without a backup." -msgstr "Agora é uma boa hora para fazer backup de sua carteira. Se este dispositivo for perdido, é impossível acessar seus fundos sem um backup." - -#: www/views/backupWarning.html:11 -msgid "Now is a perfect time to assess your surroundings. Nearby windows? Hidden cameras? Shoulder-spies?" -msgstr "Agora é a hora perfeita para olhar em volta. Próximo de janelas? Câmeras escondidas? Espião atrás do ombro?" - -#: src/js/controllers/buyAmazon.js:310 -#: src/js/controllers/topup.js:284 -#: src/js/services/popupService.js:16 -#: src/js/services/popupService.js:52 -#: src/js/services/popupService.js:61 -#: src/js/services/popupService.js:72 -#: www/views/modals/chooseFeeLevel.html:6 -msgid "OK" -msgstr "OK" - -#: www/views/modals/tx-status.html:12 -#: www/views/modals/tx-status.html:24 -#: www/views/modals/tx-status.html:36 -#: www/views/modals/tx-status.html:46 -msgid "OKAY" -msgstr "OK" - -#: www/views/modals/terms.html:15 -msgid "Official English Disclaimer" -msgstr "Aviso Legal Oficial em Inglês" - -#: src/js/controllers/feedback/send.js:64 -msgid "Oh no!" -msgstr "Oh não!" - -#: www/views/tab-home.html:39 -msgid "On this screen you can see all your wallets, accounts, and assets." -msgstr "Nesta tela você pode ver todas as suas carteiras, contas e ativos." - -#: src/js/controllers/bitpayCard.js:113 -#: src/js/controllers/tab-settings.js:47 -msgid "Open" -msgstr "Abrir" - -#: src/js/controllers/preferencesLanguage.js:13 -msgid "Open Crowdin" -msgstr "Abrir Crowdin" - -#: src/js/controllers/preferencesAbout.js:15 -msgid "Open GitHub" -msgstr "Abrir GitHub" - -#: src/js/controllers/preferencesAbout.js:13 -msgid "Open GitHub Project" -msgstr "Abrir Projeto no GitHub" - -#: src/js/controllers/bitpayCard.js:123 -#: src/js/controllers/tx-details.js:175 -msgid "Open Insight" -msgstr "Abrir Insight" - -#: www/views/tab-scan.html:22 -msgid "Open Settings" -msgstr "Abrir definições" - -#: src/js/controllers/preferencesLanguage.js:11 -msgid "Open Translation Community" -msgstr "Abrir Comunidade de Tradução" - -#: src/js/controllers/onboarding/terms.js:22 -msgid "Open Website" -msgstr "Abrir Site" - -#: www/views/tab-receive.html:27 -msgid "Open wallet" -msgstr "Abrir Carteira" - -#: www/views/includes/incomingDataMenu.html:19 -msgid "Open website" -msgstr "" - -#: www/views/bitpayCardIntro.html:34 -msgid "Order the BitPay Card" -msgstr "Solicitar o Cartão Bitpay" - -#: www/views/join.html:102 -#: www/views/join.html:93 -#: www/views/tab-create-personal.html:67 -#: www/views/tab-create-personal.html:75 -#: www/views/tab-create-shared.html:104 -#: www/views/tab-create-shared.html:96 -#: www/views/tab-import-file.html:18 -#: www/views/tab-import-phrase.html:38 -msgid "Password" -msgstr "Senha" - -#: src/js/controllers/import.js:83 -msgid "Password required. Make sure to enter your password in advanced options" -msgstr "Necessário Senha. Certifique-se de digitar sua senha em opções avançadas" - -#: www/views/join.html:33 -msgid "Paste invitation here" -msgstr "Cole o convite aqui" - -#: www/views/tab-import-file.html:13 -msgid "Paste the backup plain text code" -msgstr "Cole o texto puro do backup aqui" - -#: www/views/bitpayCardIntro.html:28 -msgid "Pay 0% fees to turn bitcoin into dollars." -msgstr "Pague taxas de 0% para transformar bitcoin em dólar." - -#: www/views/modals/paypro.html:18 -msgid "Pay To" -msgstr "Pagar Para" - -#: src/js/controllers/modals/txpDetails.js:45 -#: www/views/modals/tx-status.html:33 -msgid "Payment Accepted" -msgstr "Pagamento Aceito" - -#: www/views/confirm.html:25 -msgid "Payment Expires:" -msgstr "Pagamento expirado:" - -#: www/views/modals/txp-details.html:6 -msgid "Payment Proposal" -msgstr "Proposta de Pagamento" - -#: www/views/modals/tx-status.html:21 -msgid "Payment Proposal Created" -msgstr "Proposta de Pagamento Criada" - -#: www/views/tab-home.html:46 -msgid "Payment Proposals" -msgstr "Propostas de Pagamento" - -#: src/js/services/payproService.js:32 -msgid "Payment Protocol Invalid" -msgstr "Protocolo de Pagamento Inválido" - -#: src/js/services/payproService.js:18 -msgid "Payment Protocol not supported on Chrome App" -msgstr "Protocolo de pagamento não suportado no Chrome App" - -#: www/views/includes/walletActivity.html:20 -msgid "Payment Received" -msgstr "Pagamento Recebido" - -#: www/views/modals/tx-status.html:43 -#: www/views/modals/txp-details.html:43 -msgid "Payment Rejected" -msgstr "Pagamento Rejeitado" - -#: src/js/controllers/modals/txpDetails.js:42 -#: www/views/confirm.html:126 -#: www/views/includes/walletActivity.html:11 -#: www/views/modals/txp-details.html:42 -msgid "Payment Sent" -msgstr "Pagamento Enviado" - -#: www/views/modals/txp-details.html:32 -msgid "Payment accepted, but not yet broadcasted" -msgstr "Pagamento aceito, mas ainda não publicado" - -#: www/views/modals/txp-details.html:40 -msgid "Payment accepted. It will be broadcasted by Glidera. In case there is a problem, it can be deleted 6 hours after it was created." -msgstr "Pagamento aceito. Ele será publicado por Glidera. Em caso de problema, pode ser deletado até 6 horas depois de criado." - -#: www/views/modals/txp-details.html:109 -msgid "Payment details" -msgstr "Detalhes do pagamento" - -#: www/views/modals/paypro.html:6 -msgid "Payment request" -msgstr "Pedido de pagamento" - -#: www/views/proposals.html:4 -msgid "Pending Proposals" -msgstr "Proposta pendente" - -#: www/views/preferencesDeleteWallet.html:13 -msgid "Permanently delete this wallet." -msgstr "Excluir permanentemente esta carteira." - -#: src/js/services/profileService.js:388 -msgid "Personal Wallet" -msgstr "Carteira Pessoal" - -#: www/views/backup.html:18 -msgid "Please carefully write down this phrase." -msgstr "Por favor, anote esta frase com cuidado." - -#: www/views/tab-scan.html:20 -msgid "Please connect a camera to get started." -msgstr "Por favor conecte uma câmera para iniciar." - -#: src/js/controllers/import.js:260 -msgid "Please enter the recovery phrase" -msgstr "Por favor, digite a frase de recuperação" - -#: src/js/controllers/create.js:168 -#: src/js/controllers/join.js:135 -msgid "Please enter the wallet recovery phrase" -msgstr "Por favor, digite a frase de recuperação da carteira" - -#: www/views/modals/pin.html:9 -msgid "Please enter your PIN" -msgstr "Introduza o seu PIN" - -#: www/views/backup.html:46 -msgid "Please tap each word in the correct order." -msgstr "Por favor escolhe cada palavra na ordem correta." - -#: src/js/services/bwcError.js:101 -msgid "Please upgrade Copay to perform this action" -msgstr "Por favor atualize Copay para executar esta ação" - -#: src/js/controllers/import.js:222 -msgid "Please, select your backup file" -msgstr "Por favor, selecione seu arquivo de backup" - -#: www/views/bitpayCard.html:81 -msgid "Pre-Auth Holds" -msgstr "Bloqueio Pré-Autorização" - -#: www/views/tab-settings.html:40 -msgid "Preferences" -msgstr "Preferências" - -#: src/js/services/onGoingProcess.js:38 -msgid "Preparing addresses..." -msgstr "A preparar os endereços..." - -#: src/js/controllers/export.js:198 -msgid "Preparing backup..." -msgstr "A preparar o backup..." - -#: src/js/routes.js:1188 -msgid "Press again to exit" -msgstr "Pressione novamente para sair" - -#: src/js/services/feeService.js:11 -msgid "Priority" -msgstr "Prioridade" - -#: www/views/includes/incomingDataMenu.html:80 -msgid "Private Key" -msgstr "" - -#: src/js/controllers/paperWallet.js:137 -msgid "Private key encrypted. Enter password" -msgstr "Chave privada criptografada. Digite a senha" - -#: src/js/services/bwcError.js:35 -msgid "Private key is encrypted, cannot sign" -msgstr "A Chave privada está criptografada, não é possível acessar" - -#: www/views/includes/walletActivity.html:51 -msgid "Proposal Accepted" -msgstr "Proposta aceite" - -#: src/js/controllers/modals/txpDetails.js:55 -#: src/js/controllers/tx-details.js:61 -#: www/views/confirm.html:127 -msgid "Proposal Created" -msgstr "Proposta criada" - -#: www/views/includes/walletActivity.html:27 -msgid "Proposal Deleted" -msgstr "Proposta eliminada" - -#: www/views/includes/walletActivity.html:35 -msgid "Proposal Rejected" -msgstr "Proposta rejeitada" - -#: www/views/walletDetails.html:178 -msgid "Proposals" -msgstr "Propostas" - -#: src/js/controllers/buyAmazon.js:281 -msgid "Purchase Amount is limited to {{limitPerDay}} {{currency}} per day" -msgstr "" - -#: www/views/onboarding/notifications.html:3 -msgid "Push Notifications" -msgstr "Notificações" - -#: www/views/preferencesNotifications.html:17 -msgid "Push notifications for {{appName}} are currently disabled. Enable them in the Settings app." -msgstr "Notificações de push para {{appName}} estão desativadas no momento. Habilite nas Configurações do aplicativo." - -#: www/views/export.html:17 -msgid "QR Code" -msgstr "Código QR" - -#: www/views/onboarding/disclaimer.html:13 -msgid "Quick review!" -msgstr "Avaliação rápida!" - -#: src/js/controllers/create.js:79 -#: src/js/controllers/join.js:65 -msgid "Random" -msgstr "Aleatório" - -#: www/views/feedback/rateApp.html:14 -msgid "Rate on the app store" -msgstr "Avalie-nos na App Store" - -#: www/views/addresses.html:52 -msgid "Read less" -msgstr "Ler menos" - -#: www/views/addresses.html:51 -msgid "Read more" -msgstr "Ler mais" - -#: www/views/tab-receive.html:3 -#: www/views/tabs.html:7 -msgid "Receive" -msgstr "Receber" - -#: www/views/customAmount.html:46 -msgid "Receive in" -msgstr "" - -#: www/views/includes/walletHistory.html:24 -#: www/views/tx-details.html:18 -msgid "Received" -msgstr "Recebido" - -#: src/js/controllers/tx-details.js:113 -msgid "Received Funds" -msgstr "Valores recebidos" - -#: www/views/includes/walletHistory.html:57 -#: www/views/tx-details.html:24 -msgid "Receiving" -msgstr "A receber" - -#: www/views/bitpayCard.html:60 -#: www/views/includes/walletHistory.html:3 -msgid "Recent" -msgstr "Recente" - -#: www/views/advancedSettings.html:20 -msgid "Recent Transaction Card" -msgstr "Transações recentes do cartão" - -#: www/views/activity.html:4 -#: www/views/tab-home.html:58 -msgid "Recent Transactions" -msgstr "Transações recentes" - -#: www/views/amount.html:18 -#: www/views/tab-send.html:9 -msgid "Recipient" -msgstr "Destinatário" - -#: www/views/modals/txp-details.html:62 -msgid "Recipients" -msgstr "Destinatários" - -#: www/views/import.html:12 -msgid "Recovery phrase" -msgstr "Frase de recuperação" - -#: www/views/walletDetails.html:117 -#: www/views/walletDetails.html:36 -msgid "Recreate" -msgstr "Recriado" - -#: src/js/services/onGoingProcess.js:26 -msgid "Recreating Wallet..." -msgstr "Recriando Carteira…" - -#: src/js/controllers/modals/txpDetails.js:57 -#: src/js/controllers/tx-details.js:63 -msgid "Rejected" -msgstr "Rejeitado" - -#: src/js/services/onGoingProcess.js:27 -msgid "Rejecting payment proposal" -msgstr "Proposta de pagamento recusada" - -#: www/views/preferencesAbout.html:9 -msgid "Release information" -msgstr "Informação de lançamento" - -#: www/views/addressbook.view.html:36 -msgid "Remove" -msgstr "Remover" - -#: src/js/controllers/preferencesBitpayServices.js:7 -msgid "Remove BitPay Account?" -msgstr "Remover conta do BitPay?" - -#: src/js/controllers/preferencesBitpayServices.js:19 -msgid "Remove BitPay Card?" -msgstr "Remover cartão do BitPay?" - -#: src/js/controllers/preferencesBitpayServices.js:8 -msgid "Removing your BitPay account will remove all associated BitPay account data from this device. Are you sure you would like to remove your BitPay Account ({{email}}) from this device?" -msgstr "Remover sua conta BitPay removerá todos os dados da conta associada ao BitPay neste dispositivo. Tem certeza que quer remover sua conta BitPay ({{email}}) deste dispositivo?" - -#: www/views/join.html:113 -#: www/views/join.html:121 -#: www/views/tab-create-personal.html:84 -#: www/views/tab-create-personal.html:92 -#: www/views/tab-create-shared.html:113 -#: www/views/tab-create-shared.html:121 -#: www/views/tab-export-file.html:17 -msgid "Repeat password" -msgstr "Repetir Senha" - -#: www/views/tab-export-file.html:16 -msgid "Repeat the password" -msgstr "Repita a nova senha" - -#: www/views/preferences.html:55 -msgid "Request Fingerprint" -msgstr "Solicitação de impressão digital" - -#: www/views/tab-receive.html:45 -msgid "Request Specific amount" -msgstr "Solicitar quantia exata" - -#: www/views/preferences.html:42 -msgid "Request Spending Password" -msgstr "Solicitar senha de pagamento" - -#: www/views/tab-create-shared.html:42 -msgid "Required number of signatures" -msgstr "Número necessário de assinaturas" - -#: www/views/onboarding/welcome.html:9 -msgid "Restore from backup" -msgstr "Restaurar do backup" - -#: src/js/services/onGoingProcess.js:29 -msgid "Retrieving inputs information" -msgstr "Recuperando informações de entradas" - -#: src/js/controllers/onboarding/tour.js:56 -msgid "Retry" -msgstr "Repetir" - -#: www/views/tab-scan.html:23 -msgid "Retry Camera" -msgstr "Tentar Camera novamente" - -#: www/views/addressbook.add.html:56 -#: www/views/includes/note.html:9 -#: www/views/preferencesAlias.html:21 -#: www/views/preferencesBwsUrl.html:25 -#: www/views/preferencesNotifications.html:46 -msgid "Save" -msgstr "Salvar" - -#: www/views/tab-scan.html:3 -#: www/views/tabs.html:11 -msgid "Scan" -msgstr "Digitalizar" - -#: www/views/tab-scan.html:15 -msgid "Scan QR Codes" -msgstr "Digitalizar códigos QR" - -#: www/views/addresses.html:31 -msgid "Scan addresses for funds" -msgstr "Pesquisando endereços por fundos" - -#: www/views/modals/fingerprintCheck.html:11 -msgid "Scan again" -msgstr "Escanear novamente" - -#: src/js/services/fingerprintService.js:56 -msgid "Scan your fingerprint please" -msgstr "Escaneie sua impressão digital, por favor" - -#: src/js/services/onGoingProcess.js:30 -msgid "Scanning Wallet funds..." -msgstr "Pesquisando fundos de carteira…" - -#: www/views/includes/screenshotWarningModal.html:7 -msgid "Screenshots are not secure" -msgstr "Capturas de Tela não são seguras" - -#: www/views/modals/search.html:6 -msgid "Search Transactions" -msgstr "Procurar transações" - -#: www/views/tab-send.html:13 -msgid "Search or enter bitcoin address" -msgstr "Procure ou digite o endereço bitcoin" - -#: www/views/modals/search.html:16 -msgid "Search transactions" -msgstr "Procurar transações" - -#: www/views/preferencesAltCurrency.html:14 -msgid "Search your currency" -msgstr "Procure a sua moeda" - -#: www/views/preferences.html:30 -msgid "Security" -msgstr "Segurança" - -#: www/views/tab-import-file.html:7 -msgid "Select a backup file" -msgstr "Selecione um arquivo de backup" - -#: src/js/controllers/tab-receive.js:133 -msgid "Select a wallet" -msgstr "Selecione uma carteira" - -#: www/views/modals/paypro.html:38 -msgid "Self-signed Certificate" -msgstr "Certificado Auto-Assinado" - -#: src/js/services/onGoingProcess.js:41 -msgid "Selling Bitcoin..." -msgstr "Vendendo Bitcoin..." - -#: www/views/feedback/send.html:13 -#: www/views/feedback/send.html:43 -#: www/views/tab-send.html:3 -#: www/views/tabs.html:15 -msgid "Send" -msgstr "Enviar" - -#: www/views/feedback/send.html:3 -#: www/views/tab-settings.html:29 -msgid "Send Feedback" -msgstr "Enviar Sugestão" - -#: www/views/addressbook.view.html:31 -msgid "Send Money" -msgstr "Enviar Dinheiro" - -#: www/views/allAddresses.html:19 -msgid "Send addresses by email" -msgstr "Enviar endereços por e-mail" - -#: www/views/preferencesLogs.html:13 -#: www/views/tab-export-file.html:82 -msgid "Send by email" -msgstr "Enviar por E-mail" - -#: src/js/controllers/confirm.js:151 -msgid "Send from" -msgstr "Enviar De" - -#: www/views/includes/itemSelector.html:8 -msgid "Send max amount" -msgstr "Quantidade Máxima de envio" - -#: www/views/includes/incomingDataMenu.html:46 -msgid "Send payment to this address" -msgstr "" - -#: www/views/feedback/rateApp.html:17 -msgid "Send us feedback instead" -msgstr "Em vez disso, Envie-nos comentários" - -#: www/views/confirm.html:15 -#: www/views/includes/txp.html:12 -#: www/views/modals/txp-details.html:19 -#: www/views/tx-details.html:23 -msgid "Sending" -msgstr "Enviando" - -#: src/js/services/onGoingProcess.js:39 -msgid "Sending 2FA code..." -msgstr "Enviando código 2FA..." - -#: src/js/services/onGoingProcess.js:36 -msgid "Sending feedback..." -msgstr "Enviando sugestão..." - -#: www/views/confirm.html:16 -msgid "Sending maximum amount" -msgstr "Quantidade máxima de envio" - -#: src/js/services/onGoingProcess.js:31 -msgid "Sending transaction" -msgstr "Enviando transação" - -#: src/js/controllers/confirm.js:490 -msgid "Sending {{amountStr}} from your {{name}} wallet" -msgstr "Enviando {{amountStr}} de sua carteira {{name}}" - -#: www/views/includes/walletHistory.html:42 -#: www/views/modals/tx-status.html:9 -#: www/views/topup.html:100 -#: www/views/tx-details.html:17 -msgid "Sent" -msgstr "Enviado" - -#: src/js/controllers/tx-details.js:112 -msgid "Sent Funds" -msgstr "Enviar Fundos" - -#: src/js/services/bwcError.js:38 -msgid "Server response could not be verified" -msgstr "Resposta do servidor não pôde ser verificada" - -#: src/js/controllers/buyAmazon.js:96 -msgid "Service not available" -msgstr "" - -#: www/views/includes/homeIntegrations.html:3 -msgid "Services" -msgstr "Serviços" - -#: www/views/preferencesLogs.html:3 -msgid "Session Log" -msgstr "Log da sessão" - -#: www/views/preferencesAbout.html:35 -msgid "Session log" -msgstr "Log da sessão" - -#: www/views/tab-export-file.html:10 -msgid "Set up a password" -msgstr "Configure uma senha" - -#: src/js/controllers/preferencesFee.js:84 -msgid "Set your own fee in satoshis/byte" -msgstr "" - -#: www/views/tab-settings.html:3 -#: www/views/tabs.html:19 -msgid "Settings" -msgstr "Configurações" - -#: www/views/feedback/complete.html:17 -#: www/views/feedback/complete.html:26 -msgid "Share the love by inviting your friends." -msgstr "Compartilhe o amor convidando seus amigos." - -#: www/views/copayers.html:20 -msgid "Share this invitation with your copayers" -msgstr "Compartilhe este convite com seus copayers" - -#: src/js/controllers/feedback/complete.js:5 -#: www/views/tab-settings.html:36 -msgid "Share {{appName}}" -msgstr "Compartilhar {{appName}}" - -#: www/views/tab-import-hardware.html:24 -msgid "Shared Wallet" -msgstr "Compartilhar Carteira" - -#: www/views/preferencesExternal.html:34 -msgid "Show Recovery Phrase" -msgstr "Mostrar Frase de Recuperação" - -#: www/views/tab-receive.html:34 -msgid "Show address" -msgstr "Mostrar endereço" - -#: www/views/join.html:45 -#: www/views/tab-create-personal.html:25 -#: www/views/tab-create-shared.html:54 -#: www/views/tab-export-file.html:24 -#: www/views/tab-import-file.html:27 -#: www/views/tab-import-hardware.html:30 -#: www/views/tab-import-phrase.html:32 -msgid "Show advanced options" -msgstr "Mostrar opções avançadas" - -#: www/views/tab-send.html:37 -msgid "Show bitcoin address" -msgstr "Mostrar endereço bitcoin" - -#: www/views/tab-send.html:59 -msgid "Show more" -msgstr "Mostrar mais" - -#: src/js/services/bwcError.js:104 -msgid "Signatures rejected by server" -msgstr "Assinaturas rejeitadas pelo servidor" - -#: src/js/services/onGoingProcess.js:32 -msgid "Signing transaction" -msgstr "Assinando Transação" - -#: 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 "Uma vez que só você controla o seu dinheiro, você precisará salvar sua frase de backup no caso deste app ser excluído." - -#: www/views/tab-create-personal.html:120 -#: www/views/tab-create-shared.html:149 -msgid "Single Address Wallet" -msgstr "Único endereço carteira" - -#: www/views/onboarding/collectEmail.html:40 -#: www/views/onboarding/tour.html:11 -msgid "Skip" -msgstr "Pular" - -#: src/js/controllers/modals/txpDetails.js:34 -msgid "Slide" -msgstr "Deslize" - -#: www/views/buyAmazon.html:96 -msgid "Slide to buy" -msgstr "" - -#: src/js/controllers/create.js:83 -#: src/js/controllers/join.js:68 -msgid "Specify Recovery Phrase..." -msgstr "Especifique a frase de recuperação..." - -#: src/js/services/bwcError.js:92 -msgid "Spend proposal is not accepted" -msgstr "A proposta de gasto não é aceita" - -#: src/js/services/bwcError.js:95 -msgid "Spend proposal not found" -msgstr "Proposta de pagamento não encontrada" - -#: src/js/services/bwcError.js:137 -msgid "Spending Password needed" -msgstr "Digitar a senha é necessária" - -#: www/views/walletDetails.html:162 -msgid "Spending this balance will need significant Bitcoin network fees" -msgstr "Gastar este balanço necessitará uma taxa de rede Bitcoin significativa" - -#: www/views/tab-send.html:28 -msgid "Start sending bitcoin" -msgstr "Comece a enviar bitcoin" - -#: www/views/lockSetup.html:3 -msgid "Startup Lock" -msgstr "Bloqueio de Inicialização" - -#: www/views/topup.html:101 -msgid "Success" -msgstr "Sucesso" - -#: src/js/services/feeService.js:14 -msgid "Super Economy" -msgstr "Super Econômico" - -#: www/views/paperWallet.html:7 -msgid "Sweep" -msgstr "Limpar" - -#: www/views/includes/incomingDataMenu.html:89 -#: www/views/paperWallet.html:3 -msgid "Sweep paper wallet" -msgstr "Varrer a carteira de papel" - -#: src/js/services/onGoingProcess.js:33 -msgid "Sweeping Wallet..." -msgstr "Carteira de varredura..." - -#: www/views/preferencesDeleteWallet.html:16 -msgid "THIS ACTION CANNOT BE REVERSED" -msgstr "ESTA AÇÃO NÃO PODE SER REVERTIDA" - -#: www/views/onboarding/welcome.html:5 -msgid "Take control of your money,
get started with bitcoin." -msgstr "Assuma o controle de seu dinheiro,
começar com bitcoin." - -#: www/views/walletDetails.html:140 -#: www/views/walletDetails.html:60 -msgid "Tap and hold to show" -msgstr "Toque e mantenha para mostrar" - -#: www/views/walletDetails.html:112 -#: www/views/walletDetails.html:31 -msgid "Tap to retry" -msgstr "Bata para repetir" - -#: www/views/termsOfUse.html:3 -msgid "Terms Of Use" -msgstr "Termos de uso" - -#: www/views/modals/terms.html:3 -#: www/views/onboarding/disclaimer.html:29 -#: www/views/onboarding/disclaimer.html:43 -#: www/views/preferencesAbout.html:30 -msgid "Terms of Use" -msgstr "Termos de uso" - -#: www/views/tab-create-personal.html:116 -#: www/views/tab-import-phrase.html:65 -msgid "Testnet" -msgstr "Testnet" - -#: www/views/includes/incomingDataMenu.html:61 -msgid "Text" -msgstr "" - -#: src/js/controllers/feedback/send.js:27 -#: src/js/controllers/feedback/send.js:76 -#: www/views/feedback/complete.html:20 -#: www/views/feedback/rateApp.html:4 -msgid "Thank you!" -msgstr "Obrigado!" - -#: src/js/controllers/feedback/send.js:72 -msgid "Thanks!" -msgstr "Obrigado!" - -#: src/js/controllers/feedback/send.js:73 -msgid "That's exciting to hear. We'd love to earn that fifth star from you – how could we improve your experience?" -msgstr "Isso é emocionante de ouvir. Gostaríamos de ganhar essa quinta estrela de você - como poderíamos melhorar sua experiência?" - -#: src/js/services/ledger.js:152 -msgid "The Ledger Chrome application is not installed" -msgstr "O aplicativo Ledger Chrome não está instalado" - -#: www/views/modals/wallet-balance.html:55 -msgid "The amount of bitcoin immediately spendable from this wallet." -msgstr "A quantidade de bitcoin imediatamente spendable desta carteira." - -#: 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 "A quantidade de bitcoin armazenada nesta carteira que é alocada como entradas para suas propostas de transação pendentes. O valor é determinado usando saídas de transação não utilizadas associadas a essa carteira e podem ser maiores do que os valores reais associados às suas propostas de transações pendentes." - -#: www/views/modals/wallet-balance.html:74 -msgid "The amount of bitcoin stored in this wallet with less than 1 blockchain confirmation." -msgstr "A quantidade de bitcoin armazenada nesta carteira com menos de 1 confirmação blockchain." - -#: www/views/tab-import-phrase.html:5 -msgid "The derivation path" -msgstr "O caminho de derivação" - -#: www/views/onboarding/tour.html:37 -msgid "The exchange rate changes with the market." -msgstr "A taxa de câmbio muda com o mercado." - -#: www/views/preferencesFee.html:12 -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 "Quanto maior a taxa, maior o incentivo um mineiro tem que incluir essa transação em um bloco. As taxas atuais são determinadas com base na carga da rede e na política selecionada." - -#: www/views/addresses.html:51 -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 "O número máximo de endereços não utilizados consecutivos (20) foi atingido. Quando um de seus endereços não utilizados recebe um pagamento, um novo endereço será gerado e mostrado na sua guia Receber." - -#: src/js/controllers/onboarding/terms.js:21 -msgid "The official English Terms of Service are available on the BitPay website." -msgstr "Os Termos de Serviço oficiais estão disponíveis no site BitPay." - -#: www/views/tab-import-phrase.html:4 -msgid "The password of the recovery phrase (if set)" -msgstr "A senha da frase de recuperação (se configurada)" - -#: src/js/services/walletService.js:1140 -msgid "The payment was created but could not be completed. Please try again from home screen" -msgstr "O pagamento foi criado mas não pode ser completado. Por favor, tente novamente a partir da tela inicial." - -#: www/views/modals/txp-details.html:26 -msgid "The payment was removed by creator" -msgstr "O pagamento foi removido pelo criador" - -#: www/views/join.html:88 -#: www/views/tab-create-personal.html:61 -#: www/views/tab-create-shared.html:90 -#: www/views/tab-import-phrase.html:40 -msgid "The recovery phrase could require a password to be imported" -msgstr "A frase de recuperação pode exigir que uma senha seja importada" - -#: src/js/services/bwcError.js:56 -msgid "The request could not be understood by the server" -msgstr "O pedido não pôde ser entendido pelo servidor" - -#: www/views/addresses.html:52 -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 "O processo de restauração irá parar quando 20 endereços são gerados em uma linha que não contêm fundos. Para gerar segurança mais endereços, fazer um pagamento a um dos endereços não utilizados que já foi gerado." - -#: src/js/services/bwcError.js:98 -msgid "The spend proposal is not pending" -msgstr "A proposta de gasto não está pendente" - -#: www/views/modals/wallet-balance.html:36 -msgid "The total amount of bitcoin stored in this wallet." -msgstr "A quantidade total de bitcoin armazenado nesta carteira." - -#: www/views/preferencesHistory.html:27 -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 "O histórico de transações e todas as novas transações recebidas são armazenados em cache no aplicativo. Este recurso limpa isso e sincroniza novamente a partir do servidor" - -#: www/views/tab-import-phrase.html:6 -msgid "The wallet service URL" -msgstr "O URL do serviço carteira" - -#: src/js/controllers/tab-home.js:38 -msgid "There is a new version of {{appName}} available" -msgstr "Existe uma nova versão do {{appName}} disponível" - -#: src/js/controllers/import.js:213 -#: src/js/controllers/import.js:237 -#: src/js/controllers/import.js:317 -msgid "There is an error in the form" -msgstr "Existe um erro no formulário" - -#: src/js/controllers/feedback/send.js:61 -#: src/js/controllers/feedback/send.js:65 -msgid "There's obviously something we're doing wrong." -msgstr "Obviamente há algo que estamos fazendo de errado." - -#: src/js/controllers/feedback/rateCard.js:38 -msgid "This app is fantastic!" -msgstr "Esta aplicação é fantástica!" - -#: www/views/onboarding/tour.html:47 -msgid "This app stores your bitcoin with cutting-edge security." -msgstr "Este aplicativo armazena seu bitcoin com segurança de ponta." - -#: src/js/controllers/confirm.js:468 -msgid "This bitcoin payment request has expired." -msgstr "Este bitcoin pagamento pedido expirou." - -#: www/views/join.html:130 -#: www/views/tab-create-personal.html:101 -#: www/views/tab-create-shared.html:130 -msgid "This password cannot be recovered. If the password is lost, there is no way you could recover your funds." -msgstr "Esta senha não pode ser recuperada. Se a senha for perdida, não há nenhuma maneira que você poderia recuperar seus fundos." - -#: www/views/backup.html:24 -msgid "This recovery phrase was created with a password. To recover this wallet both the recovery phrase and password are needed." -msgstr "Esta frase de recuperação foi criada com uma senha. Para recuperar esta carteira, tanto a frase de recuperação como a senha são necessárias." - -#: www/views/tx-details.html:93 -msgid "This transaction amount is too small compared to current Bitcoin network fees. Spending these funds will need a Bitcoin network fee cost comparable to the funds itself." -msgstr "Este valor de transação é muito pequeno em comparação com as taxas de rede Bitcoin atuais. Gastar estes fundos terão uma taxa de rede Bitcoin maior do que o fundo em si." - -#: www/views/tx-details.html:89 -msgid "This transaction could take a long time to confirm or could be dropped due to the low fees set by the sender" -msgstr "Esta operação poderá demorar muito tempo para ser confirmada ou poderá ser descartada devido às baixas taxas definidas pelo remetente" - -#: www/views/walletDetails.html:116 -#: 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 "Esta carteira não está registrada no dado serviço Wallet Service Bitcore (BWS) informado. Você pode recriá-la a partir da informação local." - -#: www/views/modals/txp-details.html:138 -#: www/views/tx-details.html:121 -msgid "Timeline" -msgstr "Cronograma" - -#: www/views/confirm.html:31 -#: www/views/includes/output.html:2 -#: www/views/modals/txp-details.html:111 -#: www/views/modals/txp-details.html:53 -#: www/views/tx-details.html:41 -#: www/views/tx-details.html:53 -msgid "To" -msgstr "Para" - -#: www/views/tab-send.html:32 -msgid "To get started, buy bitcoin or share your address. You can receive bitcoin from any wallet or service." -msgstr "Para começar, compre bitcoins ou compartilhe seu endereço. Você pode receber bitcoins de qualquer carteira ou serviço." - -#: www/views/tab-send.html:33 -msgid "To get started, you'll need to create a bitcoin wallet and get some bitcoin." -msgstr "Para começar, você precisa criar uma carteira de bitcoins e obter alguns bitcoins." - -#: src/js/services/bitpayAccountService.js:73 -msgid "To {{reason}} you must first add your BitPay account - {{email}}" -msgstr "Para {{reason}} você deve primeiro adicionar sua conta BitPay - {{email}}" - -#: src/js/services/onGoingProcess.js:48 -msgid "Top up in progress..." -msgstr "Recarga em andamento..." - -#: src/js/controllers/topup.js:205 -msgid "Top up {{amountStr}} to debit card ({{cardLastNumber}})" -msgstr "Recarga de {{amountStr}} para cartão de débito ({{cardLastNumber}})" - -#: www/views/buyAmazon.html:61 -#: www/views/modals/wallet-balance.html:23 -#: www/views/topup.html:70 -msgid "Total" -msgstr "Total" - -#: www/views/walletDetails.html:185 -msgid "Total Locked Balance" -msgstr "Saldo Total Bloqueado" - -#: www/views/tab-create-shared.html:33 -msgid "Total number of copayers" -msgstr "Número total de copayers" - -#: www/views/addresses.html:81 -msgid "Total wallet inputs" -msgstr "Total de entradas da carteira" - -#: src/js/services/fingerprintService.js:63 -#: src/js/services/fingerprintService.js:68 -msgid "Touch ID Failed" -msgstr "Falha no Touch ID" - -#: src/js/controllers/tx-details.js:11 -msgid "Transaction" -msgstr "Transação" - -#: www/views/confirm.html:128 -msgid "Transaction Created" -msgstr "" - -#: www/views/preferencesAdvanced.html:29 -#: www/views/preferencesHistory.html:3 -msgid "Transaction History" -msgstr "Histórico de Transações" - -#: src/js/services/bwcError.js:83 -msgid "Transaction already broadcasted" -msgstr "Transação foi publicada" - -#: src/js/controllers/buyAmazon.js:306 -#: src/js/controllers/topup.js:279 -msgid "Transaction has not been created" -msgstr "Transação não foi criada" - -#: www/views/topup.html:104 -msgid "Transaction initiated" -msgstr "Transação iniciada" - -#: src/js/controllers/tx-details.js:102 -msgid "Transaction not available at this time" -msgstr "Transação não está disponível neste momento" - -#: src/js/controllers/activity.js:45 -#: src/js/controllers/tab-home.js:174 -msgid "Transaction not found" -msgstr "Transação não encontrada" - -#: www/views/modals/chooseFeeLevel.html:54 -msgid "Transactions without fee are not supported." -msgstr "" - -#: src/js/controllers/paperWallet.js:110 -msgid "Transfer to" -msgstr "Transferir para" - -#: www/views/tab-send.html:67 -msgid "Transfer to Wallet" -msgstr "Transferir para carteira" - -#: www/views/modals/pin.html:13 -msgid "Try again in {{expires}}" -msgstr "Tente novamente em {{expires}}" - -#: www/views/bitpayCardIntro.html:18 -msgid "Turn bitcoin into dollars, swipe anywhere Visa® is accepted." -msgstr "Transforme bitcoin em dólares, deslize em qualquer lugar que Visa ® seja aceito." - -#: www/views/tab-import-phrase.html:17 -msgid "Type the Recovery Phrase (usually 12 words)" -msgstr "Digite a frase de recuperação (normalmente 12 palavras)" - -#: src/js/controllers/backup.js:75 -msgid "Uh oh..." -msgstr "Uh oh..." - -#: www/views/tx-details.html:100 -msgid "Unconfirmed" -msgstr "Não confirmado" - -#: www/views/preferencesUnit.html:4 -msgid "Unit" -msgstr "Unidade" - -#: www/views/walletDetails.html:179 -msgid "Unsent transactions" -msgstr "Transações não enviadas" - -#: www/views/addresses.html:39 -msgid "Unused Addresses" -msgstr "Endereços não utilizados" - -#: www/views/addresses.html:50 -msgid "Unused Addresses Limit" -msgstr "Limite de endereços não utilizados" - -#: src/js/controllers/tab-home.js:146 -msgid "Update Available" -msgstr "Atualização Disponível" - -#: www/views/proposals.html:14 -msgid "Updating pending proposals. Please stand by" -msgstr "Atualizando propostas pendentes. Por favor, aguarde" - -#: www/views/walletDetails.html:211 -msgid "Updating transaction history. Please stand by." -msgstr "Atualizando o histórico de transações. Por favor, aguarde." - -#: www/views/activity.html:14 -msgid "Updating... Please stand by" -msgstr "Atualizando... Por favor, aguarde" - -#: src/js/services/feeService.js:10 -msgid "Urgent" -msgstr "Urgente" - -#: www/views/advancedSettings.html:11 -msgid "Use Unconfirmed Funds" -msgstr "Utilizar fundos não confirmados" - -#: src/js/services/onGoingProcess.js:34 -msgid "Validating recovery phrase..." -msgstr "Validando a frase de recuperação..." - -#: www/views/modals/fingerprintCheck.html:4 -msgid "Verify your identity" -msgstr "Verifique a sua identidade" - -#: www/views/preferencesAbout.html:14 -#: www/views/preferencesExternal.html:25 -msgid "Version" -msgstr "Versão" - -#: www/views/tab-export-file.html:69 -msgid "View" -msgstr "Ver" - -#: www/views/addresses.html:34 -msgid "View All Addresses" -msgstr "Ver todos os endereços" - -#: src/js/controllers/onboarding/terms.js:20 -msgid "View Terms of Service" -msgstr "Ver os Termos de Serviço" - -#: src/js/controllers/bitpayCard.js:122 -#: src/js/controllers/tx-details.js:174 -msgid "View Transaction on Insight" -msgstr "Exibir Transação no Insight" - -#: src/js/controllers/tab-home.js:148 -msgid "View Update" -msgstr "Ver atualizações" - -#: www/views/tx-details.html:147 -msgid "View on blockchain" -msgstr "Ver no blockchain" - -#: www/views/walletDetails.html:171 -msgid "WARNING: Key derivation is not working on this device/wallet. Actions cannot be performed on this wallet." -msgstr "Aviso: Derivação de chave não está funcionando neste dispositivo/carteira. Ações não podem ser executadas nesta carteira." - -#: www/views/tab-export-file.html:45 -msgid "WARNING: Not including the private key allows to check the wallet balance, transaction history, and create spend proposals from the export. However, does not allow to approve (sign) proposals, so funds will not be accessible from the export." -msgstr "ATENÇÃO: Não incluir a chave privada permite verificar o saldo da carteira, o histórico de transações e criar propostas de gastos a partir da exportação. No entanto, não permite aprovar (assinar) propostas, assim fundos não serão acessíveis a partir da exportação." - -#: www/views/tab-export-file.html:36 -msgid "WARNING: The private key of this wallet is not available. The export allows to check the wallet balance, transaction history, and create spend proposals from the export. However, does not allow to approve (sign) proposals, so funds will not be accessible from the export." -msgstr "ATENÇÃO: A chave privada desta carteira não está disponível. A exportação permite verificar o saldo da carteira, o histórico de transações e criar propostas de gastos a partir da exportação. No entanto, não permite aprovar (assinar) propostas, assim fundos não serão acessíveis a partir da exportação." - -#: www/views/modals/paypro.html:42 -msgid "WARNING: UNTRUSTED CERTIFICATE" -msgstr "AVISO: CERTIFICADO NÃO CONFIÁVEL" - -#: src/js/services/onGoingProcess.js:15 -msgid "Waiting for Ledger..." -msgstr "Esperando por Ledger..." - -#: src/js/services/onGoingProcess.js:16 -msgid "Waiting for Trezor..." -msgstr "Esperando por Trezor..." - -#: www/views/copayers.html:48 -msgid "Waiting for copayers" -msgstr "Aguardando copayers" - -#: www/views/copayers.html:53 -msgid "Waiting..." -msgstr "Aguardando…" - -#: www/views/addresses.html:3 -#: www/views/preferencesAdvanced.html:17 -msgid "Wallet Addresses" -msgstr "Endereços da carteira" - -#: www/views/preferencesColor.html:4 -msgid "Wallet Color" -msgstr "Cor da carteira" - -#: www/views/preferencesInformation.html:23 -msgid "Wallet Configuration (m-n)" -msgstr "Configuração da carteira (m-n)" - -#: www/views/onboarding/collectEmail.html:5 -msgid "Wallet Created" -msgstr "Carteira criada" - -#: www/views/preferencesInformation.html:17 -msgid "Wallet Id" -msgstr "Id da carteira" - -#: www/views/preferencesAdvanced.html:13 -#: www/views/preferencesInformation.html:3 -msgid "Wallet Information" -msgstr "Informações da carteira" - -#: www/views/addresses.html:76 -msgid "Wallet Inputs" -msgstr "Entradas da carteira" - -#: www/views/join.html:26 -msgid "Wallet Invitation" -msgstr "Convite para Carteira" - -#: www/views/join.html:57 -#: www/views/tab-create-personal.html:36 -#: www/views/tab-create-shared.html:65 -msgid "Wallet Key" -msgstr "Chave da carteira" - -#: www/views/preferencesAlias.html:4 -msgid "Wallet Name" -msgstr "Nome da carteira" - -#: www/views/preferencesInformation.html:11 -msgid "Wallet Name (at creation)" -msgstr "Nome da carteira (na criação)" - -#: www/views/preferencesInformation.html:29 -msgid "Wallet Network" -msgstr "Network da carteira" - -#: www/views/join.html:74 -#: www/views/tab-create-personal.html:48 -#: www/views/tab-create-shared.html:77 -msgid "Wallet Recovery Phrase" -msgstr "Frase de recuperação da carteira" - -#: src/js/services/bwcError.js:26 -msgid "Wallet Recovery Phrase is invalid" -msgstr "Frase de recuperação da carteira é inválida" - -#: www/views/preferencesAdvanced.html:25 -#: www/views/tab-import-phrase.html:70 -msgid "Wallet Service URL" -msgstr "URL do serviço de carteira" - -#: www/views/preferences.html:4 -msgid "Wallet Settings" -msgstr "Configurações da carteira" - -#: www/views/tab-import-hardware.html:11 -#: www/views/tab-import-phrase.html:58 -msgid "Wallet Type" -msgstr "Tipo da carteira" - -#: src/js/services/bwcError.js:59 -msgid "Wallet already exists" -msgstr "A carteira já existe" - -#: src/js/services/profileService.js:498 -msgid "Wallet already in Copay" -msgstr "Carteira já em Copay" - -#: www/views/includes/walletActivity.html:6 -msgid "Wallet created" -msgstr "Carteira criada" - -#: www/views/copayers.html:58 -msgid "Wallet incomplete and broken" -msgstr "Carteira incompleta e quebrada" - -#: src/js/services/bwcError.js:65 -msgid "Wallet is full" -msgstr "Carteira está cheia" - -#: src/js/services/bwcError.js:125 -msgid "Wallet is locked" -msgstr "Carteira está bloqueada" - -#: src/js/services/bwcError.js:128 -msgid "Wallet is not complete" -msgstr "Carteira não está completa" - -#: www/views/tab-create-personal.html:12 -#: www/views/tab-create-shared.html:12 -msgid "Wallet name" -msgstr "Nome da carteira" - -#: src/js/services/bwcError.js:131 -msgid "Wallet needs backup" -msgstr "Carteira precisa de backup" - -#: www/views/tab-receive.html:59 -#: www/views/walletDetails.html:157 -msgid "Wallet not backed up" -msgstr "Carteira sem backup" - -#: src/js/services/bwcError.js:68 -msgid "Wallet not found" -msgstr "Carteira não encontrada" - -#: src/js/controllers/tab-home.js:220 -msgid "Wallet not registered" -msgstr "Carteira não registrada" - -#: src/js/services/bwcError.js:29 -msgid "Wallet not registered at the wallet service. Recreate it from \"Create Wallet\" using \"Advanced Options\" to set your recovery phrase" -msgstr "Carteira não registrada no serviço de carteira. Recriá-la em \"Criar carteira\" usando \"Opções avançadas\" para definir a sua frase de recuperação" - -#: www/views/backup.html:11 -msgid "Wallet recovery phrase not available." -msgstr "Frase de recuperação da carteira não disponível." - -#: src/js/services/bwcError.js:50 -msgid "Wallet service not found" -msgstr "Serviço de carteira não encontrado" - -#: www/views/tab-home.html:69 -msgid "Wallets" -msgstr "Carteiras" - -#: www/views/tab-settings.html:102 -msgid "Wallets & Integrations" -msgstr "Carteiras & Integrações" - -#: src/js/controllers/addressbookView.js:23 -#: src/js/controllers/modals/txpDetails.js:147 -#: src/js/controllers/modals/txpDetails.js:164 -#: src/js/controllers/preferencesDelete.js:25 -#: src/js/controllers/preferencesExternal.js:14 -#: www/views/preferencesDeleteWallet.html:11 -msgid "Warning!" -msgstr "Atenção!" - -#: www/views/modals/txp-details.html:47 -msgid "Warning: this transaction has unconfirmed inputs" -msgstr "Aviso: esta transação tem entradas não confirmadas" - -#: src/js/controllers/onboarding/backupRequest.js:17 -msgid "Watch out!" -msgstr "Cuidado!" - -#: src/js/controllers/feedback/send.js:69 -msgid "We'd love to do better." -msgstr "Nós adoraríamos fazer melhor." - -#: www/views/backup.html:28 -msgid "We'll confirm on the next screen." -msgstr "Confirmaremos na próxima tela." - -#: src/js/controllers/feedback/send.js:77 -msgid "We're always looking for ways to improve {{appName}}." -msgstr "Estamos sempre procurando maneiras de melhorar o {{appName}}." - -#: src/js/controllers/feedback/send.js:83 -msgid "We're always looking for ways to improve {{appName}}. How could we improve your experience?" -msgstr "Estamos sempre procurando maneiras de melhorar o {{appName}}. Como melhorar sua experiência?" - -#: www/views/includes/incomingDataMenu.html:6 -msgid "Website" -msgstr "" - -#: www/views/preferencesLanguage.html:16 -msgid "We’re always looking for translation contributions! You can make corrections or help to make this app available in your native language by joining our community on Crowdin." -msgstr "Estamos sempre procurando por contribuições de tradução! Você pode fazer correções ou ajudar a tornar este app disponível em seu idioma nativo ao aderir à nossa comunidade na Crowdin." - -#: www/views/preferencesAlias.html:11 -msgid "What do you call this wallet?" -msgstr "Como você chama essa carteira?" - -#: www/views/preferencesAlias.html:12 -msgid "When this wallet was created, it was called “{{walletName}}”. You can change the name displayed on this device below." -msgstr "Quando esta carteira foi criada, foi chamada de “{{walletName}}”. Abaixo você poderá alterar o nome exibido neste dispositivo." - -#: www/views/onboarding/collectEmail.html:10 -msgid "Where would you like to receive email notifications about payments?" -msgstr "Onde você gostaria de receber os e-mails de notificações sobre os pagamentos?" - -#: www/views/addresses.html:19 -msgid "Why?" -msgstr "Por quê?" - -#: www/views/feedback/rateApp.html:10 -msgid "Would you be willing to rate {{appName}} in the app store?" -msgstr "Você estaria disposto a dar uma nota ao {{appName}} na app store?" - -#: www/views/onboarding/notifications.html:4 -msgid "Would you like to receive push notifications about payments?" -msgstr "Gostaria de receber notificações push sobre pagamentos?" - -#: src/js/controllers/import.js:270 -msgid "Wrong number of recovery words:" -msgstr "Número errado de palavras de recuperação:" - -#: src/js/services/bwcError.js:140 -msgid "Wrong spending password" -msgstr "Senha de gastos errada" - -#: www/views/modals/confirmation.html:7 -msgid "Yes" -msgstr "Sim" - -#: src/js/controllers/onboarding/backupRequest.js:25 -msgid "Yes, skip" -msgstr "Sim, pule" - -#: src/js/controllers/onboarding/backupRequest.js:24 -msgid "You can create a backup later from your wallet settings." -msgstr "Você poderá criar um backup de suas configurações de carteira mais tarde." - -#: src/js/controllers/preferencesLanguage.js:12 -msgid "You can make contributions by signing up on our Crowdin community translation website. We’re looking forward to hearing from you!" -msgstr "Você pode fazer contribuições inscrevendo-se no nosso site da comunidade de tradução Crowdin. Estamos ansiosos para ouvir de você!" - -#: www/views/tab-scan.html:16 -msgid "You can scan bitcoin addresses, payment requests, paper wallets, and more." -msgstr "Você pode escanear endereços bitcoins, pedidos de pagamento carteiras de papel e muito mais." - -#: 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 "Você pode ver os mais recentes desenvolvimentos e contribuir para este aplicativo de código aberto, visitando nosso projeto no GitHub." - -#: www/views/onboarding/tour.html:19 -msgid "You can spend bitcoin at millions of websites and stores worldwide." -msgstr "Você pode gastar bitcoins em milhões de sites e lojas em todo o mundo." - -#: www/views/backup.html:12 -msgid "You can still export it from Advanced > Export." -msgstr "Você ainda pode exportá-la em Avançado > Exportar." - -#: www/views/onboarding/tour.html:32 -msgid "You can trade it for other currencies like US Dollars, Euros, or Pounds." -msgstr "Você pode trocá-lo por outras moedas como dólares americanos, Euros ou libras." - -#: www/views/onboarding/tour.html:46 -msgid "You control your bitcoin." -msgstr "Você controla o seu bitcoin." - -#: www/views/modals/chooseFeeLevel.html:63 -msgid "You should not set a fee higher than {{maxFeeRecommended}} satoshis/byte." -msgstr "" - -#: www/views/modals/bitpay-card-confirmation.html:5 -msgid "You will need to log back for fill in your BitPay Card." -msgstr "Você precisará entrar de novo para completar seu BitPay Card." - -#: www/views/preferencesNotifications.html:34 -msgid "You'll receive email notifications about payments sent and received from your wallets." -msgstr "Você receberá notificações por e-mail sobre pagamentos enviados e recebidos de suas carteiras." - -#: www/views/bitpayCard.html:50 -msgid "Your BitPay Card is ready. Add funds to your card to start using it at stores and ATMs worldwide." -msgstr "Seu BitPay Card está pronto. Adicione fundos ao seu cartão para começar a usá-lo em lojas e caixas eletrônicos em todo o mundo." - -#: www/views/includes/confirmBackupPopup.html:6 -msgid "Your bitcoin wallet is backed up!" -msgstr "O backup de sua carteira de bitcoins está feito!" - -#: www/views/tab-home.html:36 -msgid "Your bitcoin wallet is ready!" -msgstr "Sua carteira de bitcoins está pronta!" - -#: www/views/modals/chooseFeeLevel.html:60 -msgid "Your fee is lower than recommended." -msgstr "" - -#: www/views/feedback/send.html:42 -msgid "Your ideas, feedback, or comments" -msgstr "Suas ideias, comentários ou observações" - -#: www/views/tab-create-shared.html:22 -msgid "Your name" -msgstr "Seu nome" - -#: www/views/join.html:16 -msgid "Your nickname" -msgstr "Seu apelido" - -#: www/views/tab-export-file.html:11 -#: www/views/tab-import-file.html:20 -msgid "Your password" -msgstr "Sua senha" - -#: www/views/buyAmazon.html:102 -msgid "Your purchase could not be completed" -msgstr "" - -#: www/views/buyAmazon.html:105 -msgid "Your purchase was added to the list of pending" -msgstr "" - -#: www/views/onboarding/backupRequest.html:10 -msgid "Your wallet is never saved to cloud storage or standard device backups." -msgstr "Sua carteira nunca foi salva num armazenamento em nuvem ou dispositivo padrão de backups." - -#: src/js/services/walletService.js:1031 -msgid "Your wallet key will be encrypted. The Spending Password cannot be recovered. Be sure to write it down." -msgstr "Sua chave da carteira será criptografada. A senha de gastos não poderá ser recuperada. Não se esqueça de anotá-la." - -#: www/views/includes/walletSelector.html:23 -#: www/views/paperWallet.html:35 -#: www/views/tab-home.html:96 -#: www/views/tab-receive.html:74 -#: www/views/walletDetails.html:139 -#: www/views/walletDetails.html:59 -msgid "[Balance Hidden]" -msgstr "[Valores escondidos]" - -#: src/js/controllers/bitpayCardIntro.js:11 -msgid "add your BitPay Visa card(s)" -msgstr "Adicionar seu(s) cartão(ões) BitPay Visa" - -#: www/views/includes/available-balance.html:8 -msgid "locked by pending payments" -msgstr "bloqueado por pagamentos pendentes" - -#: src/js/services/profileService.js:389 -msgid "me" -msgstr "eu" - -#: www/views/addressbook.add.html:32 -msgid "name@example.com" -msgstr "nome@exemplo.pt" - -#: www/views/preferencesHistory.html:15 -msgid "preparing..." -msgstr "a preparar..." - -#: src/js/controllers/confirm.js:329 -#: src/js/controllers/modals/txpDetails.js:44 -msgid "to accept" -msgstr "a aceitar" - -#: src/js/controllers/confirm.js:327 -msgid "to pay" -msgstr "a pagar" - -#: src/js/controllers/confirm.js:331 -#: src/js/controllers/modals/txpDetails.js:41 -msgid "to send" -msgstr "a enviar" - -#: src/js/controllers/buyAmazon.js:238 -msgid "{{amountStr}} for Amazon.com Gift Card" -msgstr "" - -#: www/views/preferencesBwsUrl.html:21 -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}} depende do Bitcore Wallet Service (BWS) para informações sobre cadeias de blocos, rede e sincronização Copayer. A configuração padrão aponta para https://bws.bitpay.com (instância pública BWS do BitPay)." - -#: src/js/controllers/confirm.js:358 -msgid "{{fee}} will be deducted for bitcoin networking fees." -msgstr "{{fee}} será deduzido para taxas de rede bitcoins." - -#: www/views/confirm.html:87 -msgid "{{tx.txp[wallet.id].feeRatePerStr}} of the sending amount" -msgstr "{{tx.txp[wallet.id].feeRatePerStr}} da quantidade de envio" - -#: www/views/walletDetails.html:212 -msgid "{{updatingTxHistoryProgress}} transactions downloaded" -msgstr "Transações de {{updatingTxHistoryProgress}} transferidas" - -#: www/views/copayers.html:46 -#: www/views/includes/walletInfo.html:12 -msgid "{{wallet.m}}-of-{{wallet.n}}" -msgstr "{{wallet.m}}-de-{{wallet.n}}" - diff --git a/i18n/po/ru.po b/i18n/po/ru.po deleted file mode 100644 index 975f28789..000000000 --- a/i18n/po/ru.po +++ /dev/null @@ -1,3359 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Project-Id-Version: copay\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: crowdin.com\n" -"X-Crowdin-Project: copay\n" -"X-Crowdin-Language: ru\n" -"X-Crowdin-File: template.pot\n" -"Last-Translator: cmgustavo83\n" -"Language-Team: Russian\n" -"Language: ru\n" -"PO-Revision-Date: 2017-07-18 13:18-0400\n" - -#: www/views/modals/paypro.html:34 -msgid "(Trusted)" -msgstr "(Доверенный)" - -#: www/views/includes/txp.html:23 -#: www/views/includes/walletHistory.html:64 -msgid "(possible double spend)" -msgstr "(возможна двойная трата)" - -#: www/views/modals/txp-details.html:161 -msgid "* A payment proposal can be deleted if 1) you are the creator, and no other copayer has signed, or 2) 24 hours have passed since the proposal was created." -msgstr "* Предложенный платёж может быть удалён если 1) вы создали этот платёж и никто его еще не подписал, или 2) если прошло более 24 часов с момента его создания." - -#: www/views/tx-details.html:84 -msgid "- {{btx.feeRateStr}} of the transaction" -msgstr "{{feeRateStr}} транзакции" - -#: www/views/modals/txp-details.html:104 -msgid "- {{tx.feeRateStr}} of the transaction" -msgstr "" - -#: www/views/feedback/rateApp.html:7 -msgid "5-star ratings help us get {{appName}} into more hands, and more users means more resources can be committed to the app!" -msgstr "=896t7!" - -#: src/js/controllers/feedback/send.js:27 -#: www/views/feedback/complete.html:21 -msgid "A member of the team will review your feedback as soon as possible." -msgstr "Участник команды рассмотрит ваш отзыв при первой возможности." - -#: src/js/controllers/confirm.js:351 -msgid "A total of {{amountAboveMaxSizeStr}} were excluded. The maximum size allowed for a transaction was exceeded." -msgstr "Всего {{amountAboveMaxSizeStr}} было исключено. Превышен максимальный размер, разрешенный для транзакции." - -#: src/js/controllers/confirm.js:345 -msgid "A total of {{amountBelowFeeStr}} were excluded. These funds come from UTXOs smaller than the network fee provided." -msgstr "Примечание: в общей сложности {{amountBelowFeeStr}} было исключено. Эти средства входят поступившие в UTXOs меньше чем комиссия сети." - -#: src/js/controllers/preferencesAbout.js:6 -#: www/views/tab-settings.html:156 -msgid "About" -msgstr "О проекте" - -#: src/js/controllers/modals/txpDetails.js:56 -#: src/js/controllers/tx-details.js:62 -msgid "Accepted" -msgstr "Принято" - -#: www/views/preferencesInformation.html:66 -msgid "Account" -msgstr "Учётная запись" - -#: www/views/join.html:69 -#: www/views/tab-create-personal.html:43 -#: www/views/tab-create-shared.html:72 -#: www/views/tab-import-hardware.html:19 -msgid "Account Number" -msgstr "Номер учётной записи" - -#: www/views/preferencesBitpayServices.html:23 -msgid "Accounts" -msgstr "Аккаунты" - -#: www/views/bitpayCard.html:56 -msgid "Activity" -msgstr "Активность" - -#: src/js/services/bitpayAccountService.js:83 -msgid "Add Account" -msgstr "Добавить учётную запись" - -#: src/js/services/bitpayAccountService.js:69 -msgid "Add BitPay Account?" -msgstr "L; pkoi[jpiouhouihuiykjb jvgbgyfcthgfvjyuhnij; okml',./; lkmjnhbg v?" - -#: www/views/addressbook.add.html:4 -#: www/views/addressbook.html:22 -msgid "Add Contact" -msgstr "Добавить контакт" - -#: www/views/bitpayCard.html:28 -msgid "Add Funds" -msgstr "Пополнить счёт" - -#: www/views/confirm.html:96 -msgid "Add Memo" -msgstr "Добавить памятку" - -#: www/views/join.html:84 -#: www/views/tab-create-personal.html:57 -#: www/views/tab-create-shared.html:86 -msgid "Add a password" -msgstr "Защитить паролем" - -#: www/views/includes/accountSelector.html:27 -msgid "Add account" -msgstr "gfhcdtgfdth" - -#: www/views/join.html:87 -#: www/views/tab-create-personal.html:60 -#: www/views/tab-create-shared.html:89 -msgid "Add an optional password to secure the recovery phrase" -msgstr "Добавьте необязательный пароль для защиты ключевого словосочетания" - -#: www/views/includes/incomingDataMenu.html:41 -msgid "Add as a contact" -msgstr "" - -#: src/js/controllers/confirm.js:374 -msgid "Add description" -msgstr "Добавить описание" - -#: www/views/topup.html:6 -msgid "Add funds" -msgstr "" - -#: src/js/services/bitpayAccountService.js:78 -msgid "Add this BitPay account ({{email}})?" -msgstr "" - -#: www/views/add.html:3 -msgid "Add wallet" -msgstr "Добавить кошелёк" - -#: www/views/addressbook.view.html:26 -#: www/views/customAmount.html:28 -#: www/views/modals/paypro.html:24 -msgid "Address" -msgstr "Адрес" - -#: www/views/addressbook.html:6 -#: www/views/tab-settings.html:13 -msgid "Address Book" -msgstr "Aдресная книга" - -#: www/views/preferencesInformation.html:35 -msgid "Address Type" -msgstr "Тип адреса" - -#: www/views/addresses.html:64 -msgid "Addresses With Balance" -msgstr "Адреса с балансом" - -#: www/views/tab-settings.html:149 -msgid "Advanced" -msgstr "Дополнительные возможности" - -#: www/views/advancedSettings.html:3 -msgid "Advanced Settings" -msgstr "Расширенные настройки" - -#: www/views/bitpayCard.html:62 -msgid "All" -msgstr "Все" - -#: www/views/allAddresses.html:3 -msgid "All Addresses" -msgstr "Все адреса" - -#: 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:25 -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 "Разрешить уведомления" - -#: www/views/onboarding/disclaimer.html:14 -msgid "Almost done! Let's review." -msgstr "Почти готово! Давайте проверим." - -#: www/views/preferencesAltCurrency.html:4 -#: www/views/tab-settings.html:74 -msgid "Alternative Currency" -msgstr "Альтернативная валюта" - -#: src/js/controllers/buyAmazon.js:97 -msgid "Amazon.com is not available at this moment. Please try back later." -msgstr "" - -#: www/views/amount.html:44 -#: www/views/customAmount.html:34 -#: www/views/includes/output.html:7 -msgid "Amount" -msgstr "Сумма" - -#: src/js/services/bwcError.js:110 -msgid "Amount below minimum allowed" -msgstr "Сумма ниже допустимого минимума" - -#: src/js/controllers/confirm.js:191 -msgid "Amount too big" -msgstr "Слишком большая сумма" - -#: www/views/includes/walletHistory.html:31 -msgid "Amount too low to spend" -msgstr "" - -#: src/js/controllers/tab-home.js:147 -msgid "An update to this app is available. For your security, please update to the latest version." -msgstr "Доступно обновление. Для вашей же безопасности, пожалуйста, обновитесь до последней версии." - -#: www/views/backupWarning.html:14 -msgid "Anyone with your backup phrase can access or spend your bitcoin." -msgstr "Любой, у кого есть доступ к вашему ключевому словосочетанию, может потратить ваши биткойны." - -#: www/views/addresses.html:94 -msgid "Approximate Bitcoin network fee to transfer wallet's balance (with normal priority)" -msgstr "" - -#: www/views/backupWarning.html:10 -msgid "Are you being watched?" -msgstr "За вами сейчас кто-нибудь смотрит?" - -#: src/js/controllers/preferencesExternal.js:15 -msgid "Are you being watched? Anyone with your recovery phrase can access or spend your bitcoin." -msgstr "За вами подглядывают? Любой у кого есть ваша фраза восстановления может получить или потратить ваши биткойны." - -#: src/js/controllers/copayers.js:56 -msgid "Are you sure you want to cancel and delete this wallet?" -msgstr "Вы точно хотите отменить и удалить этот кошелёк?" - -#: src/js/controllers/addressbookView.js:24 -msgid "Are you sure you want to delete this contact?" -msgstr "" - -#: src/js/controllers/preferencesDelete.js:26 -msgid "Are you sure you want to delete this wallet?" -msgstr "Вы точно хотите удалить этот кошелёк?" - -#: src/js/controllers/modals/txpDetails.js:148 -msgid "Are you sure you want to reject this transaction?" -msgstr "Вы точно хотите отклонить этот платёж?" - -#: src/js/controllers/modals/txpDetails.js:165 -msgid "Are you sure you want to remove this transaction?" -msgstr "Вы точно хотите удалить эту транзакцию?" - -#: src/js/controllers/onboarding/backupRequest.js:23 -msgid "Are you sure you want to skip it?" -msgstr "Вы точно хотите пропустить резервное копирование?" - -#: www/views/modals/bitpay-card-confirmation.html:4 -msgid "Are you sure you would like to log out of your BitPay Card account?" -msgstr "" - -#: src/js/controllers/preferencesBitpayCard.js:7 -#: src/js/controllers/preferencesBitpayServices.js:20 -msgid "Are you sure you would like to remove your BitPay Card ({{lastFourDigits}}) from this device?" -msgstr "Вы уверены, что вы хотели бы удалить карточку BitPay Card ({{lastFourDigits}}) из этого устройства?" - -#: www/views/includes/walletInfo.html:5 -msgid "Auditable" -msgstr "Проверяемый" - -#: www/views/modals/wallet-balance.html:42 -msgid "Available" -msgstr "Доступно" - -#: www/views/includes/available-balance.html:3 -msgid "Available Balance" -msgstr "Доступный баланс" - -#: www/views/modals/chooseFeeLevel.html:24 -#: www/views/preferencesFee.html:15 -msgid "Average confirmation time" -msgstr "Среднее время подтверждения" - -#: www/views/join.html:140 -#: www/views/tab-create-personal.html:111 -#: www/views/tab-create-shared.html:140 -#: www/views/tab-import-phrase.html:48 -msgid "BIP32 path for address derivation" -msgstr "Укажите BIP32 для генерации адресов" - -#: www/views/preferences.html:34 -msgid "Backup" -msgstr "Резервное копирование" - -#: www/views/includes/backupNeededPopup.html:7 -msgid "Backup Needed" -msgstr "Требуется резервное копирование" - -#: src/js/controllers/lockSetup.js:87 -msgid "Backup all livenet wallets before using this function" -msgstr "Сделайте резервную копию всех livenet кошельков перед использованием этой функции" - -#: www/views/preferences.html:36 -#: www/views/tab-settings.html:120 -msgid "Backup needed" -msgstr "Требуется резервное копирование" - -#: www/views/includes/backupNeededPopup.html:9 -msgid "Backup now" -msgstr "Создать резервную копию" - -#: www/views/onboarding/backupRequest.html:11 -#: www/views/tab-export-file.html:89 -msgid "Backup wallet" -msgstr "Резервное копирование" - -#: src/js/controllers/lockSetup.js:84 -msgid "Backup your wallet before using this function" -msgstr "Сделайте резервную копию вашего кошелька перед использованием этой функции" - -#: src/js/services/profileService.js:430 -msgid "Bad wallet invitation" -msgstr "Недействительное приглашение" - -#: www/views/preferencesInformation.html:96 -msgid "Balance By Address" -msgstr "Баланс на адресах" - -#: www/views/includes/confirmBackupPopup.html:7 -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 "Сохраните ваше ключевое словосочетание в безопасном месте. Если {{appName}} будет удален, ваши деньги нельзя будет восстановить без ключевого словосочетания." - -#: www/views/preferencesBitpayServices.html:9 -msgid "BitPay Visa® Cards" -msgstr "BitPay Visa® картыllllll" - -#: www/views/addressbook.add.html:38 -#: www/views/includes/incomingDataMenu.html:29 -msgid "Bitcoin Address" -msgstr "Биткойн-адрес" - -#: www/views/modals/chooseFeeLevel.html:4 -#: www/views/preferencesFee.html:4 -#: www/views/tab-settings.html:85 -msgid "Bitcoin Network Fee Policy" -msgstr "Политика комиссии сети Биткойн" - -#: www/views/tab-settings.html:63 -msgid "Bitcoin Unit" -msgstr "Единица измерения" - -#: www/views/onboarding/tour.html:31 -msgid "Bitcoin is a currency." -msgstr "Биткойн - это валюта." - -#: www/views/onboarding/disclaimer.html:15 -msgid "Bitcoin is different – it cannot be safely held with a bank or web service." -msgstr "Bitcoin is different – it cannot be safely held with a bank or web service." - -#: www/views/onboarding/tour.html:18 -msgid "Bitcoin is secure,
digital money." -msgstr "Биткойн это безопасные,
цифровые деньги." - -#: www/views/preferencesFee.html:11 -msgid "Bitcoin transactions include a fee collected by miners on the network." -msgstr "Bitcoin transactions include a fee collected by miners on the network." - -#: www/views/buyAmazon.html:108 -msgid "Bought {{amountUnitStr}}" -msgstr "" - -#: www/views/modals/txp-details.html:36 -msgid "Broadcast Payment" -msgstr "Отправить платёж" - -#: src/js/controllers/modals/txpDetails.js:58 -#: src/js/controllers/tx-details.js:64 -msgid "Broadcasted" -msgstr "Отправка" - -#: src/js/services/onGoingProcess.js:11 -msgid "Broadcasting transaction" -msgstr "Отправка транзакции" - -#: www/views/unsupported.html:6 -msgid "Browser unsupported" -msgstr "Браузер не поддерживается" - -#: www/views/buyAmazon.html:5 -msgid "Buy" -msgstr "" - -#: www/views/includes/buyAndSellCard.html:3 -msgid "Buy & Sell Bitcoin" -msgstr "Купить & продать биткойн" - -#: www/views/tab-send.html:35 -msgid "Buy Bitcoin" -msgstr "Купить биткойн" - -#: src/js/controllers/buyAmazon.js:332 -msgid "Buy from" -msgstr "" - -#: src/js/services/onGoingProcess.js:40 -msgid "Buying Bitcoin..." -msgstr "Покупка биткойн..." - -#: src/js/services/onGoingProcess.js:12 -msgid "Calculating fee" -msgstr "Вычисление комиссии" - -#: src/js/controllers/buyAmazon.js:311 -#: src/js/controllers/confirm.js:495 -#: src/js/controllers/topup.js:285 -#: src/js/services/popupService.js:62 -#: src/js/services/popupService.js:73 -#: www/views/addressbook.add.html:10 -#: www/views/feedback/send.html:5 -#: www/views/includes/incomingDataMenu.html:22 -#: www/views/includes/incomingDataMenu.html:54 -#: www/views/includes/incomingDataMenu.html:73 -#: www/views/includes/incomingDataMenu.html:97 -#: www/views/includes/note.html:6 -#: www/views/modals/bitpay-card-confirmation.html:8 -#: www/views/modals/confirmation.html:13 -msgid "Cancel" -msgstr "Отмена" - -#: www/views/copayers.html:36 -msgid "Cancel invitation" -msgstr "" - -#: src/js/controllers/onboarding/tour.js:52 -msgid "Cannot Create Wallet" -msgstr "Не удаётся создать кошелёк" - -#: src/js/services/profileService.js:426 -msgid "Cannot join the same wallet more that once" -msgstr "Нельзя присоединиться к одному и тому же кошельку более одного раза" - -#: www/views/includes/bitpayCardsCard.html:2 -msgid "Cards" -msgstr "Карты" - -#: www/views/modals/paypro.html:30 -msgid "Certified by" -msgstr "Сертифицирован" - -#: www/views/preferencesExternal.html:19 -msgid "Check installation and retry." -msgstr "Проверьте установку и повторите попытку." - -#: www/views/tab-import-file.html:4 -msgid "Choose a backup file from your computer" -msgstr "Выберите файл резервной копии" - -#: www/views/modals/wallets.html:9 -msgid "Choose your destination wallet" -msgstr "Выберите целевой кошелёк" - -#: www/views/modals/wallets.html:10 -msgid "Choose your source wallet" -msgstr "Выберите исходный кошелёк" - -#: www/views/backup.html:54 -msgid "Clear" -msgstr "Очистить" - -#: www/views/preferencesHistory.html:24 -msgid "Clear cache" -msgstr "Очистить кэш" - -#: src/js/controllers/modals/txpDetails.js:34 -msgid "Click" -msgstr "Click" - -#: www/views/customAmount.html:4 -#: www/views/modals/paypro.html:4 -#: www/views/modals/pin.html:3 -#: www/views/modals/search.html:3 -#: www/views/modals/wallet-balance.html:3 -#: www/views/modals/wallets.html:5 -msgid "Close" -msgstr "Закрыть" - -#: www/views/preferences.html:22 -msgid "Color" -msgstr "Цвет" - -#: www/views/preferencesAbout.html:21 -msgid "Commit hash" -msgstr "Хэш версии" - -#: www/views/preferences.html:48 -msgid "Complete the backup process to use this option" -msgstr "Завершите процесс резервного копирования для использования этой опции" - -#: www/views/bitpayCard.html:93 -msgid "Completed" -msgstr "" - -#: src/js/controllers/buyAmazon.js:309 -#: src/js/controllers/confirm.js:494 -#: src/js/controllers/copayers.js:55 -#: src/js/controllers/topup.js:283 -#: www/views/backup.html:53 -#: www/views/backup.html:72 -#: www/views/confirm.html:4 -#: www/views/onboarding/collectEmail.html:32 -msgid "Confirm" -msgstr "Подтвердить" - -#: www/views/modals/terms.html:26 -#: www/views/onboarding/disclaimer.html:44 -msgid "Confirm & Finish" -msgstr "Подтвердить & Завершить" - -#: www/views/buyAmazon.html:90 -msgid "Confirm purchase" -msgstr "" - -#: www/views/modals/pin.html:10 -msgid "Confirm your PIN" -msgstr "Подтвердите Ваш PIN-код" - -#: src/js/services/walletService.js:1034 -msgid "Confirm your new spending password" -msgstr "Подтвердите ваш новый платёжный пароль" - -#: www/views/tx-details.html:98 -msgid "Confirmations" -msgstr "Подтверждения" - -#: www/views/bitpayCard.html:68 -#: www/views/modals/wallet-balance.html:61 -msgid "Confirming" -msgstr "Ожидает подтверждения" - -#: www/views/bitpayCardIntro.html:37 -msgid "Connect my BitPay Card" -msgstr "Подключить мою BitPay Card" - -#: src/js/services/onGoingProcess.js:13 -msgid "Connecting to Coinbase..." -msgstr "Подключение к Coinbase..." - -#: src/js/services/onGoingProcess.js:14 -msgid "Connecting to Glidera..." -msgstr "Подключение к Glidera..." - -#: src/js/services/bwcError.js:53 -msgid "Connection reset by peer" -msgstr "Соединение сброшено другой стороной" - -#: www/views/tab-send.html:45 -msgid "Contacts" -msgstr "Контакты" - -#: www/views/onboarding/notifications.html:9 -msgid "Continue" -msgstr "Продолжить" - -#: www/views/preferencesLanguage.html:26 -msgid "Contribute Translations" -msgstr "Помочь в переводе" - -#: src/js/services/bwcError.js:62 -msgid "Copayer already in this wallet" -msgstr "Совладелец кошелька уже присоединился" - -#: src/js/services/bwcError.js:77 -msgid "Copayer already voted on this spend proposal" -msgstr "Совладелец уже проголосовал по этому платежу" - -#: src/js/services/bwcError.js:107 -msgid "Copayer data mismatch" -msgstr "Несоответствие данных совладельца кошелька" - -#: www/views/includes/walletActivity.html:2 -msgid "Copayer joined" -msgstr "Совладелец присоединился" - -#: www/views/preferencesInformation.html:88 -msgid "Copayer {{$index}}" -msgstr "Совладелец {{$index}}" - -#: src/js/controllers/copayers.js:79 -#: src/js/controllers/export.js:193 -#: www/views/includes/copyToClipboard.html:4 -msgid "Copied to clipboard" -msgstr "Скопировано в буфер обмена" - -#: www/views/tab-export-file.html:94 -msgid "Copy this text as it is to a safe place (notepad or email)" -msgstr "Скопируйте этот текст как есть (в блокнот или письмо)" - -#: www/views/includes/incomingDataMenu.html:51 -#: www/views/includes/incomingDataMenu.html:70 -#: www/views/includes/incomingDataMenu.html:94 -#: www/views/preferencesLogs.html:10 -#: www/views/tab-export-file.html:78 -msgid "Copy to clipboard" -msgstr "Скопировать в буфер обмена" - -#: www/views/tab-import-phrase.html:2 -msgid "Could not access the wallet at the server. Please check:" -msgstr "Не удалось получить доступ к кошельку на сервере. Проверьте, пожалуйста:" - -#: src/js/controllers/buyAmazon.js:101 -msgid "Could not access to Amazon.com" -msgstr "" - -#: src/js/services/profileService.js:493 -msgid "Could not access wallet" -msgstr "Не удалось получить доступ к кошельку" - -#: src/js/controllers/confirm.js:185 -msgid "Could not add message to imported wallet without shared encrypting key" -msgstr "Не удалось добавить сообщение в импортированный кошелёк без общего ключа шифрования" - -#: src/js/controllers/modals/txpDetails.js:193 -msgid "Could not broadcast payment" -msgstr "Не удалось отправить платёж" - -#: src/js/services/bwcError.js:41 -msgid "Could not build transaction" -msgstr "Не удалось создать транзакцию" - -#: src/js/services/walletService.js:857 -msgid "Could not create address" -msgstr "Не удалось создать адрес" - -#: src/js/controllers/topup.js:91 -msgid "Could not create the invoice" -msgstr "" - -#: src/js/controllers/buyAmazon.js:163 -#: src/js/controllers/topup.js:141 -msgid "Could not create transaction" -msgstr "" - -#: src/js/services/profileService.js:342 -msgid "Could not create using the specified extended private key" -msgstr "Не удалось создать используя указанный расширенный закрытый ключ" - -#: src/js/services/profileService.js:353 -msgid "Could not create using the specified extended public key" -msgstr "Не удалось создать используя указанный расширенный открытый ключ" - -#: src/js/services/profileService.js:335 -msgid "Could not create: Invalid wallet recovery phrase" -msgstr "Не удалось создать: недействительное ключевое словосочетание" - -#: src/js/controllers/import.js:99 -msgid "Could not decrypt file, check your password" -msgstr "Не удалось расшифровать файл, проверьте пароль" - -#: src/js/controllers/modals/txpDetails.js:175 -msgid "Could not delete payment proposal" -msgstr "Не удалось удалить предложенный платёж" - -#: src/js/services/feeService.js:72 -msgid "Could not get dynamic fee" -msgstr "Не удалось получить динамическую комиссию" - -#: src/js/services/feeService.js:42 -msgid "Could not get dynamic fee for level: {{feeLevel}}" -msgstr "Не удалось получить динамическую комиссию для уровня: {{feeLevel}}" - -#: src/js/controllers/modals/feeLevels.js:113 -msgid "Could not get fee levels" -msgstr "" - -#: src/js/controllers/buyAmazon.js:121 -#: src/js/controllers/topup.js:99 -msgid "Could not get the invoice" -msgstr "" - -#: src/js/controllers/bitpayCard.js:66 -msgid "Could not get transactions" -msgstr "Не удалось получить транзакции" - -#: src/js/services/profileService.js:595 -#: src/js/services/profileService.js:629 -#: src/js/services/profileService.js:652 -msgid "Could not import" -msgstr "Не удалось импортировать" - -#: src/js/services/profileService.js:564 -msgid "Could not import. Check input file and spending password" -msgstr "Не удалось импортировать. Проверьте импортируемый файл и платёжный пароль" - -#: src/js/services/profileService.js:439 -msgid "Could not join wallet" -msgstr "Не удалось присоединиться к кошельку" - -#: src/js/controllers/modals/txpDetails.js:155 -msgid "Could not reject payment" -msgstr "Не удалось отклонить платёж" - -#: src/js/controllers/preferencesBitpayServices.js:33 -msgid "Could not remove account" -msgstr "Не удалось удалить аккаунт" - -#: src/js/controllers/preferencesBitpayCard.js:20 -#: src/js/controllers/preferencesBitpayServices.js:50 -msgid "Could not remove card" -msgstr "Не удалось удалить карту" - -#: src/js/services/walletService.js:776 -msgid "Could not save preferences on the server" -msgstr "Не удалось сохранить параметры на сервере" - -#: src/js/controllers/modals/txpDetails.js:141 -msgid "Could not send payment" -msgstr "Не удалось отправить платёж" - -#: src/js/controllers/buyAmazon.js:323 -#: src/js/controllers/topup.js:297 -msgid "Could not send transaction" -msgstr "" - -#: www/views/walletDetails.html:199 -msgid "Could not update transaction history" -msgstr "Не удалось обновить журнал транзакций" - -#: src/js/controllers/addresses.js:34 -#: src/js/controllers/addresses.js:42 -#: src/js/controllers/copayers.js:30 -#: src/js/controllers/walletDetails.js:78 -msgid "Could not update wallet" -msgstr "Не удалось обновить кошелёк" - -#: www/views/tab-create-personal.html:3 -msgid "Create Personal Wallet" -msgstr "Создать личный кошелёк" - -#: www/views/tab-create-shared.html:3 -msgid "Create Shared Wallet" -msgstr "Создать общий кошелёк" - -#: www/views/onboarding/tour.html:51 -#: www/views/tab-home.html:77 -#: www/views/tab-send.html:36 -msgid "Create bitcoin wallet" -msgstr "Создать биткойн-кошелёк" - -#: www/views/tab-create-personal.html:129 -msgid "Create new wallet" -msgstr "Создать новый кошелёк" - -#: www/views/add.html:22 -msgid "Create shared wallet" -msgstr "Создать общий кошелёк" - -#: www/views/tab-create-shared.html:158 -msgid "Create {{formData.requiredCopayers}}-of-{{formData.totalCopayers}} wallet" -msgstr "Создать кошелёк {{formData.requiredCopayers}}-из-{{formData.totalCopayers}}" - -#: www/views/modals/txp-details.html:83 -#: www/views/tx-details.html:62 -msgid "Created by" -msgstr "Создан" - -#: src/js/services/onGoingProcess.js:18 -msgid "Creating Wallet..." -msgstr "Создание кошелька..." - -#: src/js/services/onGoingProcess.js:17 -msgid "Creating transaction" -msgstr "Создание транзакции" - -#: www/views/modals/chooseFeeLevel.html:34 -#: www/views/preferencesFee.html:20 -msgid "Current fee rate for this policy" -msgstr "Текущая комиссия для этой политики" - -#: src/js/services/feeService.js:15 -msgid "Custom" -msgstr "" - -#: www/views/customAmount.html:9 -msgid "Custom Amount" -msgstr "Сумма" - -#: src/js/controllers/preferencesFee.js:84 -msgid "Custom Fee" -msgstr "" - -#: www/views/modals/txp-details.html:89 -#: www/views/tx-details.html:68 -msgid "Date" -msgstr "Дата" - -#: www/views/preferencesDeleteWallet.html:21 -msgid "Delete" -msgstr "Удалить" - -#: www/views/modals/txp-details.html:166 -msgid "Delete Payment Proposal" -msgstr "Удалить предложенный платёж" - -#: www/views/preferencesAdvanced.html:33 -#: www/views/preferencesDeleteWallet.html:3 -msgid "Delete Wallet" -msgstr "Удалить кошелёк" - -#: www/views/copayers.html:59 -msgid "Delete it and create a new one" -msgstr "Удалите и создайте заново" - -#: src/js/services/onGoingProcess.js:19 -msgid "Deleting Wallet..." -msgstr "Удаление кошелька..." - -#: src/js/services/onGoingProcess.js:28 -msgid "Deleting payment proposal" -msgstr "Удаление предложенного платежа" - -#: www/views/join.html:138 -#: www/views/tab-create-personal.html:109 -#: www/views/tab-create-shared.html:138 -#: www/views/tab-import-phrase.html:46 -msgid "Derivation Path" -msgstr "Путь деривации" - -#: www/views/preferencesInformation.html:41 -msgid "Derivation Strategy" -msgstr "Стратегия деривации" - -#: www/views/buyAmazon.html:39 -#: www/views/topup.html:45 -msgid "Details" -msgstr "" - -#: src/js/controllers/lockSetup.js:9 -#: src/js/controllers/tab-settings.js:60 -msgid "Disabled" -msgstr "Отключено" - -#: www/views/includes/backupNeededPopup.html:10 -#: www/views/onboarding/backupRequest.html:12 -msgid "Do it later" -msgstr "Отложить" - -#: www/views/tab-export-file.html:29 -msgid "Do not include private key" -msgstr "Не включать закрытый ключ" - -#: www/views/preferencesLanguage.html:21 -msgid "Don't see your language on Crowdin? Contact the Owner on Crowdin! We'd love to support your language." -msgstr "Не видите свой язык на Crowdin? Свяжитесь с владельцем по Crowdin! Мы с удовольствием поддержим ваш язык." - -#: www/views/tab-export-file.html:59 -#: www/views/tab-home.html:22 -msgid "Download" -msgstr "Скачать" - -#: www/views/addresses.html:19 -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 "Любой биткойн-кошелёк может создать миллиарды адресов из вашей ключевой фразы. Новый адрес автоматически генерируется каждый раз, когда вы получаете платеж." - -#: src/js/services/feeService.js:13 -msgid "Economy" -msgstr "Экономичная" - -#: www/views/onboarding/collectEmail.html:27 -msgid "Edit" -msgstr "" - -#: www/views/addressbook.add.html:29 -#: www/views/addressbook.view.html:22 -msgid "Email" -msgstr "Email" - -#: www/views/preferencesNotifications.html:42 -msgid "Email Address" -msgstr "Email" - -#: src/js/services/bwcError.js:122 -msgid "Empty addresses limit reached. New addresses cannot be generated." -msgstr "Достигнут предел пустых адресов. Новые адреса больше не могут быть сгенерированы." - -#: www/views/tab-scan.html:19 -msgid "Enable camera access in your device settings to get started." -msgstr "Чтобы начать, разрешите доступ к камере в настройках вашего устройства." - -#: www/views/preferencesNotifications.html:29 -msgid "Enable email notifications" -msgstr "Включить email-уведомления" - -#: www/views/preferencesNotifications.html:12 -msgid "Enable push notifications" -msgstr "Включить push-уведомления" - -#: www/views/tab-scan.html:18 -msgid "Enable the camera to get started." -msgstr "Чтобы начать, включите камеру." - -#: www/views/amount.html:4 -msgid "Enter Amount" -msgstr "Введите сумму" - -#: src/js/services/walletService.js:1048 -#: src/js/services/walletService.js:1063 -msgid "Enter Spending Password" -msgstr "Введите платёжный пароль" - -#: src/js/services/bitpayAccountService.js:110 -msgid "Enter Two Factor for your BitPay account" -msgstr "Введите второй фактор вашей учётной записи BitPay" - -#: www/views/modals/chooseFeeLevel.html:41 -msgid "Enter custom fee" -msgstr "" - -#: src/js/services/walletService.js:1030 -msgid "Enter new spending password" -msgstr "Введите новый платёжный пароль" - -#: www/views/join.html:76 -#: www/views/tab-create-personal.html:49 -#: www/views/tab-create-shared.html:78 -msgid "Enter the recovery phrase (BIP39)" -msgstr "Введите ключевое словосочетание (BIP39)" - -#: www/views/onboarding/collectEmail.html:13 -msgid "Enter your email" -msgstr "" - -#: www/views/backup.html:62 -msgid "Enter your password" -msgstr "Введите пароль" - -#. Trying to import a malformed wallet export QR code -#: src/js/controllers/activity.js:45 -#: src/js/controllers/addressbookAdd.js:30 -#: src/js/controllers/addressbookView.js:29 -#: src/js/controllers/addresses.js:130 -#: src/js/controllers/addresses.js:131 -#: src/js/controllers/bitpayCard.js:66 -#: src/js/controllers/bitpayCardIntro.js:40 -#: src/js/controllers/bitpayCardIntro.js:81 -#: src/js/controllers/buyAmazon.js:23 -#: src/js/controllers/buyAmazon.js:34 -#: src/js/controllers/confirm.js:276 -#: src/js/controllers/copayers.js:67 -#: src/js/controllers/create.js:155 -#: src/js/controllers/create.js:168 -#: src/js/controllers/create.js:175 -#: src/js/controllers/create.js:197 -#: src/js/controllers/create.js:204 -#: src/js/controllers/create.js:222 -#: src/js/controllers/export.js:109 -#: src/js/controllers/export.js:115 -#: src/js/controllers/export.js:126 -#: src/js/controllers/export.js:154 -#: src/js/controllers/export.js:160 -#: src/js/controllers/export.js:171 -#: src/js/controllers/export.js:47 -#: src/js/controllers/export.js:53 -#: src/js/controllers/feedback/send.js:23 -#: src/js/controllers/import.js:104 -#: src/js/controllers/import.js:116 -#: src/js/controllers/import.js:134 -#: src/js/controllers/import.js:185 -#: src/js/controllers/import.js:213 -#: src/js/controllers/import.js:222 -#: src/js/controllers/import.js:237 -#: src/js/controllers/import.js:249 -#: src/js/controllers/import.js:260 -#: src/js/controllers/import.js:270 -#: src/js/controllers/import.js:294 -#: src/js/controllers/import.js:307 -#: src/js/controllers/import.js:317 -#: src/js/controllers/import.js:327 -#: src/js/controllers/import.js:351 -#: src/js/controllers/import.js:364 -#: src/js/controllers/import.js:70 -#: src/js/controllers/import.js:83 -#: src/js/controllers/join.js:121 -#: src/js/controllers/join.js:135 -#: src/js/controllers/join.js:142 -#: src/js/controllers/join.js:165 -#: src/js/controllers/join.js:173 -#: src/js/controllers/join.js:191 -#: src/js/controllers/modals/feeLevels.js:10 -#: src/js/controllers/modals/txpDetails.js:134 -#: src/js/controllers/paperWallet.js:47 -#: src/js/controllers/preferencesBitpayCard.js:20 -#: src/js/controllers/preferencesBitpayServices.js:33 -#: src/js/controllers/preferencesBitpayServices.js:50 -#: src/js/controllers/preferencesDelete.js:37 -#: src/js/controllers/preferencesExternal.js:20 -#: src/js/controllers/tab-home.js:174 -#: src/js/controllers/tab-send.js:132 -#: src/js/controllers/tabsController.js:36 -#: src/js/controllers/tabsController.js:7 -#: src/js/controllers/topup.js:20 -#: src/js/controllers/topup.js:31 -#: src/js/controllers/tx-details.js:102 -#: src/js/services/incomingData.js:98 -msgid "Error" -msgstr "Ошибка" - -#: src/js/controllers/confirm.js:447 -msgid "Error at confirm" -msgstr "Ошибка при подтверждении" - -#: src/js/controllers/buyAmazon.js:178 -msgid "Error creating gift card" -msgstr "" - -#: src/js/controllers/buyAmazon.js:93 -msgid "Error creating the invoice" -msgstr "" - -#: src/js/services/profileService.js:396 -msgid "Error creating wallet" -msgstr "Ошибка создания кошелька" - -#: src/js/controllers/confirm.js:266 -msgid "Error getting SendMax information" -msgstr "" - -#: src/js/controllers/buyAmazon.js:135 -#: src/js/controllers/topup.js:113 -msgid "Error in Payment Protocol" -msgstr "" - -#: src/js/controllers/bitpayCardIntro.js:14 -msgid "Error pairing BitPay Account" -msgstr "" - -#: src/js/controllers/paperWallet.js:41 -msgid "Error scanning funds:" -msgstr "Ошибка сканирования кошелька:" - -#: src/js/controllers/paperWallet.js:91 -msgid "Error sweeping wallet:" -msgstr "Ошибка считывания кошелька:" - -#: src/js/controllers/bitpayCardIntro.js:20 -msgid "Error updating Debit Cards" -msgstr "Ошибка обновления Дебетовых Карт" - -#: src/js/services/bwcError.js:143 -msgid "Exceeded daily limit of $500 per user" -msgstr "Превышен дневной лимит в 500$ на пользователя" - -#: src/js/controllers/confirm.js:411 -#: www/views/confirm.html:27 -#: www/views/modals/txp-details.html:121 -msgid "Expired" -msgstr "Истекла" - -#: www/views/modals/paypro.html:54 -#: www/views/modals/txp-details.html:127 -msgid "Expires" -msgstr "истёк" - -#: www/views/preferencesAdvanced.html:21 -msgid "Export Wallet" -msgstr "Экспорт кошелька" - -#: www/views/preferencesHistory.html:11 -#: www/views/preferencesHistory.html:14 -msgid "Export to file" -msgstr "Экспорт в файл" - -#: www/views/export.html:3 -msgid "Export wallet" -msgstr "Экспорт кошелька" - -#: src/js/services/walletService.js:1175 -#: www/views/tab-export-qrCode.html:9 -msgid "Exporting via QR not supported for this wallet" -msgstr "Экспорт QR-кодом не поддерживается для этого кошелька" - -#: www/views/preferencesInformation.html:83 -msgid "Extended Public Keys" -msgstr "Расширенные открытые ключи" - -#: src/js/services/onGoingProcess.js:20 -msgid "Extracting Wallet information..." -msgstr "" - -#: src/js/controllers/export.js:115 -#: src/js/controllers/export.js:126 -#: src/js/controllers/export.js:160 -#: src/js/controllers/export.js:171 -#: www/views/tab-export-file.html:4 -msgid "Failed to export" -msgstr "Не удалось экспортировать" - -#: www/views/tab-create-personal.html:14 -#: www/views/tab-create-shared.html:14 -msgid "Family vacation funds" -msgstr "Отпускной бюджет" - -#: www/views/tx-details.html:81 -msgid "Fee" -msgstr "Комиссия" - -#: www/views/modals/chooseFeeLevel.html:73 -msgid "Fee level" -msgstr "" - -#: src/js/controllers/modals/feeLevels.js:101 -msgid "Fee level is not defined" -msgstr "" - -#: www/views/confirm.html:81 -#: www/views/modals/txp-details.html:101 -msgid "Fee:" -msgstr "" - -#: src/js/controllers/feedback/send.js:23 -msgid "Feedback could not be submitted. Please try again later." -msgstr "Отзыв не может быть отправлен. Пожалуйста, попробуйте позже." - -#: src/js/services/onGoingProcess.js:42 -msgid "Fetching BitPay Account..." -msgstr "Подключение учетной записи BitPay..." - -#: src/js/services/onGoingProcess.js:21 -msgid "Fetching payment information" -msgstr "" - -#: www/views/export.html:14 -#: www/views/import.html:16 -msgid "File/Text" -msgstr "Файл/текст" - -#: src/js/services/fingerprintService.js:43 -#: src/js/services/fingerprintService.js:48 -msgid "Finger Scan Failed" -msgstr "Не удалось сканировать отпечаток пальца" - -#: src/js/controllers/feedback/send.js:34 -#: www/views/feedback/complete.html:7 -msgid "Finish" -msgstr "Готово" - -#: www/views/tab-create-personal.html:121 -#: www/views/tab-create-shared.html:150 -msgid "For audit purposes" -msgstr "Для целей ревизии" - -#: src/js/controllers/topup.js:306 -#: www/views/buyAmazon.html:29 -#: www/views/confirm.html:65 -#: www/views/modals/txp-details.html:74 -#: www/views/topup.html:34 -#: www/views/tx-details.html:52 -msgid "From" -msgstr "От" - -#: src/js/controllers/bitpayCardIntro.js:71 -msgid "From BitPay account" -msgstr "С аккаунта BitPay" - -#: www/views/tab-import-phrase.html:54 -msgid "From Hardware Wallet" -msgstr "" - -#: www/views/tab-export-qrCode.html:5 -msgid "From the destination device, go to Add wallet > Import wallet and scan this QR code" -msgstr "На целевом устройстве выберите \"Добавить кошелёк\" > \"Импорт кошелька\" и отсканируйте этот QR-код" - -#: src/js/services/bwcError.js:74 -msgid "Funds are locked by pending spend proposals" -msgstr "Средства заблокированы предложенным платежом" - -#: www/views/paperWallet.html:16 -msgid "Funds found:" -msgstr "Обнаружены средства:" - -#: www/views/topup.html:49 -msgid "Funds to be added" -msgstr "" - -#: www/views/paperWallet.html:53 -msgid "Funds transferred" -msgstr "Средства переведены" - -#: www/views/topup.html:103 -msgid "Funds were added to debit card" -msgstr "" - -#: www/views/paperWallet.html:22 -msgid "Funds will be transferred to" -msgstr "Средства будут переведены на" - -#: www/views/tab-receive.html:51 -msgid "Generate new address" -msgstr "" - -#: src/js/services/onGoingProcess.js:22 -msgid "Generating .csv file..." -msgstr "Создание .сsv-файла..." - -#: src/js/services/onGoingProcess.js:37 -msgid "Generating new address..." -msgstr "Генерация нового адреса..." - -#: www/views/bitpayCardIntro.html:23 -msgid "Get local cash anywhere you go, from any Visa® compatible ATM. ATM bank fees may apply." -msgstr "Получайте местную валюту везде, где есть банкоматы с поддержкой карт Visa®. Банком может взиматься комиссия." - -#: www/views/onboarding/collectEmail.html:15 -msgid "Get news and updates from BitPay" -msgstr "Получать письма с новостями от BitPay" - -#: www/views/bitpayCard.html:49 -#: www/views/onboarding/welcome.html:8 -msgid "Get started" -msgstr "Начать" - -#: www/views/addressbook.html:20 -msgid "Get started by adding your first one." -msgstr "Начните, добавив первый контакт." - -#: src/js/services/onGoingProcess.js:23 -msgid "Getting fee levels..." -msgstr "Получение информации о комиссиях..." - -#: www/views/buyAmazon.html:43 -msgid "Gift card" -msgstr "" - -#: src/js/controllers/buyAmazon.js:203 -msgid "Gift card expired" -msgstr "" - -#: www/views/buyAmazon.html:111 -msgid "Gift card generated and ready to use." -msgstr "" - -#: src/js/controllers/bitpayCard.js:114 -#: src/js/controllers/bitpayCard.js:124 -#: 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:149 -#: src/js/controllers/tab-settings.js:48 -#: src/js/controllers/tx-details.js:176 -msgid "Go Back" -msgstr "Вернуться" - -#: src/js/controllers/onboarding/backupRequest.js:20 -#: src/js/controllers/onboarding/backupRequest.js:26 -#: src/js/services/bitpayAccountService.js:84 -msgid "Go back" -msgstr "Вернуться" - -#: www/views/backupWarning.html:15 -#: www/views/includes/confirmBackupPopup.html:8 -#: www/views/onboarding/tour.html:23 -msgid "Got it" -msgstr "Понял" - -#: www/views/preferencesInformation.html:47 -#: www/views/preferencesInformation.html:53 -msgid "Hardware Wallet" -msgstr "Аппаратный кошелёк" - -#: www/views/preferencesExternal.html:18 -msgid "Hardware not connected." -msgstr "Аппаратное обеспечение не подключено." - -#: www/views/import.html:20 -msgid "Hardware wallet" -msgstr "Аппаратный кошелёк" - -#: www/views/tab-settings.html:20 -msgid "Help & Support" -msgstr "Помощь и поддержка" - -#: src/js/controllers/bitpayCard.js:112 -#: src/js/controllers/tab-settings.js:46 -msgid "Help and support information is available at the website." -msgstr "Информация о помощи и поддержке доступна на сайте." - -#: www/views/addresses.html:25 -msgid "Hide" -msgstr "Спрятать" - -#: www/views/preferences.html:27 -msgid "Hide Balance" -msgstr "Скрыть баланс" - -#: www/views/advancedSettings.html:29 -msgid "Hide Next Steps Card" -msgstr "Пропустить следующие шаги" - -#: www/views/join.html:46 -#: www/views/tab-create-personal.html:26 -#: www/views/tab-create-shared.html:55 -#: www/views/tab-export-file.html:25 -#: www/views/tab-import-file.html:28 -#: www/views/tab-import-hardware.html:31 -#: www/views/tab-import-phrase.html:33 -msgid "Hide advanced options" -msgstr "Скрыть дополнительные параметры" - -#: www/views/tabs.html:3 -msgid "Home" -msgstr "Обзор" - -#: src/js/controllers/feedback/send.js:61 -#: src/js/controllers/feedback/send.js:65 -#: src/js/controllers/feedback/send.js:69 -msgid "How could we improve your experience?" -msgstr "Как мы можем улучшить ваши навыки?" - -#: www/views/feedback/rateCard.html:3 -msgid "How do you like {{appName}}?" -msgstr "Как Вам нравится {{appName}}?" - -#: src/js/controllers/feedback/rateCard.js:29 -msgid "I don't like it" -msgstr "Приложение не нравится" - -#: www/views/onboarding/disclaimer.html:43 -msgid "I have read, understood, and agree to the Terms of Use." -msgstr "Я прочитал, понял, и соглашаюсь с Условиями использования." - -#: www/views/modals/terms.html:22 -msgid "I have read, understood, and agree with the Terms of use." -msgstr "Я прочитал, понял, и соглашаюсь с Условиями использования." - -#: www/views/join.html:134 -#: www/views/tab-create-personal.html:105 -#: www/views/tab-create-shared.html:134 -msgid "I have written it down" -msgstr "Я записал" - -#: src/js/controllers/feedback/rateCard.js:35 -msgid "I like the app" -msgstr "Приложение нравится" - -#: src/js/controllers/feedback/rateCard.js:26 -msgid "I think this app is terrible." -msgstr "Ужасное приложение." - -#: src/js/controllers/onboarding/backupRequest.js:19 -#: www/views/includes/screenshotWarningModal.html:9 -msgid "I understand" -msgstr "Я понимаю" - -#: www/views/onboarding/disclaimer.html:21 -msgid "I understand that if this app is moved to another device or deleted, my bitcoin can only be recovered with the backup phrase." -msgstr "Я осознаю, что если {{appName}} будет перемещён на другое устройство, или удален, мои биткойны будут восстановимы только с помощью ключевого словосочетания." - -#: www/views/onboarding/disclaimer.html:18 -msgid "I understand that my funds are held securely on this device, not by a company." -msgstr "Я понимаю, что мои средства безопасно хранятся на устройстве, а не компанией." - -#: www/views/backup.html:29 -msgid "I've written it down" -msgstr "Я записал" - -#: www/views/preferences.html:45 -msgid "If enabled, all sensitive information (private key and recovery phrase) and actions (spending and exporting) associated with this wallet will be protected." -msgstr "Если включено, вся конфиденциальная информация (секретный ключ и фраза для восстановления) и действия (расходы и экспорт) связанные с этим кошельком будут защищены." - -#: www/views/advancedSettings.html:22 -msgid "If enabled, the Recent Transactions card - a list of transactions occuring across all wallets - will appear in the Home tab." -msgstr "Если этот параметр включен, на вкладке Обзор будет отображаться список транзакций из всех кошельков." - -#: www/views/advancedSettings.html:13 -msgid "If enabled, wallets will also try to spend unconfirmed funds. This option may cause transaction delays." -msgstr "Если этот параметр включен, {{appName}} будет пытаться тратить неподтверждённые средства, что может привезти к задержкам подтверждения транзакций." - -#: src/js/controllers/onboarding/backupRequest.js:18 -msgid "If this device is replaced or this app is deleted, neither you nor BitPay can recover your funds without a backup." -msgstr "Если это устройство будет заменено, или если {{appName}} будет удален, ни вы, ни BitPay не смогут восстановить доступ к вашим деньгам без резервной копии." - -#: www/views/feedback/complete.html:23 -msgid "If you have additional feedback, please let us know by tapping the \"Send feedback\" option in the Settings tab." -msgstr "Если вы хотите что-то ещё нам сообщить, пожалуйста, нажмите \"Отправить отзыв\" в разделе Параметры." - -#: www/views/includes/screenshotWarningModal.html:8 -msgid "If you take a screenshot, your backup may be viewed by other apps. You can make a safe backup with physical paper and a pen." -msgstr "Если вы сохраните скриншот, ваша резервная копия может быть просмотрена другими приложениями. Безопасный способ резервного копирования - ручка и бумага." - -#: www/views/tab-import-hardware.html:42 -#: www/views/tab-import-phrase.html:77 -msgid "Import" -msgstr "Импорт" - -#: www/views/import.html:3 -msgid "Import Wallet" -msgstr "Импорт кошелька" - -#: www/views/tab-import-file.html:39 -msgid "Import backup" -msgstr "Импорт резервной копии" - -#: www/views/add.html:38 -msgid "Import wallet" -msgstr "Импортировать кошелёк" - -#: src/js/services/onGoingProcess.js:24 -msgid "Importing Wallet..." -msgstr "Импортирование кошелька..." - -#: www/views/backup.html:65 -msgid "In order to verify your wallet backup, please type your password." -msgstr "Для проверки резервной копии требуется ввести пароль." - -#: www/views/includes/walletItem.html:11 -#: www/views/includes/walletSelector.html:18 -#: www/views/tab-home.html:90 -#: www/views/tab-settings.html:117 -msgid "Incomplete" -msgstr "Не все совладельцы присоединились" - -#: www/views/tab-receive.html:22 -msgid "Incomplete wallet" -msgstr "Не все совладельцы присоединились" - -#: www/views/modals/pin.html:12 -msgid "Incorrect PIN, try again." -msgstr "Неверный PIN-код, попробуйте снова." - -#. Trying to import a malformed wallet export QR code -#: src/js/controllers/import.js:70 -msgid "Incorrect code format" -msgstr "Некорректный формат QR-кода" - -#: src/js/services/bwcError.js:113 -msgid "Incorrect network address" -msgstr "" - -#: src/js/controllers/confirm.js:112 -#: src/js/controllers/confirm.js:275 -#: src/js/services/bwcError.js:44 -msgid "Insufficient funds" -msgstr "Недостаточно средств" - -#: src/js/controllers/topup.js:164 -#: src/js/controllers/topup.js:176 -#: src/js/services/bwcError.js:71 -msgid "Insufficient funds for fee" -msgstr "Недостаточно средств на комиссию" - -#: www/views/includes/walletHistory.html:49 -msgid "Invalid" -msgstr "Недействительно" - -#: src/js/controllers/buyAmazon.js:136 -#: src/js/controllers/topup.js:114 -msgid "Invalid URL" -msgstr "" - -#: src/js/controllers/create.js:175 -#: src/js/controllers/import.js:327 -#: src/js/controllers/join.js:142 -msgid "Invalid account number" -msgstr "Недопустимый номер учётной записи" - -#: src/js/services/bwcError.js:119 -msgid "Invalid address" -msgstr "Неверный адрес" - -#: src/js/controllers/tabsController.js:7 -msgid "Invalid data" -msgstr "Недопустимые данные" - -#: src/js/controllers/create.js:155 -#: src/js/controllers/import.js:249 -#: src/js/controllers/join.js:121 -msgid "Invalid derivation path" -msgstr "Недействительный путь деривации" - -#: src/js/controllers/copayers.js:90 -msgid "Invitation to share a {{appName}} Wallet" -msgstr "Приглашение присоединиться к кошельку {{appName}}" - -#: www/views/buyAmazon.html:49 -#: www/views/topup.html:56 -msgid "Invoice Fee" -msgstr "" - -#: src/js/controllers/feedback/send.js:79 -msgid "Is there anything we could do better?" -msgstr "Есть ли что-то, что мы могли бы сделать лучше?" - -#: www/views/backup.html:47 -msgid "Is this correct?" -msgstr "Правильно?" - -#: www/views/onboarding/collectEmail.html:22 -msgid "Is this email address correct?" -msgstr "Это правильный email?" - -#: www/views/addresses.html:25 -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 -msgid "It's important that you write your backup phrase down correctly. If something happens to your wallet, you'll need this backup to recover your money. Please review your backup and try again." -msgstr "Крайне важно правильно записать ваше ключевое словосочетание. Оно понадобится для восстановления доступа к деньгам, если что-то случится с вашим кошельком. Пожалуйста, перепроверьте записанное и попробуйте ещё раз." - -#: www/views/join.html:148 -msgid "Join" -msgstr "Присоединиться" - -#: src/js/controllers/copayers.js:85 -msgid "Join my {{appName}} Wallet. Here is the invitation code: {{secret}} You can download {{appName}} for your phone or desktop at {{appUrl}}" -msgstr "Присоединяйся к моему кошельку {{appName}}. Код приглашения: {{secret}} Ты можешь загрузить {{appName}} для своего телефона или настольного компьютера на сайте {{appUrl}}" - -#: www/views/add.html:30 -#: www/views/join.html:5 -msgid "Join shared wallet" -msgstr "Присоединиться к общему кошельку" - -#: src/js/services/onGoingProcess.js:25 -msgid "Joining Wallet..." -msgstr "Присоединение к кошельку..." - -#: www/views/onboarding/tour.html:22 -msgid "Just scan the code to pay." -msgstr "Для совершения оплаты достаточно отсканировать QR-код." - -#: src/js/services/bwcError.js:116 -msgid "Key already associated with an existing wallet" -msgstr "Ключ уже связан с существующим кошельком" - -#: www/views/preferencesLanguage.html:4 -#: www/views/tab-settings.html:53 -msgid "Language" -msgstr "Язык" - -#: www/views/bitpayCard.html:61 -msgid "Last Month" -msgstr "Прошедший месяц" - -#: www/views/backup.html:36 -msgid "Let's verify your backup phrase." -msgstr "Давайте проверим ваше ключевое словосочетание." - -#: www/views/addresses.html:45 -#: www/views/allAddresses.html:14 -msgid "Loading addresses..." -msgstr "Загрузка адресов..." - -#: src/js/services/onGoingProcess.js:35 -msgid "Loading transaction info..." -msgstr "Загрузка транзакции..." - -#: www/views/tab-settings.html:95 -msgid "Lock App" -msgstr "Заблокировать приложение" - -#: src/js/controllers/lockSetup.js:23 -msgid "Lock by Fingerprint" -msgstr "Заблокировать отпечатком пальца" - -#: src/js/controllers/lockSetup.js:14 -msgid "Lock by PIN" -msgstr "Заблокировать PIN-ом" - -#: 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 "Действует блокировка. Пожалуйста, подождите, чтобы предложить новый платёж" - -#: src/js/services/bwcError.js:89 -msgid "Locktime in effect. Please wait to remove this spend proposal" -msgstr "Действует блокировка. Пожалуйста, подождите, чтобы удалить предложенный платёж" - -#: www/views/modals/bitpay-card-confirmation.html:14 -msgid "Log out" -msgstr "" - -#: www/views/addresses.html:87 -msgid "Low amount inputs" -msgstr "" - -#: www/views/includes/walletHistory.html:27 -msgid "Low fees" -msgstr "Маленькая комиссия" - -#: www/views/onboarding/tour.html:38 -msgid "Makes sense" -msgstr "Вполне разумно" - -#: src/js/controllers/modals/search.js:61 -msgid "Matches:" -msgstr "Совпадения:" - -#: www/views/includes/copayers.html:4 -#: www/views/preferencesInformation.html:79 -msgid "Me" -msgstr "Я" - -#: src/js/controllers/feedback/rateCard.js:32 -msgid "Meh - it's alright" -msgstr "Ну так, терпимо" - -#: src/js/controllers/tx-details.js:148 -#: www/views/modals/paypro.html:48 -#: www/views/modals/txp-details.html:95 -#: www/views/tx-details.html:74 -msgid "Memo" -msgstr "Памятка" - -#: www/views/modals/txp-details.html:133 -msgid "Merchant Message" -msgstr "Сообщение от продавца" - -#: src/js/services/bwcError.js:134 -msgid "Missing parameter" -msgstr "Недостающий параметр" - -#: src/js/services/bwcError.js:32 -msgid "Missing private keys to sign" -msgstr "Отсутствуют закрытые ключи для подписи" - -#: www/views/preferences.html:60 -#: www/views/preferencesAdvanced.html:3 -msgid "More Options" -msgstr "Дополнительные параметры" - -#: www/views/includes/walletHistory.html:47 -#: www/views/tx-details.html:19 -msgid "Moved" -msgstr "Перемещено" - -#: src/js/controllers/tx-details.js:114 -msgid "Moved Funds" -msgstr "Перемещённые средства" - -#: www/views/modals/txp-details.html:57 -msgid "Multiple recipients" -msgstr "Несколько получателей" - -#: www/views/tab-import-phrase.html:8 -msgid "NOTE: To import a wallet from a 3rd party software, please go to Add Wallet > Create Wallet, and specify the Recovery Phrase there." -msgstr "Примечание: для импортирования кошелька из другой программы откройте \"Добавить кошелёк\" > \"Создать личный кошелёк\", и укажите там ключевое словосочетание." - -#: www/views/addressbook.add.html:21 -#: www/views/addressbook.view.html:18 -#: www/views/preferences.html:15 -#: www/views/preferencesAlias.html:17 -msgid "Name" -msgstr "Название" - -#: www/views/buyAmazon.html:55 -#: www/views/topup.html:63 -msgid "Network Fee" -msgstr "" - -#: src/js/services/bwcError.js:47 -msgid "Network error" -msgstr "Ошибка сети" - -#: www/views/includes/walletActivity.html:43 -msgid "New Proposal" -msgstr "Предложить платёж" - -#: src/js/controllers/addresses.js:131 -msgid "New address could not be generated. Please try again." -msgstr "Адрес не может быть сгенерирован. Попробуйте позже." - -#: www/views/add.html:14 -msgid "New personal wallet" -msgstr "Новый личный кошелёк" - -#: www/views/includes/nextSteps.html:3 -msgid "Next steps" -msgstr "Дальнейшие шаги" - -#: www/views/tab-receive.html:16 -msgid "No Wallet" -msgstr "Нет кошельков" - -#: src/js/controllers/buyAmazon.js:114 -msgid "No access key defined" -msgstr "" - -#: www/views/onboarding/backupRequest.html:5 -msgid "No backup, no bitcoin." -msgstr "Нет резервной копии - нет биткойнов." - -#: www/views/addressbook.html:19 -msgid "No contacts yet" -msgstr "Нет контактов" - -#: www/views/preferencesExternal.html:12 -msgid "No hardware information available." -msgstr "Информация об аппаратном обеспечении отсутствует." - -#: www/views/tab-import-hardware.html:3 -msgid "No hardware wallets supported on this device" -msgstr "Аппаратные кошельки не поддерживаются на этом устройстве" - -#: www/views/proposals.html:24 -msgid "No pending proposals" -msgstr "Нет предложенных платежей" - -#: www/views/activity.html:25 -msgid "No recent transactions" -msgstr "Нет недавних транзакций" - -#: src/js/controllers/buyAmazon.js:43 -#: src/js/controllers/topup.js:46 -msgid "No signing proposal: No private key" -msgstr "" - -#: www/views/walletDetails.html:193 -msgid "No transactions yet" -msgstr "Транзакций пока не было" - -#: src/js/controllers/preferencesDelete.js:15 -msgid "No wallet found" -msgstr "Кошельки не обнаружены" - -#: src/js/controllers/preferencesDelete.js:8 -msgid "No wallet selected" -msgstr "Не выбран кошелёк" - -#: src/js/controllers/buyAmazon.js:298 -#: src/js/controllers/confirm.js:83 -#: src/js/controllers/topup.js:263 -msgid "No wallets available" -msgstr "" - -#: www/views/paperWallet.html:47 -msgid "No wallets available to receive funds" -msgstr "Некуда перевести средства" - -#: src/js/services/feeService.js:12 -msgid "Normal" -msgstr "Обычная" - -#: src/js/services/bwcError.js:80 -msgid "Not authorized" -msgstr "Не авторизован" - -#: src/js/controllers/confirm.js:276 -msgid "Not enough funds for fee" -msgstr "Недостаточно средств для уплаты комиссии" - -#: www/views/onboarding/tour.html:50 -msgid "Not even BitPay can access it." -msgstr "BitPay не сможет получить доступ самостоятельно." - -#: src/js/controllers/paperWallet.js:47 -msgid "Not funds found" -msgstr "Cредства не обнаружены" - -#: www/views/feedback/rateApp.html:3 -#: www/views/onboarding/notifications.html:8 -msgid "Not now" -msgstr "Потом" - -#: www/views/includes/output.html:15 -msgid "Note" -msgstr "Примечание" - -#: www/views/modals/wallets.html:25 -msgid "Notice: only 1-1 (single signature) wallets can be used for sell bitcoin" -msgstr "Внимание: только 1-1 кошельки (требующие одной подписи) могут быть использованы для продажи биткойн" - -#: www/views/preferencesNotifications.html:3 -#: www/views/tab-settings.html:46 -msgid "Notifications" -msgstr "Уведомления" - -#: www/views/onboarding/collectEmail.html:9 -msgid "Notifications by email" -msgstr "" - -#: www/views/tx-details.html:117 -msgid "Notify me if confirmed" -msgstr "" - -#: www/views/preferencesNotifications.html:24 -msgid "Notify me when transactions are confirmed" -msgstr "" - -#: www/views/includes/backupNeededPopup.html:8 -msgid "Now is a good time to backup your wallet. If this device is lost, it is impossible to access your funds without a backup." -msgstr "Если это устройство окажется утеряно, без резервной копии будет невозможно восстановить доступ к деньгам. Самое время создать резервную копию." - -#: www/views/backupWarning.html:11 -msgid "Now is a perfect time to assess your surroundings. Nearby windows? Hidden cameras? Shoulder-spies?" -msgstr "Самое время оценить окружение. Окна поблизости? Скрытые камеры? Плечешпионы?" - -#: src/js/controllers/buyAmazon.js:310 -#: src/js/controllers/topup.js:284 -#: src/js/services/popupService.js:16 -#: src/js/services/popupService.js:52 -#: src/js/services/popupService.js:61 -#: src/js/services/popupService.js:72 -#: www/views/modals/chooseFeeLevel.html:6 -msgid "OK" -msgstr "ХОРОШО" - -#: www/views/modals/tx-status.html:12 -#: www/views/modals/tx-status.html:24 -#: www/views/modals/tx-status.html:36 -#: www/views/modals/tx-status.html:46 -msgid "OKAY" -msgstr "ХОРОШО" - -#: www/views/modals/terms.html:15 -msgid "Official English Disclaimer" -msgstr "Официальный оригинал" - -#: src/js/controllers/feedback/send.js:64 -msgid "Oh no!" -msgstr "О, нет!" - -#: www/views/tab-home.html:39 -msgid "On this screen you can see all your wallets, accounts, and assets." -msgstr "На этой вкладке вы можете видеть все ваши кошельки, учетные записи и активы." - -#: src/js/controllers/bitpayCard.js:113 -#: src/js/controllers/tab-settings.js:47 -msgid "Open" -msgstr "Открыть" - -#: src/js/controllers/preferencesLanguage.js:13 -msgid "Open Crowdin" -msgstr "Открыть Crowdin" - -#: src/js/controllers/preferencesAbout.js:15 -msgid "Open GitHub" -msgstr "Открытые GitHub" - -#: src/js/controllers/preferencesAbout.js:13 -msgid "Open GitHub Project" -msgstr "Откройте проект GitHub" - -#: src/js/controllers/bitpayCard.js:123 -#: src/js/controllers/tx-details.js:175 -msgid "Open Insight" -msgstr "Открыть Insight" - -#: www/views/tab-scan.html:22 -msgid "Open Settings" -msgstr "Открыть Параметры" - -#: src/js/controllers/preferencesLanguage.js:11 -msgid "Open Translation Community" -msgstr "Редактировать перевод" - -#: src/js/controllers/onboarding/terms.js:22 -msgid "Open Website" -msgstr "Перейти на сайт" - -#: www/views/tab-receive.html:27 -msgid "Open wallet" -msgstr "Открыть кошелёк" - -#: www/views/includes/incomingDataMenu.html:19 -msgid "Open website" -msgstr "" - -#: www/views/bitpayCardIntro.html:34 -msgid "Order the BitPay Card" -msgstr "Заказать BitPay Card" - -#: www/views/join.html:102 -#: www/views/join.html:93 -#: www/views/tab-create-personal.html:67 -#: www/views/tab-create-personal.html:75 -#: www/views/tab-create-shared.html:104 -#: www/views/tab-create-shared.html:96 -#: www/views/tab-import-file.html:18 -#: www/views/tab-import-phrase.html:38 -msgid "Password" -msgstr "Пароль" - -#: src/js/controllers/import.js:83 -msgid "Password required. Make sure to enter your password in advanced options" -msgstr "Необходим пароль. Убедитесь, что вы ввели ваш пароль в дополнительных настройках" - -#: www/views/join.html:33 -msgid "Paste invitation here" -msgstr "Вставьте приглашение сюда" - -#: www/views/tab-import-file.html:13 -msgid "Paste the backup plain text code" -msgstr "Вставьте код резервной копии обычным текстом" - -#: www/views/bitpayCardIntro.html:28 -msgid "Pay 0% fees to turn bitcoin into dollars." -msgstr "Платите нулевую комиссию за конвертацию биткойн в доллары США." - -#: www/views/modals/paypro.html:18 -msgid "Pay To" -msgstr "Отправить платёж" - -#: src/js/controllers/modals/txpDetails.js:45 -#: www/views/modals/tx-status.html:33 -msgid "Payment Accepted" -msgstr "Платёж принят" - -#: www/views/confirm.html:25 -msgid "Payment Expires:" -msgstr "Платёж истекает:" - -#: www/views/modals/txp-details.html:6 -msgid "Payment Proposal" -msgstr "Предложенный платёж" - -#: www/views/modals/tx-status.html:21 -msgid "Payment Proposal Created" -msgstr "Платёж предложен" - -#: www/views/tab-home.html:46 -msgid "Payment Proposals" -msgstr "Предложенные платежи" - -#: src/js/services/payproService.js:32 -msgid "Payment Protocol Invalid" -msgstr "Недействительный протокол оплаты" - -#: src/js/services/payproService.js:18 -msgid "Payment Protocol not supported on Chrome App" -msgstr "Платёжный протокол не поддерживается в приложении Chrome" - -#: www/views/includes/walletActivity.html:20 -msgid "Payment Received" -msgstr "Платёж получен" - -#: www/views/modals/tx-status.html:43 -#: www/views/modals/txp-details.html:43 -msgid "Payment Rejected" -msgstr "Платёж отклонён" - -#: src/js/controllers/modals/txpDetails.js:42 -#: www/views/confirm.html:126 -#: www/views/includes/walletActivity.html:11 -#: www/views/modals/txp-details.html:42 -msgid "Payment Sent" -msgstr "Платёж отправлен" - -#: www/views/modals/txp-details.html:32 -msgid "Payment accepted, but not yet broadcasted" -msgstr "Платёж принят, но пока не отправлен" - -#: www/views/modals/txp-details.html:40 -msgid "Payment accepted. It will be broadcasted by Glidera. In case there is a problem, it can be deleted 6 hours after it was created." -msgstr "Платёж принят и будет отправлен Glidera. В случае проблем он может быть удалён спустя шесть часов после создания." - -#: www/views/modals/txp-details.html:109 -msgid "Payment details" -msgstr "Детали платежа" - -#: www/views/modals/paypro.html:6 -msgid "Payment request" -msgstr "Запрос платежа" - -#: www/views/proposals.html:4 -msgid "Pending Proposals" -msgstr "Рассматриваемые платежи" - -#: www/views/preferencesDeleteWallet.html:13 -msgid "Permanently delete this wallet." -msgstr "Навсегда удалить этот кошелёк." - -#: src/js/services/profileService.js:388 -msgid "Personal Wallet" -msgstr "Личный кошелёк" - -#: www/views/backup.html:18 -msgid "Please carefully write down this phrase." -msgstr "Внимательно запишите ключевое словосочетание." - -#: www/views/tab-scan.html:20 -msgid "Please connect a camera to get started." -msgstr "Чтобы начать, подключите камеру." - -#: src/js/controllers/import.js:260 -msgid "Please enter the recovery phrase" -msgstr "Введите ключевое словосочетание" - -#: src/js/controllers/create.js:168 -#: src/js/controllers/join.js:135 -msgid "Please enter the wallet recovery phrase" -msgstr "Введите ключевое словосочетание кошелька" - -#: www/views/modals/pin.html:9 -msgid "Please enter your PIN" -msgstr "Пожалуйста, введите Ваш PIN-код" - -#: www/views/backup.html:46 -msgid "Please tap each word in the correct order." -msgstr "Тапните каждое слово в правильном порядке." - -#: src/js/services/bwcError.js:101 -msgid "Please upgrade Copay to perform this action" -msgstr "Пожалуйста, обновите Copay для выполнения этого действия" - -#: src/js/controllers/import.js:222 -msgid "Please, select your backup file" -msgstr "Пожалуйста, выберите ваш файл резервной копии" - -#: www/views/bitpayCard.html:81 -msgid "Pre-Auth Holds" -msgstr "" - -#: www/views/tab-settings.html:40 -msgid "Preferences" -msgstr "Параметры" - -#: src/js/services/onGoingProcess.js:38 -msgid "Preparing addresses..." -msgstr "Подготовка адресов..." - -#: src/js/controllers/export.js:198 -msgid "Preparing backup..." -msgstr "Подготовка резервной копии..." - -#: src/js/routes.js:1188 -msgid "Press again to exit" -msgstr "Нажмите еще раз для выхода" - -#: src/js/services/feeService.js:11 -msgid "Priority" -msgstr "Приоритетная" - -#: www/views/includes/incomingDataMenu.html:80 -msgid "Private Key" -msgstr "" - -#: src/js/controllers/paperWallet.js:137 -msgid "Private key encrypted. Enter password" -msgstr "Приватный ключ зашифрован. Введите пароль" - -#: src/js/services/bwcError.js:35 -msgid "Private key is encrypted, cannot sign" -msgstr "Закрытый ключ зашифрован, не удалось подписать" - -#: www/views/includes/walletActivity.html:51 -msgid "Proposal Accepted" -msgstr "Платёж принят" - -#: src/js/controllers/modals/txpDetails.js:55 -#: src/js/controllers/tx-details.js:61 -#: www/views/confirm.html:127 -msgid "Proposal Created" -msgstr "Платёж создан" - -#: www/views/includes/walletActivity.html:27 -msgid "Proposal Deleted" -msgstr "Платёж удалён" - -#: www/views/includes/walletActivity.html:35 -msgid "Proposal Rejected" -msgstr "Платёж отклонён" - -#: www/views/walletDetails.html:178 -msgid "Proposals" -msgstr "Предложенные платежи" - -#: src/js/controllers/buyAmazon.js:281 -msgid "Purchase Amount is limited to {{limitPerDay}} {{currency}} per day" -msgstr "" - -#: www/views/onboarding/notifications.html:3 -msgid "Push Notifications" -msgstr "Push-уведомления" - -#: www/views/preferencesNotifications.html:17 -msgid "Push notifications for {{appName}} are currently disabled. Enable them in the Settings app." -msgstr "Push-уведомления для {{appName}} в настоящее время отключены. Включите их в Параметрах." - -#: www/views/export.html:17 -msgid "QR Code" -msgstr "QR-код" - -#: www/views/onboarding/disclaimer.html:13 -msgid "Quick review!" -msgstr "Быстрый просмотр!" - -#: src/js/controllers/create.js:79 -#: src/js/controllers/join.js:65 -msgid "Random" -msgstr "Случайное" - -#: www/views/feedback/rateApp.html:14 -msgid "Rate on the app store" -msgstr "Оценить в магазине приложений" - -#: www/views/addresses.html:52 -msgid "Read less" -msgstr "Показать меньше" - -#: www/views/addresses.html:51 -msgid "Read more" -msgstr "Показать больше" - -#: www/views/tab-receive.html:3 -#: www/views/tabs.html:7 -msgid "Receive" -msgstr "Получить" - -#: www/views/customAmount.html:46 -msgid "Receive in" -msgstr "" - -#: www/views/includes/walletHistory.html:24 -#: www/views/tx-details.html:18 -msgid "Received" -msgstr "Получено" - -#: src/js/controllers/tx-details.js:113 -msgid "Received Funds" -msgstr "Полученные средства" - -#: www/views/includes/walletHistory.html:57 -#: www/views/tx-details.html:24 -msgid "Receiving" -msgstr "Получение" - -#: www/views/bitpayCard.html:60 -#: www/views/includes/walletHistory.html:3 -msgid "Recent" -msgstr "Недавние" - -#: www/views/advancedSettings.html:20 -msgid "Recent Transaction Card" -msgstr "Недавние транзакции" - -#: www/views/activity.html:4 -#: www/views/tab-home.html:58 -msgid "Recent Transactions" -msgstr "Недавние транзакции" - -#: www/views/amount.html:18 -#: www/views/tab-send.html:9 -msgid "Recipient" -msgstr "Получатель" - -#: www/views/modals/txp-details.html:62 -msgid "Recipients" -msgstr "Получатели" - -#: www/views/import.html:12 -msgid "Recovery phrase" -msgstr "Ключевое словосочетание" - -#: www/views/walletDetails.html:117 -#: www/views/walletDetails.html:36 -msgid "Recreate" -msgstr "Создать заново" - -#: src/js/services/onGoingProcess.js:26 -msgid "Recreating Wallet..." -msgstr "Воссоздаю кошелёк..." - -#: src/js/controllers/modals/txpDetails.js:57 -#: src/js/controllers/tx-details.js:63 -msgid "Rejected" -msgstr "Отклонён" - -#: src/js/services/onGoingProcess.js:27 -msgid "Rejecting payment proposal" -msgstr "Отклонение платежа" - -#: www/views/preferencesAbout.html:9 -msgid "Release information" -msgstr "Информация о выпуске" - -#: www/views/addressbook.view.html:36 -msgid "Remove" -msgstr "" - -#: src/js/controllers/preferencesBitpayServices.js:7 -msgid "Remove BitPay Account?" -msgstr "Удалить BitPay аккаунт?" - -#: src/js/controllers/preferencesBitpayServices.js:19 -msgid "Remove BitPay Card?" -msgstr "Удалить BitPay карту?" - -#: src/js/controllers/preferencesBitpayServices.js:8 -msgid "Removing your BitPay account will remove all associated BitPay account data from this device. Are you sure you would like to remove your BitPay Account ({{email}}) from this device?" -msgstr "Удаление учетной записи BitPay удалит все связанные данные учетной записи BitPay с этого устройства. Вы уверены, что вы хотели бы удалить свой BitPay аккаунт ({{email}}) с этого устройства?" - -#: www/views/join.html:113 -#: www/views/join.html:121 -#: www/views/tab-create-personal.html:84 -#: www/views/tab-create-personal.html:92 -#: www/views/tab-create-shared.html:113 -#: www/views/tab-create-shared.html:121 -#: www/views/tab-export-file.html:17 -msgid "Repeat password" -msgstr "Повторите пароль" - -#: www/views/tab-export-file.html:16 -msgid "Repeat the password" -msgstr "Повторите пароль" - -#: www/views/preferences.html:55 -msgid "Request Fingerprint" -msgstr "Запрос отпечатка пальца" - -#: www/views/tab-receive.html:45 -msgid "Request Specific amount" -msgstr "Запросить определенную сумму" - -#: www/views/preferences.html:42 -msgid "Request Spending Password" -msgstr "Запрашивать платёжный пароль" - -#: www/views/tab-create-shared.html:42 -msgid "Required number of signatures" -msgstr "Требуемое число подписей" - -#: www/views/onboarding/welcome.html:9 -msgid "Restore from backup" -msgstr "Восстановить из резервной копии" - -#: src/js/services/onGoingProcess.js:29 -msgid "Retrieving inputs information" -msgstr "Получение информации о входах" - -#: src/js/controllers/onboarding/tour.js:56 -msgid "Retry" -msgstr "Повторить попытку" - -#: www/views/tab-scan.html:23 -msgid "Retry Camera" -msgstr "Проверить камеру" - -#: www/views/addressbook.add.html:56 -#: www/views/includes/note.html:9 -#: www/views/preferencesAlias.html:21 -#: www/views/preferencesBwsUrl.html:25 -#: www/views/preferencesNotifications.html:46 -msgid "Save" -msgstr "Сохранить" - -#: www/views/tab-scan.html:3 -#: www/views/tabs.html:11 -msgid "Scan" -msgstr "Сканировать" - -#: www/views/tab-scan.html:15 -msgid "Scan QR Codes" -msgstr "Сканирование QR-кодов" - -#: www/views/addresses.html:31 -msgid "Scan addresses for funds" -msgstr "Просканировать адреса для обнаружения средств" - -#: www/views/modals/fingerprintCheck.html:11 -msgid "Scan again" -msgstr "" - -#: src/js/services/fingerprintService.js:56 -msgid "Scan your fingerprint please" -msgstr "Пожалуйста, отсканируйте ваш отпечаток пальца" - -#: src/js/services/onGoingProcess.js:30 -msgid "Scanning Wallet funds..." -msgstr "Сканирование адресов кошелька..." - -#: www/views/includes/screenshotWarningModal.html:7 -msgid "Screenshots are not secure" -msgstr "Скриншоты не безопасны" - -#: www/views/modals/search.html:6 -msgid "Search Transactions" -msgstr "Поиск транзакций" - -#: www/views/tab-send.html:13 -msgid "Search or enter bitcoin address" -msgstr "Найти или ввести биткойн-адрес" - -#: www/views/modals/search.html:16 -msgid "Search transactions" -msgstr "Поиск транзакций" - -#: www/views/preferencesAltCurrency.html:14 -msgid "Search your currency" -msgstr "Найти вашу валюту" - -#: www/views/preferences.html:30 -msgid "Security" -msgstr "Безопасность" - -#: www/views/tab-import-file.html:7 -msgid "Select a backup file" -msgstr "Выберите файл резервной копии" - -#: src/js/controllers/tab-receive.js:133 -msgid "Select a wallet" -msgstr "Выберите кошелёк" - -#: www/views/modals/paypro.html:38 -msgid "Self-signed Certificate" -msgstr "Самозаверенные сертификат" - -#: src/js/services/onGoingProcess.js:41 -msgid "Selling Bitcoin..." -msgstr "Продажа биткойн..." - -#: www/views/feedback/send.html:13 -#: www/views/feedback/send.html:43 -#: www/views/tab-send.html:3 -#: www/views/tabs.html:15 -msgid "Send" -msgstr "Отправить" - -#: www/views/feedback/send.html:3 -#: www/views/tab-settings.html:29 -msgid "Send Feedback" -msgstr "Отправить отзыв" - -#: www/views/addressbook.view.html:31 -msgid "Send Money" -msgstr "Отправить деньги" - -#: www/views/allAddresses.html:19 -msgid "Send addresses by email" -msgstr "Отправить адреса по email" - -#: www/views/preferencesLogs.html:13 -#: www/views/tab-export-file.html:82 -msgid "Send by email" -msgstr "Отправить на email" - -#: src/js/controllers/confirm.js:151 -msgid "Send from" -msgstr "Отправить от" - -#: www/views/includes/itemSelector.html:8 -msgid "Send max amount" -msgstr "Отправить макс. сумму" - -#: www/views/includes/incomingDataMenu.html:46 -msgid "Send payment to this address" -msgstr "" - -#: www/views/feedback/rateApp.html:17 -msgid "Send us feedback instead" -msgstr "Или отправьте нам отзыв" - -#: www/views/confirm.html:15 -#: www/views/includes/txp.html:12 -#: www/views/modals/txp-details.html:19 -#: www/views/tx-details.html:23 -msgid "Sending" -msgstr "Отправка" - -#: src/js/services/onGoingProcess.js:39 -msgid "Sending 2FA code..." -msgstr "Отправка второго фактора..." - -#: src/js/services/onGoingProcess.js:36 -msgid "Sending feedback..." -msgstr "Отправка отзыва..." - -#: www/views/confirm.html:16 -msgid "Sending maximum amount" -msgstr "Отправляю максимальную сумму" - -#: src/js/services/onGoingProcess.js:31 -msgid "Sending transaction" -msgstr "Отправка транзакции" - -#: src/js/controllers/confirm.js:490 -msgid "Sending {{amountStr}} from your {{name}} wallet" -msgstr "Отправка {{amountStr}} из вашего кошелька {{name}}" - -#: www/views/includes/walletHistory.html:42 -#: www/views/modals/tx-status.html:9 -#: www/views/topup.html:100 -#: www/views/tx-details.html:17 -msgid "Sent" -msgstr "Отправлено" - -#: src/js/controllers/tx-details.js:112 -msgid "Sent Funds" -msgstr "Отправленные средства" - -#: src/js/services/bwcError.js:38 -msgid "Server response could not be verified" -msgstr "Ответ сервера не может быть проверен" - -#: src/js/controllers/buyAmazon.js:96 -msgid "Service not available" -msgstr "" - -#: www/views/includes/homeIntegrations.html:3 -msgid "Services" -msgstr "Службы" - -#: www/views/preferencesLogs.html:3 -msgid "Session Log" -msgstr "Журнал сеанса" - -#: www/views/preferencesAbout.html:35 -msgid "Session log" -msgstr "Журнал сеанса" - -#: www/views/tab-export-file.html:10 -msgid "Set up a password" -msgstr "Задайте пароль" - -#: src/js/controllers/preferencesFee.js:84 -msgid "Set your own fee in satoshis/byte" -msgstr "" - -#: www/views/tab-settings.html:3 -#: www/views/tabs.html:19 -msgid "Settings" -msgstr "Параметры" - -#: www/views/feedback/complete.html:17 -#: www/views/feedback/complete.html:26 -msgid "Share the love by inviting your friends." -msgstr "Поделитесь любовью и пригласите друзей." - -#: www/views/copayers.html:20 -msgid "Share this invitation with your copayers" -msgstr "Отправьте приглашение совладельцам кошелька" - -#: src/js/controllers/feedback/complete.js:5 -#: www/views/tab-settings.html:36 -msgid "Share {{appName}}" -msgstr "Поделиться {{appName}}" - -#: www/views/tab-import-hardware.html:24 -msgid "Shared Wallet" -msgstr "Общий кошелёк" - -#: www/views/preferencesExternal.html:34 -msgid "Show Recovery Phrase" -msgstr "Показать фразу для восстановления" - -#: www/views/tab-receive.html:34 -msgid "Show address" -msgstr "Показать адрес" - -#: www/views/join.html:45 -#: www/views/tab-create-personal.html:25 -#: www/views/tab-create-shared.html:54 -#: www/views/tab-export-file.html:24 -#: www/views/tab-import-file.html:27 -#: www/views/tab-import-hardware.html:30 -#: www/views/tab-import-phrase.html:32 -msgid "Show advanced options" -msgstr "Показать дополнительные параметры" - -#: www/views/tab-send.html:37 -msgid "Show bitcoin address" -msgstr "Показать биткойн-адрес" - -#: www/views/tab-send.html:59 -msgid "Show more" -msgstr "Показать еще" - -#: src/js/services/bwcError.js:104 -msgid "Signatures rejected by server" -msgstr "Подписи отклонены сервером" - -#: src/js/services/onGoingProcess.js:32 -msgid "Signing transaction" -msgstr "Подписание транзакции" - -#: 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 "Так как кошелёк хранится только у вас, вам необходимо записать ключевую фразу на случай удаления {{appName}}." - -#: www/views/tab-create-personal.html:120 -#: www/views/tab-create-shared.html:149 -msgid "Single Address Wallet" -msgstr "Кошелёк с одним адресом" - -#: www/views/onboarding/collectEmail.html:40 -#: www/views/onboarding/tour.html:11 -msgid "Skip" -msgstr "Пропустить" - -#: src/js/controllers/modals/txpDetails.js:34 -msgid "Slide" -msgstr "Сдвинуть" - -#: www/views/buyAmazon.html:96 -msgid "Slide to buy" -msgstr "" - -#: src/js/controllers/create.js:83 -#: src/js/controllers/join.js:68 -msgid "Specify Recovery Phrase..." -msgstr "Указать ключевое словосочетание..." - -#: src/js/services/bwcError.js:92 -msgid "Spend proposal is not accepted" -msgstr "Платёж не принят" - -#: src/js/services/bwcError.js:95 -msgid "Spend proposal not found" -msgstr "Платёж не найден" - -#: src/js/services/bwcError.js:137 -msgid "Spending Password needed" -msgstr "Необходим платёжный пароль" - -#: www/views/walletDetails.html:162 -msgid "Spending this balance will need significant Bitcoin network fees" -msgstr "" - -#: www/views/tab-send.html:28 -msgid "Start sending bitcoin" -msgstr "Начать отправку bitcoin" - -#: www/views/lockSetup.html:3 -msgid "Startup Lock" -msgstr "Блокировка при запуске" - -#: www/views/topup.html:101 -msgid "Success" -msgstr "" - -#: src/js/services/feeService.js:14 -msgid "Super Economy" -msgstr "Очень экономичная" - -#: www/views/paperWallet.html:7 -msgid "Sweep" -msgstr "Считать" - -#: www/views/includes/incomingDataMenu.html:89 -#: www/views/paperWallet.html:3 -msgid "Sweep paper wallet" -msgstr "Пополнить с бумажного кошелька" - -#: src/js/services/onGoingProcess.js:33 -msgid "Sweeping Wallet..." -msgstr "Считывание кошелька..." - -#: www/views/preferencesDeleteWallet.html:16 -msgid "THIS ACTION CANNOT BE REVERSED" -msgstr "ЭТО ДЕЙСТВИЕ НЕ МОЖЕТ БЫТЬ ОТМЕНЕНО" - -#: www/views/onboarding/welcome.html:5 -msgid "Take control of your money,
get started with bitcoin." -msgstr "Возьмите ваши финансы под контроль,
начните пользоваться Биткойн." - -#: www/views/walletDetails.html:140 -#: www/views/walletDetails.html:60 -msgid "Tap and hold to show" -msgstr "Коснитесь и удерживайте, чтобы показать" - -#: www/views/walletDetails.html:112 -#: www/views/walletDetails.html:31 -msgid "Tap to retry" -msgstr "Повторить" - -#: www/views/termsOfUse.html:3 -msgid "Terms Of Use" -msgstr "Условия использования" - -#: www/views/modals/terms.html:3 -#: www/views/onboarding/disclaimer.html:29 -#: www/views/onboarding/disclaimer.html:43 -#: www/views/preferencesAbout.html:30 -msgid "Terms of Use" -msgstr "Условия использования" - -#: www/views/tab-create-personal.html:116 -#: www/views/tab-import-phrase.html:65 -msgid "Testnet" -msgstr "Testnet" - -#: www/views/includes/incomingDataMenu.html:61 -msgid "Text" -msgstr "" - -#: src/js/controllers/feedback/send.js:27 -#: src/js/controllers/feedback/send.js:76 -#: www/views/feedback/complete.html:20 -#: www/views/feedback/rateApp.html:4 -msgid "Thank you!" -msgstr "Спасибо!" - -#: src/js/controllers/feedback/send.js:72 -msgid "Thanks!" -msgstr "Спасибо!" - -#: src/js/controllers/feedback/send.js:73 -msgid "That's exciting to hear. We'd love to earn that fifth star from you – how could we improve your experience?" -msgstr "" - -#: src/js/services/ledger.js:152 -msgid "The Ledger Chrome application is not installed" -msgstr "Приложение Ledger для Chrome не установлено" - -#: 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 "Путь деривации" - -#: www/views/onboarding/tour.html:37 -msgid "The exchange rate changes with the market." -msgstr "" - -#: www/views/preferencesFee.html:12 -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:51 -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." -msgstr "Официальные Условия обслуживания на английском языке доступны на сайте BitPay." - -#: www/views/tab-import-phrase.html:4 -msgid "The password of the recovery phrase (if set)" -msgstr "Пароль ключевого словосочетания (если установлен)" - -#: src/js/services/walletService.js:1140 -msgid "The payment was created but could not be completed. Please try again from home screen" -msgstr "Платёж был создан, но не может быть завершен. Пожалуйста, вернитесь на вкладку Обзор и попробуйте снова" - -#: www/views/modals/txp-details.html:26 -msgid "The payment was removed by creator" -msgstr "Платёж был удалён его создателем" - -#: www/views/join.html:88 -#: www/views/tab-create-personal.html:61 -#: www/views/tab-create-shared.html:90 -#: www/views/tab-import-phrase.html:40 -msgid "The recovery phrase could require a password to be imported" -msgstr "Для импортирования ключевого словосочетания может потребоваться пароль" - -#: src/js/services/bwcError.js:56 -msgid "The request could not be understood by the server" -msgstr "Запрос не распознан сервером" - -#: www/views/addresses.html:52 -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 "" - -#: src/js/services/bwcError.js:98 -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:27 -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 "" - -#: www/views/tab-import-phrase.html:6 -msgid "The wallet service URL" -msgstr "Адрес сервера Bitcore" - -#: src/js/controllers/tab-home.js:38 -msgid "There is a new version of {{appName}} available" -msgstr "Доступна новая версия {{appName}}" - -#: src/js/controllers/import.js:213 -#: src/js/controllers/import.js:237 -#: src/js/controllers/import.js:317 -msgid "There is an error in the form" -msgstr "Ошибка в форме" - -#: src/js/controllers/feedback/send.js:61 -#: src/js/controllers/feedback/send.js:65 -msgid "There's obviously something we're doing wrong." -msgstr "" - -#: src/js/controllers/feedback/rateCard.js:38 -msgid "This app is fantastic!" -msgstr "Замечательное приложение!" - -#: www/views/onboarding/tour.html:47 -msgid "This app stores your bitcoin with cutting-edge security." -msgstr "" - -#: src/js/controllers/confirm.js:468 -msgid "This bitcoin payment request has expired." -msgstr "Этот запрос платежа истёк." - -#: www/views/join.html:130 -#: www/views/tab-create-personal.html:101 -#: www/views/tab-create-shared.html:130 -msgid "This password cannot be recovered. If the password is lost, there is no way you could recover your funds." -msgstr "" - -#: www/views/backup.html:24 -msgid "This recovery phrase was created with a password. To recover this wallet both the recovery phrase and password are needed." -msgstr "Это ключевое словосочетание было создано с паролем. Для восстановления кошелька необходимо ключевое словосочетание и его пароль." - -#: www/views/tx-details.html:93 -msgid "This transaction amount is too small compared to current Bitcoin network fees. Spending these funds will need a Bitcoin network fee cost comparable to the funds itself." -msgstr "" - -#: www/views/tx-details.html:89 -msgid "This transaction could take a long time to confirm or could be dropped due to the low fees set by the sender" -msgstr "" - -#: www/views/walletDetails.html:116 -#: 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 "Это кошелёк не зарегистрирован на данном сервере Bitcore. Вы можете воссоздать его из локальной информации." - -#: www/views/modals/txp-details.html:138 -#: www/views/tx-details.html:121 -msgid "Timeline" -msgstr "Хронология" - -#: www/views/confirm.html:31 -#: www/views/includes/output.html:2 -#: www/views/modals/txp-details.html:111 -#: www/views/modals/txp-details.html:53 -#: www/views/tx-details.html:41 -#: www/views/tx-details.html:53 -msgid "To" -msgstr "Кому" - -#: www/views/tab-send.html:32 -msgid "To get started, buy bitcoin or share your address. You can receive bitcoin from any wallet or service." -msgstr "Чтобы начать работу, купите биткойн или поделитесь вашим адресом. Вы можете получать биткойны из любого кошелька или сервиса." - -#: www/views/tab-send.html:33 -msgid "To get started, you'll need to create a bitcoin wallet and get some bitcoin." -msgstr "Чтобы начать работу, вам нужно создать кошелёк и получить биткойн." - -#: src/js/services/bitpayAccountService.js:73 -msgid "To {{reason}} you must first add your BitPay account - {{email}}" -msgstr "" - -#: src/js/services/onGoingProcess.js:48 -msgid "Top up in progress..." -msgstr "" - -#: src/js/controllers/topup.js:205 -msgid "Top up {{amountStr}} to debit card ({{cardLastNumber}})" -msgstr "" - -#: www/views/buyAmazon.html:61 -#: www/views/modals/wallet-balance.html:23 -#: www/views/topup.html:70 -msgid "Total" -msgstr "Баланс кошелька" - -#: www/views/walletDetails.html:185 -msgid "Total Locked Balance" -msgstr "Всего заблокировано средств" - -#: www/views/tab-create-shared.html:33 -msgid "Total number of copayers" -msgstr "Количество совладельцев" - -#: www/views/addresses.html:81 -msgid "Total wallet inputs" -msgstr "" - -#: src/js/services/fingerprintService.js:63 -#: src/js/services/fingerprintService.js:68 -msgid "Touch ID Failed" -msgstr "Ошибка Touch ID" - -#: src/js/controllers/tx-details.js:11 -msgid "Transaction" -msgstr "Транзакция" - -#: www/views/confirm.html:128 -msgid "Transaction Created" -msgstr "" - -#: www/views/preferencesAdvanced.html:29 -#: www/views/preferencesHistory.html:3 -msgid "Transaction History" -msgstr "История транзакций" - -#: src/js/services/bwcError.js:83 -msgid "Transaction already broadcasted" -msgstr "Транзакция уже отправлена" - -#: src/js/controllers/buyAmazon.js:306 -#: src/js/controllers/topup.js:279 -msgid "Transaction has not been created" -msgstr "" - -#: www/views/topup.html:104 -msgid "Transaction initiated" -msgstr "" - -#: src/js/controllers/tx-details.js:102 -msgid "Transaction not available at this time" -msgstr "Транзакция недоступна в данный момент" - -#: src/js/controllers/activity.js:45 -#: src/js/controllers/tab-home.js:174 -msgid "Transaction not found" -msgstr "Транзакция не обнаружена" - -#: www/views/modals/chooseFeeLevel.html:54 -msgid "Transactions without fee are not supported." -msgstr "" - -#: src/js/controllers/paperWallet.js:110 -msgid "Transfer to" -msgstr "" - -#: www/views/tab-send.html:67 -msgid "Transfer to Wallet" -msgstr "Перевод в кошелёк" - -#: www/views/modals/pin.html:13 -msgid "Try again in {{expires}}" -msgstr "Попробуйте снова через {{expires}}" - -#: www/views/bitpayCardIntro.html:18 -msgid "Turn bitcoin into dollars, swipe anywhere Visa® is accepted." -msgstr "Превращайте биткойны в доллары США - платите везде, где принимают карты Visa®." - -#: www/views/tab-import-phrase.html:17 -msgid "Type the Recovery Phrase (usually 12 words)" -msgstr "Введите ключевое словосочетание (обычно двенадцать слов)" - -#: src/js/controllers/backup.js:75 -msgid "Uh oh..." -msgstr "Упс..." - -#: www/views/tx-details.html:100 -msgid "Unconfirmed" -msgstr "Неподтверждено" - -#: www/views/preferencesUnit.html:4 -msgid "Unit" -msgstr "Единица измерения" - -#: www/views/walletDetails.html:179 -msgid "Unsent transactions" -msgstr "Неотправленные транзакции" - -#: www/views/addresses.html:39 -msgid "Unused Addresses" -msgstr "Неиспользованные адреса" - -#: www/views/addresses.html:50 -msgid "Unused Addresses Limit" -msgstr "Лимит неиспользованных адресов" - -#: src/js/controllers/tab-home.js:146 -msgid "Update Available" -msgstr "Доступно обновление" - -#: www/views/proposals.html:14 -msgid "Updating pending proposals. Please stand by" -msgstr "Обновление ожидающих рассмотрения платежей. Подождите, пожалуйста" - -#: www/views/walletDetails.html:211 -msgid "Updating transaction history. Please stand by." -msgstr "Обновление истории транзакций. Подождите, пожалуйста." - -#: www/views/activity.html:14 -msgid "Updating... Please stand by" -msgstr "Обновление... Подождите, пожалуйста" - -#: src/js/services/feeService.js:10 -msgid "Urgent" -msgstr "Срочно" - -#: www/views/advancedSettings.html:11 -msgid "Use Unconfirmed Funds" -msgstr "Использовать неподтверждённые средства" - -#: src/js/services/onGoingProcess.js:34 -msgid "Validating recovery phrase..." -msgstr "Проверка ключевого словосочетания..." - -#: www/views/modals/fingerprintCheck.html:4 -msgid "Verify your identity" -msgstr "" - -#: www/views/preferencesAbout.html:14 -#: www/views/preferencesExternal.html:25 -msgid "Version" -msgstr "Версия" - -#: www/views/tab-export-file.html:69 -msgid "View" -msgstr "Просмотреть" - -#: www/views/addresses.html:34 -msgid "View All Addresses" -msgstr "Просмотреть все адреса" - -#: src/js/controllers/onboarding/terms.js:20 -msgid "View Terms of Service" -msgstr "Посмотреть Условия обслуживания" - -#: src/js/controllers/bitpayCard.js:122 -#: src/js/controllers/tx-details.js:174 -msgid "View Transaction on Insight" -msgstr "Просмотреть транзакцию на Insight" - -#: src/js/controllers/tab-home.js:148 -msgid "View Update" -msgstr "Просмотреть обновление" - -#: www/views/tx-details.html:147 -msgid "View on blockchain" -msgstr "Посмотреть в блокчейне" - -#: www/views/walletDetails.html:171 -msgid "WARNING: Key derivation is not working on this device/wallet. Actions cannot be performed on this wallet." -msgstr "ВНИМАНИЕ: Деривация ключей не работает на этом устройстве/кошельке. Никакие действия не могут быть произведены с этим кошельком." - -#: www/views/tab-export-file.html:45 -msgid "WARNING: Not including the private key allows to check the wallet balance, transaction history, and create spend proposals from the export. However, does not allow to approve (sign) proposals, so funds will not be accessible from the export." -msgstr "ВНИМАНИЕ: экспортируемый файл не включает закрытый ключ, поэтому позволит только просматривать баланс, историю транзакций и предлагать платежи. Однако, его нельзя будет использовать для одобрения (подписания) предложенных платежей, поэтому средства не будет доступны из экспортируемого файла." - -#: www/views/tab-export-file.html:36 -msgid "WARNING: The private key of this wallet is not available. The export allows to check the wallet balance, transaction history, and create spend proposals from the export. However, does not allow to approve (sign) proposals, so funds will not be accessible from the export." -msgstr "ВНИМАНИЕ: Закрытый ключ этого кошелька недоступен. Экспортируемый файл позволит только просматривать баланс, историю транзакций и предлагать платежи. Однако, его нельзя будет использовать для одобрения (подписания) предложенных платежей, поэтому средства не будет доступны из экспортируемого файла." - -#: www/views/modals/paypro.html:42 -msgid "WARNING: UNTRUSTED CERTIFICATE" -msgstr "ВНИМАНИЕ: НЕНАДЕЖНЫЙ СЕРТИФИКАТ" - -#: src/js/services/onGoingProcess.js:15 -msgid "Waiting for Ledger..." -msgstr "Ожидание Ledger..." - -#: src/js/services/onGoingProcess.js:16 -msgid "Waiting for Trezor..." -msgstr "Ожидание Trezor..." - -#: www/views/copayers.html:48 -msgid "Waiting for copayers" -msgstr "Ожидание совладельцев кошелька" - -#: www/views/copayers.html:53 -msgid "Waiting..." -msgstr "Ожидание..." - -#: www/views/addresses.html:3 -#: www/views/preferencesAdvanced.html:17 -msgid "Wallet Addresses" -msgstr "Адреса кошелька" - -#: www/views/preferencesColor.html:4 -msgid "Wallet Color" -msgstr "Цвет кошелька" - -#: www/views/preferencesInformation.html:23 -msgid "Wallet Configuration (m-n)" -msgstr "Конфигурация кошелька (m-n)" - -#: www/views/onboarding/collectEmail.html:5 -msgid "Wallet Created" -msgstr "Кошелёк создан" - -#: www/views/preferencesInformation.html:17 -msgid "Wallet Id" -msgstr "Идентификатор кошелька" - -#: www/views/preferencesAdvanced.html:13 -#: www/views/preferencesInformation.html:3 -msgid "Wallet Information" -msgstr "Информация о кошельке" - -#: www/views/addresses.html:76 -msgid "Wallet Inputs" -msgstr "" - -#: www/views/join.html:26 -msgid "Wallet Invitation" -msgstr "Приглашение присоединиться к кошельку" - -#: www/views/join.html:57 -#: www/views/tab-create-personal.html:36 -#: www/views/tab-create-shared.html:65 -msgid "Wallet Key" -msgstr "Ключевое словосочетание" - -#: www/views/preferencesAlias.html:4 -msgid "Wallet Name" -msgstr "Название кошелька" - -#: www/views/preferencesInformation.html:11 -msgid "Wallet Name (at creation)" -msgstr "Название кошелька (при создании)" - -#: www/views/preferencesInformation.html:29 -msgid "Wallet Network" -msgstr "Сеть кошелька" - -#: www/views/join.html:74 -#: www/views/tab-create-personal.html:48 -#: www/views/tab-create-shared.html:77 -msgid "Wallet Recovery Phrase" -msgstr "Ключевое словосочетание кошелька" - -#: src/js/services/bwcError.js:26 -msgid "Wallet Recovery Phrase is invalid" -msgstr "Ключевое словосочетание кошелька недействительно" - -#: www/views/preferencesAdvanced.html:25 -#: www/views/tab-import-phrase.html:70 -msgid "Wallet Service URL" -msgstr "Адрес сервера Bitcore" - -#: www/views/preferences.html:4 -msgid "Wallet Settings" -msgstr "Параметры кошелька" - -#: www/views/tab-import-hardware.html:11 -#: www/views/tab-import-phrase.html:58 -msgid "Wallet Type" -msgstr "Тип кошелька" - -#: src/js/services/bwcError.js:59 -msgid "Wallet already exists" -msgstr "Кошелёк уже существует" - -#: src/js/services/profileService.js:498 -msgid "Wallet already in Copay" -msgstr "Кошелёк уже в Copay" - -#: www/views/includes/walletActivity.html:6 -msgid "Wallet created" -msgstr "Кошелёк создан" - -#: www/views/copayers.html:58 -msgid "Wallet incomplete and broken" -msgstr "Не все совладельцы присоединились, кошелёк повреждён" - -#: src/js/services/bwcError.js:65 -msgid "Wallet is full" -msgstr "Все уже присоединены" - -#: src/js/services/bwcError.js:125 -msgid "Wallet is locked" -msgstr "Кошелёк заблокирован" - -#: src/js/services/bwcError.js:128 -msgid "Wallet is not complete" -msgstr "Не все совладельцы присоединились" - -#: www/views/tab-create-personal.html:12 -#: www/views/tab-create-shared.html:12 -msgid "Wallet name" -msgstr "Название кошелька" - -#: src/js/services/bwcError.js:131 -msgid "Wallet needs backup" -msgstr "Необходимо создать резервную копию" - -#: www/views/tab-receive.html:59 -#: www/views/walletDetails.html:157 -msgid "Wallet not backed up" -msgstr "Резервное копирование не выполнено" - -#: src/js/services/bwcError.js:68 -msgid "Wallet not found" -msgstr "Кошелёк не найден" - -#: src/js/controllers/tab-home.js:220 -msgid "Wallet not registered" -msgstr "Кошелёк не зарегистрирован" - -#: src/js/services/bwcError.js:29 -msgid "Wallet not registered at the wallet service. Recreate it from \"Create Wallet\" using \"Advanced Options\" to set your recovery phrase" -msgstr "Кошелёк не зарегистрирован на сервере Bitcore. Пересоздайте кошелёк воспользовавшись дополнительными параметрами, чтобы указать ключевое словосочетание" - -#: www/views/backup.html:11 -msgid "Wallet recovery phrase not available." -msgstr "Ключевое словосочетание недоступно." - -#: src/js/services/bwcError.js:50 -msgid "Wallet service not found" -msgstr "Сервер Bitcore не найден" - -#: www/views/tab-home.html:69 -msgid "Wallets" -msgstr "Кошельки" - -#: www/views/tab-settings.html:102 -msgid "Wallets & Integrations" -msgstr "Кошельки и интеграция" - -#: src/js/controllers/addressbookView.js:23 -#: src/js/controllers/modals/txpDetails.js:147 -#: src/js/controllers/modals/txpDetails.js:164 -#: src/js/controllers/preferencesDelete.js:25 -#: src/js/controllers/preferencesExternal.js:14 -#: www/views/preferencesDeleteWallet.html:11 -msgid "Warning!" -msgstr "Внимание!" - -#: www/views/modals/txp-details.html:47 -msgid "Warning: this transaction has unconfirmed inputs" -msgstr "Предупреждение: эта транзакция имеет неподтвержденные входы" - -#: src/js/controllers/onboarding/backupRequest.js:17 -msgid "Watch out!" -msgstr "Осторожно!" - -#: src/js/controllers/feedback/send.js:69 -msgid "We'd love to do better." -msgstr "Мы хотели бы сделать лучше." - -#: www/views/backup.html:28 -msgid "We'll confirm on the next screen." -msgstr "Проверим на следующем шаге." - -#: src/js/controllers/feedback/send.js:77 -msgid "We're always looking for ways to improve {{appName}}." -msgstr "Мы всегда ищем пути улучшения {{appName}}." - -#: src/js/controllers/feedback/send.js:83 -msgid "We're always looking for ways to improve {{appName}}. How could we improve your experience?" -msgstr "" - -#: www/views/includes/incomingDataMenu.html:6 -msgid "Website" -msgstr "" - -#: www/views/preferencesLanguage.html:16 -msgid "We’re always looking for translation contributions! You can make corrections or help to make this app available in your native language by joining our community on Crowdin." -msgstr "" - -#: www/views/preferencesAlias.html:11 -msgid "What do you call this wallet?" -msgstr "Как вы называете этот кошелёк?" - -#: www/views/preferencesAlias.html:12 -msgid "When this wallet was created, it was called “{{walletName}}”. You can change the name displayed on this device below." -msgstr "Когда этот кошелёк был создан, он назывался “{{walletName}}”. Вы можете изменить отображаемое имя ниже." - -#: www/views/onboarding/collectEmail.html:10 -msgid "Where would you like to receive email notifications about payments?" -msgstr "Куда бы вы хотели получать email-уведомления о платежах?" - -#: www/views/addresses.html:19 -msgid "Why?" -msgstr "Почему?" - -#: www/views/feedback/rateApp.html:10 -msgid "Would you be willing to rate {{appName}} in the app store?" -msgstr "" - -#: www/views/onboarding/notifications.html:4 -msgid "Would you like to receive push notifications about payments?" -msgstr "Вы хотели бы получать push-уведомления о платежах?" - -#: src/js/controllers/import.js:270 -msgid "Wrong number of recovery words:" -msgstr "Неподходящее количество слов в ключевом словосочетании:" - -#: src/js/services/bwcError.js:140 -msgid "Wrong spending password" -msgstr "Неверный платёжный пароль" - -#: www/views/modals/confirmation.html:7 -msgid "Yes" -msgstr "Да" - -#: src/js/controllers/onboarding/backupRequest.js:25 -msgid "Yes, skip" -msgstr "Да, пропустить" - -#: src/js/controllers/onboarding/backupRequest.js:24 -msgid "You can create a backup later from your wallet settings." -msgstr "Вы можете создать резервную копию позже из параметров кошелька." - -#: src/js/controllers/preferencesLanguage.js:12 -msgid "You can make contributions by signing up on our Crowdin community translation website. We’re looking forward to hearing from you!" -msgstr "" - -#: www/views/tab-scan.html:16 -msgid "You can scan bitcoin addresses, payment requests, paper wallets, and more." -msgstr "Вы можете сканировать биткойн-адреса, запросы платежей, бумажные кошельки, и многое другое." - -#: 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 "" - -#: www/views/onboarding/tour.html:19 -msgid "You can spend bitcoin at millions of websites and stores worldwide." -msgstr "" - -#: www/views/backup.html:12 -msgid "You can still export it from Advanced > Export." -msgstr "Вы можете экспортировать её в Дополнительные параметры > Экспорт." - -#: www/views/onboarding/tour.html:32 -msgid "You can trade it for other currencies like US Dollars, Euros, or Pounds." -msgstr "" - -#: www/views/onboarding/tour.html:46 -msgid "You control your bitcoin." -msgstr "Вы контролируете Ваши bitcoin-ы." - -#: www/views/modals/chooseFeeLevel.html:63 -msgid "You should not set a fee higher than {{maxFeeRecommended}} satoshis/byte." -msgstr "" - -#: www/views/modals/bitpay-card-confirmation.html:5 -msgid "You will need to log back for fill in your BitPay Card." -msgstr "" - -#: www/views/preferencesNotifications.html:34 -msgid "You'll receive email notifications about payments sent and received from your wallets." -msgstr "Вы будете получать email-уведомления о входящих и исходящих платежах." - -#: www/views/bitpayCard.html:50 -msgid "Your BitPay Card is ready. Add funds to your card to start using it at stores and ATMs worldwide." -msgstr "" - -#: www/views/includes/confirmBackupPopup.html:6 -msgid "Your bitcoin wallet is backed up!" -msgstr "Резервная копия кошелька создана!" - -#: www/views/tab-home.html:36 -msgid "Your bitcoin wallet is ready!" -msgstr "Ваш кошелёк готов!" - -#: www/views/modals/chooseFeeLevel.html:60 -msgid "Your fee is lower than recommended." -msgstr "" - -#: www/views/feedback/send.html:42 -msgid "Your ideas, feedback, or comments" -msgstr "Ваши идеи, отзывы или комментарии" - -#: www/views/tab-create-shared.html:22 -msgid "Your name" -msgstr "Ваше имя" - -#: www/views/join.html:16 -msgid "Your nickname" -msgstr "Ваше псевдоним" - -#: www/views/tab-export-file.html:11 -#: www/views/tab-import-file.html:20 -msgid "Your password" -msgstr "Ваш пароль" - -#: www/views/buyAmazon.html:102 -msgid "Your purchase could not be completed" -msgstr "" - -#: www/views/buyAmazon.html:105 -msgid "Your purchase was added to the list of pending" -msgstr "" - -#: www/views/onboarding/backupRequest.html:10 -msgid "Your wallet is never saved to cloud storage or standard device backups." -msgstr "Ваш кошелёк никогда не сохраняется в облачное хранилище или в резервные копии устройства." - -#: src/js/services/walletService.js:1031 -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/paperWallet.html:35 -#: www/views/tab-home.html:96 -#: www/views/tab-receive.html:74 -#: www/views/walletDetails.html:139 -#: www/views/walletDetails.html:59 -msgid "[Balance Hidden]" -msgstr "[Баланс скрыт]" - -#: src/js/controllers/bitpayCardIntro.js:11 -msgid "add your BitPay Visa card(s)" -msgstr "добавьте вашу BitPay Visa карту(ы)" - -#: www/views/includes/available-balance.html:8 -msgid "locked by pending payments" -msgstr "заблокировано неподтверждёнными платежами" - -#: src/js/services/profileService.js:389 -msgid "me" -msgstr "мне" - -#: www/views/addressbook.add.html:32 -msgid "name@example.com" -msgstr "name@example.com" - -#: www/views/preferencesHistory.html:15 -msgid "preparing..." -msgstr "Подготавливается..." - -#: src/js/controllers/confirm.js:329 -#: src/js/controllers/modals/txpDetails.js:44 -msgid "to accept" -msgstr "принять" - -#: src/js/controllers/confirm.js:327 -msgid "to pay" -msgstr "оплатить" - -#: src/js/controllers/confirm.js:331 -#: src/js/controllers/modals/txpDetails.js:41 -msgid "to send" -msgstr "отправить" - -#: src/js/controllers/buyAmazon.js:238 -msgid "{{amountStr}} for Amazon.com Gift Card" -msgstr "" - -#: www/views/preferencesBwsUrl.html:21 -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}} требует Bitcore для координации совладельцев и получения информации из блокчейна. По-умолчанию используется сервер https://bws.bitpay.com (публичный сервер Bitcore компании BitPay)." - -#: src/js/controllers/confirm.js:358 -msgid "{{fee}} will be deducted for bitcoin networking fees." -msgstr "{{fee}} будет использовано для оплаты комиссии." - -#: www/views/confirm.html:87 -msgid "{{tx.txp[wallet.id].feeRatePerStr}} of the sending amount" -msgstr "" - -#: www/views/walletDetails.html:212 -msgid "{{updatingTxHistoryProgress}} transactions downloaded" -msgstr "{{updatingTxHistoryProgress}} транзакций загружено" - -#: www/views/copayers.html:46 -#: www/views/includes/walletInfo.html:12 -msgid "{{wallet.m}}-of-{{wallet.n}}" -msgstr "{{wallet.m}}-из-{{wallet.n}}" - diff --git a/i18n/po/template.pot b/i18n/po/template.pot deleted file mode 100644 index c9e1a1f1e..000000000 --- a/i18n/po/template.pot +++ /dev/null @@ -1,3349 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Project-Id-Version: \n" - -#: www/views/modals/paypro.html:34 -msgid "(Trusted)" -msgstr "" - -#: www/views/includes/txp.html:23 -#: www/views/includes/walletHistory.html:64 -msgid "(possible double spend)" -msgstr "" - -#: www/views/modals/txp-details.html:161 -msgid "* A payment proposal can be deleted if 1) you are the creator, and no other copayer has signed, or 2) 24 hours have passed since the proposal was created." -msgstr "" - -#: www/views/tx-details.html:84 -msgid "- {{btx.feeRateStr}} of the transaction" -msgstr "" - -#: www/views/modals/txp-details.html:104 -msgid "- {{tx.feeRateStr}} of the transaction" -msgstr "" - -#: www/views/feedback/rateApp.html:7 -msgid "5-star ratings help us get {{appName}} into more hands, and more users means more resources can be committed to the app!" -msgstr "" - -#: src/js/controllers/feedback/send.js:27 -#: www/views/feedback/complete.html:21 -msgid "A member of the team will review your feedback as soon as possible." -msgstr "" - -#: src/js/controllers/confirm.js:351 -msgid "A total of {{amountAboveMaxSizeStr}} were excluded. The maximum size allowed for a transaction was exceeded." -msgstr "" - -#: src/js/controllers/confirm.js:345 -msgid "A total of {{amountBelowFeeStr}} were excluded. These funds come from UTXOs smaller than the network fee provided." -msgstr "" - -#: src/js/controllers/preferencesAbout.js:6 -#: www/views/tab-settings.html:156 -msgid "About" -msgstr "" - -#: src/js/controllers/modals/txpDetails.js:56 -#: src/js/controllers/tx-details.js:62 -msgid "Accepted" -msgstr "" - -#: www/views/preferencesInformation.html:66 -msgid "Account" -msgstr "" - -#: www/views/join.html:69 -#: www/views/tab-create-personal.html:43 -#: www/views/tab-create-shared.html:72 -#: www/views/tab-import-hardware.html:19 -msgid "Account Number" -msgstr "" - -#: www/views/preferencesBitpayServices.html:23 -msgid "Accounts" -msgstr "" - -#: www/views/bitpayCard.html:56 -msgid "Activity" -msgstr "" - -#: src/js/services/bitpayAccountService.js:83 -msgid "Add Account" -msgstr "" - -#: src/js/services/bitpayAccountService.js:69 -msgid "Add BitPay Account?" -msgstr "" - -#: www/views/addressbook.add.html:4 -#: www/views/addressbook.html:22 -msgid "Add Contact" -msgstr "" - -#: www/views/bitpayCard.html:28 -msgid "Add Funds" -msgstr "" - -#: www/views/confirm.html:96 -msgid "Add Memo" -msgstr "" - -#: www/views/join.html:84 -#: www/views/tab-create-personal.html:57 -#: www/views/tab-create-shared.html:86 -msgid "Add a password" -msgstr "" - -#: www/views/includes/accountSelector.html:27 -msgid "Add account" -msgstr "" - -#: www/views/join.html:87 -#: www/views/tab-create-personal.html:60 -#: www/views/tab-create-shared.html:89 -msgid "Add an optional password to secure the recovery phrase" -msgstr "" - -#: www/views/includes/incomingDataMenu.html:41 -msgid "Add as a contact" -msgstr "" - -#: src/js/controllers/confirm.js:374 -msgid "Add description" -msgstr "" - -#: www/views/topup.html:6 -msgid "Add funds" -msgstr "" - -#: src/js/services/bitpayAccountService.js:78 -msgid "Add this BitPay account ({{email}})?" -msgstr "" - -#: www/views/add.html:3 -msgid "Add wallet" -msgstr "" - -#: www/views/addressbook.view.html:26 -#: www/views/customAmount.html:28 -#: www/views/modals/paypro.html:24 -msgid "Address" -msgstr "" - -#: www/views/addressbook.html:6 -#: www/views/tab-settings.html:13 -msgid "Address Book" -msgstr "" - -#: www/views/preferencesInformation.html:35 -msgid "Address Type" -msgstr "" - -#: www/views/addresses.html:64 -msgid "Addresses With Balance" -msgstr "" - -#: www/views/tab-settings.html:149 -msgid "Advanced" -msgstr "" - -#: www/views/advancedSettings.html:3 -msgid "Advanced Settings" -msgstr "" - -#: www/views/bitpayCard.html:62 -msgid "All" -msgstr "" - -#: www/views/allAddresses.html:3 -msgid "All Addresses" -msgstr "" - -#: 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:25 -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 "" - -#: www/views/onboarding/disclaimer.html:14 -msgid "Almost done! Let's review." -msgstr "" - -#: www/views/preferencesAltCurrency.html:4 -#: www/views/tab-settings.html:74 -msgid "Alternative Currency" -msgstr "" - -#: src/js/controllers/buyAmazon.js:97 -msgid "Amazon.com is not available at this moment. Please try back later." -msgstr "" - -#: www/views/amount.html:44 -#: www/views/customAmount.html:34 -#: www/views/includes/output.html:7 -msgid "Amount" -msgstr "" - -#: src/js/services/bwcError.js:110 -msgid "Amount below minimum allowed" -msgstr "" - -#: src/js/controllers/confirm.js:191 -msgid "Amount too big" -msgstr "" - -#: www/views/includes/walletHistory.html:31 -msgid "Amount too low to spend" -msgstr "" - -#: src/js/controllers/tab-home.js:147 -msgid "An update to this app is available. For your security, please update to the latest version." -msgstr "" - -#: www/views/backupWarning.html:14 -msgid "Anyone with your backup phrase can access or spend your bitcoin." -msgstr "" - -#: www/views/addresses.html:94 -msgid "Approximate Bitcoin network fee to transfer wallet's balance (with normal priority)" -msgstr "" - -#: www/views/backupWarning.html:10 -msgid "Are you being watched?" -msgstr "" - -#: src/js/controllers/preferencesExternal.js:15 -msgid "Are you being watched? Anyone with your recovery phrase can access or spend your bitcoin." -msgstr "" - -#: src/js/controllers/copayers.js:56 -msgid "Are you sure you want to cancel and delete this wallet?" -msgstr "" - -#: src/js/controllers/addressbookView.js:24 -msgid "Are you sure you want to delete this contact?" -msgstr "" - -#: src/js/controllers/preferencesDelete.js:26 -msgid "Are you sure you want to delete this wallet?" -msgstr "" - -#: src/js/controllers/modals/txpDetails.js:148 -msgid "Are you sure you want to reject this transaction?" -msgstr "" - -#: src/js/controllers/modals/txpDetails.js:165 -msgid "Are you sure you want to remove this transaction?" -msgstr "" - -#: src/js/controllers/onboarding/backupRequest.js:23 -msgid "Are you sure you want to skip it?" -msgstr "" - -#: www/views/modals/bitpay-card-confirmation.html:4 -msgid "Are you sure you would like to log out of your BitPay Card account?" -msgstr "" - -#: src/js/controllers/preferencesBitpayCard.js:7 -#: src/js/controllers/preferencesBitpayServices.js:20 -msgid "Are you sure you would like to remove your BitPay Card ({{lastFourDigits}}) from this device?" -msgstr "" - -#: www/views/includes/walletInfo.html:5 -msgid "Auditable" -msgstr "" - -#: www/views/modals/wallet-balance.html:42 -msgid "Available" -msgstr "" - -#: www/views/includes/available-balance.html:3 -msgid "Available Balance" -msgstr "" - -#: www/views/modals/chooseFeeLevel.html:24 -#: www/views/preferencesFee.html:15 -msgid "Average confirmation time" -msgstr "" - -#: www/views/join.html:140 -#: www/views/tab-create-personal.html:111 -#: www/views/tab-create-shared.html:140 -#: www/views/tab-import-phrase.html:48 -msgid "BIP32 path for address derivation" -msgstr "" - -#: www/views/preferences.html:34 -msgid "Backup" -msgstr "" - -#: www/views/includes/backupNeededPopup.html:7 -msgid "Backup Needed" -msgstr "" - -#: src/js/controllers/lockSetup.js:87 -msgid "Backup all livenet wallets before using this function" -msgstr "" - -#: www/views/preferences.html:36 -#: www/views/tab-settings.html:120 -msgid "Backup needed" -msgstr "" - -#: www/views/includes/backupNeededPopup.html:9 -msgid "Backup now" -msgstr "" - -#: www/views/onboarding/backupRequest.html:11 -#: www/views/tab-export-file.html:89 -msgid "Backup wallet" -msgstr "" - -#: src/js/controllers/lockSetup.js:84 -msgid "Backup your wallet before using this function" -msgstr "" - -#: src/js/services/profileService.js:430 -msgid "Bad wallet invitation" -msgstr "" - -#: www/views/preferencesInformation.html:96 -msgid "Balance By Address" -msgstr "" - -#: www/views/includes/confirmBackupPopup.html:7 -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 "" - -#: www/views/preferencesBitpayServices.html:9 -msgid "BitPay Visa® Cards" -msgstr "" - -#: www/views/addressbook.add.html:38 -#: www/views/includes/incomingDataMenu.html:29 -msgid "Bitcoin Address" -msgstr "" - -#: www/views/modals/chooseFeeLevel.html:4 -#: www/views/preferencesFee.html:4 -#: www/views/tab-settings.html:85 -msgid "Bitcoin Network Fee Policy" -msgstr "" - -#: www/views/tab-settings.html:63 -msgid "Bitcoin Unit" -msgstr "" - -#: www/views/onboarding/tour.html:31 -msgid "Bitcoin is a currency." -msgstr "" - -#: www/views/onboarding/disclaimer.html:15 -msgid "Bitcoin is different – it cannot be safely held with a bank or web service." -msgstr "" - -#: www/views/onboarding/tour.html:18 -msgid "Bitcoin is secure,
digital money." -msgstr "" - -#: www/views/preferencesFee.html:11 -msgid "Bitcoin transactions include a fee collected by miners on the network." -msgstr "" - -#: www/views/buyAmazon.html:108 -msgid "Bought {{amountUnitStr}}" -msgstr "" - -#: www/views/modals/txp-details.html:36 -msgid "Broadcast Payment" -msgstr "" - -#: src/js/controllers/modals/txpDetails.js:58 -#: src/js/controllers/tx-details.js:64 -msgid "Broadcasted" -msgstr "" - -#: src/js/services/onGoingProcess.js:11 -msgid "Broadcasting transaction" -msgstr "" - -#: www/views/unsupported.html:6 -msgid "Browser unsupported" -msgstr "" - -#: www/views/buyAmazon.html:5 -msgid "Buy" -msgstr "" - -#: www/views/includes/buyAndSellCard.html:3 -msgid "Buy & Sell Bitcoin" -msgstr "" - -#: www/views/tab-send.html:35 -msgid "Buy Bitcoin" -msgstr "" - -#: src/js/controllers/buyAmazon.js:332 -msgid "Buy from" -msgstr "" - -#: src/js/services/onGoingProcess.js:40 -msgid "Buying Bitcoin..." -msgstr "" - -#: src/js/services/onGoingProcess.js:12 -msgid "Calculating fee" -msgstr "" - -#: src/js/controllers/buyAmazon.js:311 -#: src/js/controllers/confirm.js:495 -#: src/js/controllers/topup.js:285 -#: src/js/services/popupService.js:62 -#: src/js/services/popupService.js:73 -#: www/views/addressbook.add.html:10 -#: www/views/feedback/send.html:5 -#: www/views/includes/incomingDataMenu.html:22 -#: www/views/includes/incomingDataMenu.html:54 -#: www/views/includes/incomingDataMenu.html:73 -#: www/views/includes/incomingDataMenu.html:97 -#: www/views/includes/note.html:6 -#: www/views/modals/bitpay-card-confirmation.html:8 -#: www/views/modals/confirmation.html:13 -msgid "Cancel" -msgstr "" - -#: www/views/copayers.html:36 -msgid "Cancel invitation" -msgstr "" - -#: src/js/controllers/onboarding/tour.js:52 -msgid "Cannot Create Wallet" -msgstr "" - -#: src/js/services/profileService.js:426 -msgid "Cannot join the same wallet more that once" -msgstr "" - -#: www/views/includes/bitpayCardsCard.html:2 -msgid "Cards" -msgstr "" - -#: www/views/modals/paypro.html:30 -msgid "Certified by" -msgstr "" - -#: www/views/preferencesExternal.html:19 -msgid "Check installation and retry." -msgstr "" - -#: www/views/tab-import-file.html:4 -msgid "Choose a backup file from your computer" -msgstr "" - -#: www/views/modals/wallets.html:9 -msgid "Choose your destination wallet" -msgstr "" - -#: www/views/modals/wallets.html:10 -msgid "Choose your source wallet" -msgstr "" - -#: www/views/backup.html:54 -msgid "Clear" -msgstr "" - -#: www/views/preferencesHistory.html:24 -msgid "Clear cache" -msgstr "" - -#: src/js/controllers/modals/txpDetails.js:34 -msgid "Click" -msgstr "" - -#: www/views/customAmount.html:4 -#: www/views/modals/paypro.html:4 -#: www/views/modals/pin.html:3 -#: www/views/modals/search.html:3 -#: www/views/modals/wallet-balance.html:3 -#: www/views/modals/wallets.html:5 -msgid "Close" -msgstr "" - -#: www/views/preferences.html:22 -msgid "Color" -msgstr "" - -#: www/views/preferencesAbout.html:21 -msgid "Commit hash" -msgstr "" - -#: www/views/preferences.html:48 -msgid "Complete the backup process to use this option" -msgstr "" - -#: www/views/bitpayCard.html:93 -msgid "Completed" -msgstr "" - -#: src/js/controllers/buyAmazon.js:309 -#: src/js/controllers/confirm.js:494 -#: src/js/controllers/copayers.js:55 -#: src/js/controllers/topup.js:283 -#: www/views/backup.html:53 -#: www/views/backup.html:72 -#: www/views/confirm.html:4 -#: www/views/onboarding/collectEmail.html:32 -msgid "Confirm" -msgstr "" - -#: www/views/modals/terms.html:26 -#: www/views/onboarding/disclaimer.html:44 -msgid "Confirm & Finish" -msgstr "" - -#: www/views/buyAmazon.html:90 -msgid "Confirm purchase" -msgstr "" - -#: www/views/modals/pin.html:10 -msgid "Confirm your PIN" -msgstr "" - -#: src/js/services/walletService.js:1034 -msgid "Confirm your new spending password" -msgstr "" - -#: www/views/tx-details.html:98 -msgid "Confirmations" -msgstr "" - -#: www/views/bitpayCard.html:68 -#: www/views/modals/wallet-balance.html:61 -msgid "Confirming" -msgstr "" - -#: www/views/bitpayCardIntro.html:37 -msgid "Connect my BitPay Card" -msgstr "" - -#: src/js/services/onGoingProcess.js:13 -msgid "Connecting to Coinbase..." -msgstr "" - -#: src/js/services/onGoingProcess.js:14 -msgid "Connecting to Glidera..." -msgstr "" - -#: src/js/services/bwcError.js:53 -msgid "Connection reset by peer" -msgstr "" - -#: www/views/tab-send.html:45 -msgid "Contacts" -msgstr "" - -#: www/views/onboarding/notifications.html:9 -msgid "Continue" -msgstr "" - -#: www/views/preferencesLanguage.html:26 -msgid "Contribute Translations" -msgstr "" - -#: src/js/services/bwcError.js:62 -msgid "Copayer already in this wallet" -msgstr "" - -#: src/js/services/bwcError.js:77 -msgid "Copayer already voted on this spend proposal" -msgstr "" - -#: src/js/services/bwcError.js:107 -msgid "Copayer data mismatch" -msgstr "" - -#: www/views/includes/walletActivity.html:2 -msgid "Copayer joined" -msgstr "" - -#: www/views/preferencesInformation.html:88 -msgid "Copayer {{$index}}" -msgstr "" - -#: src/js/controllers/copayers.js:79 -#: src/js/controllers/export.js:193 -#: www/views/includes/copyToClipboard.html:4 -msgid "Copied to clipboard" -msgstr "" - -#: www/views/tab-export-file.html:94 -msgid "Copy this text as it is to a safe place (notepad or email)" -msgstr "" - -#: www/views/includes/incomingDataMenu.html:51 -#: www/views/includes/incomingDataMenu.html:70 -#: www/views/includes/incomingDataMenu.html:94 -#: www/views/preferencesLogs.html:10 -#: www/views/tab-export-file.html:78 -msgid "Copy to clipboard" -msgstr "" - -#: www/views/tab-import-phrase.html:2 -msgid "Could not access the wallet at the server. Please check:" -msgstr "" - -#: src/js/controllers/buyAmazon.js:101 -msgid "Could not access to Amazon.com" -msgstr "" - -#: src/js/services/profileService.js:493 -msgid "Could not access wallet" -msgstr "" - -#: src/js/controllers/confirm.js:185 -msgid "Could not add message to imported wallet without shared encrypting key" -msgstr "" - -#: src/js/controllers/modals/txpDetails.js:193 -msgid "Could not broadcast payment" -msgstr "" - -#: src/js/services/bwcError.js:41 -msgid "Could not build transaction" -msgstr "" - -#: src/js/services/walletService.js:857 -msgid "Could not create address" -msgstr "" - -#: src/js/controllers/topup.js:91 -msgid "Could not create the invoice" -msgstr "" - -#: src/js/controllers/buyAmazon.js:163 -#: src/js/controllers/topup.js:141 -msgid "Could not create transaction" -msgstr "" - -#: src/js/services/profileService.js:342 -msgid "Could not create using the specified extended private key" -msgstr "" - -#: src/js/services/profileService.js:353 -msgid "Could not create using the specified extended public key" -msgstr "" - -#: src/js/services/profileService.js:335 -msgid "Could not create: Invalid wallet recovery phrase" -msgstr "" - -#: src/js/controllers/import.js:99 -msgid "Could not decrypt file, check your password" -msgstr "" - -#: src/js/controllers/modals/txpDetails.js:175 -msgid "Could not delete payment proposal" -msgstr "" - -#: src/js/services/feeService.js:72 -msgid "Could not get dynamic fee" -msgstr "" - -#: src/js/services/feeService.js:42 -msgid "Could not get dynamic fee for level: {{feeLevel}}" -msgstr "" - -#: src/js/controllers/modals/feeLevels.js:113 -msgid "Could not get fee levels" -msgstr "" - -#: src/js/controllers/buyAmazon.js:121 -#: src/js/controllers/topup.js:99 -msgid "Could not get the invoice" -msgstr "" - -#: src/js/controllers/bitpayCard.js:66 -msgid "Could not get transactions" -msgstr "" - -#: src/js/services/profileService.js:595 -#: src/js/services/profileService.js:629 -#: src/js/services/profileService.js:652 -msgid "Could not import" -msgstr "" - -#: src/js/services/profileService.js:564 -msgid "Could not import. Check input file and spending password" -msgstr "" - -#: src/js/services/profileService.js:439 -msgid "Could not join wallet" -msgstr "" - -#: src/js/controllers/modals/txpDetails.js:155 -msgid "Could not reject payment" -msgstr "" - -#: src/js/controllers/preferencesBitpayServices.js:33 -msgid "Could not remove account" -msgstr "" - -#: src/js/controllers/preferencesBitpayCard.js:20 -#: src/js/controllers/preferencesBitpayServices.js:50 -msgid "Could not remove card" -msgstr "" - -#: src/js/services/walletService.js:776 -msgid "Could not save preferences on the server" -msgstr "" - -#: src/js/controllers/modals/txpDetails.js:141 -msgid "Could not send payment" -msgstr "" - -#: src/js/controllers/buyAmazon.js:323 -#: src/js/controllers/topup.js:297 -msgid "Could not send transaction" -msgstr "" - -#: www/views/walletDetails.html:199 -msgid "Could not update transaction history" -msgstr "" - -#: src/js/controllers/addresses.js:34 -#: src/js/controllers/addresses.js:42 -#: src/js/controllers/copayers.js:30 -#: src/js/controllers/walletDetails.js:78 -msgid "Could not update wallet" -msgstr "" - -#: www/views/tab-create-personal.html:3 -msgid "Create Personal Wallet" -msgstr "" - -#: www/views/tab-create-shared.html:3 -msgid "Create Shared Wallet" -msgstr "" - -#: www/views/onboarding/tour.html:51 -#: www/views/tab-home.html:77 -#: www/views/tab-send.html:36 -msgid "Create bitcoin wallet" -msgstr "" - -#: www/views/tab-create-personal.html:129 -msgid "Create new wallet" -msgstr "" - -#: www/views/add.html:22 -msgid "Create shared wallet" -msgstr "" - -#: www/views/tab-create-shared.html:158 -msgid "Create {{formData.requiredCopayers}}-of-{{formData.totalCopayers}} wallet" -msgstr "" - -#: www/views/modals/txp-details.html:83 -#: www/views/tx-details.html:62 -msgid "Created by" -msgstr "" - -#: src/js/services/onGoingProcess.js:18 -msgid "Creating Wallet..." -msgstr "" - -#: src/js/services/onGoingProcess.js:17 -msgid "Creating transaction" -msgstr "" - -#: www/views/modals/chooseFeeLevel.html:34 -#: www/views/preferencesFee.html:20 -msgid "Current fee rate for this policy" -msgstr "" - -#: src/js/services/feeService.js:15 -msgid "Custom" -msgstr "" - -#: www/views/customAmount.html:9 -msgid "Custom Amount" -msgstr "" - -#: src/js/controllers/preferencesFee.js:84 -msgid "Custom Fee" -msgstr "" - -#: www/views/modals/txp-details.html:89 -#: www/views/tx-details.html:68 -msgid "Date" -msgstr "" - -#: www/views/preferencesDeleteWallet.html:21 -msgid "Delete" -msgstr "" - -#: www/views/modals/txp-details.html:166 -msgid "Delete Payment Proposal" -msgstr "" - -#: www/views/preferencesAdvanced.html:33 -#: www/views/preferencesDeleteWallet.html:3 -msgid "Delete Wallet" -msgstr "" - -#: www/views/copayers.html:59 -msgid "Delete it and create a new one" -msgstr "" - -#: src/js/services/onGoingProcess.js:19 -msgid "Deleting Wallet..." -msgstr "" - -#: src/js/services/onGoingProcess.js:28 -msgid "Deleting payment proposal" -msgstr "" - -#: www/views/join.html:138 -#: www/views/tab-create-personal.html:109 -#: www/views/tab-create-shared.html:138 -#: www/views/tab-import-phrase.html:46 -msgid "Derivation Path" -msgstr "" - -#: www/views/preferencesInformation.html:41 -msgid "Derivation Strategy" -msgstr "" - -#: www/views/buyAmazon.html:39 -#: www/views/topup.html:45 -msgid "Details" -msgstr "" - -#: src/js/controllers/lockSetup.js:9 -#: src/js/controllers/tab-settings.js:60 -msgid "Disabled" -msgstr "" - -#: www/views/includes/backupNeededPopup.html:10 -#: www/views/onboarding/backupRequest.html:12 -msgid "Do it later" -msgstr "" - -#: www/views/tab-export-file.html:29 -msgid "Do not include private key" -msgstr "" - -#: www/views/preferencesLanguage.html:21 -msgid "Don't see your language on Crowdin? Contact the Owner on Crowdin! We'd love to support your language." -msgstr "" - -#: www/views/tab-export-file.html:59 -#: www/views/tab-home.html:22 -msgid "Download" -msgstr "" - -#: www/views/addresses.html:19 -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 "" - -#: src/js/services/feeService.js:13 -msgid "Economy" -msgstr "" - -#: www/views/onboarding/collectEmail.html:27 -msgid "Edit" -msgstr "" - -#: www/views/addressbook.add.html:29 -#: www/views/addressbook.view.html:22 -msgid "Email" -msgstr "" - -#: www/views/preferencesNotifications.html:42 -msgid "Email Address" -msgstr "" - -#: src/js/services/bwcError.js:122 -msgid "Empty addresses limit reached. New addresses cannot be generated." -msgstr "" - -#: www/views/tab-scan.html:19 -msgid "Enable camera access in your device settings to get started." -msgstr "" - -#: www/views/preferencesNotifications.html:29 -msgid "Enable email notifications" -msgstr "" - -#: www/views/preferencesNotifications.html:12 -msgid "Enable push notifications" -msgstr "" - -#: www/views/tab-scan.html:18 -msgid "Enable the camera to get started." -msgstr "" - -#: www/views/amount.html:4 -msgid "Enter Amount" -msgstr "" - -#: src/js/services/walletService.js:1048 -#: src/js/services/walletService.js:1063 -msgid "Enter Spending Password" -msgstr "" - -#: src/js/services/bitpayAccountService.js:110 -msgid "Enter Two Factor for your BitPay account" -msgstr "" - -#: www/views/modals/chooseFeeLevel.html:41 -msgid "Enter custom fee" -msgstr "" - -#: src/js/services/walletService.js:1030 -msgid "Enter new spending password" -msgstr "" - -#: www/views/join.html:76 -#: www/views/tab-create-personal.html:49 -#: www/views/tab-create-shared.html:78 -msgid "Enter the recovery phrase (BIP39)" -msgstr "" - -#: www/views/onboarding/collectEmail.html:13 -msgid "Enter your email" -msgstr "" - -#: www/views/backup.html:62 -msgid "Enter your password" -msgstr "" - -#. Trying to import a malformed wallet export QR code -#: src/js/controllers/activity.js:45 -#: src/js/controllers/addressbookAdd.js:30 -#: src/js/controllers/addressbookView.js:29 -#: src/js/controllers/addresses.js:130 -#: src/js/controllers/addresses.js:131 -#: src/js/controllers/bitpayCard.js:66 -#: src/js/controllers/bitpayCardIntro.js:40 -#: src/js/controllers/bitpayCardIntro.js:81 -#: src/js/controllers/buyAmazon.js:23 -#: src/js/controllers/buyAmazon.js:34 -#: src/js/controllers/confirm.js:276 -#: src/js/controllers/copayers.js:67 -#: src/js/controllers/create.js:155 -#: src/js/controllers/create.js:168 -#: src/js/controllers/create.js:175 -#: src/js/controllers/create.js:197 -#: src/js/controllers/create.js:204 -#: src/js/controllers/create.js:222 -#: src/js/controllers/export.js:109 -#: src/js/controllers/export.js:115 -#: src/js/controllers/export.js:126 -#: src/js/controllers/export.js:154 -#: src/js/controllers/export.js:160 -#: src/js/controllers/export.js:171 -#: src/js/controllers/export.js:47 -#: src/js/controllers/export.js:53 -#: src/js/controllers/feedback/send.js:23 -#: src/js/controllers/import.js:104 -#: src/js/controllers/import.js:116 -#: src/js/controllers/import.js:134 -#: src/js/controllers/import.js:185 -#: src/js/controllers/import.js:213 -#: src/js/controllers/import.js:222 -#: src/js/controllers/import.js:237 -#: src/js/controllers/import.js:249 -#: src/js/controllers/import.js:260 -#: src/js/controllers/import.js:270 -#: src/js/controllers/import.js:294 -#: src/js/controllers/import.js:307 -#: src/js/controllers/import.js:317 -#: src/js/controllers/import.js:327 -#: src/js/controllers/import.js:351 -#: src/js/controllers/import.js:364 -#: src/js/controllers/import.js:70 -#: src/js/controllers/import.js:83 -#: src/js/controllers/join.js:121 -#: src/js/controllers/join.js:135 -#: src/js/controllers/join.js:142 -#: src/js/controllers/join.js:165 -#: src/js/controllers/join.js:173 -#: src/js/controllers/join.js:191 -#: src/js/controllers/modals/feeLevels.js:10 -#: src/js/controllers/modals/txpDetails.js:134 -#: src/js/controllers/paperWallet.js:47 -#: src/js/controllers/preferencesBitpayCard.js:20 -#: src/js/controllers/preferencesBitpayServices.js:33 -#: src/js/controllers/preferencesBitpayServices.js:50 -#: src/js/controllers/preferencesDelete.js:37 -#: src/js/controllers/preferencesExternal.js:20 -#: src/js/controllers/tab-home.js:174 -#: src/js/controllers/tab-send.js:132 -#: src/js/controllers/tabsController.js:36 -#: src/js/controllers/tabsController.js:7 -#: src/js/controllers/topup.js:20 -#: src/js/controllers/topup.js:31 -#: src/js/controllers/tx-details.js:102 -#: src/js/services/incomingData.js:98 -msgid "Error" -msgstr "" - -#: src/js/controllers/confirm.js:447 -msgid "Error at confirm" -msgstr "" - -#: src/js/controllers/buyAmazon.js:178 -msgid "Error creating gift card" -msgstr "" - -#: src/js/controllers/buyAmazon.js:93 -msgid "Error creating the invoice" -msgstr "" - -#: src/js/services/profileService.js:396 -msgid "Error creating wallet" -msgstr "" - -#: src/js/controllers/confirm.js:266 -msgid "Error getting SendMax information" -msgstr "" - -#: src/js/controllers/buyAmazon.js:135 -#: src/js/controllers/topup.js:113 -msgid "Error in Payment Protocol" -msgstr "" - -#: src/js/controllers/bitpayCardIntro.js:14 -msgid "Error pairing BitPay Account" -msgstr "" - -#: src/js/controllers/paperWallet.js:41 -msgid "Error scanning funds:" -msgstr "" - -#: src/js/controllers/paperWallet.js:91 -msgid "Error sweeping wallet:" -msgstr "" - -#: src/js/controllers/bitpayCardIntro.js:20 -msgid "Error updating Debit Cards" -msgstr "" - -#: src/js/services/bwcError.js:143 -msgid "Exceeded daily limit of $500 per user" -msgstr "" - -#: src/js/controllers/confirm.js:411 -#: www/views/confirm.html:27 -#: www/views/modals/txp-details.html:121 -msgid "Expired" -msgstr "" - -#: www/views/modals/paypro.html:54 -#: www/views/modals/txp-details.html:127 -msgid "Expires" -msgstr "" - -#: www/views/preferencesAdvanced.html:21 -msgid "Export Wallet" -msgstr "" - -#: www/views/preferencesHistory.html:11 -#: www/views/preferencesHistory.html:14 -msgid "Export to file" -msgstr "" - -#: www/views/export.html:3 -msgid "Export wallet" -msgstr "" - -#: src/js/services/walletService.js:1175 -#: www/views/tab-export-qrCode.html:9 -msgid "Exporting via QR not supported for this wallet" -msgstr "" - -#: www/views/preferencesInformation.html:83 -msgid "Extended Public Keys" -msgstr "" - -#: src/js/services/onGoingProcess.js:20 -msgid "Extracting Wallet information..." -msgstr "" - -#: src/js/controllers/export.js:115 -#: src/js/controllers/export.js:126 -#: src/js/controllers/export.js:160 -#: src/js/controllers/export.js:171 -#: www/views/tab-export-file.html:4 -msgid "Failed to export" -msgstr "" - -#: www/views/tab-create-personal.html:14 -#: www/views/tab-create-shared.html:14 -msgid "Family vacation funds" -msgstr "" - -#: www/views/tx-details.html:81 -msgid "Fee" -msgstr "" - -#: www/views/modals/chooseFeeLevel.html:73 -msgid "Fee level" -msgstr "" - -#: src/js/controllers/modals/feeLevels.js:101 -msgid "Fee level is not defined" -msgstr "" - -#: www/views/confirm.html:81 -#: www/views/modals/txp-details.html:101 -msgid "Fee:" -msgstr "" - -#: src/js/controllers/feedback/send.js:23 -msgid "Feedback could not be submitted. Please try again later." -msgstr "" - -#: src/js/services/onGoingProcess.js:42 -msgid "Fetching BitPay Account..." -msgstr "" - -#: src/js/services/onGoingProcess.js:21 -msgid "Fetching payment information" -msgstr "" - -#: www/views/export.html:14 -#: www/views/import.html:16 -msgid "File/Text" -msgstr "" - -#: src/js/services/fingerprintService.js:43 -#: src/js/services/fingerprintService.js:48 -msgid "Finger Scan Failed" -msgstr "" - -#: src/js/controllers/feedback/send.js:34 -#: www/views/feedback/complete.html:7 -msgid "Finish" -msgstr "" - -#: www/views/tab-create-personal.html:121 -#: www/views/tab-create-shared.html:150 -msgid "For audit purposes" -msgstr "" - -#: src/js/controllers/topup.js:306 -#: www/views/buyAmazon.html:29 -#: www/views/confirm.html:65 -#: www/views/modals/txp-details.html:74 -#: www/views/topup.html:34 -#: www/views/tx-details.html:52 -msgid "From" -msgstr "" - -#: src/js/controllers/bitpayCardIntro.js:71 -msgid "From BitPay account" -msgstr "" - -#: www/views/tab-import-phrase.html:54 -msgid "From Hardware Wallet" -msgstr "" - -#: www/views/tab-export-qrCode.html:5 -msgid "From the destination device, go to Add wallet > Import wallet and scan this QR code" -msgstr "" - -#: src/js/services/bwcError.js:74 -msgid "Funds are locked by pending spend proposals" -msgstr "" - -#: www/views/paperWallet.html:16 -msgid "Funds found:" -msgstr "" - -#: www/views/topup.html:49 -msgid "Funds to be added" -msgstr "" - -#: www/views/paperWallet.html:53 -msgid "Funds transferred" -msgstr "" - -#: www/views/topup.html:103 -msgid "Funds were added to debit card" -msgstr "" - -#: www/views/paperWallet.html:22 -msgid "Funds will be transferred to" -msgstr "" - -#: www/views/tab-receive.html:51 -msgid "Generate new address" -msgstr "" - -#: src/js/services/onGoingProcess.js:22 -msgid "Generating .csv file..." -msgstr "" - -#: src/js/services/onGoingProcess.js:37 -msgid "Generating new address..." -msgstr "" - -#: www/views/bitpayCardIntro.html:23 -msgid "Get local cash anywhere you go, from any Visa® compatible ATM. ATM bank fees may apply." -msgstr "" - -#: www/views/onboarding/collectEmail.html:15 -msgid "Get news and updates from BitPay" -msgstr "" - -#: www/views/bitpayCard.html:49 -#: www/views/onboarding/welcome.html:8 -msgid "Get started" -msgstr "" - -#: www/views/addressbook.html:20 -msgid "Get started by adding your first one." -msgstr "" - -#: src/js/services/onGoingProcess.js:23 -msgid "Getting fee levels..." -msgstr "" - -#: www/views/buyAmazon.html:43 -msgid "Gift card" -msgstr "" - -#: src/js/controllers/buyAmazon.js:203 -msgid "Gift card expired" -msgstr "" - -#: www/views/buyAmazon.html:111 -msgid "Gift card generated and ready to use." -msgstr "" - -#: src/js/controllers/bitpayCard.js:114 -#: src/js/controllers/bitpayCard.js:124 -#: 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:149 -#: src/js/controllers/tab-settings.js:48 -#: src/js/controllers/tx-details.js:176 -msgid "Go Back" -msgstr "" - -#: src/js/controllers/onboarding/backupRequest.js:20 -#: src/js/controllers/onboarding/backupRequest.js:26 -#: src/js/services/bitpayAccountService.js:84 -msgid "Go back" -msgstr "" - -#: www/views/backupWarning.html:15 -#: www/views/includes/confirmBackupPopup.html:8 -#: www/views/onboarding/tour.html:23 -msgid "Got it" -msgstr "" - -#: www/views/preferencesInformation.html:47 -#: www/views/preferencesInformation.html:53 -msgid "Hardware Wallet" -msgstr "" - -#: www/views/preferencesExternal.html:18 -msgid "Hardware not connected." -msgstr "" - -#: www/views/import.html:20 -msgid "Hardware wallet" -msgstr "" - -#: www/views/tab-settings.html:20 -msgid "Help & Support" -msgstr "" - -#: src/js/controllers/bitpayCard.js:112 -#: src/js/controllers/tab-settings.js:46 -msgid "Help and support information is available at the website." -msgstr "" - -#: www/views/addresses.html:25 -msgid "Hide" -msgstr "" - -#: www/views/preferences.html:27 -msgid "Hide Balance" -msgstr "" - -#: www/views/advancedSettings.html:29 -msgid "Hide Next Steps Card" -msgstr "" - -#: www/views/join.html:46 -#: www/views/tab-create-personal.html:26 -#: www/views/tab-create-shared.html:55 -#: www/views/tab-export-file.html:25 -#: www/views/tab-import-file.html:28 -#: www/views/tab-import-hardware.html:31 -#: www/views/tab-import-phrase.html:33 -msgid "Hide advanced options" -msgstr "" - -#: www/views/tabs.html:3 -msgid "Home" -msgstr "" - -#: src/js/controllers/feedback/send.js:61 -#: src/js/controllers/feedback/send.js:65 -#: src/js/controllers/feedback/send.js:69 -msgid "How could we improve your experience?" -msgstr "" - -#: www/views/feedback/rateCard.html:3 -msgid "How do you like {{appName}}?" -msgstr "" - -#: src/js/controllers/feedback/rateCard.js:29 -msgid "I don't like it" -msgstr "" - -#: www/views/onboarding/disclaimer.html:43 -msgid "I have read, understood, and agree to the Terms of Use." -msgstr "" - -#: www/views/modals/terms.html:22 -msgid "I have read, understood, and agree with the Terms of use." -msgstr "" - -#: www/views/join.html:134 -#: www/views/tab-create-personal.html:105 -#: www/views/tab-create-shared.html:134 -msgid "I have written it down" -msgstr "" - -#: src/js/controllers/feedback/rateCard.js:35 -msgid "I like the app" -msgstr "" - -#: src/js/controllers/feedback/rateCard.js:26 -msgid "I think this app is terrible." -msgstr "" - -#: src/js/controllers/onboarding/backupRequest.js:19 -#: www/views/includes/screenshotWarningModal.html:9 -msgid "I understand" -msgstr "" - -#: www/views/onboarding/disclaimer.html:21 -msgid "I understand that if this app is moved to another device or deleted, my bitcoin can only be recovered with the backup phrase." -msgstr "" - -#: www/views/onboarding/disclaimer.html:18 -msgid "I understand that my funds are held securely on this device, not by a company." -msgstr "" - -#: www/views/backup.html:29 -msgid "I've written it down" -msgstr "" - -#: www/views/preferences.html:45 -msgid "If enabled, all sensitive information (private key and recovery phrase) and actions (spending and exporting) associated with this wallet will be protected." -msgstr "" - -#: www/views/advancedSettings.html:22 -msgid "If enabled, the Recent Transactions card - a list of transactions occuring across all wallets - will appear in the Home tab." -msgstr "" - -#: www/views/advancedSettings.html:13 -msgid "If enabled, wallets will also try to spend unconfirmed funds. This option may cause transaction delays." -msgstr "" - -#: src/js/controllers/onboarding/backupRequest.js:18 -msgid "If this device is replaced or this app is deleted, neither you nor BitPay can recover your funds without a backup." -msgstr "" - -#: www/views/feedback/complete.html:23 -msgid "If you have additional feedback, please let us know by tapping the \"Send feedback\" option in the Settings tab." -msgstr "" - -#: www/views/includes/screenshotWarningModal.html:8 -msgid "If you take a screenshot, your backup may be viewed by other apps. You can make a safe backup with physical paper and a pen." -msgstr "" - -#: www/views/tab-import-hardware.html:42 -#: www/views/tab-import-phrase.html:77 -msgid "Import" -msgstr "" - -#: www/views/import.html:3 -msgid "Import Wallet" -msgstr "" - -#: www/views/tab-import-file.html:39 -msgid "Import backup" -msgstr "" - -#: www/views/add.html:38 -msgid "Import wallet" -msgstr "" - -#: src/js/services/onGoingProcess.js:24 -msgid "Importing Wallet..." -msgstr "" - -#: www/views/backup.html:65 -msgid "In order to verify your wallet backup, please type your password." -msgstr "" - -#: www/views/includes/walletItem.html:11 -#: www/views/includes/walletSelector.html:18 -#: www/views/tab-home.html:90 -#: www/views/tab-settings.html:117 -msgid "Incomplete" -msgstr "" - -#: www/views/tab-receive.html:22 -msgid "Incomplete wallet" -msgstr "" - -#: www/views/modals/pin.html:12 -msgid "Incorrect PIN, try again." -msgstr "" - -#. Trying to import a malformed wallet export QR code -#: src/js/controllers/import.js:70 -msgid "Incorrect code format" -msgstr "" - -#: src/js/services/bwcError.js:113 -msgid "Incorrect network address" -msgstr "" - -#: src/js/controllers/confirm.js:112 -#: src/js/controllers/confirm.js:275 -#: src/js/services/bwcError.js:44 -msgid "Insufficient funds" -msgstr "" - -#: src/js/controllers/topup.js:164 -#: src/js/controllers/topup.js:176 -#: src/js/services/bwcError.js:71 -msgid "Insufficient funds for fee" -msgstr "" - -#: www/views/includes/walletHistory.html:49 -msgid "Invalid" -msgstr "" - -#: src/js/controllers/buyAmazon.js:136 -#: src/js/controllers/topup.js:114 -msgid "Invalid URL" -msgstr "" - -#: src/js/controllers/create.js:175 -#: src/js/controllers/import.js:327 -#: src/js/controllers/join.js:142 -msgid "Invalid account number" -msgstr "" - -#: src/js/services/bwcError.js:119 -msgid "Invalid address" -msgstr "" - -#: src/js/controllers/tabsController.js:7 -msgid "Invalid data" -msgstr "" - -#: src/js/controllers/create.js:155 -#: src/js/controllers/import.js:249 -#: src/js/controllers/join.js:121 -msgid "Invalid derivation path" -msgstr "" - -#: src/js/controllers/copayers.js:90 -msgid "Invitation to share a {{appName}} Wallet" -msgstr "" - -#: www/views/buyAmazon.html:49 -#: www/views/topup.html:56 -msgid "Invoice Fee" -msgstr "" - -#: src/js/controllers/feedback/send.js:79 -msgid "Is there anything we could do better?" -msgstr "" - -#: www/views/backup.html:47 -msgid "Is this correct?" -msgstr "" - -#: www/views/onboarding/collectEmail.html:22 -msgid "Is this email address correct?" -msgstr "" - -#: www/views/addresses.html:25 -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 -msgid "It's important that you write your backup phrase down correctly. If something happens to your wallet, you'll need this backup to recover your money. Please review your backup and try again." -msgstr "" - -#: www/views/join.html:148 -msgid "Join" -msgstr "" - -#: src/js/controllers/copayers.js:85 -msgid "Join my {{appName}} Wallet. Here is the invitation code: {{secret}} You can download {{appName}} for your phone or desktop at {{appUrl}}" -msgstr "" - -#: www/views/add.html:30 -#: www/views/join.html:5 -msgid "Join shared wallet" -msgstr "" - -#: src/js/services/onGoingProcess.js:25 -msgid "Joining Wallet..." -msgstr "" - -#: www/views/onboarding/tour.html:22 -msgid "Just scan the code to pay." -msgstr "" - -#: src/js/services/bwcError.js:116 -msgid "Key already associated with an existing wallet" -msgstr "" - -#: www/views/preferencesLanguage.html:4 -#: www/views/tab-settings.html:53 -msgid "Language" -msgstr "" - -#: www/views/bitpayCard.html:61 -msgid "Last Month" -msgstr "" - -#: www/views/backup.html:36 -msgid "Let's verify your backup phrase." -msgstr "" - -#: www/views/addresses.html:45 -#: www/views/allAddresses.html:14 -msgid "Loading addresses..." -msgstr "" - -#: src/js/services/onGoingProcess.js:35 -msgid "Loading transaction info..." -msgstr "" - -#: www/views/tab-settings.html:95 -msgid "Lock App" -msgstr "" - -#: src/js/controllers/lockSetup.js:23 -msgid "Lock by Fingerprint" -msgstr "" - -#: src/js/controllers/lockSetup.js:14 -msgid "Lock by PIN" -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 "" - -#: src/js/services/bwcError.js:89 -msgid "Locktime in effect. Please wait to remove this spend proposal" -msgstr "" - -#: www/views/modals/bitpay-card-confirmation.html:14 -msgid "Log out" -msgstr "" - -#: www/views/addresses.html:87 -msgid "Low amount inputs" -msgstr "" - -#: www/views/includes/walletHistory.html:27 -msgid "Low fees" -msgstr "" - -#: www/views/onboarding/tour.html:38 -msgid "Makes sense" -msgstr "" - -#: src/js/controllers/modals/search.js:61 -msgid "Matches:" -msgstr "" - -#: www/views/includes/copayers.html:4 -#: www/views/preferencesInformation.html:79 -msgid "Me" -msgstr "" - -#: src/js/controllers/feedback/rateCard.js:32 -msgid "Meh - it's alright" -msgstr "" - -#: src/js/controllers/tx-details.js:148 -#: www/views/modals/paypro.html:48 -#: www/views/modals/txp-details.html:95 -#: www/views/tx-details.html:74 -msgid "Memo" -msgstr "" - -#: www/views/modals/txp-details.html:133 -msgid "Merchant Message" -msgstr "" - -#: src/js/services/bwcError.js:134 -msgid "Missing parameter" -msgstr "" - -#: src/js/services/bwcError.js:32 -msgid "Missing private keys to sign" -msgstr "" - -#: www/views/preferences.html:60 -#: www/views/preferencesAdvanced.html:3 -msgid "More Options" -msgstr "" - -#: www/views/includes/walletHistory.html:47 -#: www/views/tx-details.html:19 -msgid "Moved" -msgstr "" - -#: src/js/controllers/tx-details.js:114 -msgid "Moved Funds" -msgstr "" - -#: www/views/modals/txp-details.html:57 -msgid "Multiple recipients" -msgstr "" - -#: www/views/tab-import-phrase.html:8 -msgid "NOTE: To import a wallet from a 3rd party software, please go to Add Wallet > Create Wallet, and specify the Recovery Phrase there." -msgstr "" - -#: www/views/addressbook.add.html:21 -#: www/views/addressbook.view.html:18 -#: www/views/preferences.html:15 -#: www/views/preferencesAlias.html:17 -msgid "Name" -msgstr "" - -#: www/views/buyAmazon.html:55 -#: www/views/topup.html:63 -msgid "Network Fee" -msgstr "" - -#: src/js/services/bwcError.js:47 -msgid "Network error" -msgstr "" - -#: www/views/includes/walletActivity.html:43 -msgid "New Proposal" -msgstr "" - -#: src/js/controllers/addresses.js:131 -msgid "New address could not be generated. Please try again." -msgstr "" - -#: www/views/add.html:14 -msgid "New personal wallet" -msgstr "" - -#: www/views/includes/nextSteps.html:3 -msgid "Next steps" -msgstr "" - -#: www/views/tab-receive.html:16 -msgid "No Wallet" -msgstr "" - -#: src/js/controllers/buyAmazon.js:114 -msgid "No access key defined" -msgstr "" - -#: www/views/onboarding/backupRequest.html:5 -msgid "No backup, no bitcoin." -msgstr "" - -#: www/views/addressbook.html:19 -msgid "No contacts yet" -msgstr "" - -#: www/views/preferencesExternal.html:12 -msgid "No hardware information available." -msgstr "" - -#: www/views/tab-import-hardware.html:3 -msgid "No hardware wallets supported on this device" -msgstr "" - -#: www/views/proposals.html:24 -msgid "No pending proposals" -msgstr "" - -#: www/views/activity.html:25 -msgid "No recent transactions" -msgstr "" - -#: src/js/controllers/buyAmazon.js:43 -#: src/js/controllers/topup.js:46 -msgid "No signing proposal: No private key" -msgstr "" - -#: www/views/walletDetails.html:193 -msgid "No transactions yet" -msgstr "" - -#: src/js/controllers/preferencesDelete.js:15 -msgid "No wallet found" -msgstr "" - -#: src/js/controllers/preferencesDelete.js:8 -msgid "No wallet selected" -msgstr "" - -#: src/js/controllers/buyAmazon.js:298 -#: src/js/controllers/confirm.js:83 -#: src/js/controllers/topup.js:263 -msgid "No wallets available" -msgstr "" - -#: www/views/paperWallet.html:47 -msgid "No wallets available to receive funds" -msgstr "" - -#: src/js/services/feeService.js:12 -msgid "Normal" -msgstr "" - -#: src/js/services/bwcError.js:80 -msgid "Not authorized" -msgstr "" - -#: src/js/controllers/confirm.js:276 -msgid "Not enough funds for fee" -msgstr "" - -#: www/views/onboarding/tour.html:50 -msgid "Not even BitPay can access it." -msgstr "" - -#: src/js/controllers/paperWallet.js:47 -msgid "Not funds found" -msgstr "" - -#: www/views/feedback/rateApp.html:3 -#: www/views/onboarding/notifications.html:8 -msgid "Not now" -msgstr "" - -#: www/views/includes/output.html:15 -msgid "Note" -msgstr "" - -#: www/views/modals/wallets.html:25 -msgid "Notice: only 1-1 (single signature) wallets can be used for sell bitcoin" -msgstr "" - -#: www/views/preferencesNotifications.html:3 -#: www/views/tab-settings.html:46 -msgid "Notifications" -msgstr "" - -#: www/views/onboarding/collectEmail.html:9 -msgid "Notifications by email" -msgstr "" - -#: www/views/tx-details.html:117 -msgid "Notify me if confirmed" -msgstr "" - -#: www/views/preferencesNotifications.html:24 -msgid "Notify me when transactions are confirmed" -msgstr "" - -#: www/views/includes/backupNeededPopup.html:8 -msgid "Now is a good time to backup your wallet. If this device is lost, it is impossible to access your funds without a backup." -msgstr "" - -#: www/views/backupWarning.html:11 -msgid "Now is a perfect time to assess your surroundings. Nearby windows? Hidden cameras? Shoulder-spies?" -msgstr "" - -#: src/js/controllers/buyAmazon.js:310 -#: src/js/controllers/topup.js:284 -#: src/js/services/popupService.js:16 -#: src/js/services/popupService.js:52 -#: src/js/services/popupService.js:61 -#: src/js/services/popupService.js:72 -#: www/views/modals/chooseFeeLevel.html:6 -msgid "OK" -msgstr "" - -#: www/views/modals/tx-status.html:12 -#: www/views/modals/tx-status.html:24 -#: www/views/modals/tx-status.html:36 -#: www/views/modals/tx-status.html:46 -msgid "OKAY" -msgstr "" - -#: www/views/modals/terms.html:15 -msgid "Official English Disclaimer" -msgstr "" - -#: src/js/controllers/feedback/send.js:64 -msgid "Oh no!" -msgstr "" - -#: www/views/tab-home.html:39 -msgid "On this screen you can see all your wallets, accounts, and assets." -msgstr "" - -#: src/js/controllers/bitpayCard.js:113 -#: src/js/controllers/tab-settings.js:47 -msgid "Open" -msgstr "" - -#: src/js/controllers/preferencesLanguage.js:13 -msgid "Open Crowdin" -msgstr "" - -#: src/js/controllers/preferencesAbout.js:15 -msgid "Open GitHub" -msgstr "" - -#: src/js/controllers/preferencesAbout.js:13 -msgid "Open GitHub Project" -msgstr "" - -#: src/js/controllers/bitpayCard.js:123 -#: src/js/controllers/tx-details.js:175 -msgid "Open Insight" -msgstr "" - -#: www/views/tab-scan.html:22 -msgid "Open Settings" -msgstr "" - -#: src/js/controllers/preferencesLanguage.js:11 -msgid "Open Translation Community" -msgstr "" - -#: src/js/controllers/onboarding/terms.js:22 -msgid "Open Website" -msgstr "" - -#: www/views/tab-receive.html:27 -msgid "Open wallet" -msgstr "" - -#: www/views/includes/incomingDataMenu.html:19 -msgid "Open website" -msgstr "" - -#: www/views/bitpayCardIntro.html:34 -msgid "Order the BitPay Card" -msgstr "" - -#: www/views/join.html:102 -#: www/views/join.html:93 -#: www/views/tab-create-personal.html:67 -#: www/views/tab-create-personal.html:75 -#: www/views/tab-create-shared.html:104 -#: www/views/tab-create-shared.html:96 -#: www/views/tab-import-file.html:18 -#: www/views/tab-import-phrase.html:38 -msgid "Password" -msgstr "" - -#: src/js/controllers/import.js:83 -msgid "Password required. Make sure to enter your password in advanced options" -msgstr "" - -#: www/views/join.html:33 -msgid "Paste invitation here" -msgstr "" - -#: www/views/tab-import-file.html:13 -msgid "Paste the backup plain text code" -msgstr "" - -#: www/views/bitpayCardIntro.html:28 -msgid "Pay 0% fees to turn bitcoin into dollars." -msgstr "" - -#: www/views/modals/paypro.html:18 -msgid "Pay To" -msgstr "" - -#: src/js/controllers/modals/txpDetails.js:45 -#: www/views/modals/tx-status.html:33 -msgid "Payment Accepted" -msgstr "" - -#: www/views/confirm.html:25 -msgid "Payment Expires:" -msgstr "" - -#: www/views/modals/txp-details.html:6 -msgid "Payment Proposal" -msgstr "" - -#: www/views/modals/tx-status.html:21 -msgid "Payment Proposal Created" -msgstr "" - -#: www/views/tab-home.html:46 -msgid "Payment Proposals" -msgstr "" - -#: src/js/services/payproService.js:32 -msgid "Payment Protocol Invalid" -msgstr "" - -#: src/js/services/payproService.js:18 -msgid "Payment Protocol not supported on Chrome App" -msgstr "" - -#: www/views/includes/walletActivity.html:20 -msgid "Payment Received" -msgstr "" - -#: www/views/modals/tx-status.html:43 -#: www/views/modals/txp-details.html:43 -msgid "Payment Rejected" -msgstr "" - -#: src/js/controllers/modals/txpDetails.js:42 -#: www/views/confirm.html:126 -#: www/views/includes/walletActivity.html:11 -#: www/views/modals/txp-details.html:42 -msgid "Payment Sent" -msgstr "" - -#: www/views/modals/txp-details.html:32 -msgid "Payment accepted, but not yet broadcasted" -msgstr "" - -#: www/views/modals/txp-details.html:40 -msgid "Payment accepted. It will be broadcasted by Glidera. In case there is a problem, it can be deleted 6 hours after it was created." -msgstr "" - -#: www/views/modals/txp-details.html:109 -msgid "Payment details" -msgstr "" - -#: www/views/modals/paypro.html:6 -msgid "Payment request" -msgstr "" - -#: www/views/proposals.html:4 -msgid "Pending Proposals" -msgstr "" - -#: www/views/preferencesDeleteWallet.html:13 -msgid "Permanently delete this wallet." -msgstr "" - -#: src/js/services/profileService.js:388 -msgid "Personal Wallet" -msgstr "" - -#: www/views/backup.html:18 -msgid "Please carefully write down this phrase." -msgstr "" - -#: www/views/tab-scan.html:20 -msgid "Please connect a camera to get started." -msgstr "" - -#: src/js/controllers/import.js:260 -msgid "Please enter the recovery phrase" -msgstr "" - -#: src/js/controllers/create.js:168 -#: src/js/controllers/join.js:135 -msgid "Please enter the wallet recovery phrase" -msgstr "" - -#: www/views/modals/pin.html:9 -msgid "Please enter your PIN" -msgstr "" - -#: www/views/backup.html:46 -msgid "Please tap each word in the correct order." -msgstr "" - -#: src/js/services/bwcError.js:101 -msgid "Please upgrade Copay to perform this action" -msgstr "" - -#: src/js/controllers/import.js:222 -msgid "Please, select your backup file" -msgstr "" - -#: www/views/bitpayCard.html:81 -msgid "Pre-Auth Holds" -msgstr "" - -#: www/views/tab-settings.html:40 -msgid "Preferences" -msgstr "" - -#: src/js/services/onGoingProcess.js:38 -msgid "Preparing addresses..." -msgstr "" - -#: src/js/controllers/export.js:198 -msgid "Preparing backup..." -msgstr "" - -#: src/js/routes.js:1188 -msgid "Press again to exit" -msgstr "" - -#: src/js/services/feeService.js:11 -msgid "Priority" -msgstr "" - -#: www/views/includes/incomingDataMenu.html:80 -msgid "Private Key" -msgstr "" - -#: src/js/controllers/paperWallet.js:137 -msgid "Private key encrypted. Enter password" -msgstr "" - -#: src/js/services/bwcError.js:35 -msgid "Private key is encrypted, cannot sign" -msgstr "" - -#: www/views/includes/walletActivity.html:51 -msgid "Proposal Accepted" -msgstr "" - -#: src/js/controllers/modals/txpDetails.js:55 -#: src/js/controllers/tx-details.js:61 -#: www/views/confirm.html:127 -msgid "Proposal Created" -msgstr "" - -#: www/views/includes/walletActivity.html:27 -msgid "Proposal Deleted" -msgstr "" - -#: www/views/includes/walletActivity.html:35 -msgid "Proposal Rejected" -msgstr "" - -#: www/views/walletDetails.html:178 -msgid "Proposals" -msgstr "" - -#: src/js/controllers/buyAmazon.js:281 -msgid "Purchase Amount is limited to {{limitPerDay}} {{currency}} per day" -msgstr "" - -#: www/views/onboarding/notifications.html:3 -msgid "Push Notifications" -msgstr "" - -#: www/views/preferencesNotifications.html:17 -msgid "Push notifications for {{appName}} are currently disabled. Enable them in the Settings app." -msgstr "" - -#: www/views/export.html:17 -msgid "QR Code" -msgstr "" - -#: www/views/onboarding/disclaimer.html:13 -msgid "Quick review!" -msgstr "" - -#: src/js/controllers/create.js:79 -#: src/js/controllers/join.js:65 -msgid "Random" -msgstr "" - -#: www/views/feedback/rateApp.html:14 -msgid "Rate on the app store" -msgstr "" - -#: www/views/addresses.html:52 -msgid "Read less" -msgstr "" - -#: www/views/addresses.html:51 -msgid "Read more" -msgstr "" - -#: www/views/tab-receive.html:3 -#: www/views/tabs.html:7 -msgid "Receive" -msgstr "" - -#: www/views/customAmount.html:46 -msgid "Receive in" -msgstr "" - -#: www/views/includes/walletHistory.html:24 -#: www/views/tx-details.html:18 -msgid "Received" -msgstr "" - -#: src/js/controllers/tx-details.js:113 -msgid "Received Funds" -msgstr "" - -#: www/views/includes/walletHistory.html:57 -#: www/views/tx-details.html:24 -msgid "Receiving" -msgstr "" - -#: www/views/bitpayCard.html:60 -#: www/views/includes/walletHistory.html:3 -msgid "Recent" -msgstr "" - -#: www/views/advancedSettings.html:20 -msgid "Recent Transaction Card" -msgstr "" - -#: www/views/activity.html:4 -#: www/views/tab-home.html:58 -msgid "Recent Transactions" -msgstr "" - -#: www/views/amount.html:18 -#: www/views/tab-send.html:9 -msgid "Recipient" -msgstr "" - -#: www/views/modals/txp-details.html:62 -msgid "Recipients" -msgstr "" - -#: www/views/import.html:12 -msgid "Recovery phrase" -msgstr "" - -#: www/views/walletDetails.html:117 -#: www/views/walletDetails.html:36 -msgid "Recreate" -msgstr "" - -#: src/js/services/onGoingProcess.js:26 -msgid "Recreating Wallet..." -msgstr "" - -#: src/js/controllers/modals/txpDetails.js:57 -#: src/js/controllers/tx-details.js:63 -msgid "Rejected" -msgstr "" - -#: src/js/services/onGoingProcess.js:27 -msgid "Rejecting payment proposal" -msgstr "" - -#: www/views/preferencesAbout.html:9 -msgid "Release information" -msgstr "" - -#: www/views/addressbook.view.html:36 -msgid "Remove" -msgstr "" - -#: src/js/controllers/preferencesBitpayServices.js:7 -msgid "Remove BitPay Account?" -msgstr "" - -#: src/js/controllers/preferencesBitpayServices.js:19 -msgid "Remove BitPay Card?" -msgstr "" - -#: src/js/controllers/preferencesBitpayServices.js:8 -msgid "Removing your BitPay account will remove all associated BitPay account data from this device. Are you sure you would like to remove your BitPay Account ({{email}}) from this device?" -msgstr "" - -#: www/views/join.html:113 -#: www/views/join.html:121 -#: www/views/tab-create-personal.html:84 -#: www/views/tab-create-personal.html:92 -#: www/views/tab-create-shared.html:113 -#: www/views/tab-create-shared.html:121 -#: www/views/tab-export-file.html:17 -msgid "Repeat password" -msgstr "" - -#: www/views/tab-export-file.html:16 -msgid "Repeat the password" -msgstr "" - -#: www/views/preferences.html:55 -msgid "Request Fingerprint" -msgstr "" - -#: www/views/tab-receive.html:45 -msgid "Request Specific amount" -msgstr "" - -#: www/views/preferences.html:42 -msgid "Request Spending Password" -msgstr "" - -#: www/views/tab-create-shared.html:42 -msgid "Required number of signatures" -msgstr "" - -#: www/views/onboarding/welcome.html:9 -msgid "Restore from backup" -msgstr "" - -#: src/js/services/onGoingProcess.js:29 -msgid "Retrieving inputs information" -msgstr "" - -#: src/js/controllers/onboarding/tour.js:56 -msgid "Retry" -msgstr "" - -#: www/views/tab-scan.html:23 -msgid "Retry Camera" -msgstr "" - -#: www/views/addressbook.add.html:56 -#: www/views/includes/note.html:9 -#: www/views/preferencesAlias.html:21 -#: www/views/preferencesBwsUrl.html:25 -#: www/views/preferencesNotifications.html:46 -msgid "Save" -msgstr "" - -#: www/views/tab-scan.html:3 -#: www/views/tabs.html:11 -msgid "Scan" -msgstr "" - -#: www/views/tab-scan.html:15 -msgid "Scan QR Codes" -msgstr "" - -#: www/views/addresses.html:31 -msgid "Scan addresses for funds" -msgstr "" - -#: www/views/modals/fingerprintCheck.html:11 -msgid "Scan again" -msgstr "" - -#: src/js/services/fingerprintService.js:56 -msgid "Scan your fingerprint please" -msgstr "" - -#: src/js/services/onGoingProcess.js:30 -msgid "Scanning Wallet funds..." -msgstr "" - -#: www/views/includes/screenshotWarningModal.html:7 -msgid "Screenshots are not secure" -msgstr "" - -#: www/views/modals/search.html:6 -msgid "Search Transactions" -msgstr "" - -#: www/views/tab-send.html:13 -msgid "Search or enter bitcoin address" -msgstr "" - -#: www/views/modals/search.html:16 -msgid "Search transactions" -msgstr "" - -#: www/views/preferencesAltCurrency.html:14 -msgid "Search your currency" -msgstr "" - -#: www/views/preferences.html:30 -msgid "Security" -msgstr "" - -#: www/views/tab-import-file.html:7 -msgid "Select a backup file" -msgstr "" - -#: src/js/controllers/tab-receive.js:133 -msgid "Select a wallet" -msgstr "" - -#: www/views/modals/paypro.html:38 -msgid "Self-signed Certificate" -msgstr "" - -#: src/js/services/onGoingProcess.js:41 -msgid "Selling Bitcoin..." -msgstr "" - -#: www/views/feedback/send.html:13 -#: www/views/feedback/send.html:43 -#: www/views/tab-send.html:3 -#: www/views/tabs.html:15 -msgid "Send" -msgstr "" - -#: www/views/feedback/send.html:3 -#: www/views/tab-settings.html:29 -msgid "Send Feedback" -msgstr "" - -#: www/views/addressbook.view.html:31 -msgid "Send Money" -msgstr "" - -#: www/views/allAddresses.html:19 -msgid "Send addresses by email" -msgstr "" - -#: www/views/preferencesLogs.html:13 -#: www/views/tab-export-file.html:82 -msgid "Send by email" -msgstr "" - -#: src/js/controllers/confirm.js:151 -msgid "Send from" -msgstr "" - -#: www/views/includes/itemSelector.html:8 -msgid "Send max amount" -msgstr "" - -#: www/views/includes/incomingDataMenu.html:46 -msgid "Send payment to this address" -msgstr "" - -#: www/views/feedback/rateApp.html:17 -msgid "Send us feedback instead" -msgstr "" - -#: www/views/confirm.html:15 -#: www/views/includes/txp.html:12 -#: www/views/modals/txp-details.html:19 -#: www/views/tx-details.html:23 -msgid "Sending" -msgstr "" - -#: src/js/services/onGoingProcess.js:39 -msgid "Sending 2FA code..." -msgstr "" - -#: src/js/services/onGoingProcess.js:36 -msgid "Sending feedback..." -msgstr "" - -#: www/views/confirm.html:16 -msgid "Sending maximum amount" -msgstr "" - -#: src/js/services/onGoingProcess.js:31 -msgid "Sending transaction" -msgstr "" - -#: src/js/controllers/confirm.js:490 -msgid "Sending {{amountStr}} from your {{name}} wallet" -msgstr "" - -#: www/views/includes/walletHistory.html:42 -#: www/views/modals/tx-status.html:9 -#: www/views/topup.html:100 -#: www/views/tx-details.html:17 -msgid "Sent" -msgstr "" - -#: src/js/controllers/tx-details.js:112 -msgid "Sent Funds" -msgstr "" - -#: src/js/services/bwcError.js:38 -msgid "Server response could not be verified" -msgstr "" - -#: src/js/controllers/buyAmazon.js:96 -msgid "Service not available" -msgstr "" - -#: www/views/includes/homeIntegrations.html:3 -msgid "Services" -msgstr "" - -#: www/views/preferencesLogs.html:3 -msgid "Session Log" -msgstr "" - -#: www/views/preferencesAbout.html:35 -msgid "Session log" -msgstr "" - -#: www/views/tab-export-file.html:10 -msgid "Set up a password" -msgstr "" - -#: src/js/controllers/preferencesFee.js:84 -msgid "Set your own fee in satoshis/byte" -msgstr "" - -#: www/views/tab-settings.html:3 -#: www/views/tabs.html:19 -msgid "Settings" -msgstr "" - -#: www/views/feedback/complete.html:17 -#: www/views/feedback/complete.html:26 -msgid "Share the love by inviting your friends." -msgstr "" - -#: www/views/copayers.html:20 -msgid "Share this invitation with your copayers" -msgstr "" - -#: src/js/controllers/feedback/complete.js:5 -#: www/views/tab-settings.html:36 -msgid "Share {{appName}}" -msgstr "" - -#: www/views/tab-import-hardware.html:24 -msgid "Shared Wallet" -msgstr "" - -#: www/views/preferencesExternal.html:34 -msgid "Show Recovery Phrase" -msgstr "" - -#: www/views/tab-receive.html:34 -msgid "Show address" -msgstr "" - -#: www/views/join.html:45 -#: www/views/tab-create-personal.html:25 -#: www/views/tab-create-shared.html:54 -#: www/views/tab-export-file.html:24 -#: www/views/tab-import-file.html:27 -#: www/views/tab-import-hardware.html:30 -#: www/views/tab-import-phrase.html:32 -msgid "Show advanced options" -msgstr "" - -#: www/views/tab-send.html:37 -msgid "Show bitcoin address" -msgstr "" - -#: www/views/tab-send.html:59 -msgid "Show more" -msgstr "" - -#: src/js/services/bwcError.js:104 -msgid "Signatures rejected by server" -msgstr "" - -#: src/js/services/onGoingProcess.js:32 -msgid "Signing transaction" -msgstr "" - -#: 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 "" - -#: www/views/tab-create-personal.html:120 -#: www/views/tab-create-shared.html:149 -msgid "Single Address Wallet" -msgstr "" - -#: www/views/onboarding/collectEmail.html:40 -#: www/views/onboarding/tour.html:11 -msgid "Skip" -msgstr "" - -#: src/js/controllers/modals/txpDetails.js:34 -msgid "Slide" -msgstr "" - -#: www/views/buyAmazon.html:96 -msgid "Slide to buy" -msgstr "" - -#: src/js/controllers/create.js:83 -#: src/js/controllers/join.js:68 -msgid "Specify Recovery Phrase..." -msgstr "" - -#: src/js/services/bwcError.js:92 -msgid "Spend proposal is not accepted" -msgstr "" - -#: src/js/services/bwcError.js:95 -msgid "Spend proposal not found" -msgstr "" - -#: src/js/services/bwcError.js:137 -msgid "Spending Password needed" -msgstr "" - -#: www/views/walletDetails.html:162 -msgid "Spending this balance will need significant Bitcoin network fees" -msgstr "" - -#: www/views/tab-send.html:28 -msgid "Start sending bitcoin" -msgstr "" - -#: www/views/lockSetup.html:3 -msgid "Startup Lock" -msgstr "" - -#: www/views/topup.html:101 -msgid "Success" -msgstr "" - -#: src/js/services/feeService.js:14 -msgid "Super Economy" -msgstr "" - -#: www/views/paperWallet.html:7 -msgid "Sweep" -msgstr "" - -#: www/views/includes/incomingDataMenu.html:89 -#: www/views/paperWallet.html:3 -msgid "Sweep paper wallet" -msgstr "" - -#: src/js/services/onGoingProcess.js:33 -msgid "Sweeping Wallet..." -msgstr "" - -#: www/views/preferencesDeleteWallet.html:16 -msgid "THIS ACTION CANNOT BE REVERSED" -msgstr "" - -#: www/views/onboarding/welcome.html:5 -msgid "Take control of your money,
get started with bitcoin." -msgstr "" - -#: www/views/walletDetails.html:140 -#: www/views/walletDetails.html:60 -msgid "Tap and hold to show" -msgstr "" - -#: www/views/walletDetails.html:112 -#: www/views/walletDetails.html:31 -msgid "Tap to retry" -msgstr "" - -#: www/views/termsOfUse.html:3 -msgid "Terms Of Use" -msgstr "" - -#: www/views/modals/terms.html:3 -#: www/views/onboarding/disclaimer.html:29 -#: www/views/onboarding/disclaimer.html:43 -#: www/views/preferencesAbout.html:30 -msgid "Terms of Use" -msgstr "" - -#: www/views/tab-create-personal.html:116 -#: www/views/tab-import-phrase.html:65 -msgid "Testnet" -msgstr "" - -#: www/views/includes/incomingDataMenu.html:61 -msgid "Text" -msgstr "" - -#: src/js/controllers/feedback/send.js:27 -#: src/js/controllers/feedback/send.js:76 -#: www/views/feedback/complete.html:20 -#: www/views/feedback/rateApp.html:4 -msgid "Thank you!" -msgstr "" - -#: src/js/controllers/feedback/send.js:72 -msgid "Thanks!" -msgstr "" - -#: src/js/controllers/feedback/send.js:73 -msgid "That's exciting to hear. We'd love to earn that fifth star from you – how could we improve your experience?" -msgstr "" - -#: src/js/services/ledger.js:152 -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 "" - -#: www/views/onboarding/tour.html:37 -msgid "The exchange rate changes with the market." -msgstr "" - -#: www/views/preferencesFee.html:12 -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:51 -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." -msgstr "" - -#: www/views/tab-import-phrase.html:4 -msgid "The password of the recovery phrase (if set)" -msgstr "" - -#: src/js/services/walletService.js:1140 -msgid "The payment was created but could not be completed. Please try again from home screen" -msgstr "" - -#: www/views/modals/txp-details.html:26 -msgid "The payment was removed by creator" -msgstr "" - -#: www/views/join.html:88 -#: www/views/tab-create-personal.html:61 -#: www/views/tab-create-shared.html:90 -#: www/views/tab-import-phrase.html:40 -msgid "The recovery phrase could require a password to be imported" -msgstr "" - -#: src/js/services/bwcError.js:56 -msgid "The request could not be understood by the server" -msgstr "" - -#: www/views/addresses.html:52 -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 "" - -#: src/js/services/bwcError.js:98 -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:27 -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 "" - -#: www/views/tab-import-phrase.html:6 -msgid "The wallet service URL" -msgstr "" - -#: src/js/controllers/tab-home.js:38 -msgid "There is a new version of {{appName}} available" -msgstr "" - -#: src/js/controllers/import.js:213 -#: src/js/controllers/import.js:237 -#: src/js/controllers/import.js:317 -msgid "There is an error in the form" -msgstr "" - -#: src/js/controllers/feedback/send.js:61 -#: src/js/controllers/feedback/send.js:65 -msgid "There's obviously something we're doing wrong." -msgstr "" - -#: src/js/controllers/feedback/rateCard.js:38 -msgid "This app is fantastic!" -msgstr "" - -#: www/views/onboarding/tour.html:47 -msgid "This app stores your bitcoin with cutting-edge security." -msgstr "" - -#: src/js/controllers/confirm.js:468 -msgid "This bitcoin payment request has expired." -msgstr "" - -#: www/views/join.html:130 -#: www/views/tab-create-personal.html:101 -#: www/views/tab-create-shared.html:130 -msgid "This password cannot be recovered. If the password is lost, there is no way you could recover your funds." -msgstr "" - -#: www/views/backup.html:24 -msgid "This recovery phrase was created with a password. To recover this wallet both the recovery phrase and password are needed." -msgstr "" - -#: www/views/tx-details.html:93 -msgid "This transaction amount is too small compared to current Bitcoin network fees. Spending these funds will need a Bitcoin network fee cost comparable to the funds itself." -msgstr "" - -#: www/views/tx-details.html:89 -msgid "This transaction could take a long time to confirm or could be dropped due to the low fees set by the sender" -msgstr "" - -#: www/views/walletDetails.html:116 -#: 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:138 -#: www/views/tx-details.html:121 -msgid "Timeline" -msgstr "" - -#: www/views/confirm.html:31 -#: www/views/includes/output.html:2 -#: www/views/modals/txp-details.html:111 -#: www/views/modals/txp-details.html:53 -#: www/views/tx-details.html:41 -#: www/views/tx-details.html:53 -msgid "To" -msgstr "" - -#: www/views/tab-send.html:32 -msgid "To get started, buy bitcoin or share your address. You can receive bitcoin from any wallet or service." -msgstr "" - -#: www/views/tab-send.html:33 -msgid "To get started, you'll need to create a bitcoin wallet and get some bitcoin." -msgstr "" - -#: src/js/services/bitpayAccountService.js:73 -msgid "To {{reason}} you must first add your BitPay account - {{email}}" -msgstr "" - -#: src/js/services/onGoingProcess.js:48 -msgid "Top up in progress..." -msgstr "" - -#: src/js/controllers/topup.js:205 -msgid "Top up {{amountStr}} to debit card ({{cardLastNumber}})" -msgstr "" - -#: www/views/buyAmazon.html:61 -#: www/views/modals/wallet-balance.html:23 -#: www/views/topup.html:70 -msgid "Total" -msgstr "" - -#: www/views/walletDetails.html:185 -msgid "Total Locked Balance" -msgstr "" - -#: www/views/tab-create-shared.html:33 -msgid "Total number of copayers" -msgstr "" - -#: www/views/addresses.html:81 -msgid "Total wallet inputs" -msgstr "" - -#: src/js/services/fingerprintService.js:63 -#: src/js/services/fingerprintService.js:68 -msgid "Touch ID Failed" -msgstr "" - -#: src/js/controllers/tx-details.js:11 -msgid "Transaction" -msgstr "" - -#: www/views/confirm.html:128 -msgid "Transaction Created" -msgstr "" - -#: www/views/preferencesAdvanced.html:29 -#: www/views/preferencesHistory.html:3 -msgid "Transaction History" -msgstr "" - -#: src/js/services/bwcError.js:83 -msgid "Transaction already broadcasted" -msgstr "" - -#: src/js/controllers/buyAmazon.js:306 -#: src/js/controllers/topup.js:279 -msgid "Transaction has not been created" -msgstr "" - -#: www/views/topup.html:104 -msgid "Transaction initiated" -msgstr "" - -#: src/js/controllers/tx-details.js:102 -msgid "Transaction not available at this time" -msgstr "" - -#: src/js/controllers/activity.js:45 -#: src/js/controllers/tab-home.js:174 -msgid "Transaction not found" -msgstr "" - -#: www/views/modals/chooseFeeLevel.html:54 -msgid "Transactions without fee are not supported." -msgstr "" - -#: src/js/controllers/paperWallet.js:110 -msgid "Transfer to" -msgstr "" - -#: www/views/tab-send.html:67 -msgid "Transfer to Wallet" -msgstr "" - -#: www/views/modals/pin.html:13 -msgid "Try again in {{expires}}" -msgstr "" - -#: www/views/bitpayCardIntro.html:18 -msgid "Turn bitcoin into dollars, swipe anywhere Visa® is accepted." -msgstr "" - -#: www/views/tab-import-phrase.html:17 -msgid "Type the Recovery Phrase (usually 12 words)" -msgstr "" - -#: src/js/controllers/backup.js:75 -msgid "Uh oh..." -msgstr "" - -#: www/views/tx-details.html:100 -msgid "Unconfirmed" -msgstr "" - -#: www/views/preferencesUnit.html:4 -msgid "Unit" -msgstr "" - -#: www/views/walletDetails.html:179 -msgid "Unsent transactions" -msgstr "" - -#: www/views/addresses.html:39 -msgid "Unused Addresses" -msgstr "" - -#: www/views/addresses.html:50 -msgid "Unused Addresses Limit" -msgstr "" - -#: src/js/controllers/tab-home.js:146 -msgid "Update Available" -msgstr "" - -#: www/views/proposals.html:14 -msgid "Updating pending proposals. Please stand by" -msgstr "" - -#: www/views/walletDetails.html:211 -msgid "Updating transaction history. Please stand by." -msgstr "" - -#: www/views/activity.html:14 -msgid "Updating... Please stand by" -msgstr "" - -#: src/js/services/feeService.js:10 -msgid "Urgent" -msgstr "" - -#: www/views/advancedSettings.html:11 -msgid "Use Unconfirmed Funds" -msgstr "" - -#: src/js/services/onGoingProcess.js:34 -msgid "Validating recovery phrase..." -msgstr "" - -#: www/views/modals/fingerprintCheck.html:4 -msgid "Verify your identity" -msgstr "" - -#: www/views/preferencesAbout.html:14 -#: www/views/preferencesExternal.html:25 -msgid "Version" -msgstr "" - -#: www/views/tab-export-file.html:69 -msgid "View" -msgstr "" - -#: www/views/addresses.html:34 -msgid "View All Addresses" -msgstr "" - -#: src/js/controllers/onboarding/terms.js:20 -msgid "View Terms of Service" -msgstr "" - -#: src/js/controllers/bitpayCard.js:122 -#: src/js/controllers/tx-details.js:174 -msgid "View Transaction on Insight" -msgstr "" - -#: src/js/controllers/tab-home.js:148 -msgid "View Update" -msgstr "" - -#: www/views/tx-details.html:147 -msgid "View on blockchain" -msgstr "" - -#: www/views/walletDetails.html:171 -msgid "WARNING: Key derivation is not working on this device/wallet. Actions cannot be performed on this wallet." -msgstr "" - -#: www/views/tab-export-file.html:45 -msgid "WARNING: Not including the private key allows to check the wallet balance, transaction history, and create spend proposals from the export. However, does not allow to approve (sign) proposals, so funds will not be accessible from the export." -msgstr "" - -#: www/views/tab-export-file.html:36 -msgid "WARNING: The private key of this wallet is not available. The export allows to check the wallet balance, transaction history, and create spend proposals from the export. However, does not allow to approve (sign) proposals, so funds will not be accessible from the export." -msgstr "" - -#: www/views/modals/paypro.html:42 -msgid "WARNING: UNTRUSTED CERTIFICATE" -msgstr "" - -#: src/js/services/onGoingProcess.js:15 -msgid "Waiting for Ledger..." -msgstr "" - -#: src/js/services/onGoingProcess.js:16 -msgid "Waiting for Trezor..." -msgstr "" - -#: www/views/copayers.html:48 -msgid "Waiting for copayers" -msgstr "" - -#: www/views/copayers.html:53 -msgid "Waiting..." -msgstr "" - -#: www/views/addresses.html:3 -#: www/views/preferencesAdvanced.html:17 -msgid "Wallet Addresses" -msgstr "" - -#: www/views/preferencesColor.html:4 -msgid "Wallet Color" -msgstr "" - -#: www/views/preferencesInformation.html:23 -msgid "Wallet Configuration (m-n)" -msgstr "" - -#: www/views/onboarding/collectEmail.html:5 -msgid "Wallet Created" -msgstr "" - -#: www/views/preferencesInformation.html:17 -msgid "Wallet Id" -msgstr "" - -#: www/views/preferencesAdvanced.html:13 -#: www/views/preferencesInformation.html:3 -msgid "Wallet Information" -msgstr "" - -#: www/views/addresses.html:76 -msgid "Wallet Inputs" -msgstr "" - -#: www/views/join.html:26 -msgid "Wallet Invitation" -msgstr "" - -#: www/views/join.html:57 -#: www/views/tab-create-personal.html:36 -#: www/views/tab-create-shared.html:65 -msgid "Wallet Key" -msgstr "" - -#: www/views/preferencesAlias.html:4 -msgid "Wallet Name" -msgstr "" - -#: www/views/preferencesInformation.html:11 -msgid "Wallet Name (at creation)" -msgstr "" - -#: www/views/preferencesInformation.html:29 -msgid "Wallet Network" -msgstr "" - -#: www/views/join.html:74 -#: www/views/tab-create-personal.html:48 -#: www/views/tab-create-shared.html:77 -msgid "Wallet Recovery Phrase" -msgstr "" - -#: src/js/services/bwcError.js:26 -msgid "Wallet Recovery Phrase is invalid" -msgstr "" - -#: www/views/preferencesAdvanced.html:25 -#: www/views/tab-import-phrase.html:70 -msgid "Wallet Service URL" -msgstr "" - -#: www/views/preferences.html:4 -msgid "Wallet Settings" -msgstr "" - -#: www/views/tab-import-hardware.html:11 -#: www/views/tab-import-phrase.html:58 -msgid "Wallet Type" -msgstr "" - -#: src/js/services/bwcError.js:59 -msgid "Wallet already exists" -msgstr "" - -#: src/js/services/profileService.js:498 -msgid "Wallet already in Copay" -msgstr "" - -#: www/views/includes/walletActivity.html:6 -msgid "Wallet created" -msgstr "" - -#: www/views/copayers.html:58 -msgid "Wallet incomplete and broken" -msgstr "" - -#: src/js/services/bwcError.js:65 -msgid "Wallet is full" -msgstr "" - -#: src/js/services/bwcError.js:125 -msgid "Wallet is locked" -msgstr "" - -#: src/js/services/bwcError.js:128 -msgid "Wallet is not complete" -msgstr "" - -#: www/views/tab-create-personal.html:12 -#: www/views/tab-create-shared.html:12 -msgid "Wallet name" -msgstr "" - -#: src/js/services/bwcError.js:131 -msgid "Wallet needs backup" -msgstr "" - -#: www/views/tab-receive.html:59 -#: www/views/walletDetails.html:157 -msgid "Wallet not backed up" -msgstr "" - -#: src/js/services/bwcError.js:68 -msgid "Wallet not found" -msgstr "" - -#: src/js/controllers/tab-home.js:220 -msgid "Wallet not registered" -msgstr "" - -#: src/js/services/bwcError.js:29 -msgid "Wallet not registered at the wallet service. Recreate it from \"Create Wallet\" using \"Advanced Options\" to set your recovery phrase" -msgstr "" - -#: www/views/backup.html:11 -msgid "Wallet recovery phrase not available." -msgstr "" - -#: src/js/services/bwcError.js:50 -msgid "Wallet service not found" -msgstr "" - -#: www/views/tab-home.html:69 -msgid "Wallets" -msgstr "" - -#: www/views/tab-settings.html:102 -msgid "Wallets & Integrations" -msgstr "" - -#: src/js/controllers/addressbookView.js:23 -#: src/js/controllers/modals/txpDetails.js:147 -#: src/js/controllers/modals/txpDetails.js:164 -#: src/js/controllers/preferencesDelete.js:25 -#: src/js/controllers/preferencesExternal.js:14 -#: www/views/preferencesDeleteWallet.html:11 -msgid "Warning!" -msgstr "" - -#: www/views/modals/txp-details.html:47 -msgid "Warning: this transaction has unconfirmed inputs" -msgstr "" - -#: src/js/controllers/onboarding/backupRequest.js:17 -msgid "Watch out!" -msgstr "" - -#: src/js/controllers/feedback/send.js:69 -msgid "We'd love to do better." -msgstr "" - -#: www/views/backup.html:28 -msgid "We'll confirm on the next screen." -msgstr "" - -#: src/js/controllers/feedback/send.js:77 -msgid "We're always looking for ways to improve {{appName}}." -msgstr "" - -#: src/js/controllers/feedback/send.js:83 -msgid "We're always looking for ways to improve {{appName}}. How could we improve your experience?" -msgstr "" - -#: www/views/includes/incomingDataMenu.html:6 -msgid "Website" -msgstr "" - -#: www/views/preferencesLanguage.html:16 -msgid "We’re always looking for translation contributions! You can make corrections or help to make this app available in your native language by joining our community on Crowdin." -msgstr "" - -#: www/views/preferencesAlias.html:11 -msgid "What do you call this wallet?" -msgstr "" - -#: www/views/preferencesAlias.html:12 -msgid "When this wallet was created, it was called “{{walletName}}”. You can change the name displayed on this device below." -msgstr "" - -#: www/views/onboarding/collectEmail.html:10 -msgid "Where would you like to receive email notifications about payments?" -msgstr "" - -#: www/views/addresses.html:19 -msgid "Why?" -msgstr "" - -#: www/views/feedback/rateApp.html:10 -msgid "Would you be willing to rate {{appName}} in the app store?" -msgstr "" - -#: www/views/onboarding/notifications.html:4 -msgid "Would you like to receive push notifications about payments?" -msgstr "" - -#: src/js/controllers/import.js:270 -msgid "Wrong number of recovery words:" -msgstr "" - -#: src/js/services/bwcError.js:140 -msgid "Wrong spending password" -msgstr "" - -#: www/views/modals/confirmation.html:7 -msgid "Yes" -msgstr "" - -#: src/js/controllers/onboarding/backupRequest.js:25 -msgid "Yes, skip" -msgstr "" - -#: src/js/controllers/onboarding/backupRequest.js:24 -msgid "You can create a backup later from your wallet settings." -msgstr "" - -#: src/js/controllers/preferencesLanguage.js:12 -msgid "You can make contributions by signing up on our Crowdin community translation website. We’re looking forward to hearing from you!" -msgstr "" - -#: www/views/tab-scan.html:16 -msgid "You can scan bitcoin addresses, payment requests, paper wallets, and more." -msgstr "" - -#: 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 "" - -#: www/views/onboarding/tour.html:19 -msgid "You can spend bitcoin at millions of websites and stores worldwide." -msgstr "" - -#: www/views/backup.html:12 -msgid "You can still export it from Advanced > Export." -msgstr "" - -#: www/views/onboarding/tour.html:32 -msgid "You can trade it for other currencies like US Dollars, Euros, or Pounds." -msgstr "" - -#: www/views/onboarding/tour.html:46 -msgid "You control your bitcoin." -msgstr "" - -#: www/views/modals/chooseFeeLevel.html:63 -msgid "You should not set a fee higher than {{maxFeeRecommended}} satoshis/byte." -msgstr "" - -#: www/views/modals/bitpay-card-confirmation.html:5 -msgid "You will need to log back for fill in your BitPay Card." -msgstr "" - -#: www/views/preferencesNotifications.html:34 -msgid "You'll receive email notifications about payments sent and received from your wallets." -msgstr "" - -#: www/views/bitpayCard.html:50 -msgid "Your BitPay Card is ready. Add funds to your card to start using it at stores and ATMs worldwide." -msgstr "" - -#: www/views/includes/confirmBackupPopup.html:6 -msgid "Your bitcoin wallet is backed up!" -msgstr "" - -#: www/views/tab-home.html:36 -msgid "Your bitcoin wallet is ready!" -msgstr "" - -#: www/views/modals/chooseFeeLevel.html:60 -msgid "Your fee is lower than recommended." -msgstr "" - -#: www/views/feedback/send.html:42 -msgid "Your ideas, feedback, or comments" -msgstr "" - -#: www/views/tab-create-shared.html:22 -msgid "Your name" -msgstr "" - -#: www/views/join.html:16 -msgid "Your nickname" -msgstr "" - -#: www/views/tab-export-file.html:11 -#: www/views/tab-import-file.html:20 -msgid "Your password" -msgstr "" - -#: www/views/buyAmazon.html:102 -msgid "Your purchase could not be completed" -msgstr "" - -#: www/views/buyAmazon.html:105 -msgid "Your purchase was added to the list of pending" -msgstr "" - -#: www/views/onboarding/backupRequest.html:10 -msgid "Your wallet is never saved to cloud storage or standard device backups." -msgstr "" - -#: src/js/services/walletService.js:1031 -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/paperWallet.html:35 -#: www/views/tab-home.html:96 -#: www/views/tab-receive.html:74 -#: www/views/walletDetails.html:139 -#: www/views/walletDetails.html:59 -msgid "[Balance Hidden]" -msgstr "" - -#: src/js/controllers/bitpayCardIntro.js:11 -msgid "add your BitPay Visa card(s)" -msgstr "" - -#: www/views/includes/available-balance.html:8 -msgid "locked by pending payments" -msgstr "" - -#: src/js/services/profileService.js:389 -msgid "me" -msgstr "" - -#: www/views/addressbook.add.html:32 -msgid "name@example.com" -msgstr "" - -#: www/views/preferencesHistory.html:15 -msgid "preparing..." -msgstr "" - -#: src/js/controllers/confirm.js:329 -#: src/js/controllers/modals/txpDetails.js:44 -msgid "to accept" -msgstr "" - -#: src/js/controllers/confirm.js:327 -msgid "to pay" -msgstr "" - -#: src/js/controllers/confirm.js:331 -#: src/js/controllers/modals/txpDetails.js:41 -msgid "to send" -msgstr "" - -#: src/js/controllers/buyAmazon.js:238 -msgid "{{amountStr}} for Amazon.com Gift Card" -msgstr "" - -#: www/views/preferencesBwsUrl.html:21 -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 "" - -#: src/js/controllers/confirm.js:358 -msgid "{{fee}} will be deducted for bitcoin networking fees." -msgstr "" - -#: www/views/confirm.html:87 -msgid "{{tx.txp[wallet.id].feeRatePerStr}} of the sending amount" -msgstr "" - -#: www/views/walletDetails.html:212 -msgid "{{updatingTxHistoryProgress}} transactions downloaded" -msgstr "" - -#: www/views/copayers.html:46 -#: www/views/includes/walletInfo.html:12 -msgid "{{wallet.m}}-of-{{wallet.n}}" -msgstr "" diff --git a/i18n/po/zh.po b/i18n/po/zh.po deleted file mode 100644 index 96202a3c2..000000000 --- a/i18n/po/zh.po +++ /dev/null @@ -1,3359 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Project-Id-Version: copay\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: crowdin.com\n" -"X-Crowdin-Project: copay\n" -"X-Crowdin-Language: zh-CN\n" -"X-Crowdin-File: template.pot\n" -"Last-Translator: cmgustavo83\n" -"Language-Team: Chinese Simplified\n" -"Language: zh\n" -"PO-Revision-Date: 2017-07-18 13:18-0400\n" - -#: www/views/modals/paypro.html:34 -msgid "(Trusted)" -msgstr "(可信的)" - -#: www/views/includes/txp.html:23 -#: www/views/includes/walletHistory.html:64 -msgid "(possible double spend)" -msgstr "(重复支付)" - -#: www/views/modals/txp-details.html:161 -msgid "* A payment proposal can be deleted if 1) you are the creator, and no other copayer has signed, or 2) 24 hours have passed since the proposal was created." -msgstr "* 如果 1) 你是创造者,及没有其他 copayer 签名,或 2) 24 小时已经过去,支付提议将被删除。" - -#: www/views/tx-details.html:84 -msgid "- {{btx.feeRateStr}} of the transaction" -msgstr "" - -#: www/views/modals/txp-details.html:104 -msgid "- {{tx.feeRateStr}} of the transaction" -msgstr "" - -#: www/views/feedback/rateApp.html:7 -msgid "5-star ratings help us get {{appName}} into more hands, and more users means more resources can be committed to the app!" -msgstr "5 星评级帮助我们进入更多的人手, {{appName}} 和更多的用户意味着的的资源可以致力于应用!" - -#: src/js/controllers/feedback/send.js:27 -#: www/views/feedback/complete.html:21 -msgid "A member of the team will review your feedback as soon as possible." -msgstr "团队的成员将尽快审查您的反馈意见。" - -#: src/js/controllers/confirm.js:351 -msgid "A total of {{amountAboveMaxSizeStr}} were excluded. The maximum size allowed for a transaction was exceeded." -msgstr "备注︰共有{{amountAboveMaxSizeStr}} 被排除了。超出了交易允许的最大体积" - -#: src/js/controllers/confirm.js:345 -msgid "A total of {{amountBelowFeeStr}} were excluded. These funds come from UTXOs smaller than the network fee provided." -msgstr "备注:共有{{amountBelowFeeStr}} 被排除了。这些来自 UTXOs 的资金小于提供的网络费用。" - -#: src/js/controllers/preferencesAbout.js:6 -#: www/views/tab-settings.html:156 -msgid "About" -msgstr "关于" - -#: src/js/controllers/modals/txpDetails.js:56 -#: src/js/controllers/tx-details.js:62 -msgid "Accepted" -msgstr "同意" - -#: www/views/preferencesInformation.html:66 -msgid "Account" -msgstr "帐户" - -#: www/views/join.html:69 -#: www/views/tab-create-personal.html:43 -#: www/views/tab-create-shared.html:72 -#: www/views/tab-import-hardware.html:19 -msgid "Account Number" -msgstr "帐号" - -#: www/views/preferencesBitpayServices.html:23 -msgid "Accounts" -msgstr "帐户" - -#: www/views/bitpayCard.html:56 -msgid "Activity" -msgstr "活动" - -#: src/js/services/bitpayAccountService.js:83 -msgid "Add Account" -msgstr "添加帐户" - -#: src/js/services/bitpayAccountService.js:69 -msgid "Add BitPay Account?" -msgstr "添加 BitPay 帐户吗?" - -#: www/views/addressbook.add.html:4 -#: www/views/addressbook.html:22 -msgid "Add Contact" -msgstr "添加联系人" - -#: www/views/bitpayCard.html:28 -msgid "Add Funds" -msgstr "添加金额" - -#: www/views/confirm.html:96 -msgid "Add Memo" -msgstr "添加备注" - -#: www/views/join.html:84 -#: www/views/tab-create-personal.html:57 -#: www/views/tab-create-shared.html:86 -msgid "Add a password" -msgstr "添加密码" - -#: www/views/includes/accountSelector.html:27 -msgid "Add account" -msgstr "添加帐户" - -#: www/views/join.html:87 -#: www/views/tab-create-personal.html:60 -#: www/views/tab-create-shared.html:89 -msgid "Add an optional password to secure the recovery phrase" -msgstr "添加可选的密码,以保护恢复短语" - -#: www/views/includes/incomingDataMenu.html:41 -msgid "Add as a contact" -msgstr "" - -#: src/js/controllers/confirm.js:374 -msgid "Add description" -msgstr "添加描述" - -#: www/views/topup.html:6 -msgid "Add funds" -msgstr "" - -#: src/js/services/bitpayAccountService.js:78 -msgid "Add this BitPay account ({{email}})?" -msgstr "" - -#: www/views/add.html:3 -msgid "Add wallet" -msgstr "添加钱包" - -#: www/views/addressbook.view.html:26 -#: www/views/customAmount.html:28 -#: www/views/modals/paypro.html:24 -msgid "Address" -msgstr "地址" - -#: www/views/addressbook.html:6 -#: www/views/tab-settings.html:13 -msgid "Address Book" -msgstr "地址簿" - -#: www/views/preferencesInformation.html:35 -msgid "Address Type" -msgstr "地址类型" - -#: www/views/addresses.html:64 -msgid "Addresses With Balance" -msgstr "地址与余额" - -#: www/views/tab-settings.html:149 -msgid "Advanced" -msgstr "進階" - -#: www/views/advancedSettings.html:3 -msgid "Advanced Settings" -msgstr "进阶设置" - -#: www/views/bitpayCard.html:62 -msgid "All" -msgstr "全选" - -#: www/views/allAddresses.html:3 -msgid "All Addresses" -msgstr "所有地址" - -#: 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:25 -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 "允许通知" - -#: www/views/onboarding/disclaimer.html:14 -msgid "Almost done! Let's review." -msgstr "差不多完成了 !让我们回顾一下。" - -#: www/views/preferencesAltCurrency.html:4 -#: www/views/tab-settings.html:74 -msgid "Alternative Currency" -msgstr "替代货币" - -#: src/js/controllers/buyAmazon.js:97 -msgid "Amazon.com is not available at this moment. Please try back later." -msgstr "" - -#: www/views/amount.html:44 -#: www/views/customAmount.html:34 -#: www/views/includes/output.html:7 -msgid "Amount" -msgstr "数额" - -#: src/js/services/bwcError.js:110 -msgid "Amount below minimum allowed" -msgstr "数额低于最低允许值" - -#: src/js/controllers/confirm.js:191 -msgid "Amount too big" -msgstr "量太大" - -#: www/views/includes/walletHistory.html:31 -msgid "Amount too low to spend" -msgstr "" - -#: src/js/controllers/tab-home.js:147 -msgid "An update to this app is available. For your security, please update to the latest version." -msgstr "本程序有一个可用的更新。为了您的安全,请更新到最新版本。" - -#: www/views/backupWarning.html:14 -msgid "Anyone with your backup phrase can access or spend your bitcoin." -msgstr "任何人只要持有你的备份短语,就可以访问或者花掉你的比特币。" - -#: www/views/addresses.html:94 -msgid "Approximate Bitcoin network fee to transfer wallet's balance (with normal priority)" -msgstr "" - -#: www/views/backupWarning.html:10 -msgid "Are you being watched?" -msgstr "你正在被监视吗?" - -#: src/js/controllers/preferencesExternal.js:15 -msgid "Are you being watched? Anyone with your recovery phrase can access or spend your bitcoin." -msgstr "" - -#: src/js/controllers/copayers.js:56 -msgid "Are you sure you want to cancel and delete this wallet?" -msgstr "确定取消和删除这个钱包?" - -#: src/js/controllers/addressbookView.js:24 -msgid "Are you sure you want to delete this contact?" -msgstr "" - -#: src/js/controllers/preferencesDelete.js:26 -msgid "Are you sure you want to delete this wallet?" -msgstr "确定要删除这钱包?" - -#: src/js/controllers/modals/txpDetails.js:148 -msgid "Are you sure you want to reject this transaction?" -msgstr "确定拒绝这笔交易?" - -#: src/js/controllers/modals/txpDetails.js:165 -msgid "Are you sure you want to remove this transaction?" -msgstr "确定要删除这项交易吗?" - -#: src/js/controllers/onboarding/backupRequest.js:23 -msgid "Are you sure you want to skip it?" -msgstr "你确定你想跳过它?" - -#: www/views/modals/bitpay-card-confirmation.html:4 -msgid "Are you sure you would like to log out of your BitPay Card account?" -msgstr "" - -#: src/js/controllers/preferencesBitpayCard.js:7 -#: src/js/controllers/preferencesBitpayServices.js:20 -msgid "Are you sure you would like to remove your BitPay Card ({{lastFourDigits}}) from this device?" -msgstr "你确定你想要从这个设备中删除您的 BitPay 卡 ({{lastFourDigits}})吗?" - -#: www/views/includes/walletInfo.html:5 -msgid "Auditable" -msgstr "可审核" - -#: www/views/modals/wallet-balance.html:42 -msgid "Available" -msgstr "可用空间" - -#: www/views/includes/available-balance.html:3 -msgid "Available Balance" -msgstr "可用余额" - -#: www/views/modals/chooseFeeLevel.html:24 -#: www/views/preferencesFee.html:15 -msgid "Average confirmation time" -msgstr "平均确认时间" - -#: www/views/join.html:140 -#: www/views/tab-create-personal.html:111 -#: www/views/tab-create-shared.html:140 -#: www/views/tab-import-phrase.html:48 -msgid "BIP32 path for address derivation" -msgstr "BIP32 路径的地址衍生" - -#: www/views/preferences.html:34 -msgid "Backup" -msgstr "备份" - -#: www/views/includes/backupNeededPopup.html:7 -msgid "Backup Needed" -msgstr "需要备份" - -#: src/js/controllers/lockSetup.js:87 -msgid "Backup all livenet wallets before using this function" -msgstr "" - -#: www/views/preferences.html:36 -#: www/views/tab-settings.html:120 -msgid "Backup needed" -msgstr "需要备份" - -#: www/views/includes/backupNeededPopup.html:9 -msgid "Backup now" -msgstr "现在备份" - -#: www/views/onboarding/backupRequest.html:11 -#: www/views/tab-export-file.html:89 -msgid "Backup wallet" -msgstr "备份钱包" - -#: src/js/controllers/lockSetup.js:84 -msgid "Backup your wallet before using this function" -msgstr "在使用此功能之前,请备份你的钱包。" - -#: src/js/services/profileService.js:430 -msgid "Bad wallet invitation" -msgstr "坏钱包邀请" - -#: www/views/preferencesInformation.html:96 -msgid "Balance By Address" -msgstr "地址余额" - -#: www/views/includes/confirmBackupPopup.html:7 -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 "请务必将您的恢复短语存储在一个安全的地方。如果这个程序被删除,不能没有它恢复你的钱。" - -#: www/views/preferencesBitpayServices.html:9 -msgid "BitPay Visa® Cards" -msgstr "BitPay Visa® 牌" - -#: www/views/addressbook.add.html:38 -#: www/views/includes/incomingDataMenu.html:29 -msgid "Bitcoin Address" -msgstr "比特币地址" - -#: www/views/modals/chooseFeeLevel.html:4 -#: www/views/preferencesFee.html:4 -#: www/views/tab-settings.html:85 -msgid "Bitcoin Network Fee Policy" -msgstr "比特币网络手续费策略" - -#: www/views/tab-settings.html:63 -msgid "Bitcoin Unit" -msgstr "比特币单位" - -#: www/views/onboarding/tour.html:31 -msgid "Bitcoin is a currency." -msgstr "比特币是一种货币。" - -#: www/views/onboarding/disclaimer.html:15 -msgid "Bitcoin is different – it cannot be safely held with a bank or web service." -msgstr "比特币是不同 — — 它不能安全地举行以银行或 web 服务。" - -#: www/views/onboarding/tour.html:18 -msgid "Bitcoin is secure,
digital money." -msgstr "比特币是安全的
数字货币。" - -#: www/views/preferencesFee.html:11 -msgid "Bitcoin transactions include a fee collected by miners on the network." -msgstr "比特币交易包括在网络上被矿工所收取的费用。" - -#: www/views/buyAmazon.html:108 -msgid "Bought {{amountUnitStr}}" -msgstr "" - -#: www/views/modals/txp-details.html:36 -msgid "Broadcast Payment" -msgstr "广播支付" - -#: src/js/controllers/modals/txpDetails.js:58 -#: src/js/controllers/tx-details.js:64 -msgid "Broadcasted" -msgstr "广播商" - -#: src/js/services/onGoingProcess.js:11 -msgid "Broadcasting transaction" -msgstr "正在广播交易" - -#: www/views/unsupported.html:6 -msgid "Browser unsupported" -msgstr "不受支持的浏览器" - -#: www/views/buyAmazon.html:5 -msgid "Buy" -msgstr "" - -#: www/views/includes/buyAndSellCard.html:3 -msgid "Buy & Sell Bitcoin" -msgstr "购买或出售比特币" - -#: www/views/tab-send.html:35 -msgid "Buy Bitcoin" -msgstr "购买比特币" - -#: src/js/controllers/buyAmazon.js:332 -msgid "Buy from" -msgstr "" - -#: src/js/services/onGoingProcess.js:40 -msgid "Buying Bitcoin..." -msgstr "正在发送 比特币..." - -#: src/js/services/onGoingProcess.js:12 -msgid "Calculating fee" -msgstr "正在计算费用" - -#: src/js/controllers/buyAmazon.js:311 -#: src/js/controllers/confirm.js:495 -#: src/js/controllers/topup.js:285 -#: src/js/services/popupService.js:62 -#: src/js/services/popupService.js:73 -#: www/views/addressbook.add.html:10 -#: www/views/feedback/send.html:5 -#: www/views/includes/incomingDataMenu.html:22 -#: www/views/includes/incomingDataMenu.html:54 -#: www/views/includes/incomingDataMenu.html:73 -#: www/views/includes/incomingDataMenu.html:97 -#: www/views/includes/note.html:6 -#: www/views/modals/bitpay-card-confirmation.html:8 -#: www/views/modals/confirmation.html:13 -msgid "Cancel" -msgstr "取消" - -#: www/views/copayers.html:36 -msgid "Cancel invitation" -msgstr "" - -#: src/js/controllers/onboarding/tour.js:52 -msgid "Cannot Create Wallet" -msgstr "不能创建钱包" - -#: src/js/services/profileService.js:426 -msgid "Cannot join the same wallet more that once" -msgstr "无法重复加入同一个钱包" - -#: www/views/includes/bitpayCardsCard.html:2 -msgid "Cards" -msgstr "卡" - -#: www/views/modals/paypro.html:30 -msgid "Certified by" -msgstr "通过认证:" - -#: www/views/preferencesExternal.html:19 -msgid "Check installation and retry." -msgstr "" - -#: www/views/tab-import-file.html:4 -msgid "Choose a backup file from your computer" -msgstr "从你的计算机选择一个备份文件" - -#: www/views/modals/wallets.html:9 -msgid "Choose your destination wallet" -msgstr "选择你的目的地钱包" - -#: www/views/modals/wallets.html:10 -msgid "Choose your source wallet" -msgstr "选择源钱包" - -#: www/views/backup.html:54 -msgid "Clear" -msgstr "清除" - -#: www/views/preferencesHistory.html:24 -msgid "Clear cache" -msgstr "清空缓存" - -#: src/js/controllers/modals/txpDetails.js:34 -msgid "Click" -msgstr "点击" - -#: www/views/customAmount.html:4 -#: www/views/modals/paypro.html:4 -#: www/views/modals/pin.html:3 -#: www/views/modals/search.html:3 -#: www/views/modals/wallet-balance.html:3 -#: www/views/modals/wallets.html:5 -msgid "Close" -msgstr "关闭" - -#: www/views/preferences.html:22 -msgid "Color" -msgstr "颜色" - -#: www/views/preferencesAbout.html:21 -msgid "Commit hash" -msgstr "提交哈希" - -#: www/views/preferences.html:48 -msgid "Complete the backup process to use this option" -msgstr "" - -#: www/views/bitpayCard.html:93 -msgid "Completed" -msgstr "" - -#: src/js/controllers/buyAmazon.js:309 -#: src/js/controllers/confirm.js:494 -#: src/js/controllers/copayers.js:55 -#: src/js/controllers/topup.js:283 -#: www/views/backup.html:53 -#: www/views/backup.html:72 -#: www/views/confirm.html:4 -#: www/views/onboarding/collectEmail.html:32 -msgid "Confirm" -msgstr "确定" - -#: www/views/modals/terms.html:26 -#: www/views/onboarding/disclaimer.html:44 -msgid "Confirm & Finish" -msgstr "确认并完成" - -#: www/views/buyAmazon.html:90 -msgid "Confirm purchase" -msgstr "" - -#: www/views/modals/pin.html:10 -msgid "Confirm your PIN" -msgstr "" - -#: src/js/services/walletService.js:1034 -msgid "Confirm your new spending password" -msgstr "" - -#: www/views/tx-details.html:98 -msgid "Confirmations" -msgstr "确认" - -#: www/views/bitpayCard.html:68 -#: www/views/modals/wallet-balance.html:61 -msgid "Confirming" -msgstr "确认" - -#: www/views/bitpayCardIntro.html:37 -msgid "Connect my BitPay Card" -msgstr "我 BitPay 卡连接" - -#: src/js/services/onGoingProcess.js:13 -msgid "Connecting to Coinbase..." -msgstr "正在连接 Coinbase..." - -#: src/js/services/onGoingProcess.js:14 -msgid "Connecting to Glidera..." -msgstr "正在连接 Glidera..." - -#: src/js/services/bwcError.js:53 -msgid "Connection reset by peer" -msgstr "连接被对方重置" - -#: www/views/tab-send.html:45 -msgid "Contacts" -msgstr "联系人" - -#: www/views/onboarding/notifications.html:9 -msgid "Continue" -msgstr "继续" - -#: www/views/preferencesLanguage.html:26 -msgid "Contribute Translations" -msgstr "参与翻译" - -#: src/js/services/bwcError.js:62 -msgid "Copayer already in this wallet" -msgstr "Copayer 已经在这个钱包里" - -#: src/js/services/bwcError.js:77 -msgid "Copayer already voted on this spend proposal" -msgstr "Copayer 已经表决此花费提议" - -#: src/js/services/bwcError.js:107 -msgid "Copayer data mismatch" -msgstr "Copayer 的数据不匹配" - -#: www/views/includes/walletActivity.html:2 -msgid "Copayer joined" -msgstr "Copayer 加入" - -#: www/views/preferencesInformation.html:88 -msgid "Copayer {{$index}}" -msgstr "Copayer {{$index}}" - -#: src/js/controllers/copayers.js:79 -#: src/js/controllers/export.js:193 -#: www/views/includes/copyToClipboard.html:4 -msgid "Copied to clipboard" -msgstr "已复制到剪贴板" - -#: www/views/tab-export-file.html:94 -msgid "Copy this text as it is to a safe place (notepad or email)" -msgstr "将此文本复制到一个安全的地方(记事本或电子邮件)" - -#: www/views/includes/incomingDataMenu.html:51 -#: www/views/includes/incomingDataMenu.html:70 -#: www/views/includes/incomingDataMenu.html:94 -#: www/views/preferencesLogs.html:10 -#: www/views/tab-export-file.html:78 -msgid "Copy to clipboard" -msgstr "复制到剪贴板" - -#: www/views/tab-import-phrase.html:2 -msgid "Could not access the wallet at the server. Please check:" -msgstr "无法访问服务器上的钱包。请确认︰" - -#: src/js/controllers/buyAmazon.js:101 -msgid "Could not access to Amazon.com" -msgstr "" - -#: src/js/services/profileService.js:493 -msgid "Could not access wallet" -msgstr "无法访问钱包" - -#: src/js/controllers/confirm.js:185 -msgid "Could not add message to imported wallet without shared encrypting key" -msgstr "无法将消息添加到进口钱包没有共享的加密密钥" - -#: src/js/controllers/modals/txpDetails.js:193 -msgid "Could not broadcast payment" -msgstr "无法广播支付" - -#: src/js/services/bwcError.js:41 -msgid "Could not build transaction" -msgstr "无法建立交易" - -#: src/js/services/walletService.js:857 -msgid "Could not create address" -msgstr "无法创建地址" - -#: src/js/controllers/topup.js:91 -msgid "Could not create the invoice" -msgstr "" - -#: src/js/controllers/buyAmazon.js:163 -#: src/js/controllers/topup.js:141 -msgid "Could not create transaction" -msgstr "" - -#: src/js/services/profileService.js:342 -msgid "Could not create using the specified extended private key" -msgstr "无法使用指定的扩展私人密钥创建" - -#: src/js/services/profileService.js:353 -msgid "Could not create using the specified extended public key" -msgstr "无法使用指定的扩展的公钥创建" - -#: src/js/services/profileService.js:335 -msgid "Could not create: Invalid wallet recovery phrase" -msgstr "无法创建 ︰ 无效的钱包恢复短语" - -#: src/js/controllers/import.js:99 -msgid "Could not decrypt file, check your password" -msgstr "无法解密文件,请检查你的密码" - -#: src/js/controllers/modals/txpDetails.js:175 -msgid "Could not delete payment proposal" -msgstr "无法删除支付提议" - -#: src/js/services/feeService.js:72 -msgid "Could not get dynamic fee" -msgstr "不能动态费用" - -#: src/js/services/feeService.js:42 -msgid "Could not get dynamic fee for level: {{feeLevel}}" -msgstr "无法获取水平动态费用︰ {{feeLevel}}" - -#: src/js/controllers/modals/feeLevels.js:113 -msgid "Could not get fee levels" -msgstr "" - -#: src/js/controllers/buyAmazon.js:121 -#: src/js/controllers/topup.js:99 -msgid "Could not get the invoice" -msgstr "" - -#: src/js/controllers/bitpayCard.js:66 -msgid "Could not get transactions" -msgstr "不能交易" - -#: src/js/services/profileService.js:595 -#: src/js/services/profileService.js:629 -#: src/js/services/profileService.js:652 -msgid "Could not import" -msgstr "无法导入" - -#: src/js/services/profileService.js:564 -msgid "Could not import. Check input file and spending password" -msgstr "无法导入。请检查输入文件和支付密码" - -#: src/js/services/profileService.js:439 -msgid "Could not join wallet" -msgstr "无法加入钱包" - -#: src/js/controllers/modals/txpDetails.js:155 -msgid "Could not reject payment" -msgstr "无法拒绝支付" - -#: src/js/controllers/preferencesBitpayServices.js:33 -msgid "Could not remove account" -msgstr "无法删除帐户" - -#: src/js/controllers/preferencesBitpayCard.js:20 -#: src/js/controllers/preferencesBitpayServices.js:50 -msgid "Could not remove card" -msgstr "无法删除卡" - -#: src/js/services/walletService.js:776 -msgid "Could not save preferences on the server" -msgstr "无法在服务器上保存首选项" - -#: src/js/controllers/modals/txpDetails.js:141 -msgid "Could not send payment" -msgstr "无法发送支付" - -#: src/js/controllers/buyAmazon.js:323 -#: src/js/controllers/topup.js:297 -msgid "Could not send transaction" -msgstr "" - -#: www/views/walletDetails.html:199 -msgid "Could not update transaction history" -msgstr "无法更新交易历史记录" - -#: src/js/controllers/addresses.js:34 -#: src/js/controllers/addresses.js:42 -#: src/js/controllers/copayers.js:30 -#: src/js/controllers/walletDetails.js:78 -msgid "Could not update wallet" -msgstr "无法更新钱包" - -#: www/views/tab-create-personal.html:3 -msgid "Create Personal Wallet" -msgstr "创建个人的钱包" - -#: www/views/tab-create-shared.html:3 -msgid "Create Shared Wallet" -msgstr "创建自己的免费钱包" - -#: www/views/onboarding/tour.html:51 -#: www/views/tab-home.html:77 -#: www/views/tab-send.html:36 -msgid "Create bitcoin wallet" -msgstr "创建比特币的钱包" - -#: www/views/tab-create-personal.html:129 -msgid "Create new wallet" -msgstr "创建新钱包" - -#: www/views/add.html:22 -msgid "Create shared wallet" -msgstr "创建共享的钱包" - -#: www/views/tab-create-shared.html:158 -msgid "Create {{formData.requiredCopayers}}-of-{{formData.totalCopayers}} wallet" -msgstr "创建 {{formData.requiredCopayers}} 的{{formData.totalCopayers}} 钱包" - -#: www/views/modals/txp-details.html:83 -#: www/views/tx-details.html:62 -msgid "Created by" -msgstr "创建者:" - -#: src/js/services/onGoingProcess.js:18 -msgid "Creating Wallet..." -msgstr "正在创建钱包..." - -#: src/js/services/onGoingProcess.js:17 -msgid "Creating transaction" -msgstr "正在创建交易" - -#: www/views/modals/chooseFeeLevel.html:34 -#: www/views/preferencesFee.html:20 -msgid "Current fee rate for this policy" -msgstr "此策略的当前费用率" - -#: src/js/services/feeService.js:15 -msgid "Custom" -msgstr "" - -#: www/views/customAmount.html:9 -msgid "Custom Amount" -msgstr "自定义金额" - -#: src/js/controllers/preferencesFee.js:84 -msgid "Custom Fee" -msgstr "" - -#: www/views/modals/txp-details.html:89 -#: www/views/tx-details.html:68 -msgid "Date" -msgstr "日期" - -#: www/views/preferencesDeleteWallet.html:21 -msgid "Delete" -msgstr "删除" - -#: www/views/modals/txp-details.html:166 -msgid "Delete Payment Proposal" -msgstr "删除支付提议" - -#: www/views/preferencesAdvanced.html:33 -#: www/views/preferencesDeleteWallet.html:3 -msgid "Delete Wallet" -msgstr "删除钱包" - -#: www/views/copayers.html:59 -msgid "Delete it and create a new one" -msgstr "删除并创建新的" - -#: src/js/services/onGoingProcess.js:19 -msgid "Deleting Wallet..." -msgstr "正在删除钱包..." - -#: src/js/services/onGoingProcess.js:28 -msgid "Deleting payment proposal" -msgstr "删除付款方案" - -#: www/views/join.html:138 -#: www/views/tab-create-personal.html:109 -#: www/views/tab-create-shared.html:138 -#: www/views/tab-import-phrase.html:46 -msgid "Derivation Path" -msgstr "衍生路径" - -#: www/views/preferencesInformation.html:41 -msgid "Derivation Strategy" -msgstr "衍生策略" - -#: www/views/buyAmazon.html:39 -#: www/views/topup.html:45 -msgid "Details" -msgstr "" - -#: src/js/controllers/lockSetup.js:9 -#: src/js/controllers/tab-settings.js:60 -msgid "Disabled" -msgstr "" - -#: www/views/includes/backupNeededPopup.html:10 -#: www/views/onboarding/backupRequest.html:12 -msgid "Do it later" -msgstr "以后再做" - -#: www/views/tab-export-file.html:29 -msgid "Do not include private key" -msgstr "不包括私钥" - -#: www/views/preferencesLanguage.html:21 -msgid "Don't see your language on Crowdin? Contact the Owner on Crowdin! We'd love to support your language." -msgstr "在 Crowdin 找不到你的语言?请联系 Crowdin 的所有者!我们很乐意支持你的语言。" - -#: www/views/tab-export-file.html:59 -#: www/views/tab-home.html:22 -msgid "Download" -msgstr "下载" - -#: www/views/addresses.html:19 -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 "每个比特币钱包可以从您的 12 字备份生成亿万个地址。一个新的地址是自动生成和显示每个时间你收到付款。" - -#: src/js/services/feeService.js:13 -msgid "Economy" -msgstr "经济" - -#: www/views/onboarding/collectEmail.html:27 -msgid "Edit" -msgstr "" - -#: www/views/addressbook.add.html:29 -#: www/views/addressbook.view.html:22 -msgid "Email" -msgstr "电子邮件" - -#: www/views/preferencesNotifications.html:42 -msgid "Email Address" -msgstr "电子邮件地址" - -#: src/js/services/bwcError.js:122 -msgid "Empty addresses limit reached. New addresses cannot be generated." -msgstr "已达到空地址限制。无法生成新的地址。" - -#: www/views/tab-scan.html:19 -msgid "Enable camera access in your device settings to get started." -msgstr "相机中启用访问您的设备设置入门。" - -#: www/views/preferencesNotifications.html:29 -msgid "Enable email notifications" -msgstr "启用电子邮件通知" - -#: www/views/preferencesNotifications.html:12 -msgid "Enable push notifications" -msgstr "启用推式通知" - -#: www/views/tab-scan.html:18 -msgid "Enable the camera to get started." -msgstr "使该摄像机开始。" - -#: www/views/amount.html:4 -msgid "Enter Amount" -msgstr "输入金额" - -#: src/js/services/walletService.js:1048 -#: src/js/services/walletService.js:1063 -msgid "Enter Spending Password" -msgstr "输入支出密码" - -#: src/js/services/bitpayAccountService.js:110 -msgid "Enter Two Factor for your BitPay account" -msgstr "为您的 BitPay 帐户输入两个因素" - -#: www/views/modals/chooseFeeLevel.html:41 -msgid "Enter custom fee" -msgstr "" - -#: src/js/services/walletService.js:1030 -msgid "Enter new spending password" -msgstr "输入新的消费密码" - -#: www/views/join.html:76 -#: www/views/tab-create-personal.html:49 -#: www/views/tab-create-shared.html:78 -msgid "Enter the recovery phrase (BIP39)" -msgstr "输入恢复短语 (BIP39)" - -#: www/views/onboarding/collectEmail.html:13 -msgid "Enter your email" -msgstr "" - -#: www/views/backup.html:62 -msgid "Enter your password" -msgstr "请输入你的密码" - -#. Trying to import a malformed wallet export QR code -#: src/js/controllers/activity.js:45 -#: src/js/controllers/addressbookAdd.js:30 -#: src/js/controllers/addressbookView.js:29 -#: src/js/controllers/addresses.js:130 -#: src/js/controllers/addresses.js:131 -#: src/js/controllers/bitpayCard.js:66 -#: src/js/controllers/bitpayCardIntro.js:40 -#: src/js/controllers/bitpayCardIntro.js:81 -#: src/js/controllers/buyAmazon.js:23 -#: src/js/controllers/buyAmazon.js:34 -#: src/js/controllers/confirm.js:276 -#: src/js/controllers/copayers.js:67 -#: src/js/controllers/create.js:155 -#: src/js/controllers/create.js:168 -#: src/js/controllers/create.js:175 -#: src/js/controllers/create.js:197 -#: src/js/controllers/create.js:204 -#: src/js/controllers/create.js:222 -#: src/js/controllers/export.js:109 -#: src/js/controllers/export.js:115 -#: src/js/controllers/export.js:126 -#: src/js/controllers/export.js:154 -#: src/js/controllers/export.js:160 -#: src/js/controllers/export.js:171 -#: src/js/controllers/export.js:47 -#: src/js/controllers/export.js:53 -#: src/js/controllers/feedback/send.js:23 -#: src/js/controllers/import.js:104 -#: src/js/controllers/import.js:116 -#: src/js/controllers/import.js:134 -#: src/js/controllers/import.js:185 -#: src/js/controllers/import.js:213 -#: src/js/controllers/import.js:222 -#: src/js/controllers/import.js:237 -#: src/js/controllers/import.js:249 -#: src/js/controllers/import.js:260 -#: src/js/controllers/import.js:270 -#: src/js/controllers/import.js:294 -#: src/js/controllers/import.js:307 -#: src/js/controllers/import.js:317 -#: src/js/controllers/import.js:327 -#: src/js/controllers/import.js:351 -#: src/js/controllers/import.js:364 -#: src/js/controllers/import.js:70 -#: src/js/controllers/import.js:83 -#: src/js/controllers/join.js:121 -#: src/js/controllers/join.js:135 -#: src/js/controllers/join.js:142 -#: src/js/controllers/join.js:165 -#: src/js/controllers/join.js:173 -#: src/js/controllers/join.js:191 -#: src/js/controllers/modals/feeLevels.js:10 -#: src/js/controllers/modals/txpDetails.js:134 -#: src/js/controllers/paperWallet.js:47 -#: src/js/controllers/preferencesBitpayCard.js:20 -#: src/js/controllers/preferencesBitpayServices.js:33 -#: src/js/controllers/preferencesBitpayServices.js:50 -#: src/js/controllers/preferencesDelete.js:37 -#: src/js/controllers/preferencesExternal.js:20 -#: src/js/controllers/tab-home.js:174 -#: src/js/controllers/tab-send.js:132 -#: src/js/controllers/tabsController.js:36 -#: src/js/controllers/tabsController.js:7 -#: src/js/controllers/topup.js:20 -#: src/js/controllers/topup.js:31 -#: src/js/controllers/tx-details.js:102 -#: src/js/services/incomingData.js:98 -msgid "Error" -msgstr "错误!" - -#: src/js/controllers/confirm.js:447 -msgid "Error at confirm" -msgstr "在确认错误" - -#: src/js/controllers/buyAmazon.js:178 -msgid "Error creating gift card" -msgstr "" - -#: src/js/controllers/buyAmazon.js:93 -msgid "Error creating the invoice" -msgstr "" - -#: src/js/services/profileService.js:396 -msgid "Error creating wallet" -msgstr "创建钱包时出现错误" - -#: src/js/controllers/confirm.js:266 -msgid "Error getting SendMax information" -msgstr "" - -#: src/js/controllers/buyAmazon.js:135 -#: src/js/controllers/topup.js:113 -msgid "Error in Payment Protocol" -msgstr "" - -#: src/js/controllers/bitpayCardIntro.js:14 -msgid "Error pairing BitPay Account" -msgstr "" - -#: src/js/controllers/paperWallet.js:41 -msgid "Error scanning funds:" -msgstr "错误扫描资金︰" - -#: src/js/controllers/paperWallet.js:91 -msgid "Error sweeping wallet:" -msgstr "错误清扫钱包︰" - -#: src/js/controllers/bitpayCardIntro.js:20 -msgid "Error updating Debit Cards" -msgstr "更新借记卡时出错" - -#: src/js/services/bwcError.js:143 -msgid "Exceeded daily limit of $500 per user" -msgstr "超过 500 美元,每个用户的每日限额" - -#: src/js/controllers/confirm.js:411 -#: www/views/confirm.html:27 -#: www/views/modals/txp-details.html:121 -msgid "Expired" -msgstr "已过期" - -#: www/views/modals/paypro.html:54 -#: www/views/modals/txp-details.html:127 -msgid "Expires" -msgstr "到期" - -#: www/views/preferencesAdvanced.html:21 -msgid "Export Wallet" -msgstr "导出钱包" - -#: www/views/preferencesHistory.html:11 -#: www/views/preferencesHistory.html:14 -msgid "Export to file" -msgstr "导出到文件" - -#: www/views/export.html:3 -msgid "Export wallet" -msgstr "导出钱包" - -#: src/js/services/walletService.js:1175 -#: www/views/tab-export-qrCode.html:9 -msgid "Exporting via QR not supported for this wallet" -msgstr "此钱包不支持通过 QR 的导出" - -#: www/views/preferencesInformation.html:83 -msgid "Extended Public Keys" -msgstr "扩展的公钥" - -#: src/js/services/onGoingProcess.js:20 -msgid "Extracting Wallet information..." -msgstr "" - -#: src/js/controllers/export.js:115 -#: src/js/controllers/export.js:126 -#: src/js/controllers/export.js:160 -#: src/js/controllers/export.js:171 -#: www/views/tab-export-file.html:4 -msgid "Failed to export" -msgstr "导出失败" - -#: www/views/tab-create-personal.html:14 -#: www/views/tab-create-shared.html:14 -msgid "Family vacation funds" -msgstr "家庭度假资金" - -#: www/views/tx-details.html:81 -msgid "Fee" -msgstr "费用" - -#: www/views/modals/chooseFeeLevel.html:73 -msgid "Fee level" -msgstr "" - -#: src/js/controllers/modals/feeLevels.js:101 -msgid "Fee level is not defined" -msgstr "" - -#: www/views/confirm.html:81 -#: www/views/modals/txp-details.html:101 -msgid "Fee:" -msgstr "" - -#: src/js/controllers/feedback/send.js:23 -msgid "Feedback could not be submitted. Please try again later." -msgstr "无法提交反馈。请稍后再试。" - -#: src/js/services/onGoingProcess.js:42 -msgid "Fetching BitPay Account..." -msgstr "" - -#: src/js/services/onGoingProcess.js:21 -msgid "Fetching payment information" -msgstr "" - -#: www/views/export.html:14 -#: www/views/import.html:16 -msgid "File/Text" -msgstr "文件/文本" - -#: src/js/services/fingerprintService.js:43 -#: src/js/services/fingerprintService.js:48 -msgid "Finger Scan Failed" -msgstr "指纹扫描失败" - -#: src/js/controllers/feedback/send.js:34 -#: www/views/feedback/complete.html:7 -msgid "Finish" -msgstr "完成" - -#: www/views/tab-create-personal.html:121 -#: www/views/tab-create-shared.html:150 -msgid "For audit purposes" -msgstr "供审计目的" - -#: src/js/controllers/topup.js:306 -#: www/views/buyAmazon.html:29 -#: www/views/confirm.html:65 -#: www/views/modals/txp-details.html:74 -#: www/views/topup.html:34 -#: www/views/tx-details.html:52 -msgid "From" -msgstr "来自" - -#: src/js/controllers/bitpayCardIntro.js:71 -msgid "From BitPay account" -msgstr "从 BitPay 帐户" - -#: www/views/tab-import-phrase.html:54 -msgid "From Hardware Wallet" -msgstr "" - -#: www/views/tab-export-qrCode.html:5 -msgid "From the destination device, go to Add wallet > Import wallet and scan this QR code" -msgstr "从目标设备,请到添加钱包 > 导入钱包和扫描此 QR 代码" - -#: src/js/services/bwcError.js:74 -msgid "Funds are locked by pending spend proposals" -msgstr "资金由未决的花费提议锁定" - -#: www/views/paperWallet.html:16 -msgid "Funds found:" -msgstr "找到资金" - -#: www/views/topup.html:49 -msgid "Funds to be added" -msgstr "" - -#: www/views/paperWallet.html:53 -msgid "Funds transferred" -msgstr "资金转移" - -#: www/views/topup.html:103 -msgid "Funds were added to debit card" -msgstr "" - -#: www/views/paperWallet.html:22 -msgid "Funds will be transferred to" -msgstr "资金将会转移到" - -#: www/views/tab-receive.html:51 -msgid "Generate new address" -msgstr "" - -#: src/js/services/onGoingProcess.js:22 -msgid "Generating .csv file..." -msgstr "正在生成 .csv 文件..." - -#: src/js/services/onGoingProcess.js:37 -msgid "Generating new address..." -msgstr "正在生成新的地址..." - -#: www/views/bitpayCardIntro.html:23 -msgid "Get local cash anywhere you go, from any Visa® compatible ATM. ATM bank fees may apply." -msgstr "得到当地现金任何地方您去,从任何 Visa® 兼容的自动取款机 ATM 银行费用可能适用。" - -#: www/views/onboarding/collectEmail.html:15 -msgid "Get news and updates from BitPay" -msgstr "从 BitPay 获取新闻和更新" - -#: www/views/bitpayCard.html:49 -#: www/views/onboarding/welcome.html:8 -msgid "Get started" -msgstr "马上体验" - -#: www/views/addressbook.html:20 -msgid "Get started by adding your first one." -msgstr "通过添加您的第一个开始。" - -#: src/js/services/onGoingProcess.js:23 -msgid "Getting fee levels..." -msgstr "正在获取收费水平..." - -#: www/views/buyAmazon.html:43 -msgid "Gift card" -msgstr "" - -#: src/js/controllers/buyAmazon.js:203 -msgid "Gift card expired" -msgstr "" - -#: www/views/buyAmazon.html:111 -msgid "Gift card generated and ready to use." -msgstr "" - -#: src/js/controllers/bitpayCard.js:114 -#: src/js/controllers/bitpayCard.js:124 -#: 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:149 -#: src/js/controllers/tab-settings.js:48 -#: src/js/controllers/tx-details.js:176 -msgid "Go Back" -msgstr "返回 #" - -#: src/js/controllers/onboarding/backupRequest.js:20 -#: src/js/controllers/onboarding/backupRequest.js:26 -#: src/js/services/bitpayAccountService.js:84 -msgid "Go back" -msgstr "上一页" - -#: www/views/backupWarning.html:15 -#: www/views/includes/confirmBackupPopup.html:8 -#: www/views/onboarding/tour.html:23 -msgid "Got it" -msgstr "收到!" - -#: www/views/preferencesInformation.html:47 -#: www/views/preferencesInformation.html:53 -msgid "Hardware Wallet" -msgstr "硬件钱包" - -#: www/views/preferencesExternal.html:18 -msgid "Hardware not connected." -msgstr "" - -#: www/views/import.html:20 -msgid "Hardware wallet" -msgstr "硬件钱包" - -#: www/views/tab-settings.html:20 -msgid "Help & Support" -msgstr "帮助与支持" - -#: src/js/controllers/bitpayCard.js:112 -#: src/js/controllers/tab-settings.js:46 -msgid "Help and support information is available at the website." -msgstr "" - -#: www/views/addresses.html:25 -msgid "Hide" -msgstr "隱藏" - -#: www/views/preferences.html:27 -msgid "Hide Balance" -msgstr "隐藏的平衡" - -#: www/views/advancedSettings.html:29 -msgid "Hide Next Steps Card" -msgstr "隐藏下一个步骤卡" - -#: www/views/join.html:46 -#: www/views/tab-create-personal.html:26 -#: www/views/tab-create-shared.html:55 -#: www/views/tab-export-file.html:25 -#: www/views/tab-import-file.html:28 -#: www/views/tab-import-hardware.html:31 -#: www/views/tab-import-phrase.html:33 -msgid "Hide advanced options" -msgstr "隐藏高级选项" - -#: www/views/tabs.html:3 -msgid "Home" -msgstr "主屏幕" - -#: src/js/controllers/feedback/send.js:61 -#: src/js/controllers/feedback/send.js:65 -#: src/js/controllers/feedback/send.js:69 -msgid "How could we improve your experience?" -msgstr "我们如何可以改善您的体验?" - -#: www/views/feedback/rateCard.html:3 -msgid "How do you like {{appName}}?" -msgstr "" - -#: src/js/controllers/feedback/rateCard.js:29 -msgid "I don't like it" -msgstr "我不喜欢" - -#: www/views/onboarding/disclaimer.html:43 -msgid "I have read, understood, and agree to the Terms of Use." -msgstr "我已经阅读、 理解并同意 使用条款。" - -#: www/views/modals/terms.html:22 -msgid "I have read, understood, and agree with the Terms of use." -msgstr "我已经阅读、 理解并同意本使用条款。" - -#: www/views/join.html:134 -#: www/views/tab-create-personal.html:105 -#: www/views/tab-create-shared.html:134 -msgid "I have written it down" -msgstr "我有把它写下来" - -#: src/js/controllers/feedback/rateCard.js:35 -msgid "I like the app" -msgstr "我喜欢这个应用程序" - -#: src/js/controllers/feedback/rateCard.js:26 -msgid "I think this app is terrible." -msgstr "这个应用程序是可怕。" - -#: src/js/controllers/onboarding/backupRequest.js:19 -#: www/views/includes/screenshotWarningModal.html:9 -msgid "I understand" -msgstr "我知道了" - -#: www/views/onboarding/disclaimer.html:21 -msgid "I understand that if this app is moved to another device or deleted, my bitcoin can only be recovered with the backup phrase." -msgstr "我明白是否这个应用程序是搬到另一个设备或删除,我比特币可以只能进行恢复与备份的短语。" - -#: www/views/onboarding/disclaimer.html:18 -msgid "I understand that my funds are held securely on this device, not by a company." -msgstr "我明白,我的资金安全地在此设备上,不由公司举行。" - -#: www/views/backup.html:29 -msgid "I've written it down" -msgstr "我已经把它写下来" - -#: www/views/preferences.html:45 -msgid "If enabled, all sensitive information (private key and recovery phrase) and actions (spending and exporting) associated with this wallet will be protected." -msgstr "" - -#: www/views/advancedSettings.html:22 -msgid "If enabled, the Recent Transactions card - a list of transactions occuring across all wallets - will appear in the Home tab." -msgstr "如果启用,最近的交易卡-交易发生跨所有钱包名单-将出现在主页选项卡。" - -#: www/views/advancedSettings.html:13 -msgid "If enabled, wallets will also try to spend unconfirmed funds. This option may cause transaction delays." -msgstr "如果启用了,钱包也尝试使用未经证实的资金。此选项可能会导致事务延迟。" - -#: src/js/controllers/onboarding/backupRequest.js:18 -msgid "If this device is replaced or this app is deleted, neither you nor BitPay can recover your funds without a backup." -msgstr "如果此设备被替换或删除此应用程序,你和 BitPay 都不可以恢复你的资金,也没有备份。" - -#: www/views/feedback/complete.html:23 -msgid "If you have additional feedback, please let us know by tapping the \"Send feedback\" option in the Settings tab." -msgstr "如果你有额外的反馈,请让我们知道通过点击设置选项卡中的\"发送反馈\"选项。" - -#: www/views/includes/screenshotWarningModal.html:8 -msgid "If you take a screenshot, your backup may be viewed by other apps. You can make a safe backup with physical paper and a pen." -msgstr "如果你拿一张截图,您的备份可能会被其他应用程序。您可以安全备份与物理纸和一支钢笔。" - -#: www/views/tab-import-hardware.html:42 -#: www/views/tab-import-phrase.html:77 -msgid "Import" -msgstr "导入" - -#: www/views/import.html:3 -msgid "Import Wallet" -msgstr "导入钱包" - -#: www/views/tab-import-file.html:39 -msgid "Import backup" -msgstr "导入备份" - -#: www/views/add.html:38 -msgid "Import wallet" -msgstr "导入钱包" - -#: src/js/services/onGoingProcess.js:24 -msgid "Importing Wallet..." -msgstr "正在导入钱包..." - -#: www/views/backup.html:65 -msgid "In order to verify your wallet backup, please type your password." -msgstr "为了验证您的钱包的备份,请键入您的密码。" - -#: www/views/includes/walletItem.html:11 -#: www/views/includes/walletSelector.html:18 -#: www/views/tab-home.html:90 -#: www/views/tab-settings.html:117 -msgid "Incomplete" -msgstr "不完整" - -#: www/views/tab-receive.html:22 -msgid "Incomplete wallet" -msgstr "不完整的钱包" - -#: www/views/modals/pin.html:12 -msgid "Incorrect PIN, try again." -msgstr "" - -#. Trying to import a malformed wallet export QR code -#: src/js/controllers/import.js:70 -msgid "Incorrect code format" -msgstr "代码格式不正确" - -#: src/js/services/bwcError.js:113 -msgid "Incorrect network address" -msgstr "" - -#: src/js/controllers/confirm.js:112 -#: src/js/controllers/confirm.js:275 -#: src/js/services/bwcError.js:44 -msgid "Insufficient funds" -msgstr "资金不足" - -#: src/js/controllers/topup.js:164 -#: src/js/controllers/topup.js:176 -#: src/js/services/bwcError.js:71 -msgid "Insufficient funds for fee" -msgstr "费用的资金不足" - -#: www/views/includes/walletHistory.html:49 -msgid "Invalid" -msgstr "无效" - -#: src/js/controllers/buyAmazon.js:136 -#: src/js/controllers/topup.js:114 -msgid "Invalid URL" -msgstr "" - -#: src/js/controllers/create.js:175 -#: src/js/controllers/import.js:327 -#: src/js/controllers/join.js:142 -msgid "Invalid account number" -msgstr "帐户号无效" - -#: src/js/services/bwcError.js:119 -msgid "Invalid address" -msgstr "地址无效" - -#: src/js/controllers/tabsController.js:7 -msgid "Invalid data" -msgstr "无效的数据" - -#: src/js/controllers/create.js:155 -#: src/js/controllers/import.js:249 -#: src/js/controllers/join.js:121 -msgid "Invalid derivation path" -msgstr "衍生路径无效" - -#: src/js/controllers/copayers.js:90 -msgid "Invitation to share a {{appName}} Wallet" -msgstr "邀请分享 {{appName}} 钱包" - -#: www/views/buyAmazon.html:49 -#: www/views/topup.html:56 -msgid "Invoice Fee" -msgstr "" - -#: src/js/controllers/feedback/send.js:79 -msgid "Is there anything we could do better?" -msgstr "有什么我们可以做得更好吗?" - -#: www/views/backup.html:47 -msgid "Is this correct?" -msgstr "这是正确的吗?" - -#: www/views/onboarding/collectEmail.html:22 -msgid "Is this email address correct?" -msgstr "此电子邮件地址是正确的?" - -#: www/views/addresses.html:25 -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 -msgid "It's important that you write your backup phrase down correctly. If something happens to your wallet, you'll need this backup to recover your money. Please review your backup and try again." -msgstr "它是重要的你写你备份的短语正确。如果发生什么事情到你的钱包,你会需要此备份来恢复你的钱。请检查您的备份并再试一次。" - -#: www/views/join.html:148 -msgid "Join" -msgstr "加入" - -#: src/js/controllers/copayers.js:85 -msgid "Join my {{appName}} Wallet. Here is the invitation code: {{secret}} You can download {{appName}} for your phone or desktop at {{appUrl}}" -msgstr "加入我的 {{appName}} 的钱包。这里是邀请码︰ {{secret}} 你可以下载为您的电话或桌面的 {{appUrl}} {{appName}}" - -#: www/views/add.html:30 -#: www/views/join.html:5 -msgid "Join shared wallet" -msgstr "加入共享钱包" - -#: src/js/services/onGoingProcess.js:25 -msgid "Joining Wallet..." -msgstr "正在加入钱包..." - -#: www/views/onboarding/tour.html:22 -msgid "Just scan the code to pay." -msgstr "只是扫描代码来支付。" - -#: src/js/services/bwcError.js:116 -msgid "Key already associated with an existing wallet" -msgstr "钥已经关联现有的钱包" - -#: www/views/preferencesLanguage.html:4 -#: www/views/tab-settings.html:53 -msgid "Language" -msgstr "语言" - -#: www/views/bitpayCard.html:61 -msgid "Last Month" -msgstr "上个月" - -#: www/views/backup.html:36 -msgid "Let's verify your backup phrase." -msgstr "让我们验证您备份的短语。" - -#: www/views/addresses.html:45 -#: www/views/allAddresses.html:14 -msgid "Loading addresses..." -msgstr "正在加载地址..." - -#: src/js/services/onGoingProcess.js:35 -msgid "Loading transaction info..." -msgstr "正在加载交易信息..." - -#: www/views/tab-settings.html:95 -msgid "Lock App" -msgstr "" - -#: src/js/controllers/lockSetup.js:23 -msgid "Lock by Fingerprint" -msgstr "" - -#: src/js/controllers/lockSetup.js:14 -msgid "Lock by PIN" -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 "Locktime 在进行中。请稍等以创建新的花费提议" - -#: src/js/services/bwcError.js:89 -msgid "Locktime in effect. Please wait to remove this spend proposal" -msgstr "Locktime 在进行中。请稍等以删除花费提议" - -#: www/views/modals/bitpay-card-confirmation.html:14 -msgid "Log out" -msgstr "" - -#: www/views/addresses.html:87 -msgid "Low amount inputs" -msgstr "" - -#: www/views/includes/walletHistory.html:27 -msgid "Low fees" -msgstr "" - -#: www/views/onboarding/tour.html:38 -msgid "Makes sense" -msgstr "有道理" - -#: src/js/controllers/modals/search.js:61 -msgid "Matches:" -msgstr "匹配:" - -#: www/views/includes/copayers.html:4 -#: www/views/preferencesInformation.html:79 -msgid "Me" -msgstr "我" - -#: src/js/controllers/feedback/rateCard.js:32 -msgid "Meh - it's alright" -msgstr "咩-没关系" - -#: src/js/controllers/tx-details.js:148 -#: www/views/modals/paypro.html:48 -#: www/views/modals/txp-details.html:95 -#: www/views/tx-details.html:74 -msgid "Memo" -msgstr "便签" - -#: www/views/modals/txp-details.html:133 -msgid "Merchant Message" -msgstr "商人的消息" - -#: src/js/services/bwcError.js:134 -msgid "Missing parameter" -msgstr "缺失参数" - -#: src/js/services/bwcError.js:32 -msgid "Missing private keys to sign" -msgstr "遗失需要签名的私钥" - -#: www/views/preferences.html:60 -#: www/views/preferencesAdvanced.html:3 -msgid "More Options" -msgstr "更多的选择" - -#: www/views/includes/walletHistory.html:47 -#: www/views/tx-details.html:19 -msgid "Moved" -msgstr "已调动" - -#: src/js/controllers/tx-details.js:114 -msgid "Moved Funds" -msgstr "转移资金" - -#: www/views/modals/txp-details.html:57 -msgid "Multiple recipients" -msgstr "多个接收者" - -#: www/views/tab-import-phrase.html:8 -msgid "NOTE: To import a wallet from a 3rd party software, please go to Add Wallet > Create Wallet, and specify the Recovery Phrase there." -msgstr "注意︰欲从第三方软件导入钱包,请到添加钱包 > 创建钱包,并指定恢复短语。" - -#: www/views/addressbook.add.html:21 -#: www/views/addressbook.view.html:18 -#: www/views/preferences.html:15 -#: www/views/preferencesAlias.html:17 -msgid "Name" -msgstr "名称" - -#: www/views/buyAmazon.html:55 -#: www/views/topup.html:63 -msgid "Network Fee" -msgstr "" - -#: src/js/services/bwcError.js:47 -msgid "Network error" -msgstr "网络错误" - -#: www/views/includes/walletActivity.html:43 -msgid "New Proposal" -msgstr "新建议" - -#: src/js/controllers/addresses.js:131 -msgid "New address could not be generated. Please try again." -msgstr "无法生成新的地址。请再试一次。" - -#: www/views/add.html:14 -msgid "New personal wallet" -msgstr "新的个人钱包" - -#: www/views/includes/nextSteps.html:3 -msgid "Next steps" -msgstr "接下来的步骤" - -#: www/views/tab-receive.html:16 -msgid "No Wallet" -msgstr "没钱包" - -#: src/js/controllers/buyAmazon.js:114 -msgid "No access key defined" -msgstr "" - -#: www/views/onboarding/backupRequest.html:5 -msgid "No backup, no bitcoin." -msgstr "没有备份,没有比特币。" - -#: www/views/addressbook.html:19 -msgid "No contacts yet" -msgstr "然而没有联系人" - -#: www/views/preferencesExternal.html:12 -msgid "No hardware information available." -msgstr "" - -#: www/views/tab-import-hardware.html:3 -msgid "No hardware wallets supported on this device" -msgstr "此设备不支持硬件钱包" - -#: www/views/proposals.html:24 -msgid "No pending proposals" -msgstr "没有挂起的建议" - -#: www/views/activity.html:25 -msgid "No recent transactions" -msgstr "没有最近的交易" - -#: src/js/controllers/buyAmazon.js:43 -#: src/js/controllers/topup.js:46 -msgid "No signing proposal: No private key" -msgstr "" - -#: www/views/walletDetails.html:193 -msgid "No transactions yet" -msgstr "没有交易记录" - -#: src/js/controllers/preferencesDelete.js:15 -msgid "No wallet found" -msgstr "发现没有钱包" - -#: src/js/controllers/preferencesDelete.js:8 -msgid "No wallet selected" -msgstr "没有选定的钱包" - -#: src/js/controllers/buyAmazon.js:298 -#: src/js/controllers/confirm.js:83 -#: src/js/controllers/topup.js:263 -msgid "No wallets available" -msgstr "" - -#: www/views/paperWallet.html:47 -msgid "No wallets available to receive funds" -msgstr "没有可用于接收资金的钱包" - -#: src/js/services/feeService.js:12 -msgid "Normal" -msgstr "常规" - -#: src/js/services/bwcError.js:80 -msgid "Not authorized" -msgstr "尚未授权" - -#: src/js/controllers/confirm.js:276 -msgid "Not enough funds for fee" -msgstr "费用的资金不足" - -#: www/views/onboarding/tour.html:50 -msgid "Not even BitPay can access it." -msgstr "甚至没有 BitPay 可以访问它。" - -#: src/js/controllers/paperWallet.js:47 -msgid "Not funds found" -msgstr "没有资金发现" - -#: www/views/feedback/rateApp.html:3 -#: www/views/onboarding/notifications.html:8 -msgid "Not now" -msgstr "不是现在" - -#: www/views/includes/output.html:15 -msgid "Note" -msgstr "备注" - -#: www/views/modals/wallets.html:25 -msgid "Notice: only 1-1 (single signature) wallets can be used for sell bitcoin" -msgstr "注意︰ 只有 1-1 (单签名) 钱包可以用于卖比特币" - -#: www/views/preferencesNotifications.html:3 -#: www/views/tab-settings.html:46 -msgid "Notifications" -msgstr "通知" - -#: www/views/onboarding/collectEmail.html:9 -msgid "Notifications by email" -msgstr "" - -#: www/views/tx-details.html:117 -msgid "Notify me if confirmed" -msgstr "" - -#: www/views/preferencesNotifications.html:24 -msgid "Notify me when transactions are confirmed" -msgstr "" - -#: www/views/includes/backupNeededPopup.html:8 -msgid "Now is a good time to backup your wallet. If this device is lost, it is impossible to access your funds without a backup." -msgstr "现在是很好的时间进行备份你的钱包。如果此设备丢失,它是无法访问您没有备份的资金。" - -#: www/views/backupWarning.html:11 -msgid "Now is a perfect time to assess your surroundings. Nearby windows? Hidden cameras? Shoulder-spies?" -msgstr "现在是一个完美的时间来评估你的周围。附近的窗户吗?隐藏的摄像机?肩-间谍吗?" - -#: src/js/controllers/buyAmazon.js:310 -#: src/js/controllers/topup.js:284 -#: src/js/services/popupService.js:16 -#: src/js/services/popupService.js:52 -#: src/js/services/popupService.js:61 -#: src/js/services/popupService.js:72 -#: www/views/modals/chooseFeeLevel.html:6 -msgid "OK" -msgstr "好的" - -#: www/views/modals/tx-status.html:12 -#: www/views/modals/tx-status.html:24 -#: www/views/modals/tx-status.html:36 -#: www/views/modals/tx-status.html:46 -msgid "OKAY" -msgstr "OKAY" - -#: www/views/modals/terms.html:15 -msgid "Official English Disclaimer" -msgstr "官方英文免责声明" - -#: src/js/controllers/feedback/send.js:64 -msgid "Oh no!" -msgstr "出错。" - -#: www/views/tab-home.html:39 -msgid "On this screen you can see all your wallets, accounts, and assets." -msgstr "在此屏幕上您可以看到您的钱包、 帐户和资产。" - -#: src/js/controllers/bitpayCard.js:113 -#: src/js/controllers/tab-settings.js:47 -msgid "Open" -msgstr "打开" - -#: src/js/controllers/preferencesLanguage.js:13 -msgid "Open Crowdin" -msgstr "打开 Crowdin" - -#: src/js/controllers/preferencesAbout.js:15 -msgid "Open GitHub" -msgstr "打开 GitHub" - -#: src/js/controllers/preferencesAbout.js:13 -msgid "Open GitHub Project" -msgstr "打开 GitHub 项目" - -#: src/js/controllers/bitpayCard.js:123 -#: src/js/controllers/tx-details.js:175 -msgid "Open Insight" -msgstr "开放的洞察力" - -#: www/views/tab-scan.html:22 -msgid "Open Settings" -msgstr "打开设置" - -#: src/js/controllers/preferencesLanguage.js:11 -msgid "Open Translation Community" -msgstr "开放式翻译社区" - -#: src/js/controllers/onboarding/terms.js:22 -msgid "Open Website" -msgstr "打开网站" - -#: www/views/tab-receive.html:27 -msgid "Open wallet" -msgstr "打开钱包" - -#: www/views/includes/incomingDataMenu.html:19 -msgid "Open website" -msgstr "" - -#: www/views/bitpayCardIntro.html:34 -msgid "Order the BitPay Card" -msgstr "订单 BitPay 卡" - -#: www/views/join.html:102 -#: www/views/join.html:93 -#: www/views/tab-create-personal.html:67 -#: www/views/tab-create-personal.html:75 -#: www/views/tab-create-shared.html:104 -#: www/views/tab-create-shared.html:96 -#: www/views/tab-import-file.html:18 -#: www/views/tab-import-phrase.html:38 -msgid "Password" -msgstr "密码" - -#: src/js/controllers/import.js:83 -msgid "Password required. Make sure to enter your password in advanced options" -msgstr "需要密码。请务必在高级选项中输入你的密码" - -#: www/views/join.html:33 -msgid "Paste invitation here" -msgstr "在此粘贴邀请" - -#: www/views/tab-import-file.html:13 -msgid "Paste the backup plain text code" -msgstr "粘贴备份的纯文本代码" - -#: www/views/bitpayCardIntro.html:28 -msgid "Pay 0% fees to turn bitcoin into dollars." -msgstr "0%付费以比特币变成美元。" - -#: www/views/modals/paypro.html:18 -msgid "Pay To" -msgstr "支付给" - -#: src/js/controllers/modals/txpDetails.js:45 -#: www/views/modals/tx-status.html:33 -msgid "Payment Accepted" -msgstr "已接受支付" - -#: www/views/confirm.html:25 -msgid "Payment Expires:" -msgstr "付款到期︰" - -#: www/views/modals/txp-details.html:6 -msgid "Payment Proposal" -msgstr "支付提议" - -#: www/views/modals/tx-status.html:21 -msgid "Payment Proposal Created" -msgstr "支付提议已创建" - -#: www/views/tab-home.html:46 -msgid "Payment Proposals" -msgstr "支付提议" - -#: src/js/services/payproService.js:32 -msgid "Payment Protocol Invalid" -msgstr "支付协议无效" - -#: src/js/services/payproService.js:18 -msgid "Payment Protocol not supported on Chrome App" -msgstr "支付协议不支持 Chrome 应用程序" - -#: www/views/includes/walletActivity.html:20 -msgid "Payment Received" -msgstr "收到付款" - -#: www/views/modals/tx-status.html:43 -#: www/views/modals/txp-details.html:43 -msgid "Payment Rejected" -msgstr "支付被拒绝" - -#: src/js/controllers/modals/txpDetails.js:42 -#: www/views/confirm.html:126 -#: www/views/includes/walletActivity.html:11 -#: www/views/modals/txp-details.html:42 -msgid "Payment Sent" -msgstr "支付已发送" - -#: www/views/modals/txp-details.html:32 -msgid "Payment accepted, but not yet broadcasted" -msgstr "支付已被接受,但尚未广播" - -#: www/views/modals/txp-details.html:40 -msgid "Payment accepted. It will be broadcasted by Glidera. In case there is a problem, it can be deleted 6 hours after it was created." -msgstr "支付以被接受。它将由 Glidera 广播。如果出现问题,它可以在创建后的 6 个小时内删除。" - -#: www/views/modals/txp-details.html:109 -msgid "Payment details" -msgstr "支付明细" - -#: www/views/modals/paypro.html:6 -msgid "Payment request" -msgstr "支付请求" - -#: www/views/proposals.html:4 -msgid "Pending Proposals" -msgstr "支付提议" - -#: www/views/preferencesDeleteWallet.html:13 -msgid "Permanently delete this wallet." -msgstr "永久删除这个钱包。" - -#: src/js/services/profileService.js:388 -msgid "Personal Wallet" -msgstr "个人钱包" - -#: www/views/backup.html:18 -msgid "Please carefully write down this phrase." -msgstr "请仔细记下这句话。" - -#: www/views/tab-scan.html:20 -msgid "Please connect a camera to get started." -msgstr "请连接相机入门。" - -#: src/js/controllers/import.js:260 -msgid "Please enter the recovery phrase" -msgstr "请输入恢复短语" - -#: src/js/controllers/create.js:168 -#: src/js/controllers/join.js:135 -msgid "Please enter the wallet recovery phrase" -msgstr "请输入钱包恢复短语" - -#: www/views/modals/pin.html:9 -msgid "Please enter your PIN" -msgstr "" - -#: www/views/backup.html:46 -msgid "Please tap each word in the correct order." -msgstr "请点击每个单词按照正确的顺序。" - -#: src/js/services/bwcError.js:101 -msgid "Please upgrade Copay to perform this action" -msgstr "请升级 Copay 以执行此操作" - -#: src/js/controllers/import.js:222 -msgid "Please, select your backup file" -msgstr "请选择你的备份文件" - -#: www/views/bitpayCard.html:81 -msgid "Pre-Auth Holds" -msgstr "" - -#: www/views/tab-settings.html:40 -msgid "Preferences" -msgstr "偏好" - -#: src/js/services/onGoingProcess.js:38 -msgid "Preparing addresses..." -msgstr "正在准备地址..." - -#: src/js/controllers/export.js:198 -msgid "Preparing backup..." -msgstr "正在准备备份..." - -#: src/js/routes.js:1188 -msgid "Press again to exit" -msgstr "再按一次退出" - -#: src/js/services/feeService.js:11 -msgid "Priority" -msgstr "优先" - -#: www/views/includes/incomingDataMenu.html:80 -msgid "Private Key" -msgstr "" - -#: src/js/controllers/paperWallet.js:137 -msgid "Private key encrypted. Enter password" -msgstr "私钥加密。输入密码" - -#: src/js/services/bwcError.js:35 -msgid "Private key is encrypted, cannot sign" -msgstr "私钥已加密,无法签名" - -#: www/views/includes/walletActivity.html:51 -msgid "Proposal Accepted" -msgstr "提案被接受" - -#: src/js/controllers/modals/txpDetails.js:55 -#: src/js/controllers/tx-details.js:61 -#: www/views/confirm.html:127 -msgid "Proposal Created" -msgstr "建议创建" - -#: www/views/includes/walletActivity.html:27 -msgid "Proposal Deleted" -msgstr "建议删除" - -#: www/views/includes/walletActivity.html:35 -msgid "Proposal Rejected" -msgstr "被拒绝的建议" - -#: www/views/walletDetails.html:178 -msgid "Proposals" -msgstr "建议" - -#: src/js/controllers/buyAmazon.js:281 -msgid "Purchase Amount is limited to {{limitPerDay}} {{currency}} per day" -msgstr "" - -#: www/views/onboarding/notifications.html:3 -msgid "Push Notifications" -msgstr "推式通知" - -#: www/views/preferencesNotifications.html:17 -msgid "Push notifications for {{appName}} are currently disabled. Enable them in the Settings app." -msgstr "{{appName}} 的推式通知当前已禁用。在设置应用程序启用它们。" - -#: www/views/export.html:17 -msgid "QR Code" -msgstr "QR 码" - -#: www/views/onboarding/disclaimer.html:13 -msgid "Quick review!" -msgstr "快速审查 !" - -#: src/js/controllers/create.js:79 -#: src/js/controllers/join.js:65 -msgid "Random" -msgstr "随机" - -#: www/views/feedback/rateApp.html:14 -msgid "Rate on the app store" -msgstr "率的应用程序商店" - -#: www/views/addresses.html:52 -msgid "Read less" -msgstr "阅读少" - -#: www/views/addresses.html:51 -msgid "Read more" -msgstr "阅读更多" - -#: www/views/tab-receive.html:3 -#: www/views/tabs.html:7 -msgid "Receive" -msgstr "接收" - -#: www/views/customAmount.html:46 -msgid "Receive in" -msgstr "" - -#: www/views/includes/walletHistory.html:24 -#: www/views/tx-details.html:18 -msgid "Received" -msgstr "已接收" - -#: src/js/controllers/tx-details.js:113 -msgid "Received Funds" -msgstr "收到的资金" - -#: www/views/includes/walletHistory.html:57 -#: www/views/tx-details.html:24 -msgid "Receiving" -msgstr "接收" - -#: www/views/bitpayCard.html:60 -#: www/views/includes/walletHistory.html:3 -msgid "Recent" -msgstr "最近" - -#: www/views/advancedSettings.html:20 -msgid "Recent Transaction Card" -msgstr "最近交易卡" - -#: www/views/activity.html:4 -#: www/views/tab-home.html:58 -msgid "Recent Transactions" -msgstr "最近的交易" - -#: www/views/amount.html:18 -#: www/views/tab-send.html:9 -msgid "Recipient" -msgstr "收件人" - -#: www/views/modals/txp-details.html:62 -msgid "Recipients" -msgstr "接收者" - -#: www/views/import.html:12 -msgid "Recovery phrase" -msgstr "恢复短语" - -#: www/views/walletDetails.html:117 -#: www/views/walletDetails.html:36 -msgid "Recreate" -msgstr "重新创建" - -#: src/js/services/onGoingProcess.js:26 -msgid "Recreating Wallet..." -msgstr "正在重新创建的钱包..." - -#: src/js/controllers/modals/txpDetails.js:57 -#: src/js/controllers/tx-details.js:63 -msgid "Rejected" -msgstr "拒绝" - -#: src/js/services/onGoingProcess.js:27 -msgid "Rejecting payment proposal" -msgstr "拒绝付款方案" - -#: www/views/preferencesAbout.html:9 -msgid "Release information" -msgstr "发布信息" - -#: www/views/addressbook.view.html:36 -msgid "Remove" -msgstr "" - -#: src/js/controllers/preferencesBitpayServices.js:7 -msgid "Remove BitPay Account?" -msgstr "删除 BitPay 帐户吗?" - -#: src/js/controllers/preferencesBitpayServices.js:19 -msgid "Remove BitPay Card?" -msgstr "删除 BitPay 卡吗?" - -#: src/js/controllers/preferencesBitpayServices.js:8 -msgid "Removing your BitPay account will remove all associated BitPay account data from this device. Are you sure you would like to remove your BitPay Account ({{email}}) from this device?" -msgstr "" - -#: www/views/join.html:113 -#: www/views/join.html:121 -#: www/views/tab-create-personal.html:84 -#: www/views/tab-create-personal.html:92 -#: www/views/tab-create-shared.html:113 -#: www/views/tab-create-shared.html:121 -#: www/views/tab-export-file.html:17 -msgid "Repeat password" -msgstr "重复输入密码" - -#: www/views/tab-export-file.html:16 -msgid "Repeat the password" -msgstr "重复密码" - -#: www/views/preferences.html:55 -msgid "Request Fingerprint" -msgstr "请求指纹" - -#: www/views/tab-receive.html:45 -msgid "Request Specific amount" -msgstr "请求特定量" - -#: www/views/preferences.html:42 -msgid "Request Spending Password" -msgstr "请求支付密码" - -#: www/views/tab-create-shared.html:42 -msgid "Required number of signatures" -msgstr "所需的签名数" - -#: www/views/onboarding/welcome.html:9 -msgid "Restore from backup" -msgstr "从备份中还原" - -#: src/js/services/onGoingProcess.js:29 -msgid "Retrieving inputs information" -msgstr "正在获取输入的信息。" - -#: src/js/controllers/onboarding/tour.js:56 -msgid "Retry" -msgstr "重试" - -#: www/views/tab-scan.html:23 -msgid "Retry Camera" -msgstr "重试相机" - -#: www/views/addressbook.add.html:56 -#: www/views/includes/note.html:9 -#: www/views/preferencesAlias.html:21 -#: www/views/preferencesBwsUrl.html:25 -#: www/views/preferencesNotifications.html:46 -msgid "Save" -msgstr "保存" - -#: www/views/tab-scan.html:3 -#: www/views/tabs.html:11 -msgid "Scan" -msgstr "扫描" - -#: www/views/tab-scan.html:15 -msgid "Scan QR Codes" -msgstr "扫描 QR 码" - -#: www/views/addresses.html:31 -msgid "Scan addresses for funds" -msgstr "扫描资金的地址" - -#: www/views/modals/fingerprintCheck.html:11 -msgid "Scan again" -msgstr "" - -#: src/js/services/fingerprintService.js:56 -msgid "Scan your fingerprint please" -msgstr "请扫描你的指纹" - -#: src/js/services/onGoingProcess.js:30 -msgid "Scanning Wallet funds..." -msgstr "正在扫描钱包资金..." - -#: www/views/includes/screenshotWarningModal.html:7 -msgid "Screenshots are not secure" -msgstr "截图是不安全的" - -#: www/views/modals/search.html:6 -msgid "Search Transactions" -msgstr "搜索交易" - -#: www/views/tab-send.html:13 -msgid "Search or enter bitcoin address" -msgstr "搜索或输入比特币地址" - -#: www/views/modals/search.html:16 -msgid "Search transactions" -msgstr "搜索交易" - -#: www/views/preferencesAltCurrency.html:14 -msgid "Search your currency" -msgstr "搜索您的货币" - -#: www/views/preferences.html:30 -msgid "Security" -msgstr "安全" - -#: www/views/tab-import-file.html:7 -msgid "Select a backup file" -msgstr "选择备份文件" - -#: src/js/controllers/tab-receive.js:133 -msgid "Select a wallet" -msgstr "选择钱包" - -#: www/views/modals/paypro.html:38 -msgid "Self-signed Certificate" -msgstr "自签名证书" - -#: src/js/services/onGoingProcess.js:41 -msgid "Selling Bitcoin..." -msgstr "出售比特币......" - -#: www/views/feedback/send.html:13 -#: www/views/feedback/send.html:43 -#: www/views/tab-send.html:3 -#: www/views/tabs.html:15 -msgid "Send" -msgstr "发送" - -#: www/views/feedback/send.html:3 -#: www/views/tab-settings.html:29 -msgid "Send Feedback" -msgstr "发送反馈" - -#: www/views/addressbook.view.html:31 -msgid "Send Money" -msgstr "寄钱" - -#: www/views/allAddresses.html:19 -msgid "Send addresses by email" -msgstr "通过电邮发送地址" - -#: www/views/preferencesLogs.html:13 -#: www/views/tab-export-file.html:82 -msgid "Send by email" -msgstr "通过电邮发送" - -#: src/js/controllers/confirm.js:151 -msgid "Send from" -msgstr "从发送" - -#: www/views/includes/itemSelector.html:8 -msgid "Send max amount" -msgstr "发送最大数量" - -#: www/views/includes/incomingDataMenu.html:46 -msgid "Send payment to this address" -msgstr "" - -#: www/views/feedback/rateApp.html:17 -msgid "Send us feedback instead" -msgstr "而是向我们发送反馈" - -#: www/views/confirm.html:15 -#: www/views/includes/txp.html:12 -#: www/views/modals/txp-details.html:19 -#: www/views/tx-details.html:23 -msgid "Sending" -msgstr "正在发送" - -#: src/js/services/onGoingProcess.js:39 -msgid "Sending 2FA code..." -msgstr "正在发送 2FA 代码..." - -#: src/js/services/onGoingProcess.js:36 -msgid "Sending feedback..." -msgstr "发送反馈信息..." - -#: www/views/confirm.html:16 -msgid "Sending maximum amount" -msgstr "发送的最大金额" - -#: src/js/services/onGoingProcess.js:31 -msgid "Sending transaction" -msgstr "正在发送交易" - -#: src/js/controllers/confirm.js:490 -msgid "Sending {{amountStr}} from your {{name}} wallet" -msgstr "从你的 {{name}} 钱包发送 {{amountStr}}" - -#: www/views/includes/walletHistory.html:42 -#: www/views/modals/tx-status.html:9 -#: www/views/topup.html:100 -#: www/views/tx-details.html:17 -msgid "Sent" -msgstr "已发送" - -#: src/js/controllers/tx-details.js:112 -msgid "Sent Funds" -msgstr "已发送的资金" - -#: src/js/services/bwcError.js:38 -msgid "Server response could not be verified" -msgstr "无法验证服务器响应" - -#: src/js/controllers/buyAmazon.js:96 -msgid "Service not available" -msgstr "" - -#: www/views/includes/homeIntegrations.html:3 -msgid "Services" -msgstr "服务" - -#: www/views/preferencesLogs.html:3 -msgid "Session Log" -msgstr "会话日志" - -#: www/views/preferencesAbout.html:35 -msgid "Session log" -msgstr "会话日志" - -#: www/views/tab-export-file.html:10 -msgid "Set up a password" -msgstr "设置密码" - -#: src/js/controllers/preferencesFee.js:84 -msgid "Set your own fee in satoshis/byte" -msgstr "" - -#: www/views/tab-settings.html:3 -#: www/views/tabs.html:19 -msgid "Settings" -msgstr "设置" - -#: www/views/feedback/complete.html:17 -#: www/views/feedback/complete.html:26 -msgid "Share the love by inviting your friends." -msgstr "邀请您的朋友分享爱。" - -#: www/views/copayers.html:20 -msgid "Share this invitation with your copayers" -msgstr "将此邀请与你的 copayers 共享" - -#: src/js/controllers/feedback/complete.js:5 -#: www/views/tab-settings.html:36 -msgid "Share {{appName}}" -msgstr "分享 {{appName}}" - -#: www/views/tab-import-hardware.html:24 -msgid "Shared Wallet" -msgstr "共享的钱包" - -#: www/views/preferencesExternal.html:34 -msgid "Show Recovery Phrase" -msgstr "显示恢复短语" - -#: www/views/tab-receive.html:34 -msgid "Show address" -msgstr "" - -#: www/views/join.html:45 -#: www/views/tab-create-personal.html:25 -#: www/views/tab-create-shared.html:54 -#: www/views/tab-export-file.html:24 -#: www/views/tab-import-file.html:27 -#: www/views/tab-import-hardware.html:30 -#: www/views/tab-import-phrase.html:32 -msgid "Show advanced options" -msgstr "显示高级选项" - -#: www/views/tab-send.html:37 -msgid "Show bitcoin address" -msgstr "显示比特币地址" - -#: www/views/tab-send.html:59 -msgid "Show more" -msgstr "显示更多" - -#: src/js/services/bwcError.js:104 -msgid "Signatures rejected by server" -msgstr "签名被服务器拒绝" - -#: src/js/services/onGoingProcess.js:32 -msgid "Signing transaction" -msgstr "签名交易" - -#: 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 "因为只有你控制你的钱,你会需要删除此应用程序的情况下保存您备份的短语。" - -#: www/views/tab-create-personal.html:120 -#: www/views/tab-create-shared.html:149 -msgid "Single Address Wallet" -msgstr "单一地址钱包" - -#: www/views/onboarding/collectEmail.html:40 -#: www/views/onboarding/tour.html:11 -msgid "Skip" -msgstr "跳过" - -#: src/js/controllers/modals/txpDetails.js:34 -msgid "Slide" -msgstr "滑动" - -#: www/views/buyAmazon.html:96 -msgid "Slide to buy" -msgstr "" - -#: src/js/controllers/create.js:83 -#: src/js/controllers/join.js:68 -msgid "Specify Recovery Phrase..." -msgstr "指定恢复短语......" - -#: src/js/services/bwcError.js:92 -msgid "Spend proposal is not accepted" -msgstr "花费提议不被接受" - -#: src/js/services/bwcError.js:95 -msgid "Spend proposal not found" -msgstr "找不到花费提议" - -#: src/js/services/bwcError.js:137 -msgid "Spending Password needed" -msgstr "需要支付密码" - -#: www/views/walletDetails.html:162 -msgid "Spending this balance will need significant Bitcoin network fees" -msgstr "" - -#: www/views/tab-send.html:28 -msgid "Start sending bitcoin" -msgstr "开始发送比特币" - -#: www/views/lockSetup.html:3 -msgid "Startup Lock" -msgstr "" - -#: www/views/topup.html:101 -msgid "Success" -msgstr "" - -#: src/js/services/feeService.js:14 -msgid "Super Economy" -msgstr "超级经济" - -#: www/views/paperWallet.html:7 -msgid "Sweep" -msgstr "扫描" - -#: www/views/includes/incomingDataMenu.html:89 -#: www/views/paperWallet.html:3 -msgid "Sweep paper wallet" -msgstr "Sweep 纸钱包" - -#: src/js/services/onGoingProcess.js:33 -msgid "Sweeping Wallet..." -msgstr "正在导出钱包" - -#: www/views/preferencesDeleteWallet.html:16 -msgid "THIS ACTION CANNOT BE REVERSED" -msgstr "此操作无法撤消" - -#: www/views/onboarding/welcome.html:5 -msgid "Take control of your money,
get started with bitcoin." -msgstr "把你的钱,
得到控制开始用比特币。" - -#: www/views/walletDetails.html:140 -#: www/views/walletDetails.html:60 -msgid "Tap and hold to show" -msgstr "点击并按住以显示" - -#: www/views/walletDetails.html:112 -#: www/views/walletDetails.html:31 -msgid "Tap to retry" -msgstr "点击以重试" - -#: www/views/termsOfUse.html:3 -msgid "Terms Of Use" -msgstr "使用条件" - -#: www/views/modals/terms.html:3 -#: www/views/onboarding/disclaimer.html:29 -#: www/views/onboarding/disclaimer.html:43 -#: www/views/preferencesAbout.html:30 -msgid "Terms of Use" -msgstr "使用条款" - -#: www/views/tab-create-personal.html:116 -#: www/views/tab-import-phrase.html:65 -msgid "Testnet" -msgstr "Testnet" - -#: www/views/includes/incomingDataMenu.html:61 -msgid "Text" -msgstr "" - -#: src/js/controllers/feedback/send.js:27 -#: src/js/controllers/feedback/send.js:76 -#: www/views/feedback/complete.html:20 -#: www/views/feedback/rateApp.html:4 -msgid "Thank you!" -msgstr "谢谢!" - -#: src/js/controllers/feedback/send.js:72 -msgid "Thanks!" -msgstr "谢谢你 !" - -#: src/js/controllers/feedback/send.js:73 -msgid "That's exciting to hear. We'd love to earn that fifth star from you – how could we improve your experience?" -msgstr "这是令人兴奋的听到。我们愿意赚五明星从你 — — 我们如何可以改善您的体验吗?" - -#: src/js/services/ledger.js:152 -msgid "The Ledger Chrome application is not installed" -msgstr "Ledger Chrome 应用程序未安装" - -#: 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 "比特币存储在与小于 1 blockchain 确认这个钱包中的金额。" - -#: www/views/tab-import-phrase.html:5 -msgid "The derivation path" -msgstr "衍生路径" - -#: www/views/onboarding/tour.html:37 -msgid "The exchange rate changes with the market." -msgstr "与市场汇率的变化。" - -#: www/views/preferencesFee.html:12 -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:51 -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 "已连续未使用的地址 (20) 的最大数目。当您未使用的地址之一收到付款时,将生成一个新的地址,和您接收选项卡所示。" - -#: src/js/controllers/onboarding/terms.js:21 -msgid "The official English Terms of Service are available on the BitPay website." -msgstr "官方的英语术语服务是可在 BitPay 网站上。" - -#: www/views/tab-import-phrase.html:4 -msgid "The password of the recovery phrase (if set)" -msgstr "恢复短语的密码 (如已设置)" - -#: src/js/services/walletService.js:1140 -msgid "The payment was created but could not be completed. Please try again from home screen" -msgstr "支付已创建,但无法完成。请从首页再试一次" - -#: www/views/modals/txp-details.html:26 -msgid "The payment was removed by creator" -msgstr "支付已被创建者移除" - -#: www/views/join.html:88 -#: www/views/tab-create-personal.html:61 -#: www/views/tab-create-shared.html:90 -#: www/views/tab-import-phrase.html:40 -msgid "The recovery phrase could require a password to be imported" -msgstr "恢复短语需要密码才能导入" - -#: src/js/services/bwcError.js:56 -msgid "The request could not be understood by the server" -msgstr "服务器不理解此请求" - -#: www/views/addresses.html:52 -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 "还原过程将停止 20 地址生成行包含没有资金中时。要安全地生成更多的地址,到未使用的地址已经产生之一进行付款。" - -#: src/js/services/bwcError.js:98 -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:27 -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 "在应用程序缓存的交易历史记录和每个新传入事务。此功能清洁,这点和再次从服务器进行同步" - -#: www/views/tab-import-phrase.html:6 -msgid "The wallet service URL" -msgstr "钱包服务 URL" - -#: src/js/controllers/tab-home.js:38 -msgid "There is a new version of {{appName}} available" -msgstr "有可用的新版本的 {{appName}}" - -#: src/js/controllers/import.js:213 -#: src/js/controllers/import.js:237 -#: src/js/controllers/import.js:317 -msgid "There is an error in the form" -msgstr "表格中有错误" - -#: src/js/controllers/feedback/send.js:61 -#: src/js/controllers/feedback/send.js:65 -msgid "There's obviously something we're doing wrong." -msgstr "显然是我们正在做的事情错了。" - -#: src/js/controllers/feedback/rateCard.js:38 -msgid "This app is fantastic!" -msgstr "这个应用程序太棒了 !" - -#: www/views/onboarding/tour.html:47 -msgid "This app stores your bitcoin with cutting-edge security." -msgstr "此应用程序商店你比特币与尖端的安全。" - -#: src/js/controllers/confirm.js:468 -msgid "This bitcoin payment request has expired." -msgstr "这比特币付款请求已过期。" - -#: www/views/join.html:130 -#: www/views/tab-create-personal.html:101 -#: www/views/tab-create-shared.html:130 -msgid "This password cannot be recovered. If the password is lost, there is no way you could recover your funds." -msgstr "此密码将无法恢复。如果密码丢失,有是没有办法,你可以恢复您的资金。" - -#: www/views/backup.html:24 -msgid "This recovery phrase was created with a password. To recover this wallet both the recovery phrase and password are needed." -msgstr "此恢复短语是用密码创建。为了恢复此钱包,需要恢复短语和密码。" - -#: www/views/tx-details.html:93 -msgid "This transaction amount is too small compared to current Bitcoin network fees. Spending these funds will need a Bitcoin network fee cost comparable to the funds itself." -msgstr "" - -#: www/views/tx-details.html:89 -msgid "This transaction could take a long time to confirm or could be dropped due to the low fees set by the sender" -msgstr "" - -#: www/views/walletDetails.html:116 -#: 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 "此钱包不在给定的 Bitcore Wallet Service (BWS) 注册。你可以从本地信息重新创建它。" - -#: www/views/modals/txp-details.html:138 -#: www/views/tx-details.html:121 -msgid "Timeline" -msgstr "时间轴" - -#: www/views/confirm.html:31 -#: www/views/includes/output.html:2 -#: www/views/modals/txp-details.html:111 -#: www/views/modals/txp-details.html:53 -#: www/views/tx-details.html:41 -#: www/views/tx-details.html:53 -msgid "To" -msgstr "发送到" - -#: www/views/tab-send.html:32 -msgid "To get started, buy bitcoin or share your address. You can receive bitcoin from any wallet or service." -msgstr "若要开始,请买比特币或共享您的地址。你可以从任何钱包或服务接收比特币。" - -#: www/views/tab-send.html:33 -msgid "To get started, you'll need to create a bitcoin wallet and get some bitcoin." -msgstr "若要开始,您将需要创建一个比特币的钱包,并获得一些比特币。" - -#: src/js/services/bitpayAccountService.js:73 -msgid "To {{reason}} you must first add your BitPay account - {{email}}" -msgstr "" - -#: src/js/services/onGoingProcess.js:48 -msgid "Top up in progress..." -msgstr "" - -#: src/js/controllers/topup.js:205 -msgid "Top up {{amountStr}} to debit card ({{cardLastNumber}})" -msgstr "" - -#: www/views/buyAmazon.html:61 -#: www/views/modals/wallet-balance.html:23 -#: www/views/topup.html:70 -msgid "Total" -msgstr "总计" - -#: www/views/walletDetails.html:185 -msgid "Total Locked Balance" -msgstr "锁定结余的总额" - -#: www/views/tab-create-shared.html:33 -msgid "Total number of copayers" -msgstr "Copayers 的总数" - -#: www/views/addresses.html:81 -msgid "Total wallet inputs" -msgstr "" - -#: src/js/services/fingerprintService.js:63 -#: src/js/services/fingerprintService.js:68 -msgid "Touch ID Failed" -msgstr "触摸 ID 失败" - -#: src/js/controllers/tx-details.js:11 -msgid "Transaction" -msgstr "交易" - -#: www/views/confirm.html:128 -msgid "Transaction Created" -msgstr "" - -#: www/views/preferencesAdvanced.html:29 -#: www/views/preferencesHistory.html:3 -msgid "Transaction History" -msgstr "交易历史记录" - -#: src/js/services/bwcError.js:83 -msgid "Transaction already broadcasted" -msgstr "交易已经广播" - -#: src/js/controllers/buyAmazon.js:306 -#: src/js/controllers/topup.js:279 -msgid "Transaction has not been created" -msgstr "" - -#: www/views/topup.html:104 -msgid "Transaction initiated" -msgstr "" - -#: src/js/controllers/tx-details.js:102 -msgid "Transaction not available at this time" -msgstr "" - -#: src/js/controllers/activity.js:45 -#: src/js/controllers/tab-home.js:174 -msgid "Transaction not found" -msgstr "找不到交易" - -#: www/views/modals/chooseFeeLevel.html:54 -msgid "Transactions without fee are not supported." -msgstr "" - -#: src/js/controllers/paperWallet.js:110 -msgid "Transfer to" -msgstr "" - -#: www/views/tab-send.html:67 -msgid "Transfer to Wallet" -msgstr "转移到钱包" - -#: www/views/modals/pin.html:13 -msgid "Try again in {{expires}}" -msgstr "" - -#: www/views/bitpayCardIntro.html:18 -msgid "Turn bitcoin into dollars, swipe anywhere Visa® is accepted." -msgstr "比特币变成美元,刷在接受 Visa® 的任何地方。" - -#: www/views/tab-import-phrase.html:17 -msgid "Type the Recovery Phrase (usually 12 words)" -msgstr "键入恢复短语 (通常 12 个字)" - -#: src/js/controllers/backup.js:75 -msgid "Uh oh..." -msgstr "哦哦......" - -#: www/views/tx-details.html:100 -msgid "Unconfirmed" -msgstr "未确认" - -#: www/views/preferencesUnit.html:4 -msgid "Unit" -msgstr "单位" - -#: www/views/walletDetails.html:179 -msgid "Unsent transactions" -msgstr "未发送的交易" - -#: www/views/addresses.html:39 -msgid "Unused Addresses" -msgstr "未使用的地址" - -#: www/views/addresses.html:50 -msgid "Unused Addresses Limit" -msgstr "未使用的地址" - -#: src/js/controllers/tab-home.js:146 -msgid "Update Available" -msgstr "可用的更新" - -#: www/views/proposals.html:14 -msgid "Updating pending proposals. Please stand by" -msgstr "正在更新挂起的建议。请袖手旁观" - -#: www/views/walletDetails.html:211 -msgid "Updating transaction history. Please stand by." -msgstr "更新交易历史记录。请等待。" - -#: www/views/activity.html:14 -msgid "Updating... Please stand by" -msgstr "更新中… 请等待" - -#: src/js/services/feeService.js:10 -msgid "Urgent" -msgstr "" - -#: www/views/advancedSettings.html:11 -msgid "Use Unconfirmed Funds" -msgstr "使用未经确认的资金" - -#: src/js/services/onGoingProcess.js:34 -msgid "Validating recovery phrase..." -msgstr "正在验证恢复短语。。。" - -#: www/views/modals/fingerprintCheck.html:4 -msgid "Verify your identity" -msgstr "" - -#: www/views/preferencesAbout.html:14 -#: www/views/preferencesExternal.html:25 -msgid "Version" -msgstr "版本" - -#: www/views/tab-export-file.html:69 -msgid "View" -msgstr "查看" - -#: www/views/addresses.html:34 -msgid "View All Addresses" -msgstr "查看所有地址" - -#: src/js/controllers/onboarding/terms.js:20 -msgid "View Terms of Service" -msgstr "查看服务条款" - -#: src/js/controllers/bitpayCard.js:122 -#: src/js/controllers/tx-details.js:174 -msgid "View Transaction on Insight" -msgstr "查看交易记录的洞察" - -#: src/js/controllers/tab-home.js:148 -msgid "View Update" -msgstr "查看更新" - -#: www/views/tx-details.html:147 -msgid "View on blockchain" -msgstr "在 blockchain 上查看" - -#: www/views/walletDetails.html:171 -msgid "WARNING: Key derivation is not working on this device/wallet. Actions cannot be performed on this wallet." -msgstr "警告︰此设备/钱包无法运行钥匙衍生。无法在此钱包上执行操作。" - -#: www/views/tab-export-file.html:45 -msgid "WARNING: Not including the private key allows to check the wallet balance, transaction history, and create spend proposals from the export. However, does not allow to approve (sign) proposals, so funds will not be accessible from the export." -msgstr "警告︰不包括私钥,以检查钱包余额、交易历史记录,及从导出创建开销提议。可是,不允许批准(签名)提议,因此 资金将无法从导出访问。" - -#: www/views/tab-export-file.html:36 -msgid "WARNING: The private key of this wallet is not available. The export allows to check the wallet balance, transaction history, and create spend proposals from the export. However, does not allow to approve (sign) proposals, so funds will not be accessible from the export." -msgstr "警告︰此钱包没有可用的私钥。导出可以检查钱包余额、交易历史记录,及从导出创建开销提议。可是,不允许批准(签名)提议,因此 资金将无法从导出访问。" - -#: www/views/modals/paypro.html:42 -msgid "WARNING: UNTRUSTED CERTIFICATE" -msgstr "警告︰不受信任的证书" - -#: src/js/services/onGoingProcess.js:15 -msgid "Waiting for Ledger..." -msgstr "正在等待 Ledger..." - -#: src/js/services/onGoingProcess.js:16 -msgid "Waiting for Trezor..." -msgstr "正在等待 Trezor..." - -#: www/views/copayers.html:48 -msgid "Waiting for copayers" -msgstr "正在等待 copayers" - -#: www/views/copayers.html:53 -msgid "Waiting..." -msgstr "等待中..." - -#: www/views/addresses.html:3 -#: www/views/preferencesAdvanced.html:17 -msgid "Wallet Addresses" -msgstr "钱包地址" - -#: www/views/preferencesColor.html:4 -msgid "Wallet Color" -msgstr "钱包颜色" - -#: www/views/preferencesInformation.html:23 -msgid "Wallet Configuration (m-n)" -msgstr "钱包配置 (m n)" - -#: www/views/onboarding/collectEmail.html:5 -msgid "Wallet Created" -msgstr "创建的钱包" - -#: www/views/preferencesInformation.html:17 -msgid "Wallet Id" -msgstr "钱包 Id" - -#: www/views/preferencesAdvanced.html:13 -#: www/views/preferencesInformation.html:3 -msgid "Wallet Information" -msgstr "钱包信息" - -#: www/views/addresses.html:76 -msgid "Wallet Inputs" -msgstr "" - -#: www/views/join.html:26 -msgid "Wallet Invitation" -msgstr "钱包邀请" - -#: www/views/join.html:57 -#: www/views/tab-create-personal.html:36 -#: www/views/tab-create-shared.html:65 -msgid "Wallet Key" -msgstr "钱包钥匙" - -#: www/views/preferencesAlias.html:4 -msgid "Wallet Name" -msgstr "钱包的名字" - -#: www/views/preferencesInformation.html:11 -msgid "Wallet Name (at creation)" -msgstr "钱包名称(在创建时)" - -#: www/views/preferencesInformation.html:29 -msgid "Wallet Network" -msgstr "钱包网" - -#: www/views/join.html:74 -#: www/views/tab-create-personal.html:48 -#: www/views/tab-create-shared.html:77 -msgid "Wallet Recovery Phrase" -msgstr "钱包恢复短语" - -#: src/js/services/bwcError.js:26 -msgid "Wallet Recovery Phrase is invalid" -msgstr "无效的钱包恢复短语" - -#: www/views/preferencesAdvanced.html:25 -#: www/views/tab-import-phrase.html:70 -msgid "Wallet Service URL" -msgstr "钱包服务 URL" - -#: www/views/preferences.html:4 -msgid "Wallet Settings" -msgstr "钱包的设置" - -#: www/views/tab-import-hardware.html:11 -#: www/views/tab-import-phrase.html:58 -msgid "Wallet Type" -msgstr "钱包类型" - -#: src/js/services/bwcError.js:59 -msgid "Wallet already exists" -msgstr "钱包已存在" - -#: src/js/services/profileService.js:498 -msgid "Wallet already in Copay" -msgstr "钱包已经在 Copay" - -#: www/views/includes/walletActivity.html:6 -msgid "Wallet created" -msgstr "创建的钱包" - -#: www/views/copayers.html:58 -msgid "Wallet incomplete and broken" -msgstr "钱包不完整和损坏" - -#: src/js/services/bwcError.js:65 -msgid "Wallet is full" -msgstr "钱包已满" - -#: src/js/services/bwcError.js:125 -msgid "Wallet is locked" -msgstr "钱包被锁定" - -#: src/js/services/bwcError.js:128 -msgid "Wallet is not complete" -msgstr "钱包不完整" - -#: www/views/tab-create-personal.html:12 -#: www/views/tab-create-shared.html:12 -msgid "Wallet name" -msgstr "钱包名称" - -#: src/js/services/bwcError.js:131 -msgid "Wallet needs backup" -msgstr "钱包需要备份" - -#: www/views/tab-receive.html:59 -#: www/views/walletDetails.html:157 -msgid "Wallet not backed up" -msgstr "未备份的钱包" - -#: src/js/services/bwcError.js:68 -msgid "Wallet not found" -msgstr "找不到钱包" - -#: src/js/controllers/tab-home.js:220 -msgid "Wallet not registered" -msgstr "未注册的钱包" - -#: src/js/services/bwcError.js:29 -msgid "Wallet not registered at the wallet service. Recreate it from \"Create Wallet\" using \"Advanced Options\" to set your recovery phrase" -msgstr "钱包不在 Wallet Service 注册。使用“创建钱包\"的\"高级选项\"设置你的恢复短语以重新创建它" - -#: www/views/backup.html:11 -msgid "Wallet recovery phrase not available." -msgstr "钱包恢复短语不可用。" - -#: src/js/services/bwcError.js:50 -msgid "Wallet service not found" -msgstr "找不到 Wallet Service" - -#: www/views/tab-home.html:69 -msgid "Wallets" -msgstr "钱包" - -#: www/views/tab-settings.html:102 -msgid "Wallets & Integrations" -msgstr "钱包 & 集成" - -#: src/js/controllers/addressbookView.js:23 -#: src/js/controllers/modals/txpDetails.js:147 -#: src/js/controllers/modals/txpDetails.js:164 -#: src/js/controllers/preferencesDelete.js:25 -#: src/js/controllers/preferencesExternal.js:14 -#: www/views/preferencesDeleteWallet.html:11 -msgid "Warning!" -msgstr "警告!​​​​​" - -#: www/views/modals/txp-details.html:47 -msgid "Warning: this transaction has unconfirmed inputs" -msgstr "警告︰此交易有未经确认的输入" - -#: src/js/controllers/onboarding/backupRequest.js:17 -msgid "Watch out!" -msgstr "小心 !" - -#: src/js/controllers/feedback/send.js:69 -msgid "We'd love to do better." -msgstr "我们很乐意做得更好。" - -#: www/views/backup.html:28 -msgid "We'll confirm on the next screen." -msgstr "我们会在下一个屏幕上确认。" - -#: src/js/controllers/feedback/send.js:77 -msgid "We're always looking for ways to improve {{appName}}." -msgstr "" - -#: src/js/controllers/feedback/send.js:83 -msgid "We're always looking for ways to improve {{appName}}. How could we improve your experience?" -msgstr "" - -#: www/views/includes/incomingDataMenu.html:6 -msgid "Website" -msgstr "" - -#: www/views/preferencesLanguage.html:16 -msgid "We’re always looking for translation contributions! You can make corrections or help to make this app available in your native language by joining our community on Crowdin." -msgstr "我们一直在寻找翻译的贡献 !你可以作出更正或帮助使这个应用程序在你的母语中可用 Crowdin 上加入我们的社区。" - -#: www/views/preferencesAlias.html:11 -msgid "What do you call this wallet?" -msgstr "你叫这个钱包是什么?" - -#: www/views/preferencesAlias.html:12 -msgid "When this wallet was created, it was called “{{walletName}}”. You can change the name displayed on this device below." -msgstr "这个钱包在创建时,它被称为\"{{walletName}}\"。您可以更改显示在这下面的设备的名称。" - -#: www/views/onboarding/collectEmail.html:10 -msgid "Where would you like to receive email notifications about payments?" -msgstr "在那里你想要接收电子邮件通知有关付款?" - -#: www/views/addresses.html:19 -msgid "Why?" -msgstr "为什么?" - -#: www/views/feedback/rateApp.html:10 -msgid "Would you be willing to rate {{appName}} in the app store?" -msgstr "" - -#: www/views/onboarding/notifications.html:4 -msgid "Would you like to receive push notifications about payments?" -msgstr "你想收到推式通知有关付款吗?" - -#: src/js/controllers/import.js:270 -msgid "Wrong number of recovery words:" -msgstr "恢复词句数不正确:" - -#: src/js/services/bwcError.js:140 -msgid "Wrong spending password" -msgstr "支付密码错误" - -#: www/views/modals/confirmation.html:7 -msgid "Yes" -msgstr "是" - -#: src/js/controllers/onboarding/backupRequest.js:25 -msgid "Yes, skip" -msgstr "是的跳过" - -#: src/js/controllers/onboarding/backupRequest.js:24 -msgid "You can create a backup later from your wallet settings." -msgstr "你可以从你的钱包设置以后创建备份。" - -#: src/js/controllers/preferencesLanguage.js:12 -msgid "You can make contributions by signing up on our Crowdin community translation website. We’re looking forward to hearing from you!" -msgstr "您可以通过签约我们 Crowdin 社区翻译网站作出贡献。我们期待你的听力 !" - -#: www/views/tab-scan.html:16 -msgid "You can scan bitcoin addresses, payment requests, paper wallets, and more." -msgstr "您可以扫描比特币地址、 付款申请、 纸钱包和更多。" - -#: 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 "你可以看到最新的事态发展和贡献这个开放源码应用程序通过在 GitHub 上访问我们的项目。" - -#: www/views/onboarding/tour.html:19 -msgid "You can spend bitcoin at millions of websites and stores worldwide." -msgstr "你可以花比特币在数以百万计的网站和世界各地的商店。" - -#: www/views/backup.html:12 -msgid "You can still export it from Advanced > Export." -msgstr "你仍然可以将其导出从高级 > 出口。" - -#: www/views/onboarding/tour.html:32 -msgid "You can trade it for other currencies like US Dollars, Euros, or Pounds." -msgstr "你可以换其他货币,如美元、 欧元或英镑。" - -#: www/views/onboarding/tour.html:46 -msgid "You control your bitcoin." -msgstr "您可以控制您的比特币。" - -#: www/views/modals/chooseFeeLevel.html:63 -msgid "You should not set a fee higher than {{maxFeeRecommended}} satoshis/byte." -msgstr "" - -#: www/views/modals/bitpay-card-confirmation.html:5 -msgid "You will need to log back for fill in your BitPay Card." -msgstr "" - -#: www/views/preferencesNotifications.html:34 -msgid "You'll receive email notifications about payments sent and received from your wallets." -msgstr "在您的钱包进行付款操作时发送通知。" - -#: www/views/bitpayCard.html:50 -msgid "Your BitPay Card is ready. Add funds to your card to start using it at stores and ATMs worldwide." -msgstr "" - -#: www/views/includes/confirmBackupPopup.html:6 -msgid "Your bitcoin wallet is backed up!" -msgstr "你的比特币钱包被备份 !" - -#: www/views/tab-home.html:36 -msgid "Your bitcoin wallet is ready!" -msgstr "你的比特币钱包是准备好了 !" - -#: www/views/modals/chooseFeeLevel.html:60 -msgid "Your fee is lower than recommended." -msgstr "" - -#: www/views/feedback/send.html:42 -msgid "Your ideas, feedback, or comments" -msgstr "你的想法、 反馈或评论" - -#: www/views/tab-create-shared.html:22 -msgid "Your name" -msgstr "您的名字:" - -#: www/views/join.html:16 -msgid "Your nickname" -msgstr "你的昵称" - -#: www/views/tab-export-file.html:11 -#: www/views/tab-import-file.html:20 -msgid "Your password" -msgstr "你的密码" - -#: www/views/buyAmazon.html:102 -msgid "Your purchase could not be completed" -msgstr "" - -#: www/views/buyAmazon.html:105 -msgid "Your purchase was added to the list of pending" -msgstr "" - -#: www/views/onboarding/backupRequest.html:10 -msgid "Your wallet is never saved to cloud storage or standard device backups." -msgstr "你的钱包是永远不会保存到云存储或标准设备备份。" - -#: src/js/services/walletService.js:1031 -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/paperWallet.html:35 -#: www/views/tab-home.html:96 -#: www/views/tab-receive.html:74 -#: www/views/walletDetails.html:139 -#: www/views/walletDetails.html:59 -msgid "[Balance Hidden]" -msgstr "[隐藏余额]" - -#: src/js/controllers/bitpayCardIntro.js:11 -msgid "add your BitPay Visa card(s)" -msgstr "添加您的 BitPay 签证卡" - -#: www/views/includes/available-balance.html:8 -msgid "locked by pending payments" -msgstr "被未决支付锁定" - -#: src/js/services/profileService.js:389 -msgid "me" -msgstr "我" - -#: www/views/addressbook.add.html:32 -msgid "name@example.com" -msgstr "name@example.com" - -#: www/views/preferencesHistory.html:15 -msgid "preparing..." -msgstr "准备中..." - -#: src/js/controllers/confirm.js:329 -#: src/js/controllers/modals/txpDetails.js:44 -msgid "to accept" -msgstr "接受" - -#: src/js/controllers/confirm.js:327 -msgid "to pay" -msgstr "付款" - -#: src/js/controllers/confirm.js:331 -#: src/js/controllers/modals/txpDetails.js:41 -msgid "to send" -msgstr "发送" - -#: src/js/controllers/buyAmazon.js:238 -msgid "{{amountStr}} for Amazon.com Gift Card" -msgstr "" - -#: www/views/preferencesBwsUrl.html:21 -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}} 中的区块链信息依赖于 Bitcore Wallet Service (BWS)、网络和 Copayer synchronization。默认配置指向 https://bws.bitpay.com (BitPay 的公共 BWS 实例)。" - -#: src/js/controllers/confirm.js:358 -msgid "{{fee}} will be deducted for bitcoin networking fees." -msgstr "{{fee}} 将比特币网络费用中扣除。" - -#: www/views/confirm.html:87 -msgid "{{tx.txp[wallet.id].feeRatePerStr}} of the sending amount" -msgstr "" - -#: www/views/walletDetails.html:212 -msgid "{{updatingTxHistoryProgress}} transactions downloaded" -msgstr "下载的 {{updatingTxHistoryProgress}} 交易" - -#: www/views/copayers.html:46 -#: www/views/includes/walletInfo.html:12 -msgid "{{wallet.m}}-of-{{wallet.n}}" -msgstr "{{wallet.m}}{{wallet.n}}" - diff --git a/jsdoc.conf.json b/jsdoc.conf.json deleted file mode 100644 index 5c5c11650..000000000 --- a/jsdoc.conf.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "tags": { - "allowUnknownTags": true - }, - "source": { - "includePattern": ".+\\.js(doc)?$", - "excludePattern": "(^|\\/|\\\\)_" - }, - "plugins": [], - "templates": { - "cleverLinks": false, - "monospaceLinks": false, - "default": { - "outputSourceFiles": true - }, - "theme": "flatly" - } -} diff --git a/resources/bitpay/android/app-store/feature-graphic-1024.png b/resources/bitpay/android/app-store/feature-graphic-1024.png deleted file mode 100644 index e706290bf..000000000 Binary files a/resources/bitpay/android/app-store/feature-graphic-1024.png and /dev/null differ diff --git a/resources/bitpay/android/app-store/icon-512x512.png b/resources/bitpay/android/app-store/icon-512x512.png deleted file mode 100644 index 92b75419a..000000000 Binary files a/resources/bitpay/android/app-store/icon-512x512.png and /dev/null differ diff --git a/resources/bitpay/android/icon/drawable-hdpi-icon.png b/resources/bitpay/android/icon/drawable-hdpi-icon.png deleted file mode 100644 index 015ed9fbe..000000000 Binary files a/resources/bitpay/android/icon/drawable-hdpi-icon.png and /dev/null differ diff --git a/resources/bitpay/android/icon/drawable-ldpi-icon.png b/resources/bitpay/android/icon/drawable-ldpi-icon.png deleted file mode 100644 index e57bbcc79..000000000 Binary files a/resources/bitpay/android/icon/drawable-ldpi-icon.png and /dev/null differ diff --git a/resources/bitpay/android/icon/drawable-mdpi-icon.png b/resources/bitpay/android/icon/drawable-mdpi-icon.png deleted file mode 100644 index 3e1746faf..000000000 Binary files a/resources/bitpay/android/icon/drawable-mdpi-icon.png and /dev/null differ diff --git a/resources/bitpay/android/icon/drawable-xhdpi-icon.png b/resources/bitpay/android/icon/drawable-xhdpi-icon.png deleted file mode 100644 index c1ee5b740..000000000 Binary files a/resources/bitpay/android/icon/drawable-xhdpi-icon.png and /dev/null differ diff --git a/resources/bitpay/android/icon/drawable-xxhdpi-icon.png b/resources/bitpay/android/icon/drawable-xxhdpi-icon.png deleted file mode 100644 index c8365dcfc..000000000 Binary files a/resources/bitpay/android/icon/drawable-xxhdpi-icon.png and /dev/null differ diff --git a/resources/bitpay/android/icon/drawable-xxxhdpi-icon.png b/resources/bitpay/android/icon/drawable-xxxhdpi-icon.png deleted file mode 100644 index 90b15afbd..000000000 Binary files a/resources/bitpay/android/icon/drawable-xxxhdpi-icon.png and /dev/null differ diff --git a/resources/bitpay/android/splash/drawable-land-hdpi-screen.png b/resources/bitpay/android/splash/drawable-land-hdpi-screen.png deleted file mode 100644 index b654226c6..000000000 Binary files a/resources/bitpay/android/splash/drawable-land-hdpi-screen.png and /dev/null differ diff --git a/resources/bitpay/android/splash/drawable-land-ldpi-screen.png b/resources/bitpay/android/splash/drawable-land-ldpi-screen.png deleted file mode 100644 index 5ef52f957..000000000 Binary files a/resources/bitpay/android/splash/drawable-land-ldpi-screen.png and /dev/null differ diff --git a/resources/bitpay/android/splash/drawable-land-mdpi-screen.png b/resources/bitpay/android/splash/drawable-land-mdpi-screen.png deleted file mode 100644 index 8b6ebf16d..000000000 Binary files a/resources/bitpay/android/splash/drawable-land-mdpi-screen.png and /dev/null differ diff --git a/resources/bitpay/android/splash/drawable-land-xhdpi-screen.png b/resources/bitpay/android/splash/drawable-land-xhdpi-screen.png deleted file mode 100644 index 0c9a40604..000000000 Binary files a/resources/bitpay/android/splash/drawable-land-xhdpi-screen.png and /dev/null differ diff --git a/resources/bitpay/android/splash/drawable-land-xxhdpi-screen.png b/resources/bitpay/android/splash/drawable-land-xxhdpi-screen.png deleted file mode 100644 index 9f17fe834..000000000 Binary files a/resources/bitpay/android/splash/drawable-land-xxhdpi-screen.png and /dev/null differ diff --git a/resources/bitpay/android/splash/drawable-land-xxxhdpi-screen.png b/resources/bitpay/android/splash/drawable-land-xxxhdpi-screen.png deleted file mode 100644 index d97fbdf83..000000000 Binary files a/resources/bitpay/android/splash/drawable-land-xxxhdpi-screen.png and /dev/null differ diff --git a/resources/bitpay/android/splash/drawable-port-hdpi-screen.png b/resources/bitpay/android/splash/drawable-port-hdpi-screen.png deleted file mode 100644 index f1231c135..000000000 Binary files a/resources/bitpay/android/splash/drawable-port-hdpi-screen.png and /dev/null differ diff --git a/resources/bitpay/android/splash/drawable-port-ldpi-screen.png b/resources/bitpay/android/splash/drawable-port-ldpi-screen.png deleted file mode 100644 index a0e36f111..000000000 Binary files a/resources/bitpay/android/splash/drawable-port-ldpi-screen.png and /dev/null differ diff --git a/resources/bitpay/android/splash/drawable-port-mdpi-screen.png b/resources/bitpay/android/splash/drawable-port-mdpi-screen.png deleted file mode 100644 index 6d5bbf417..000000000 Binary files a/resources/bitpay/android/splash/drawable-port-mdpi-screen.png and /dev/null differ diff --git a/resources/bitpay/android/splash/drawable-port-xhdpi-screen.png b/resources/bitpay/android/splash/drawable-port-xhdpi-screen.png deleted file mode 100644 index 5c066aa3e..000000000 Binary files a/resources/bitpay/android/splash/drawable-port-xhdpi-screen.png and /dev/null differ diff --git a/resources/bitpay/android/splash/drawable-port-xxhdpi-screen.png b/resources/bitpay/android/splash/drawable-port-xxhdpi-screen.png deleted file mode 100644 index 68992e81f..000000000 Binary files a/resources/bitpay/android/splash/drawable-port-xxhdpi-screen.png and /dev/null differ diff --git a/resources/bitpay/android/splash/drawable-port-xxxhdpi-screen.png b/resources/bitpay/android/splash/drawable-port-xxxhdpi-screen.png deleted file mode 100644 index 746bc7bc5..000000000 Binary files a/resources/bitpay/android/splash/drawable-port-xxxhdpi-screen.png and /dev/null differ diff --git a/resources/bitpay/ios/app-store/icon-1024.png b/resources/bitpay/ios/app-store/icon-1024.png deleted file mode 100644 index 3eedd7063..000000000 Binary files a/resources/bitpay/ios/app-store/icon-1024.png and /dev/null differ diff --git a/resources/bitpay/ios/icon/icon-40.png b/resources/bitpay/ios/icon/icon-40.png deleted file mode 100644 index 49ecb89a1..000000000 Binary files a/resources/bitpay/ios/icon/icon-40.png and /dev/null differ diff --git a/resources/bitpay/ios/icon/icon-40@2x.png b/resources/bitpay/ios/icon/icon-40@2x.png deleted file mode 100644 index 90aea63de..000000000 Binary files a/resources/bitpay/ios/icon/icon-40@2x.png and /dev/null differ diff --git a/resources/bitpay/ios/icon/icon-50.png b/resources/bitpay/ios/icon/icon-50.png deleted file mode 100644 index 0c7dbf6d7..000000000 Binary files a/resources/bitpay/ios/icon/icon-50.png and /dev/null differ diff --git a/resources/bitpay/ios/icon/icon-50@2x.png b/resources/bitpay/ios/icon/icon-50@2x.png deleted file mode 100644 index 162d90e02..000000000 Binary files a/resources/bitpay/ios/icon/icon-50@2x.png and /dev/null differ diff --git a/resources/bitpay/ios/icon/icon-60.png b/resources/bitpay/ios/icon/icon-60.png deleted file mode 100644 index e999b6f99..000000000 Binary files a/resources/bitpay/ios/icon/icon-60.png and /dev/null differ diff --git a/resources/bitpay/ios/icon/icon-60@2x.png b/resources/bitpay/ios/icon/icon-60@2x.png deleted file mode 100644 index faddc2ff0..000000000 Binary files a/resources/bitpay/ios/icon/icon-60@2x.png and /dev/null differ diff --git a/resources/bitpay/ios/icon/icon-60@3x.png b/resources/bitpay/ios/icon/icon-60@3x.png deleted file mode 100644 index 6b1926392..000000000 Binary files a/resources/bitpay/ios/icon/icon-60@3x.png and /dev/null differ diff --git a/resources/bitpay/ios/icon/icon-72.png b/resources/bitpay/ios/icon/icon-72.png deleted file mode 100644 index f8f770df7..000000000 Binary files a/resources/bitpay/ios/icon/icon-72.png and /dev/null differ diff --git a/resources/bitpay/ios/icon/icon-72@2x.png b/resources/bitpay/ios/icon/icon-72@2x.png deleted file mode 100644 index a76579145..000000000 Binary files a/resources/bitpay/ios/icon/icon-72@2x.png and /dev/null differ diff --git a/resources/bitpay/ios/icon/icon-76.png b/resources/bitpay/ios/icon/icon-76.png deleted file mode 100644 index 1a10434ba..000000000 Binary files a/resources/bitpay/ios/icon/icon-76.png and /dev/null differ diff --git a/resources/bitpay/ios/icon/icon-76@2x.png b/resources/bitpay/ios/icon/icon-76@2x.png deleted file mode 100644 index 79c0e893e..000000000 Binary files a/resources/bitpay/ios/icon/icon-76@2x.png and /dev/null differ diff --git a/resources/bitpay/ios/icon/icon-83.5@2x.png b/resources/bitpay/ios/icon/icon-83.5@2x.png deleted file mode 100644 index 9d65e9dd8..000000000 Binary files a/resources/bitpay/ios/icon/icon-83.5@2x.png and /dev/null differ diff --git a/resources/bitpay/ios/icon/icon-small.png b/resources/bitpay/ios/icon/icon-small.png deleted file mode 100644 index 3ba431057..000000000 Binary files a/resources/bitpay/ios/icon/icon-small.png and /dev/null differ diff --git a/resources/bitpay/ios/icon/icon-small@2x.png b/resources/bitpay/ios/icon/icon-small@2x.png deleted file mode 100644 index 0c62edde7..000000000 Binary files a/resources/bitpay/ios/icon/icon-small@2x.png and /dev/null differ diff --git a/resources/bitpay/ios/icon/icon-small@3x.png b/resources/bitpay/ios/icon/icon-small@3x.png deleted file mode 100644 index 2d9a9376e..000000000 Binary files a/resources/bitpay/ios/icon/icon-small@3x.png and /dev/null differ diff --git a/resources/bitpay/ios/icon/icon.png b/resources/bitpay/ios/icon/icon.png deleted file mode 100644 index f9a3b1dfd..000000000 Binary files a/resources/bitpay/ios/icon/icon.png and /dev/null differ diff --git a/resources/bitpay/ios/icon/icon@2x.png b/resources/bitpay/ios/icon/icon@2x.png deleted file mode 100644 index 947e9bf9e..000000000 Binary files a/resources/bitpay/ios/icon/icon@2x.png and /dev/null differ diff --git a/resources/bitpay/ios/splash/Default-568h@2x~iphone.png b/resources/bitpay/ios/splash/Default-568h@2x~iphone.png deleted file mode 100644 index 9ca8301cc..000000000 Binary files a/resources/bitpay/ios/splash/Default-568h@2x~iphone.png and /dev/null differ diff --git a/resources/bitpay/ios/splash/Default-667h.png b/resources/bitpay/ios/splash/Default-667h.png deleted file mode 100644 index 7fae7b4ed..000000000 Binary files a/resources/bitpay/ios/splash/Default-667h.png and /dev/null differ diff --git a/resources/bitpay/ios/splash/Default-736h.png b/resources/bitpay/ios/splash/Default-736h.png deleted file mode 100644 index 8b45a0c52..000000000 Binary files a/resources/bitpay/ios/splash/Default-736h.png and /dev/null differ diff --git a/resources/bitpay/ios/splash/Default-Landscape-736h.png b/resources/bitpay/ios/splash/Default-Landscape-736h.png deleted file mode 100644 index e5f01b243..000000000 Binary files a/resources/bitpay/ios/splash/Default-Landscape-736h.png and /dev/null differ diff --git a/resources/bitpay/ios/splash/Default-Landscape@2x~ipad.png b/resources/bitpay/ios/splash/Default-Landscape@2x~ipad.png deleted file mode 100644 index b438f7bb2..000000000 Binary files a/resources/bitpay/ios/splash/Default-Landscape@2x~ipad.png and /dev/null differ diff --git a/resources/bitpay/ios/splash/Default-Landscape~ipad.png b/resources/bitpay/ios/splash/Default-Landscape~ipad.png deleted file mode 100644 index 0aa0f69fa..000000000 Binary files a/resources/bitpay/ios/splash/Default-Landscape~ipad.png and /dev/null differ diff --git a/resources/bitpay/ios/splash/Default-Portrait@2x~ipad.png b/resources/bitpay/ios/splash/Default-Portrait@2x~ipad.png deleted file mode 100644 index c4b71c2a9..000000000 Binary files a/resources/bitpay/ios/splash/Default-Portrait@2x~ipad.png and /dev/null differ diff --git a/resources/bitpay/ios/splash/Default-Portrait~ipad.png b/resources/bitpay/ios/splash/Default-Portrait~ipad.png deleted file mode 100644 index cd13e0811..000000000 Binary files a/resources/bitpay/ios/splash/Default-Portrait~ipad.png and /dev/null differ diff --git a/resources/bitpay/ios/splash/Default@2x~iphone.png b/resources/bitpay/ios/splash/Default@2x~iphone.png deleted file mode 100644 index 50dc4f6ee..000000000 Binary files a/resources/bitpay/ios/splash/Default@2x~iphone.png and /dev/null differ diff --git a/resources/bitpay/ios/splash/Default~iphone.png b/resources/bitpay/ios/splash/Default~iphone.png deleted file mode 100644 index 6d5bbf417..000000000 Binary files a/resources/bitpay/ios/splash/Default~iphone.png and /dev/null differ diff --git a/resources/bitpay/linux/512x512.png b/resources/bitpay/linux/512x512.png deleted file mode 100644 index 92b75419a..000000000 Binary files a/resources/bitpay/linux/512x512.png and /dev/null differ diff --git a/resources/bitpay/mac/app.icns b/resources/bitpay/mac/app.icns deleted file mode 100644 index 7f42b46c7..000000000 Binary files a/resources/bitpay/mac/app.icns and /dev/null differ diff --git a/resources/bitpay/mac/dmg-background.tiff b/resources/bitpay/mac/dmg-background.tiff deleted file mode 100644 index 6d5fd9e03..000000000 Binary files a/resources/bitpay/mac/dmg-background.tiff and /dev/null differ diff --git a/resources/bitpay/mac/volume-icon.icns b/resources/bitpay/mac/volume-icon.icns deleted file mode 100644 index d4bc2ce2a..000000000 Binary files a/resources/bitpay/mac/volume-icon.icns and /dev/null differ diff --git a/resources/bitpay/windows/app-store/icon-300x300.png b/resources/bitpay/windows/app-store/icon-300x300.png deleted file mode 100644 index cd48dc3c8..000000000 Binary files a/resources/bitpay/windows/app-store/icon-300x300.png and /dev/null differ diff --git a/resources/bitpay/windows/icon.ico b/resources/bitpay/windows/icon.ico deleted file mode 100644 index 4629745bd..000000000 Binary files a/resources/bitpay/windows/icon.ico and /dev/null differ diff --git a/resources/bitpay/windows/icon/Square150x150Logo.scale-100.png b/resources/bitpay/windows/icon/Square150x150Logo.scale-100.png deleted file mode 100644 index 4646a054a..000000000 Binary files a/resources/bitpay/windows/icon/Square150x150Logo.scale-100.png and /dev/null differ diff --git a/resources/bitpay/windows/icon/Square150x150Logo.scale-240.png b/resources/bitpay/windows/icon/Square150x150Logo.scale-240.png deleted file mode 100644 index aa02a7c5c..000000000 Binary files a/resources/bitpay/windows/icon/Square150x150Logo.scale-240.png and /dev/null differ diff --git a/resources/bitpay/windows/icon/Square30x30Logo.scale-100.png b/resources/bitpay/windows/icon/Square30x30Logo.scale-100.png deleted file mode 100644 index 2fa06c01e..000000000 Binary files a/resources/bitpay/windows/icon/Square30x30Logo.scale-100.png and /dev/null differ diff --git a/resources/bitpay/windows/icon/Square310x310Logo.scale-100.png b/resources/bitpay/windows/icon/Square310x310Logo.scale-100.png deleted file mode 100644 index 4ed2c4181..000000000 Binary files a/resources/bitpay/windows/icon/Square310x310Logo.scale-100.png and /dev/null differ diff --git a/resources/bitpay/windows/icon/Square44x44Logo.scale-100.png b/resources/bitpay/windows/icon/Square44x44Logo.scale-100.png deleted file mode 100644 index c37a539ce..000000000 Binary files a/resources/bitpay/windows/icon/Square44x44Logo.scale-100.png and /dev/null differ diff --git a/resources/bitpay/windows/icon/Square44x44Logo.scale-240.png b/resources/bitpay/windows/icon/Square44x44Logo.scale-240.png deleted file mode 100644 index 509858282..000000000 Binary files a/resources/bitpay/windows/icon/Square44x44Logo.scale-240.png and /dev/null differ diff --git a/resources/bitpay/windows/icon/Square70x70Logo.scale-100.png b/resources/bitpay/windows/icon/Square70x70Logo.scale-100.png deleted file mode 100644 index ddc186470..000000000 Binary files a/resources/bitpay/windows/icon/Square70x70Logo.scale-100.png and /dev/null differ diff --git a/resources/bitpay/windows/icon/Square71x71Logo.scale-100.png b/resources/bitpay/windows/icon/Square71x71Logo.scale-100.png deleted file mode 100644 index 5d1a62218..000000000 Binary files a/resources/bitpay/windows/icon/Square71x71Logo.scale-100.png and /dev/null differ diff --git a/resources/bitpay/windows/icon/Square71x71Logo.scale-240.png b/resources/bitpay/windows/icon/Square71x71Logo.scale-240.png deleted file mode 100644 index 7010f24c1..000000000 Binary files a/resources/bitpay/windows/icon/Square71x71Logo.scale-240.png and /dev/null differ diff --git a/resources/bitpay/windows/icon/StoreLogo.scale-100.png b/resources/bitpay/windows/icon/StoreLogo.scale-100.png deleted file mode 100644 index 0c7dbf6d7..000000000 Binary files a/resources/bitpay/windows/icon/StoreLogo.scale-100.png and /dev/null differ diff --git a/resources/bitpay/windows/icon/StoreLogo.scale-240.png b/resources/bitpay/windows/icon/StoreLogo.scale-240.png deleted file mode 100644 index faddc2ff0..000000000 Binary files a/resources/bitpay/windows/icon/StoreLogo.scale-240.png and /dev/null differ diff --git a/resources/bitpay/windows/icon/Wide310x150Logo.scale-100.png b/resources/bitpay/windows/icon/Wide310x150Logo.scale-100.png deleted file mode 100644 index 8a6dd5ac4..000000000 Binary files a/resources/bitpay/windows/icon/Wide310x150Logo.scale-100.png and /dev/null differ diff --git a/resources/bitpay/windows/icon/Wide310x150Logo.scale-240.png b/resources/bitpay/windows/icon/Wide310x150Logo.scale-240.png deleted file mode 100644 index d5cdfe5fb..000000000 Binary files a/resources/bitpay/windows/icon/Wide310x150Logo.scale-240.png and /dev/null differ diff --git a/resources/bitpay/windows/splash/SplashScreen.scale-100.png b/resources/bitpay/windows/splash/SplashScreen.scale-100.png deleted file mode 100644 index 275aea689..000000000 Binary files a/resources/bitpay/windows/splash/SplashScreen.scale-100.png and /dev/null differ diff --git a/resources/bitpay/windows/splash/SplashScreenPhone.scale-240.png b/resources/bitpay/windows/splash/SplashScreenPhone.scale-240.png deleted file mode 100644 index 344bce672..000000000 Binary files a/resources/bitpay/windows/splash/SplashScreenPhone.scale-240.png and /dev/null differ diff --git a/resources/copay/android/app-store/feature-graphic-1024.png b/resources/copay/android/app-store/feature-graphic-1024.png deleted file mode 100644 index a20fa1ce2..000000000 Binary files a/resources/copay/android/app-store/feature-graphic-1024.png and /dev/null differ diff --git a/resources/copay/android/app-store/icon-512x512.png b/resources/copay/android/app-store/icon-512x512.png deleted file mode 100644 index cba4cf27a..000000000 Binary files a/resources/copay/android/app-store/icon-512x512.png and /dev/null differ diff --git a/resources/copay/android/icon/drawable-hdpi-icon.png b/resources/copay/android/icon/drawable-hdpi-icon.png deleted file mode 100644 index 8ae109ea8..000000000 Binary files a/resources/copay/android/icon/drawable-hdpi-icon.png and /dev/null differ diff --git a/resources/copay/android/icon/drawable-ldpi-icon.png b/resources/copay/android/icon/drawable-ldpi-icon.png deleted file mode 100644 index 96c0d167d..000000000 Binary files a/resources/copay/android/icon/drawable-ldpi-icon.png and /dev/null differ diff --git a/resources/copay/android/icon/drawable-mdpi-icon.png b/resources/copay/android/icon/drawable-mdpi-icon.png deleted file mode 100644 index c7991ebc0..000000000 Binary files a/resources/copay/android/icon/drawable-mdpi-icon.png and /dev/null differ diff --git a/resources/copay/android/icon/drawable-xhdpi-icon.png b/resources/copay/android/icon/drawable-xhdpi-icon.png deleted file mode 100644 index c4f6914b2..000000000 Binary files a/resources/copay/android/icon/drawable-xhdpi-icon.png and /dev/null differ diff --git a/resources/copay/android/icon/drawable-xxhdpi-icon.png b/resources/copay/android/icon/drawable-xxhdpi-icon.png deleted file mode 100644 index 204555da3..000000000 Binary files a/resources/copay/android/icon/drawable-xxhdpi-icon.png and /dev/null differ diff --git a/resources/copay/android/icon/drawable-xxxhdpi-icon.png b/resources/copay/android/icon/drawable-xxxhdpi-icon.png deleted file mode 100644 index 6667aab7c..000000000 Binary files a/resources/copay/android/icon/drawable-xxxhdpi-icon.png and /dev/null differ diff --git a/resources/copay/android/splash/drawable-land-hdpi-screen.png b/resources/copay/android/splash/drawable-land-hdpi-screen.png deleted file mode 100644 index b3c3ca491..000000000 Binary files a/resources/copay/android/splash/drawable-land-hdpi-screen.png and /dev/null differ diff --git a/resources/copay/android/splash/drawable-land-ldpi-screen.png b/resources/copay/android/splash/drawable-land-ldpi-screen.png deleted file mode 100644 index cf916fed3..000000000 Binary files a/resources/copay/android/splash/drawable-land-ldpi-screen.png and /dev/null differ diff --git a/resources/copay/android/splash/drawable-land-mdpi-screen.png b/resources/copay/android/splash/drawable-land-mdpi-screen.png deleted file mode 100644 index f39a62bee..000000000 Binary files a/resources/copay/android/splash/drawable-land-mdpi-screen.png and /dev/null differ diff --git a/resources/copay/android/splash/drawable-land-xhdpi-screen.png b/resources/copay/android/splash/drawable-land-xhdpi-screen.png deleted file mode 100644 index 2d5743831..000000000 Binary files a/resources/copay/android/splash/drawable-land-xhdpi-screen.png and /dev/null differ diff --git a/resources/copay/android/splash/drawable-land-xxhdpi-screen.png b/resources/copay/android/splash/drawable-land-xxhdpi-screen.png deleted file mode 100644 index b65e22878..000000000 Binary files a/resources/copay/android/splash/drawable-land-xxhdpi-screen.png and /dev/null differ diff --git a/resources/copay/android/splash/drawable-land-xxxhdpi-screen.png b/resources/copay/android/splash/drawable-land-xxxhdpi-screen.png deleted file mode 100644 index 0841e461f..000000000 Binary files a/resources/copay/android/splash/drawable-land-xxxhdpi-screen.png and /dev/null differ diff --git a/resources/copay/android/splash/drawable-port-hdpi-screen.png b/resources/copay/android/splash/drawable-port-hdpi-screen.png deleted file mode 100644 index cc3370b5d..000000000 Binary files a/resources/copay/android/splash/drawable-port-hdpi-screen.png and /dev/null differ diff --git a/resources/copay/android/splash/drawable-port-ldpi-screen.png b/resources/copay/android/splash/drawable-port-ldpi-screen.png deleted file mode 100644 index dd4d2b6cb..000000000 Binary files a/resources/copay/android/splash/drawable-port-ldpi-screen.png and /dev/null differ diff --git a/resources/copay/android/splash/drawable-port-mdpi-screen.png b/resources/copay/android/splash/drawable-port-mdpi-screen.png deleted file mode 100644 index 6ab037baf..000000000 Binary files a/resources/copay/android/splash/drawable-port-mdpi-screen.png and /dev/null differ diff --git a/resources/copay/android/splash/drawable-port-xhdpi-screen.png b/resources/copay/android/splash/drawable-port-xhdpi-screen.png deleted file mode 100644 index 0511c1cbd..000000000 Binary files a/resources/copay/android/splash/drawable-port-xhdpi-screen.png and /dev/null differ diff --git a/resources/copay/android/splash/drawable-port-xxhdpi-screen.png b/resources/copay/android/splash/drawable-port-xxhdpi-screen.png deleted file mode 100644 index d9059f131..000000000 Binary files a/resources/copay/android/splash/drawable-port-xxhdpi-screen.png and /dev/null differ diff --git a/resources/copay/android/splash/drawable-port-xxxhdpi-screen.png b/resources/copay/android/splash/drawable-port-xxxhdpi-screen.png deleted file mode 100644 index c94e40d3d..000000000 Binary files a/resources/copay/android/splash/drawable-port-xxxhdpi-screen.png and /dev/null differ diff --git a/resources/copay/ios/app-store/icon-1024.png b/resources/copay/ios/app-store/icon-1024.png deleted file mode 100644 index d0e204acb..000000000 Binary files a/resources/copay/ios/app-store/icon-1024.png and /dev/null differ diff --git a/resources/copay/ios/icon/icon-40.png b/resources/copay/ios/icon/icon-40.png deleted file mode 100644 index 920e1871b..000000000 Binary files a/resources/copay/ios/icon/icon-40.png and /dev/null differ diff --git a/resources/copay/ios/icon/icon-40@2x.png b/resources/copay/ios/icon/icon-40@2x.png deleted file mode 100644 index 28494b8b2..000000000 Binary files a/resources/copay/ios/icon/icon-40@2x.png and /dev/null differ diff --git a/resources/copay/ios/icon/icon-50.png b/resources/copay/ios/icon/icon-50.png deleted file mode 100644 index fed6b17f8..000000000 Binary files a/resources/copay/ios/icon/icon-50.png and /dev/null differ diff --git a/resources/copay/ios/icon/icon-50@2x.png b/resources/copay/ios/icon/icon-50@2x.png deleted file mode 100644 index f1e48c22a..000000000 Binary files a/resources/copay/ios/icon/icon-50@2x.png and /dev/null differ diff --git a/resources/copay/ios/icon/icon-60.png b/resources/copay/ios/icon/icon-60.png deleted file mode 100644 index 43d77481a..000000000 Binary files a/resources/copay/ios/icon/icon-60.png and /dev/null differ diff --git a/resources/copay/ios/icon/icon-60@2x.png b/resources/copay/ios/icon/icon-60@2x.png deleted file mode 100644 index 319783053..000000000 Binary files a/resources/copay/ios/icon/icon-60@2x.png and /dev/null differ diff --git a/resources/copay/ios/icon/icon-60@3x.png b/resources/copay/ios/icon/icon-60@3x.png deleted file mode 100644 index 7d7549fc2..000000000 Binary files a/resources/copay/ios/icon/icon-60@3x.png and /dev/null differ diff --git a/resources/copay/ios/icon/icon-72.png b/resources/copay/ios/icon/icon-72.png deleted file mode 100644 index 02126994a..000000000 Binary files a/resources/copay/ios/icon/icon-72.png and /dev/null differ diff --git a/resources/copay/ios/icon/icon-72@2x.png b/resources/copay/ios/icon/icon-72@2x.png deleted file mode 100644 index b424e90bb..000000000 Binary files a/resources/copay/ios/icon/icon-72@2x.png and /dev/null differ diff --git a/resources/copay/ios/icon/icon-76.png b/resources/copay/ios/icon/icon-76.png deleted file mode 100644 index 5a7bc4d91..000000000 Binary files a/resources/copay/ios/icon/icon-76.png and /dev/null differ diff --git a/resources/copay/ios/icon/icon-76@2x.png b/resources/copay/ios/icon/icon-76@2x.png deleted file mode 100644 index e25719a0d..000000000 Binary files a/resources/copay/ios/icon/icon-76@2x.png and /dev/null differ diff --git a/resources/copay/ios/icon/icon-83.5@2x.png b/resources/copay/ios/icon/icon-83.5@2x.png deleted file mode 100644 index fb287d534..000000000 Binary files a/resources/copay/ios/icon/icon-83.5@2x.png and /dev/null differ diff --git a/resources/copay/ios/icon/icon-small.png b/resources/copay/ios/icon/icon-small.png deleted file mode 100644 index e89b93562..000000000 Binary files a/resources/copay/ios/icon/icon-small.png and /dev/null differ diff --git a/resources/copay/ios/icon/icon-small@2x.png b/resources/copay/ios/icon/icon-small@2x.png deleted file mode 100644 index 58fe46a4d..000000000 Binary files a/resources/copay/ios/icon/icon-small@2x.png and /dev/null differ diff --git a/resources/copay/ios/icon/icon-small@3x.png b/resources/copay/ios/icon/icon-small@3x.png deleted file mode 100644 index c1faac553..000000000 Binary files a/resources/copay/ios/icon/icon-small@3x.png and /dev/null differ diff --git a/resources/copay/ios/icon/icon.png b/resources/copay/ios/icon/icon.png deleted file mode 100644 index 48e657646..000000000 Binary files a/resources/copay/ios/icon/icon.png and /dev/null differ diff --git a/resources/copay/ios/icon/icon@2x.png b/resources/copay/ios/icon/icon@2x.png deleted file mode 100644 index 0773e5a0e..000000000 Binary files a/resources/copay/ios/icon/icon@2x.png and /dev/null differ diff --git a/resources/copay/ios/splash/Default-568h@2x~iphone.png b/resources/copay/ios/splash/Default-568h@2x~iphone.png deleted file mode 100644 index 24b19e527..000000000 Binary files a/resources/copay/ios/splash/Default-568h@2x~iphone.png and /dev/null differ diff --git a/resources/copay/ios/splash/Default-667h.png b/resources/copay/ios/splash/Default-667h.png deleted file mode 100644 index 3a031d24f..000000000 Binary files a/resources/copay/ios/splash/Default-667h.png and /dev/null differ diff --git a/resources/copay/ios/splash/Default-736h.png b/resources/copay/ios/splash/Default-736h.png deleted file mode 100644 index deb0c387d..000000000 Binary files a/resources/copay/ios/splash/Default-736h.png and /dev/null differ diff --git a/resources/copay/ios/splash/Default-Landscape-736h.png b/resources/copay/ios/splash/Default-Landscape-736h.png deleted file mode 100644 index ec386d5d9..000000000 Binary files a/resources/copay/ios/splash/Default-Landscape-736h.png and /dev/null differ diff --git a/resources/copay/ios/splash/Default-Landscape@2x~ipad.png b/resources/copay/ios/splash/Default-Landscape@2x~ipad.png deleted file mode 100644 index 884d65be6..000000000 Binary files a/resources/copay/ios/splash/Default-Landscape@2x~ipad.png and /dev/null differ diff --git a/resources/copay/ios/splash/Default-Landscape~ipad.png b/resources/copay/ios/splash/Default-Landscape~ipad.png deleted file mode 100644 index 017580c82..000000000 Binary files a/resources/copay/ios/splash/Default-Landscape~ipad.png and /dev/null differ diff --git a/resources/copay/ios/splash/Default-Portrait@2x~ipad.png b/resources/copay/ios/splash/Default-Portrait@2x~ipad.png deleted file mode 100644 index a389944ff..000000000 Binary files a/resources/copay/ios/splash/Default-Portrait@2x~ipad.png and /dev/null differ diff --git a/resources/copay/ios/splash/Default-Portrait~ipad.png b/resources/copay/ios/splash/Default-Portrait~ipad.png deleted file mode 100644 index 1fa78ca8a..000000000 Binary files a/resources/copay/ios/splash/Default-Portrait~ipad.png and /dev/null differ diff --git a/resources/copay/ios/splash/Default@2x~iphone.png b/resources/copay/ios/splash/Default@2x~iphone.png deleted file mode 100644 index a7f2bc6fc..000000000 Binary files a/resources/copay/ios/splash/Default@2x~iphone.png and /dev/null differ diff --git a/resources/copay/ios/splash/Default~iphone.png b/resources/copay/ios/splash/Default~iphone.png deleted file mode 100644 index 6ab037baf..000000000 Binary files a/resources/copay/ios/splash/Default~iphone.png and /dev/null differ diff --git a/resources/copay/linux/512x512.png b/resources/copay/linux/512x512.png deleted file mode 100644 index cba4cf27a..000000000 Binary files a/resources/copay/linux/512x512.png and /dev/null differ diff --git a/resources/copay/mac/app.icns b/resources/copay/mac/app.icns deleted file mode 100644 index 466d76ac6..000000000 Binary files a/resources/copay/mac/app.icns and /dev/null differ diff --git a/resources/copay/mac/dmg-background.tiff b/resources/copay/mac/dmg-background.tiff deleted file mode 100644 index aef703568..000000000 Binary files a/resources/copay/mac/dmg-background.tiff and /dev/null differ diff --git a/resources/copay/mac/volume-icon.icns b/resources/copay/mac/volume-icon.icns deleted file mode 100644 index de390858e..000000000 Binary files a/resources/copay/mac/volume-icon.icns and /dev/null differ diff --git a/resources/copay/windows/icon.ico b/resources/copay/windows/icon.ico deleted file mode 100644 index b810ca475..000000000 Binary files a/resources/copay/windows/icon.ico and /dev/null differ diff --git a/resources/copay/windows/icon/Square150x150Logo.scale-100.png b/resources/copay/windows/icon/Square150x150Logo.scale-100.png deleted file mode 100644 index e10a4ea50..000000000 Binary files a/resources/copay/windows/icon/Square150x150Logo.scale-100.png and /dev/null differ diff --git a/resources/copay/windows/icon/Square150x150Logo.scale-240.png b/resources/copay/windows/icon/Square150x150Logo.scale-240.png deleted file mode 100644 index 4373c399c..000000000 Binary files a/resources/copay/windows/icon/Square150x150Logo.scale-240.png and /dev/null differ diff --git a/resources/copay/windows/icon/Square30x30Logo.scale-100.png b/resources/copay/windows/icon/Square30x30Logo.scale-100.png deleted file mode 100644 index 4c528c264..000000000 Binary files a/resources/copay/windows/icon/Square30x30Logo.scale-100.png and /dev/null differ diff --git a/resources/copay/windows/icon/Square310x310Logo.scale-100.png b/resources/copay/windows/icon/Square310x310Logo.scale-100.png deleted file mode 100644 index 752b9d323..000000000 Binary files a/resources/copay/windows/icon/Square310x310Logo.scale-100.png and /dev/null differ diff --git a/resources/copay/windows/icon/Square44x44Logo.scale-100.png b/resources/copay/windows/icon/Square44x44Logo.scale-100.png deleted file mode 100644 index 0c6bc8021..000000000 Binary files a/resources/copay/windows/icon/Square44x44Logo.scale-100.png and /dev/null differ diff --git a/resources/copay/windows/icon/Square44x44Logo.scale-240.png b/resources/copay/windows/icon/Square44x44Logo.scale-240.png deleted file mode 100644 index 68455e789..000000000 Binary files a/resources/copay/windows/icon/Square44x44Logo.scale-240.png and /dev/null differ diff --git a/resources/copay/windows/icon/Square70x70Logo.scale-100.png b/resources/copay/windows/icon/Square70x70Logo.scale-100.png deleted file mode 100644 index df09d9f8f..000000000 Binary files a/resources/copay/windows/icon/Square70x70Logo.scale-100.png and /dev/null differ diff --git a/resources/copay/windows/icon/Square71x71Logo.scale-100.png b/resources/copay/windows/icon/Square71x71Logo.scale-100.png deleted file mode 100644 index a24d17d1d..000000000 Binary files a/resources/copay/windows/icon/Square71x71Logo.scale-100.png and /dev/null differ diff --git a/resources/copay/windows/icon/Square71x71Logo.scale-240.png b/resources/copay/windows/icon/Square71x71Logo.scale-240.png deleted file mode 100644 index 42978f2d7..000000000 Binary files a/resources/copay/windows/icon/Square71x71Logo.scale-240.png and /dev/null differ diff --git a/resources/copay/windows/icon/StoreLogo.scale-100.png b/resources/copay/windows/icon/StoreLogo.scale-100.png deleted file mode 100644 index fed6b17f8..000000000 Binary files a/resources/copay/windows/icon/StoreLogo.scale-100.png and /dev/null differ diff --git a/resources/copay/windows/icon/StoreLogo.scale-240.png b/resources/copay/windows/icon/StoreLogo.scale-240.png deleted file mode 100644 index 319783053..000000000 Binary files a/resources/copay/windows/icon/StoreLogo.scale-240.png and /dev/null differ diff --git a/resources/copay/windows/icon/Wide310x150Logo.scale-100.png b/resources/copay/windows/icon/Wide310x150Logo.scale-100.png deleted file mode 100644 index adaf5c97d..000000000 Binary files a/resources/copay/windows/icon/Wide310x150Logo.scale-100.png and /dev/null differ diff --git a/resources/copay/windows/icon/Wide310x150Logo.scale-240.png b/resources/copay/windows/icon/Wide310x150Logo.scale-240.png deleted file mode 100644 index 2a57b395b..000000000 Binary files a/resources/copay/windows/icon/Wide310x150Logo.scale-240.png and /dev/null differ diff --git a/resources/copay/windows/splash/SplashScreen.scale-100.png b/resources/copay/windows/splash/SplashScreen.scale-100.png deleted file mode 100644 index bd9084458..000000000 Binary files a/resources/copay/windows/splash/SplashScreen.scale-100.png and /dev/null differ diff --git a/resources/copay/windows/splash/SplashScreenPhone.scale-240.png b/resources/copay/windows/splash/SplashScreenPhone.scale-240.png deleted file mode 100644 index 85390b59a..000000000 Binary files a/resources/copay/windows/splash/SplashScreenPhone.scale-240.png and /dev/null differ diff --git a/resources/generate.sh b/resources/generate.sh deleted file mode 100644 index 0acf4b436..000000000 --- a/resources/generate.sh +++ /dev/null @@ -1,38 +0,0 @@ -# This script requires Sketch on macOS – see readme.md for details - -# export all slices marked for export to the proper directory -echo "Exporting all assets from src.sketch..." -# sketchtool is installed by install.sh -sketchtool export layers src.sketch - -function postprocess { - # $1 = distribution name - echo "Beginning postprocessing for $1..." - - echo "Postprocessing assets for macOS..." - iconset $1 app - iconset $1 volume-icon - - echo "Creating Retina-ready DMG background..." - tiffutil -cathidpicheck $1/mac/dmg-background.png $1/mac/dmg-background@2x.png -out $1/mac/dmg-background.tiff - echo "Removing raw background pngs..." - rm $1/mac/dmg-background.png $1/mac/dmg-background@2x.png - - echo "Postprocessing assets for Windows..." - - echo "Combining windows/ico pngs into a single ICO file..." - # convert ships with imagemagick - convert $1/windows/ico/ico_16x16.png $1/windows/ico/ico_24x24.png $1/windows/ico/ico_32x32.png $1/windows/ico/ico_48x48.png $1/windows/ico/ico_64x64.png $1/windows/ico/ico_128x128.png $1/windows/ico/ico_256x256.png $1/windows/icon.ico - echo "Removing raw windows/ico pngs..." - rm -r $1/windows/ico/* && rmdir $1/windows/ico -} - -function iconset { - echo "Converting $1 $2 iconset to icns..." - iconutil --convert icns $1/mac/$2.iconset --output $1/mac/$2.icns - echo "Removing $1 $2 iconset..." - rm -r $1/mac/$2.iconset -} - -postprocess copay -postprocess bitpay diff --git a/resources/install.sh b/resources/install.sh deleted file mode 100644 index 37c444946..000000000 --- a/resources/install.sh +++ /dev/null @@ -1,8 +0,0 @@ -echo "Installing sketchtool... (this requires Sketch.app)" -# This installs sketchtool: https://www.sketchapp.com/tool/ -sh /Applications/Sketch.app/Contents/Resources/sketchtool/install.sh - -echo "Installing imagemagick... (This requires Homebrew)" -# This requires Homebrew: http://brew.sh/ -brew install imagemagick -# imagemagick provides the `convert` utility, used to generate ICO files diff --git a/resources/readme.md b/resources/readme.md deleted file mode 100644 index 9d6d0f9f4..000000000 --- a/resources/readme.md +++ /dev/null @@ -1,29 +0,0 @@ -# Copay Project Resources - -This directory contains a `src.sketch` file from which all other assets are exported or derived. - -## Requirements - -You'll need [Sketch](https://www.sketchapp.com/) to make any changes to this directory. You'll also need to have [Homebrew](http://brew.sh/) installed to regenerate all assets. - -Sketch and Homebrew are only available for macOS, and several processes in `generate.sh` require utilities that ship with macOS, so this process requires macOS. - -## Install sketchtool - -If you do not have `sketchtool` installed, you'll first need to install it. - -```sh -sh install.sh -``` - -## Generate assets - -To make an update, first make the change in `src.sketch`, then run: - -```sh -sh generate.sh -``` - -## Commit the changes - -Be sure to commit the modified `src.sketch`, as well as any modified exported assets. diff --git a/resources/src.sketch b/resources/src.sketch deleted file mode 100644 index c5af3aa96..000000000 Binary files a/resources/src.sketch and /dev/null differ diff --git a/src/js/app.js b/src/js/app.js deleted file mode 100644 index 784745fdd..000000000 --- a/src/js/app.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict'; - -var modules = [ - 'angularMoment', - 'monospaced.qrcode', - 'gettext', - 'ionic', - 'ionic-toast', - 'angular-clipboard', - 'ngTouch', - 'ngLodash', - 'ngCsv', - 'angular-md5', - 'bwcModule', - 'bitauthModule', - 'copayApp.filters', - 'copayApp.services', - 'copayApp.controllers', - 'copayApp.directives', - 'copayApp.addons' -]; - -var copayApp = window.copayApp = angular.module('copayApp', modules); - -angular.module('copayApp.filters', []); -angular.module('copayApp.services', []); -angular.module('copayApp.controllers', []); -angular.module('copayApp.directives', []); -angular.module('copayApp.addons', []); diff --git a/src/js/controllers/activity.js b/src/js/controllers/activity.js deleted file mode 100644 index 9ea9a31e9..000000000 --- a/src/js/controllers/activity.js +++ /dev/null @@ -1,52 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('activityController', - function($timeout, $scope, $log, $ionicModal, lodash, txpModalService, profileService, walletService, ongoingProcess, popupService, gettextCatalog, $state) { - $scope.openTxpModal = txpModalService.open; - $scope.fetchingNotifications = true; - - $scope.$on("$ionicView.enter", function(event, data) { - profileService.getNotifications(50, function(err, n) { - if (err) { - $log.error(err); - return; - } - $scope.fetchingNotifications = false; - $scope.notifications = n; - - profileService.getTxps({}, function(err, txps, n) { - if (err) $log.error(err); - $scope.txps = txps; - $timeout(function() { - $scope.$apply(); - }); - }); - }); - }); - - $scope.openNotificationModal = function(n) { - if (n.txid) { - $state.transitionTo('tabs.wallet.tx-details', { - txid: n.txid, - walletId: n.walletId - }); - } else { - var txp = lodash.find($scope.txps, { - id: n.txpId - }); - if (txp) txpModalService.open(txp); - else { - ongoingProcess.set('loadingTxInfo', true); - walletService.getTxp(n.wallet, n.txpId, function(err, txp) { - var _txp = txp; - ongoingProcess.set('loadingTxInfo', false); - if (err) { - $log.warn('No txp found'); - return popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Transaction not found')); - } - txpModalService.open(_txp); - }); - } - } - }; - }); diff --git a/src/js/controllers/addressbook.js b/src/js/controllers/addressbook.js deleted file mode 100644 index 657ef1671..000000000 --- a/src/js/controllers/addressbook.js +++ /dev/null @@ -1,56 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('addressbookListController', function($scope, $log, $timeout, addressbookService, lodash, popupService, gettextCatalog, platformInfo) { - - var contacts; - - var initAddressbook = function() { - addressbookService.list(function(err, ab) { - if (err) $log.error(err); - - $scope.isEmptyList = lodash.isEmpty(ab); - - if (!$scope.isEmptyList) $scope.showAddIcon = true; - else $scope.showAddIcon = false; - - contacts = []; - lodash.each(ab, function(v, k) { - contacts.push({ - name: lodash.isObject(v) ? v.name : v, - address: k, - email: lodash.isObject(v) ? v.email : null - }); - }); - - $scope.addressbook = lodash.clone(contacts); - $timeout(function() { - $scope.$apply(); - }); - }); - }; - - $scope.findAddressbook = function(search) { - if (!search || search.length < 2) { - $scope.addressbook = contacts; - $timeout(function() { - $scope.$apply(); - }, 10); - return; - } - - var result = lodash.filter(contacts, function(item) { - var val = item.name; - return lodash.includes(val.toLowerCase(), search.toLowerCase()); - }); - - $scope.addressbook = result; - }; - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - $scope.isChromeApp = platformInfo.isChromeApp; - $scope.showAddIcon = false; - $scope.addrSearch = { value: null }; - initAddressbook(); - }); - -}); diff --git a/src/js/controllers/addressbookAdd.js b/src/js/controllers/addressbookAdd.js deleted file mode 100644 index 7cd72b2f7..000000000 --- a/src/js/controllers/addressbookAdd.js +++ /dev/null @@ -1,44 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('addressbookAddController', function($scope, $state, $stateParams, $timeout, $ionicHistory, gettextCatalog, addressbookService, popupService) { - - $scope.fromSendTab = $stateParams.fromSendTab; - - $scope.addressbookEntry = { - 'address': $stateParams.addressbookEntry || '', - 'name': '', - 'email': '' - }; - - $scope.onQrCodeScannedAddressBook = function(data, addressbookForm) { - $timeout(function() { - var form = addressbookForm; - if (data && form) { - data = data.replace('bitcoin:', ''); - form.address.$setViewValue(data); - form.address.$isValid = true; - form.address.$render(); - } - $scope.$digest(); - }, 100); - }; - - $scope.add = function(addressbook) { - $timeout(function() { - addressbookService.add(addressbook, function(err, ab) { - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err); - return; - } - if ($scope.fromSendTab) $scope.goHome(); - else $ionicHistory.goBack(); - }); - }, 100); - }; - - $scope.goHome = function() { - $ionicHistory.removeBackView(); - $state.go('tabs.home'); - }; - -}); diff --git a/src/js/controllers/addressbookView.js b/src/js/controllers/addressbookView.js deleted file mode 100644 index 05007dfe9..000000000 --- a/src/js/controllers/addressbookView.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('addressbookViewController', function($scope, $state, $timeout, $stateParams, lodash, addressbookService, popupService, $ionicHistory, platformInfo, gettextCatalog) { - $scope.isChromeApp = platformInfo.isChromeApp; - $scope.addressbookEntry = {}; - $scope.addressbookEntry.name = $stateParams.name; - $scope.addressbookEntry.email = $stateParams.email; - $scope.addressbookEntry.address = $stateParams.address; - - $scope.sendTo = function() { - $ionicHistory.removeBackView(); - $state.go('tabs.send'); - $timeout(function() { - $state.transitionTo('tabs.send.amount', { - toAddress: $scope.addressbookEntry.address, - toName: $scope.addressbookEntry.name, - toEmail: $scope.addressbookEntry.email - }); - }, 100); - }; - - $scope.remove = function(addr) { - var title = gettextCatalog.getString('Warning!'); - var message = gettextCatalog.getString('Are you sure you want to delete this contact?'); - popupService.showConfirm(title, message, null, null, function(res) { - if (!res) return; - addressbookService.remove(addr, function(err, ab) { - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err); - return; - } - $ionicHistory.goBack(); - }); - }); - }; - -}); diff --git a/src/js/controllers/addresses.js b/src/js/controllers/addresses.js deleted file mode 100644 index 47ec668ce..000000000 --- a/src/js/controllers/addresses.js +++ /dev/null @@ -1,230 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('addressesController', function($scope, $log, $stateParams, $state, $timeout, $ionicHistory, $ionicScrollDelegate, configService, popupService, gettextCatalog, ongoingProcess, lodash, profileService, walletService, bwcError, platformInfo, appConfigService, txFormatService, feeService) { - var UNUSED_ADDRESS_LIMIT = 5; - var BALANCE_ADDRESS_LIMIT = 5; - var config = configService.getSync().wallet.settings; - var unitName = config.unitName; - var unitToSatoshi = config.unitToSatoshi; - var satToUnit = 1 / unitToSatoshi; - var unitDecimals = config.unitDecimals; - var withBalance, cachedWallet; - - $scope.isCordova = platformInfo.isCordova; - $scope.wallet = profileService.getWallet($stateParams.walletId); - - function resetValues() { - $scope.loading = false; - $scope.showInfo = false; - $scope.showMore = false; - $scope.allAddressesView = false; - $scope.latestUnused = $scope.latestWithBalance = null; - $scope.viewAll = { - value: false - }; - }; - - $scope.init = function() { - resetValues(); - $scope.loading = true; - - walletService.getMainAddresses($scope.wallet, {}, function(err, addresses) { - if (err) { - $scope.loading = false; - return popupService.showAlert(bwcError.msg(err, gettextCatalog.getString('Could not update wallet'))); - } - - var allAddresses = addresses; - - walletService.getBalance($scope.wallet, {}, function(err, resp) { - if (err) { - $scope.loading = false; - return popupService.showAlert(bwcError.msg(err, gettextCatalog.getString('Could not update wallet'))); - } - - withBalance = resp.byAddress; - var idx = lodash.indexBy(withBalance, 'address'); - $scope.noBalance = lodash.reject(allAddresses, function(x) { - return idx[x.address]; - }); - - processPaths($scope.noBalance); - processPaths(withBalance); - - $scope.latestUnused = lodash.slice($scope.noBalance, 0, UNUSED_ADDRESS_LIMIT); - $scope.latestWithBalance = lodash.slice(withBalance, 0, BALANCE_ADDRESS_LIMIT); - - lodash.each(withBalance, function(a) { - a.balanceStr = txFormatService.formatAmount(a.amount); - }); - - $scope.viewAll = { - value: $scope.noBalance.length > UNUSED_ADDRESS_LIMIT || withBalance.length > BALANCE_ADDRESS_LIMIT - }; - $scope.allAddresses = $scope.noBalance.concat(withBalance); - - cachedWallet = $scope.wallet.id; - $scope.loading = false; - $log.debug('Addresses cached for Wallet:', cachedWallet); - $timeout(function() { - $ionicScrollDelegate.resize(); - $scope.$digest(); - }); - }); - }); - - - - feeService.getFeeLevels(function(err, levels){ - walletService.getLowUtxos($scope.wallet, levels, function(err, resp) { - if (err) return; - - if (resp.allUtxos && resp.allUtxos.length) { - - - var allSum = lodash.sum(resp.allUtxos || 0, 'satoshis'); - var per = (resp.minFee / allSum) * 100; - - $scope.lowWarning = resp.warning; - $scope.lowUtxosNb = resp.lowUtxos.length; - $scope.allUtxosNb = resp.allUtxos.length; - $scope.lowUtxosSum = txFormatService.formatAmountStr(lodash.sum(resp.lowUtxos || 0, 'satoshis')); - $scope.allUtxosSum = txFormatService.formatAmountStr(allSum); - $scope.minFee = txFormatService.formatAmountStr(resp.minFee || 0); - $scope.minFeePer = per.toFixed(2) + '%'; - - - } - }); - }); - }; - - function processPaths(list) { - lodash.each(list, function(n) { - n.path = n.path.replace(/^m/g, 'xpub'); - }); - }; - - $scope.newAddress = function() { - if ($scope.gapReached) return; - - ongoingProcess.set('generatingNewAddress', true); - walletService.getAddress($scope.wallet, true, function(err, addr) { - if (err) { - ongoingProcess.set('generatingNewAddress', false); - if (err.toString().match('MAIN_ADDRESS_GAP_REACHED')) { - $scope.gapReached = true; - } else { - popupService.showAlert(err); - } - $timeout(function() { - $scope.$digest(); - }); - return; - } - - walletService.getMainAddresses($scope.wallet, { - limit: 1 - }, function(err, _addr) { - ongoingProcess.set('generatingNewAddress', false); - if (err) return popupService.showAlert(gettextCatalog.getString('Error'), err); - if (addr != _addr[0].address) return popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('New address could not be generated. Please try again.')); - - $scope.noBalance = [_addr[0]].concat($scope.noBalance); - $scope.latestUnused = lodash.slice($scope.noBalance, 0, UNUSED_ADDRESS_LIMIT); - $scope.viewAll = { - value: $scope.noBalance.length > UNUSED_ADDRESS_LIMIT - }; - $scope.$digest(); - }); - }); - }; - - $scope.viewAllAddresses = function() { - var fromView = $ionicHistory.currentStateName(); - var path; - if (fromView.indexOf('settings') !== -1) { - path = 'tabs.settings.allAddresses'; - } else { - path = 'tabs.wallet.allAddresses'; - } - $state.go(path, { - walletId: $scope.wallet.id - }); - }; - - $scope.showInformation = function() { - $timeout(function() { - $scope.showInfo = !$scope.showInfo; - $ionicScrollDelegate.resize(); - }, 10); - }; - - $scope.readMore = function() { - $timeout(function() { - $scope.showMore = !$scope.showMore; - $ionicScrollDelegate.resize(); - }, 10); - }; - - $scope.scan = function() { - walletService.startScan($scope.wallet); - $ionicHistory.nextViewOptions({ - disableAnimate: true, - historyRoot: true - }); - $ionicHistory.clearHistory(); - $state.go('tabs.home').then(function() { - $state.transitionTo('tabs.wallet', { - walletId: $scope.wallet.credentials.walletId - }); - }); - }; - - $scope.sendByEmail = function() { - function formatDate(ts) { - var dateObj = new Date(ts * 1000); - if (!dateObj) { - $log.debug('Error formating a date'); - return 'DateError'; - } - if (!dateObj.toJSON()) { - return ''; - } - return dateObj.toJSON(); - }; - - ongoingProcess.set('sendingByEmail', true); - $timeout(function() { - var appName = appConfigService.nameCase; - var body = appName + ' Wallet "' + $scope.wallet.name + '" Addresses\n Only Main Addresses are shown.\n\n'; - body += "\n"; - body += $scope.allAddresses.map(function(v) { - return ('* ' + v.address + ' xpub' + v.path.substring(1) + ' ' + formatDate(v.createdOn)); - }).join("\n"); - ongoingProcess.set('sendingByEmail', false); - - window.plugins.socialsharing.shareViaEmail( - body, - appName + ' Addresses', - null, // TO: must be null or an array - null, // CC: must be null or an array - null, // BCC: must be null or an array - null, // FILES: can be null, a string, or an array - function() {}, - function() {} - ); - }); - }; - - function isCachedWallet(walletId) { - if (cachedWallet && cachedWallet == walletId) return true; - else return false; - }; - - $scope.$on("$ionicView.afterEnter", function(event, data) { - $scope.allAddressesView = data.stateName == 'tabs.receive.allAddresses' ? true : false; - if (!isCachedWallet($stateParams.walletId)) $scope.init(); - else $log.debug('Addresses cached for Wallet:', $stateParams.walletId); - }); -}); diff --git a/src/js/controllers/advancedSettings.js b/src/js/controllers/advancedSettings.js deleted file mode 100644 index cd065200c..000000000 --- a/src/js/controllers/advancedSettings.js +++ /dev/null @@ -1,57 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('advancedSettingsController', function($scope, $log, configService, platformInfo) { - - var updateConfig = function() { - var config = configService.getSync(); - - $scope.spendUnconfirmed = { - value: config.wallet.spendUnconfirmed - }; - $scope.recentTransactionsEnabled = { - value: config.recentTransactions.enabled - }; - $scope.hideNextSteps = { - value: config.hideNextSteps.enabled - }; - }; - - $scope.spendUnconfirmedChange = function() { - var opts = { - wallet: { - spendUnconfirmed: $scope.spendUnconfirmed.value - } - }; - configService.set(opts, function(err) { - if (err) $log.debug(err); - }); - }; - - $scope.nextStepsChange = function() { - var opts = { - hideNextSteps: { - enabled: $scope.hideNextSteps.value - }, - }; - configService.set(opts, function(err) { - if (err) $log.debug(err); - }); - }; - - $scope.recentTransactionsChange = function() { - var opts = { - recentTransactions: { - enabled: $scope.recentTransactionsEnabled.value - } - }; - configService.set(opts, function(err) { - if (err) $log.debug(err); - }); - }; - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - $scope.isWindowsPhoneApp = platformInfo.isCordova && platformInfo.isWP; - updateConfig(); - }); - -}); diff --git a/src/js/controllers/amazon.js b/src/js/controllers/amazon.js deleted file mode 100644 index 2707a25e3..000000000 --- a/src/js/controllers/amazon.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('amazonController', - function($scope, $timeout, $ionicModal, $log, $state, $ionicHistory, lodash, amazonService, externalLinkService, popupService) { - - $scope.openExternalLink = function(url) { - externalLinkService.open(url); - }; - - var initAmazon = function() { - amazonService.getPendingGiftCards(function(err, gcds) { - if (err) $log.error(err); - $scope.giftCards = gcds; - $timeout(function() { - $scope.$digest(); - }); - }); - }; - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - $scope.network = amazonService.getNetwork(); - initAmazon(); - }); - }); diff --git a/src/js/controllers/amazonCards.js b/src/js/controllers/amazonCards.js deleted file mode 100644 index 42bef3fd7..000000000 --- a/src/js/controllers/amazonCards.js +++ /dev/null @@ -1,106 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('amazonCardsController', - function($scope, $timeout, $ionicModal, $log, $ionicScrollDelegate, lodash, amazonService, platformInfo, externalLinkService, popupService, ongoingProcess) { - - $scope.openExternalLink = function(url) { - externalLinkService.open(url); - }; - - var updateGiftCards = function(cb) { - amazonService.getPendingGiftCards(function(err, gcds) { - if (err) { - popupService.showAlert('Could not get gift cards', err); - if (cb) return cb(); - else return; - } - $scope.giftCards = gcds; - $timeout(function() { - $scope.$digest(); - $ionicScrollDelegate.resize(); - if (cb) return cb(); - }, 100); - }); - }; - - $scope.updatePendingGiftCards = lodash.debounce(function() { - $scope.updatingPending = {}; - updateGiftCards(function() { - var index = 0; - var gcds = $scope.giftCards; - lodash.forEach(gcds, function(dataFromStorage) { - if (dataFromStorage.status == 'PENDING' || dataFromStorage.status == 'invalid') { - $log.debug("Creating / Updating gift card"); - $scope.updatingPending[dataFromStorage.invoiceId] = true; - - amazonService.createGiftCard(dataFromStorage, function(err, giftCard) { - - $scope.updatingPending[dataFromStorage.invoiceId] = false; - if (err) { - popupService.showAlert('Error creating gift card', err); - return; - } - - if (giftCard.status != 'PENDING') { - var newData = {}; - - lodash.merge(newData, dataFromStorage, giftCard); - - if (newData.status == 'expired') { - amazonService.savePendingGiftCard(newData, { - remove: true - }, function(err) { - updateGiftCards(); - }); - return; - } - - amazonService.savePendingGiftCard(newData, null, function(err) { - $log.debug("Saving new gift card"); - updateGiftCards(); - }); - } - }); - } - }); - }); - - }, 1000, { - 'leading': true - }); - - $scope.openCardModal = function(card) { - $scope.card = card; - - $ionicModal.fromTemplateUrl('views/modals/amazon-card-details.html', { - scope: $scope - }).then(function(modal) { - $scope.amazonCardDetailsModal = modal; - $scope.amazonCardDetailsModal.show(); - }); - - $scope.$on('modal.hidden', function() { - $scope.updatePendingGiftCards(); - }); - }; - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - $scope.invoiceId = data.stateParams.invoiceId; - updateGiftCards(function() { - if ($scope.invoiceId) { - var card = lodash.find($scope.giftCards, { - invoiceId: $scope.invoiceId - }); - if (lodash.isEmpty(card)) { - popupService.showAlert(null, 'Card not found'); - return; - } - $scope.openCardModal(card); - } - }); - }); - - $scope.$on("$ionicView.afterEnter", function(event, data) { - $scope.updatePendingGiftCards(); - }); - }); diff --git a/src/js/controllers/amount.js b/src/js/controllers/amount.js deleted file mode 100644 index 99912b99f..000000000 --- a/src/js/controllers/amount.js +++ /dev/null @@ -1,247 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('amountController', function($scope, $filter, $timeout, $ionicScrollDelegate, $ionicHistory, gettextCatalog, platformInfo, lodash, configService, rateService, $stateParams, $window, $state, $log, txFormatService, ongoingProcess, popupService, bwcError, payproService, profileService, bitcore, amazonService, nodeWebkitService) { - var _id; - var unitToSatoshi; - var satToUnit; - var unitDecimals; - var satToBtc; - var SMALL_FONT_SIZE_LIMIT = 10; - var LENGTH_EXPRESSION_LIMIT = 19; - var isNW = platformInfo.isNW; - $scope.isChromeApp = platformInfo.isChromeApp; - - $scope.$on('$ionicView.leave', function() { - angular.element($window).off('keydown'); - }); - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - // Go to... - _id = data.stateParams.id; // Optional (BitPay Card ID or Wallet ID) - $scope.nextStep = data.stateParams.nextStep; - $scope.currency = data.stateParams.currency; - $scope.forceCurrency = data.stateParams.forceCurrency; - - $scope.showMenu = $ionicHistory.backView() && ($ionicHistory.backView().stateName == 'tabs.send' || - $ionicHistory.backView().stateName == 'tabs.bitpayCard'); - $scope.recipientType = data.stateParams.recipientType || null; - $scope.toAddress = data.stateParams.toAddress; - $scope.toName = data.stateParams.toName; - $scope.toEmail = data.stateParams.toEmail; - $scope.showAlternativeAmount = !!$scope.nextStep; - $scope.toColor = data.stateParams.toColor; - $scope.showSendMax = false; - - if (!$scope.nextStep && !data.stateParams.toAddress) { - $log.error('Bad params at amount') - throw ('bad params'); - } - - var reNr = /^[1234567890\.]$/; - var reOp = /^[\*\+\-\/]$/; - - var disableKeys = angular.element($window).on('keydown', function(e) { - if (!e.key) return; - if (e.which === 8) { // you can add others here inside brackets. - e.preventDefault(); - $scope.removeDigit(); - } - - if (e.key.match(reNr)) { - $scope.pushDigit(e.key); - } else if (e.key.match(reOp)) { - $scope.pushOperator(e.key); - } else if (e.keyCode === 86) { - if (e.ctrlKey || e.metaKey) - processClipboard(); - } else if (e.keyCode === 13) - $scope.finish(); - - $timeout(function() { - $scope.$apply(); - }); - }); - - var config = configService.getSync().wallet.settings; - $scope.unitName = config.unitName; - if (data.stateParams.currency) { - $scope.alternativeIsoCode = data.stateParams.currency; - } else { - $scope.alternativeIsoCode = config.alternativeIsoCode || 'USD'; - } - $scope.specificAmount = $scope.specificAlternativeAmount = ''; - $scope.isCordova = platformInfo.isCordova; - unitToSatoshi = config.unitToSatoshi; - satToUnit = 1 / unitToSatoshi; - satToBtc = 1 / 100000000; - unitDecimals = config.unitDecimals; - - $scope.resetAmount(); - - // in SAT ALWAYS - if ($stateParams.toAmount) { - $scope.amount = (($stateParams.toAmount) * satToUnit).toFixed(unitDecimals); - } - - processAmount(); - - $timeout(function() { - $ionicScrollDelegate.resize(); - }, 10); - }); - - function paste(value) { - $scope.amount = value; - processAmount(); - $timeout(function() { - $scope.$apply(); - }); - }; - - function processClipboard() { - if (!isNW) return; - var value = nodeWebkitService.readFromClipboard(); - if (value && evaluate(value) > 0) paste(evaluate(value)); - }; - - $scope.showSendMaxMenu = function() { - $scope.showSendMax = true; - }; - - $scope.sendMax = function() { - $scope.showSendMax = false; - $scope.useSendMax = true; - $scope.finish(); - }; - - $scope.toggleAlternative = function() { - if ($scope.forceCurrency) return; - $scope.showAlternativeAmount = !$scope.showAlternativeAmount; - - if ($scope.amount && isExpression($scope.amount)) { - var amount = evaluate(format($scope.amount)); - $scope.globalResult = '= ' + processResult(amount); - } - }; - - function checkFontSize() { - if ($scope.amount && $scope.amount.length >= SMALL_FONT_SIZE_LIMIT) $scope.smallFont = true; - else $scope.smallFont = false; - }; - - $scope.pushDigit = function(digit) { - if ($scope.amount && $scope.amount.length >= LENGTH_EXPRESSION_LIMIT) return; - if ($scope.amount.indexOf('.') > -1 && digit == '.') return; - if ($scope.showAlternativeAmount && $scope.amount.indexOf('.') > -1 && $scope.amount[$scope.amount.indexOf('.') + 2]) return; - - $scope.amount = ($scope.amount + digit).replace('..', '.'); - checkFontSize(); - processAmount(); - }; - - $scope.pushOperator = function(operator) { - if (!$scope.amount || $scope.amount.length == 0) return; - $scope.amount = _pushOperator($scope.amount); - - function _pushOperator(val) { - if (!isOperator(lodash.last(val))) { - return val + operator; - } else { - return val.slice(0, -1) + operator; - } - }; - }; - - function isOperator(val) { - var regex = /[\/\-\+\x\*]/; - return regex.test(val); - }; - - function isExpression(val) { - var regex = /^\.?\d+(\.?\d+)?([\/\-\+\*x]\d?\.?\d+)+$/; - return regex.test(val); - }; - - $scope.removeDigit = function() { - $scope.amount = ($scope.amount).toString().slice(0, -1); - processAmount(); - checkFontSize(); - }; - - $scope.resetAmount = function() { - $scope.amount = $scope.alternativeResult = $scope.amountResult = $scope.globalResult = ''; - $scope.allowSend = false; - checkFontSize(); - }; - - function processAmount() { - var formatedValue = format($scope.amount); - var result = evaluate(formatedValue); - $scope.allowSend = lodash.isNumber(result) && +result > 0; - if (lodash.isNumber(result)) { - $scope.globalResult = isExpression($scope.amount) ? '= ' + processResult(result) : ''; - $scope.amountResult = $filter('formatFiatAmount')(toFiat(result)); - $scope.alternativeResult = txFormatService.formatAmount(fromFiat(result) * unitToSatoshi, true); - } - }; - - function processResult(val) { - if ($scope.showAlternativeAmount) - return $filter('formatFiatAmount')(val); - else - return txFormatService.formatAmount(val.toFixed(unitDecimals) * unitToSatoshi, true); - }; - - function fromFiat(val) { - return parseFloat((rateService.fromFiat(val, $scope.alternativeIsoCode) * satToUnit).toFixed(unitDecimals)); - }; - - function toFiat(val) { - return parseFloat((rateService.toFiat(val * unitToSatoshi, $scope.alternativeIsoCode)).toFixed(2)); - }; - - function evaluate(val) { - var result; - try { - result = $scope.$eval(val); - } catch (e) { - return 0; - } - if (!lodash.isFinite(result)) return 0; - return result; - }; - - function format(val) { - var result = val.toString(); - - if (isOperator(lodash.last(val))) - result = result.slice(0, -1); - - return result.replace('x', '*'); - }; - - $scope.finish = function() { - var _amount = evaluate(format($scope.amount)); - - if ($scope.nextStep) { - $state.transitionTo($scope.nextStep, { - id: _id, - amount: $scope.useSendMax ? null : _amount, - currency: $scope.showAlternativeAmount ? $scope.alternativeIsoCode : $scope.unitName, - useSendMax: $scope.useSendMax - }); - } else { - var amount = $scope.showAlternativeAmount ? fromFiat(_amount) : _amount; - $state.transitionTo('tabs.send.confirm', { - recipientType: $scope.recipientType, - toAmount: $scope.useSendMax ? null : (amount * unitToSatoshi).toFixed(0), - toAddress: $scope.toAddress, - toName: $scope.toName, - toEmail: $scope.toEmail, - toColor: $scope.toColor, - useSendMax: $scope.useSendMax - }); - } - $scope.useSendMax = null; - }; -}); diff --git a/src/js/controllers/backController.js b/src/js/controllers/backController.js deleted file mode 100644 index 510354649..000000000 --- a/src/js/controllers/backController.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('backController', function($scope, $state, $stateParams) { - - $scope.importGoBack = function() { - if ($stateParams.fromOnboarding) $state.go('onboarding.welcome'); - else $state.go('tabs.add'); - }; - - $scope.onboardingMailSkip = function() { - $state.go('onboarding.backupRequest'); - } - -}); diff --git a/src/js/controllers/backup.js b/src/js/controllers/backup.js deleted file mode 100644 index 437d8f66e..000000000 --- a/src/js/controllers/backup.js +++ /dev/null @@ -1,216 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('backupController', - function($scope, $timeout, $log, $state, $stateParams, $ionicHistory, lodash, profileService, bwcService, walletService, ongoingProcess, popupService, gettextCatalog, $ionicModal) { - $scope.wallet = profileService.getWallet($stateParams.walletId); - $scope.viewTitle = $scope.wallet.name || $scope.wallet.credentials.walletName; - $scope.n = $scope.wallet.n; - var keys; - - $scope.credentialsEncrypted = $scope.wallet.isPrivKeyEncrypted(); - - var isDeletedSeed = function() { - if (!$scope.wallet.credentials.mnemonic && !$scope.wallet.credentials.mnemonicEncrypted) - return true; - - return false; - }; - - var shuffledWords = function(words) { - var sort = lodash.sortBy(words); - - return lodash.map(sort, function(w) { - return { - word: w, - selected: false - }; - }); - }; - - $scope.setFlow = function(step) { - if (!keys) return; - - var words = keys.mnemonic; - $scope.data = {}; - - $scope.mnemonicWords = words.split(/[\u3000\s]+/); - $scope.shuffledMnemonicWords = shuffledWords($scope.mnemonicWords); - $scope.mnemonicHasPassphrase = $scope.wallet.mnemonicHasPassphrase(); - $scope.useIdeograms = words.indexOf("\u3000") >= 0; - $scope.data.passphrase = null; - $scope.customWords = []; - $scope.step = step || 1; - $scope.selectComplete = false; - $scope.backupError = false; - - words = lodash.repeat('x', 300); - $timeout(function() { - $scope.$apply(); - }, 10); - }; - - var backupError = function(err) { - ongoingProcess.set('validatingWords', false); - $log.debug('Failed to verify backup: ', err); - $scope.backupError = true; - - $timeout(function() { - $scope.$apply(); - }, 1); - }; - - function openConfirmBackupModal() { - $ionicModal.fromTemplateUrl('views/includes/confirmBackupPopup.html', { - scope: $scope, - backdropClickToClose: false, - hardwareBackButtonClose: false - }).then(function(modal) { - $scope.confirmBackupModal = modal; - $scope.confirmBackupModal.show(); - }); - }; - - var showBackupResult = function() { - if ($scope.backupError) { - var title = gettextCatalog.getString('Uh oh...'); - var message = gettextCatalog.getString("It's important that you write your backup phrase down correctly. If something happens to your wallet, you'll need this backup to recover your money. Please review your backup and try again."); - popupService.showAlert(title, message, function() { - $scope.setFlow(2); - }) - } else { - openConfirmBackupModal(); - } - }; - - $scope.closeBackupResultModal = function() { - $scope.confirmBackupModal.hide(); - $scope.confirmBackupModal.remove(); - - profileService.isDisclaimerAccepted(function(val) { - if (val) { - $ionicHistory.removeBackView(); - $state.go('tabs.home'); - } else $state.go('onboarding.disclaimer', { - walletId: $stateParams.walletId, - backedUp: true - }); - }); - }; - - $scope.copyRecoveryPhrase = function() { - if ($scope.wallet.network == 'livenet') return null; - else if (!$scope.wallet.credentials.mnemonic) return null; - else return $scope.wallet.credentials.mnemonic; - }; - - var confirm = function(cb) { - $scope.backupError = false; - - var customWordList = lodash.pluck($scope.customWords, 'word'); - - if (!lodash.isEqual($scope.mnemonicWords, customWordList)) { - return cb('Mnemonic string mismatch'); - } - - $timeout(function() { - if ($scope.mnemonicHasPassphrase) { - var walletClient = bwcService.getClient(); - var separator = $scope.useIdeograms ? '\u3000' : ' '; - var customSentence = customWordList.join(separator); - var passphrase = $scope.data.passphrase || ''; - - try { - walletClient.seedFromMnemonic(customSentence, { - network: $scope.wallet.credentials.network, - passphrase: passphrase, - account: $scope.wallet.credentials.account - }); - } catch (err) { - walletClient.credentials.xPrivKey = lodash.repeat('x', 64); - return cb(err); - } - - if (walletClient.credentials.xPrivKey.substr(walletClient.credentials.xPrivKey) != keys.xPrivKey) { - delete walletClient.credentials; - return cb('Private key mismatch'); - } - } - - profileService.setBackupFlag($scope.wallet.credentials.walletId); - return cb(); - }, 1); - }; - - var finalStep = function() { - ongoingProcess.set('validatingWords', true); - confirm(function(err) { - ongoingProcess.set('validatingWords', false); - if (err) { - backupError(err); - } - $timeout(function() { - showBackupResult(); - return; - }, 1); - }); - }; - - $scope.goToStep = function(n) { - if (n == 1) - $scope.setFlow(); - if (n == 2) - $scope.step = 2; - if (n == 3) { - if (!$scope.mnemonicHasPassphrase) - finalStep(); - else - $scope.step = 3; - } - if (n == 4) - finalStep(); - }; - - $scope.addButton = function(index, item) { - var newWord = { - word: item.word, - prevIndex: index - }; - $scope.customWords.push(newWord); - $scope.shuffledMnemonicWords[index].selected = true; - $scope.shouldContinue(); - }; - - $scope.removeButton = function(index, item) { - if ($scope.loading) return; - $scope.customWords.splice(index, 1); - $scope.shuffledMnemonicWords[item.prevIndex].selected = false; - $scope.shouldContinue(); - }; - - $scope.shouldContinue = function() { - if ($scope.customWords.length == $scope.shuffledMnemonicWords.length) - $scope.selectComplete = true; - else - $scope.selectComplete = false; - }; - - $scope.$on("$ionicView.enter", function(event, data) { - $scope.deleted = isDeletedSeed(); - if ($scope.deleted) { - $log.debug('no mnemonics'); - return; - } - - walletService.getKeys($scope.wallet, function(err, k) { - if (err || !k) { - $log.error('Could not get keys: ', err); - $ionicHistory.goBack(); - return; - } - $scope.credentialsEncrypted = false; - keys = k; - $scope.setFlow(); - }); - }); - - }); diff --git a/src/js/controllers/bitpayCard.js b/src/js/controllers/bitpayCard.js deleted file mode 100644 index 55e2b14aa..000000000 --- a/src/js/controllers/bitpayCard.js +++ /dev/null @@ -1,154 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('bitpayCardController', function($scope, $timeout, $log, $state, lodash, bitpayCardService, moment, popupService, gettextCatalog, $ionicHistory, bitpayService, externalLinkService, timeService) { - - var self = this; - $scope.dateRange = { - value: 'last30Days' - }; - $scope.network = bitpayService.getEnvironment().network; - - var setDateRange = function(preset) { - var startDate, endDate; - preset = preset ||  'last30Days'; - switch (preset) { - case 'last30Days': - startDate = moment().subtract(30, 'days').toISOString(); - endDate = moment().toISOString(); - break; - case 'lastMonth': - startDate = moment().startOf('month').subtract(1, 'month').toISOString(); - endDate = moment().startOf('month').toISOString(); - break; - case 'all': - startDate = null; - endDate = null; - break; - default: - return; - } - return { - startDate: startDate, - endDate: endDate - }; - }; - - var setGetStarted = function(history, cb) { - - // Is the card new? - if (!lodash.isEmpty(history.transactionList)) - return cb(); - - var dateRange = setDateRange('all'); - bitpayCardService.getHistory($scope.cardId, dateRange, function(err, history) { - - if (!err && lodash.isEmpty(history.transactionList)) - self.getStarted = true; - - return cb(); - }); - }; - - this.update = function() { - var dateRange = setDateRange($scope.dateRange.value); - - $scope.loadingHistory = true; - bitpayCardService.getHistory($scope.cardId, dateRange, function(err, history) { - - $scope.loadingHistory = false; - - if (err) { - $log.error(err); - self.bitpayCardTransactionHistoryCompleted = null; - self.bitpayCardTransactionHistoryConfirming = null; - self.bitpayCardTransactionHistoryPreAuth = null; - self.balance = null; - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Could not get transactions')); - return; - } - - setGetStarted(history, function() { - - var txs = lodash.clone(history.txs); - - self.bitpayCardTransactionHistoryConfirming = bitpayCardService.filterTransactions('confirming', txs); - self.bitpayCardTransactionHistoryCompleted = bitpayCardService.filterTransactions('completed', txs); - self.bitpayCardTransactionHistoryPreAuth = bitpayCardService.filterTransactions('preAuth', txs); - - self.balance = history.currentCardBalance; - self.updatedOn = null; - - if ($scope.dateRange.value == 'last30Days') { - - // TODO? - // $log.debug('BitPay Card: storing cache history'); - // var cacheHistory = { - // balance: history.currentCardBalance, - // transactions: history.txs - // }; - // bitpayCardService.setHistory($scope.cardId, cacheHistory, {}, function(err) { - // if (err) $log.error(err); - // $scope.historyCached = true; - // }); - } - $timeout(function() { - $scope.$apply(); - }); - }); - }); - }; - - $scope.createdWithinPastDay = function(tx) { - var result = false; - if (tx.date) { - result = timeService.withinPastDay(tx.date); - } - return result; - }; - - this.openExternalLink = function(url) { - var optIn = true; - var title = null; - var message = gettextCatalog.getString('Help and support information is available at the website.'); - var okText = gettextCatalog.getString('Open'); - var cancelText = gettextCatalog.getString('Go Back'); - externalLinkService.open(url, optIn, title, message, okText, cancelText); - }; - - this.viewOnBlockchain = function(transactionId) { - var url = 'https://insight.bitpay.com/tx/' + transactionId; - var optIn = true; - 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); - }; - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - $scope.cardId = data.stateParams.id; - - if (!$scope.cardId) { - $ionicHistory.nextViewOptions({ - disableAnimate: true - }); - $state.go('tabs.home'); - } - - - bitpayCardService.get({ - cardId: $scope.cardId, - noRefresh: true, - }, function(err, cards) { - - if (cards && cards[0]) { - self.lastFourDigits = cards[0].lastFourDigits; - self.balance = cards[0].balance; - self.currencySymbol = cards[0].currencySymbol; - self.updatedOn = cards[0].updatedOn; - self.currency = cards[0].currency; - } - self.update(); - }); - }); -}); diff --git a/src/js/controllers/bitpayCardIntro.js b/src/js/controllers/bitpayCardIntro.js deleted file mode 100644 index 66fad6a1c..000000000 --- a/src/js/controllers/bitpayCardIntro.js +++ /dev/null @@ -1,89 +0,0 @@ -'use strict'; -angular.module('copayApp.controllers').controller('bitpayCardIntroController', function($scope, $log, $state, $ionicHistory, storageService, externalLinkService, bitpayCardService, gettextCatalog, popupService, bitpayAccountService) { - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - if (data.stateParams && data.stateParams.secret) { - var pairData = { - secret: data.stateParams.secret, - email: data.stateParams.email, - otp: data.stateParams.otp - }; - var pairingReason = gettextCatalog.getString('add your BitPay Visa card(s)'); - bitpayAccountService.pair(pairData, pairingReason, function(err, paired, apiContext) { - if (err) { - popupService.showAlert(gettextCatalog.getString('Error pairing BitPay Account'), err); - return; - } - if (paired) { - bitpayCardService.sync(apiContext, function(err, cards) { - if (err) { - popupService.showAlert(gettextCatalog.getString('Error updating Debit Cards'), err); - return; - } - $ionicHistory.nextViewOptions({ - disableAnimate: true - }); - $state.go('tabs.home').then(function() { - if (cards[0]) { - $state.transitionTo('tabs.bitpayCard', { - id: cards[0].id - }); - } - }); - }); - } - }); - } - - bitpayAccountService.getAccounts(function(err, accounts) { - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err); - return; - } - $scope.accounts = accounts; - }); - }); - - $scope.bitPayCardInfo = function() { - var url = 'https://bitpay.com/visa/faq'; - externalLinkService.open(url); - }; - - $scope.orderBitPayCard = function() { - var url = 'https://bitpay.com/visa/get-started'; - externalLinkService.open(url); - }; - - $scope.connectBitPayCard = function() { - if ($scope.accounts.length == 0) { - startPairBitPayAccount(); - } else { - showAccountSelector(); - } - }; - - var startPairBitPayAccount = function() { - var url = 'https://bitpay.com/visa/dashboard/add-to-bitpay-wallet-confirm'; - externalLinkService.open(url); - }; - - var showAccountSelector = function() { - $scope.accountSelectorTitle = gettextCatalog.getString('From BitPay account'); - $scope.showAccounts = ($scope.accounts != undefined); - }; - - $scope.onAccountSelect = function(account) { - if (account == undefined) { - startPairBitPayAccount(); - } else { - bitpayCardService.sync(account.apiContext, function(err, data) { - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err); - return; - } - $state.go('tabs.home'); - }); - } - }; - -}); diff --git a/src/js/controllers/buyAmazon.js b/src/js/controllers/buyAmazon.js deleted file mode 100644 index 18d52e7d9..000000000 --- a/src/js/controllers/buyAmazon.js +++ /dev/null @@ -1,359 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('buyAmazonController', function($scope, $log, $state, $timeout, $filter, $ionicHistory, $ionicConfig, lodash, amazonService, popupService, profileService, ongoingProcess, configService, walletService, payproService, bwcError, externalLinkService, platformInfo, gettextCatalog, txFormatService) { - - var amount; - var currency; - var createdTx; - var message; - var invoiceId; - var configWallet = configService.getSync().wallet; - $scope.isCordova = platformInfo.isCordova; - - $scope.openExternalLink = function(url) { - externalLinkService.open(url); - }; - - var _resetValues = function() { - $scope.totalAmountStr = $scope.amount = $scope.invoiceFee = $scope.networkFee = $scope.totalAmount = $scope.wallet = null; - createdTx = message = invoiceId = null; - }; - - var showErrorAndBack = function(title, msg) { - title = title || gettextCatalog.getString('Error'); - $scope.sendStatus = ''; - $log.error(msg); - msg = (msg && msg.errors) ? msg.errors[0].message : msg; - popupService.showAlert(title, msg, function() { - $ionicHistory.goBack(); - }); - }; - - var showError = function(title, msg, cb) { - cb = cb || function() {}; - title = title || gettextCatalog.getString('Error'); - $scope.sendStatus = ''; - $log.error(msg); - msg = (msg && msg.errors) ? msg.errors[0].message : msg; - popupService.showAlert(title, msg, cb); - }; - - var publishAndSign = function(wallet, txp, onSendStatusChange, cb) { - if (!wallet.canSign() && !wallet.isPrivKeyExternal()) { - var err = gettextCatalog.getString('No signing proposal: No private key'); - $log.info(err); - return cb(err); - } - - walletService.publishAndSign(wallet, txp, function(err, txp) { - if (err) return cb(err); - return cb(null, txp); - }, onSendStatusChange); - }; - - var statusChangeHandler = function(processName, showName, isOn) { - $log.debug('statusChangeHandler: ', processName, showName, isOn); - if (processName == 'buyingGiftCard' && !isOn) { - $scope.sendStatus = 'success'; - $timeout(function() { - $scope.$digest(); - }, 100); - } else if (showName) { - $scope.sendStatus = showName; - } - }; - - var satToFiat = function(sat, cb) { - txFormatService.toFiat(sat, $scope.currencyIsoCode, function(value) { - return cb(value); - }); - }; - - var setTotalAmount = function(amountSat, invoiceFeeSat, networkFeeSat) { - satToFiat(amountSat, function(a) { - $scope.amount = Number(a); - - satToFiat(invoiceFeeSat, function(i) { - $scope.invoiceFee = Number(i); - - satToFiat(networkFeeSat, function(n) { - $scope.networkFee = Number(n); - $scope.totalAmount = $scope.amount + $scope.invoiceFee + $scope.networkFee; - $timeout(function() { - $scope.$digest(); - }); - }); - }); - }); - }; - - var createInvoice = function(data, cb) { - amazonService.createBitPayInvoice(data, function(err, dataInvoice) { - if (err) { - var err_title = gettextCatalog.getString('Error creating the invoice'); - var err_msg; - if (err && err.message && err.message.match(/suspended/i)) { - err_title = gettextCatalog.getString('Service not available'); - err_msg = gettextCatalog.getString('Amazon.com is not available at this moment. Please try back later.'); - } else if (err && err.message) { - err_msg = err.message; - } else { - err_msg = gettextCatalog.getString('Could not access to Amazon.com'); - }; - - return cb({ - title: err_title, - message: err_msg - }); - } - - var accessKey = dataInvoice ? dataInvoice.accessKey : null; - - if (!accessKey) { - return cb({ - message: gettextCatalog.getString('No access key defined') - }); - } - - amazonService.getBitPayInvoice(dataInvoice.invoiceId, function(err, invoice) { - if (err) { - return cb({ - message: gettextCatalog.getString('Could not get the invoice') - }); - } - - return cb(null, invoice, accessKey); - }); - }); - }; - - var createTx = function(wallet, invoice, message, cb) { - var payProUrl = (invoice && invoice.paymentUrls) ? invoice.paymentUrls.BIP73 : null; - - if (!payProUrl) { - return cb({ - title: gettextCatalog.getString('Error in Payment Protocol'), - message: gettextCatalog.getString('Invalid URL') - }); - } - - var outputs = []; - var toAddress = invoice.bitcoinAddress; - var amountSat = parseInt(invoice.btcDue * 100000000); // BTC to Satoshi - - outputs.push({ - 'toAddress': toAddress, - 'amount': amountSat, - 'message': message - }); - - var txp = { - toAddress: toAddress, - amount: amountSat, - outputs: outputs, - message: message, - payProUrl: payProUrl, - excludeUnconfirmedUtxos: configWallet.spendUnconfirmed ? false : true, - feeLevel: configWallet.settings.feeLevel || 'normal' - }; - - walletService.createTx(wallet, txp, function(err, ctxp) { - if (err) { - return cb({ - title: gettextCatalog.getString('Could not create transaction'), - message: bwcError.msg(err) - }); - } - return cb(null, ctxp); - }); - }; - - var checkTransaction = lodash.throttle(function(count, dataSrc) { - amazonService.createGiftCard(dataSrc, function(err, giftCard) { - $log.debug("creating gift card " + count); - if (err) { - ongoingProcess.set('buyingGiftCard', false, statusChangeHandler); - giftCard = {}; - giftCard.status = 'FAILURE'; - showError(gettextCatalog.getString('Error creating gift card'), err); - } - - if (giftCard.status == 'PENDING' && count < 3) { - $log.debug("Waiting for payment confirmation"); - checkTransaction(count + 1, dataSrc); - return; - } - - var now = moment().unix() * 1000; - - var newData = giftCard; - newData['invoiceId'] = dataSrc.invoiceId; - newData['accessKey'] = dataSrc.accessKey; - newData['invoiceUrl'] = dataSrc.invoiceUrl; - newData['amount'] = dataSrc.amount; - newData['date'] = dataSrc.invoiceTime || now; - newData['uuid'] = dataSrc.uuid; - - if (newData.status == 'expired') { - amazonService.savePendingGiftCard(newData, { - remove: true - }, function(err) { - $log.error(err); - ongoingProcess.set('buyingGiftCard', false, statusChangeHandler); - showError(null, gettextCatalog.getString('Gift card expired')); - }); - return; - } - - amazonService.savePendingGiftCard(newData, null, function(err) { - ongoingProcess.set('buyingGiftCard', false, statusChangeHandler); - $log.debug("Saving new gift card with status: " + newData.status); - $scope.amazonGiftCard = newData; - }); - }); - }, 8000, { - 'leading': true - }); - - var initialize = function(wallet) { - var parsedAmount = txFormatService.parseAmount(amount, currency); - $scope.currencyIsoCode = parsedAmount.alternativeIsoCode; - $scope.amountUnitStr = parsedAmount.amountUnitStr; - var dataSrc = { - amount: parsedAmount.amount, - currency: parsedAmount.currency, - uuid: wallet.id - }; - ongoingProcess.set('loadingTxInfo', true); - createInvoice(dataSrc, function(err, invoice, accessKey) { - if (err) { - ongoingProcess.set('loadingTxInfo', false); - showErrorAndBack(err.title, err.message); - return; - } - // Sometimes API does not return this element; - invoice['buyerPaidBtcMinerFee'] = invoice.buyerPaidBtcMinerFee || 0; - var invoiceFeeSat = (invoice.buyerPaidBtcMinerFee * 100000000).toFixed(); - - message = gettextCatalog.getString("{{amountStr}} for Amazon.com Gift Card", { - amountStr: $scope.amountUnitStr - }); - - createTx(wallet, invoice, message, function(err, ctxp) { - ongoingProcess.set('loadingTxInfo', false); - if (err) { - _resetValues(); - showError(err.title, err.message); - return; - } - - // Save in memory - createdTx = ctxp; - invoiceId = invoice.id; - - createdTx['giftData'] = { - currency: dataSrc.currency, - amount: dataSrc.amount, - uuid: dataSrc.uuid, - accessKey: accessKey, - invoiceId: invoice.id, - invoiceUrl: invoice.url, - invoiceTime: invoice.invoiceTime - }; - $scope.totalAmountStr = txFormatService.formatAmountStr(ctxp.amount); - setTotalAmount(parsedAmount.amountSat, invoiceFeeSat, ctxp.fee); - }); - }); - }; - - $scope.$on("$ionicView.beforeLeave", function(event, data) { - $ionicConfig.views.swipeBackEnabled(true); - }); - - $scope.$on("$ionicView.enter", function(event, data) { - $ionicConfig.views.swipeBackEnabled(false); - }); - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - amount = data.stateParams.amount; - currency = data.stateParams.currency; - - $scope.limitPerDayMessage = gettextCatalog.getString('Purchase Amount is limited to {{limitPerDay}} {{currency}} per day', { - limitPerDay: amazonService.limitPerDay, - currency: currency - }); - - if (amount > amazonService.limitPerDay) { - showErrorAndBack(null, $scope.limitPerDayMessage); - return; - } - - $scope.network = amazonService.getNetwork(); - $scope.wallets = profileService.getWallets({ - onlyComplete: true, - network: $scope.network, - hasFunds: true - }); - if (lodash.isEmpty($scope.wallets)) { - showErrorAndBack(null, gettextCatalog.getString('No wallets available')); - return; - } - $scope.onWalletSelect($scope.wallets[0]); // Default first wallet - }); - - $scope.buyConfirm = function() { - if (!createdTx) { - showError(null, gettextCatalog.getString('Transaction has not been created')); - return; - } - var title = gettextCatalog.getString('Confirm'); - var okText = gettextCatalog.getString('OK'); - var cancelText = gettextCatalog.getString('Cancel'); - popupService.showConfirm(title, message, okText, cancelText, function(ok) { - if (!ok) { - $scope.sendStatus = ''; - return; - } - - ongoingProcess.set('buyingGiftCard', true, statusChangeHandler); - publishAndSign($scope.wallet, createdTx, function() {}, function(err, txSent) { - if (err) { - _resetValues(); - ongoingProcess.set('buyingGiftCard', false, statusChangeHandler); - showError(gettextCatalog.getString('Could not send transaction'), err); - return; - } - checkTransaction(1, createdTx.giftData); - }); - }); - }; - - $scope.showWalletSelector = function() { - $scope.walletSelectorTitle = gettextCatalog.getString('Buy from'); - $scope.showWallets = true; - }; - - $scope.onWalletSelect = function(wallet) { - $scope.wallet = wallet; - initialize(wallet); - }; - - $scope.goBackHome = function() { - $scope.sendStatus = ''; - $ionicHistory.nextViewOptions({ - disableAnimate: true, - historyRoot: true - }); - $ionicHistory.clearHistory(); - $state.go('tabs.home').then(function() { - $ionicHistory.nextViewOptions({ - disableAnimate: true - }); - $state.transitionTo('tabs.giftcards.amazon').then(function() { - $state.transitionTo('tabs.giftcards.amazon.cards', { - invoiceId: invoiceId - }); - }); - }); - }; -}); diff --git a/src/js/controllers/buyAndSellCardController.js b/src/js/controllers/buyAndSellCardController.js deleted file mode 100644 index 1c33c8112..000000000 --- a/src/js/controllers/buyAndSellCardController.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('buyAndSellCardController', function($scope, nextStepsService, $ionicScrollDelegate, buyAndSellService) { - - $scope.services = buyAndSellService.getLinked(); - - $scope.toggle = function() { - $scope.hide = !$scope.hide; - $timeout(function() { - $ionicScrollDelegate.resize(); - $scope.$apply(); - }, 10); - }; -}); diff --git a/src/js/controllers/buyCoinbase.js b/src/js/controllers/buyCoinbase.js deleted file mode 100644 index 6066207ba..000000000 --- a/src/js/controllers/buyCoinbase.js +++ /dev/null @@ -1,254 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('buyCoinbaseController', function($scope, $log, $state, $timeout, $ionicHistory, $ionicScrollDelegate, $ionicConfig, lodash, coinbaseService, popupService, profileService, ongoingProcess, walletService, txFormatService) { - - var amount; - var currency; - - var showErrorAndBack = function(err) { - $scope.sendStatus = ''; - $log.error(err); - err = err.errors ? err.errors[0].message : err; - popupService.showAlert('Error', err, function() { - $ionicHistory.goBack(); - }); - }; - - var showError = function(err) { - $scope.sendStatus = ''; - $log.error(err); - err = err.errors ? err.errors[0].message : err; - popupService.showAlert('Error', err); - }; - - var statusChangeHandler = function (processName, showName, isOn) { - $log.debug('statusChangeHandler: ', processName, showName, isOn); - if ( processName == 'buyingBitcoin' && !isOn) { - $scope.sendStatus = 'success'; - $timeout(function() { - $scope.$digest(); - }, 100); - } else if (showName) { - $scope.sendStatus = showName; - } - }; - - $scope.$on("$ionicView.beforeLeave", function(event, data) { - $ionicConfig.views.swipeBackEnabled(true); - }); - - $scope.$on("$ionicView.enter", function(event, data) { - $ionicConfig.views.swipeBackEnabled(false); - }); - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - $scope.isFiat = data.stateParams.currency != 'bits' && data.stateParams.currency != 'BTC' ? true : false; - var parsedAmount = txFormatService.parseAmount( - data.stateParams.amount, - data.stateParams.currency); - - // Buy always in BTC - amount = (parsedAmount.amountSat / 100000000).toFixed(8); - currency = 'BTC'; - - $scope.amountUnitStr = parsedAmount.amountUnitStr; - - ongoingProcess.set('calculatingFee', true); - coinbaseService.checkEnoughFundsForFee(amount, function(err) { - ongoingProcess.set('calculatingFee', false); - if (err) { - showErrorAndBack(err); - return; - } - - $scope.network = coinbaseService.getNetwork(); - $scope.wallets = profileService.getWallets({ - onlyComplete: true, - network: $scope.network - }); - - if (lodash.isEmpty($scope.wallets)) { - showErrorAndBack('No wallets available'); - return; - } - $scope.wallet = $scope.wallets[0]; // Default first wallet - - ongoingProcess.set('connectingCoinbase', true); - coinbaseService.init(function(err, res) { - if (err) { - ongoingProcess.set('connectingCoinbase', false); - showErrorAndBack(err); - return; - } - var accessToken = res.accessToken; - - coinbaseService.buyPrice(accessToken, coinbaseService.getAvailableCurrency(), function(err, b) { - $scope.buyPrice = b.data || null; - }); - - $scope.paymentMethods = []; - $scope.selectedPaymentMethodId = { value : null }; - coinbaseService.getPaymentMethods(accessToken, function(err, p) { - if (err) { - ongoingProcess.set('connectingCoinbase', false); - showErrorAndBack(err); - return; - } - - var hasPrimary; - var pm; - for(var i = 0; i < p.data.length; i++) { - pm = p.data[i]; - if (pm.allow_buy) { - $scope.paymentMethods.push(pm); - } - if (pm.allow_buy && pm.primary_buy) { - hasPrimary = true; - $scope.selectedPaymentMethodId.value = pm.id; - } - } - if (lodash.isEmpty($scope.paymentMethods)) { - ongoingProcess.set('connectingCoinbase', false); - showErrorAndBack('No payment method available to buy'); - return; - } - if (!hasPrimary) $scope.selectedPaymentMethodId.value = $scope.paymentMethods[0].id; - $scope.buyRequest(); - }); - }); - }); - }); - - $scope.buyRequest = function() { - ongoingProcess.set('connectingCoinbase', true); - coinbaseService.init(function(err, res) { - if (err) { - ongoingProcess.set('connectingCoinbase', false); - showErrorAndBack(err); - return; - } - var accessToken = res.accessToken; - var accountId = res.accountId; - var dataSrc = { - amount: amount, - currency: currency, - payment_method: $scope.selectedPaymentMethodId.value, - quote: true - }; - coinbaseService.buyRequest(accessToken, accountId, dataSrc, function(err, data) { - ongoingProcess.set('connectingCoinbase', false); - if (err) { - showErrorAndBack(err); - return; - } - $scope.buyRequestInfo = data.data; - $timeout(function() { - $scope.$apply(); - }, 100); - }); - }); - }; - - $scope.buyConfirm = function() { - var message = 'Buy bitcoin for ' + $scope.amountUnitStr; - var okText = 'Confirm'; - var cancelText = 'Cancel'; - popupService.showConfirm(null, message, okText, cancelText, function(ok) { - if (!ok) return; - - ongoingProcess.set('buyingBitcoin', true, statusChangeHandler); - coinbaseService.init(function(err, res) { - if (err) { - ongoingProcess.set('buyingBitcoin', false, statusChangeHandler); - showError(err); - return; - } - var accessToken = res.accessToken; - var accountId = res.accountId; - var dataSrc = { - amount: amount, - currency: currency, - payment_method: $scope.selectedPaymentMethodId.value, - commit: true - }; - coinbaseService.buyRequest(accessToken, accountId, dataSrc, function(err, b) { - if (err) { - ongoingProcess.set('buyingBitcoin', false, statusChangeHandler); - showError(err); - return; - } - - var processBuyTx = function (tx) { - if (!tx) { - ongoingProcess.set('buyingBitcoin', false, statusChangeHandler); - showError('Transaction not found'); - return; - } - - coinbaseService.getTransaction(accessToken, accountId, tx.id, function(err, updatedTx) { - if (err) { - ongoingProcess.set('buyingBitcoin', false, statusChangeHandler); - showError(err); - return; - } - walletService.getAddress($scope.wallet, false, function(err, walletAddr) { - if (err) { - ongoingProcess.set('buyingBitcoin', false, statusChangeHandler); - showError(err); - return; - } - updatedTx.data['toAddr'] = walletAddr; - updatedTx.data['status'] = 'pending'; // Forcing "pending" status to process later - - $log.debug('Saving transaction to process later...'); - coinbaseService.savePendingTransaction(updatedTx.data, {}, function(err) { - ongoingProcess.set('buyingBitcoin', false, statusChangeHandler); - if (err) $log.debug(err); - }); - }); - }); - }; - - $timeout(function() { - var tx = b.data ? b.data.transaction : null; - if (tx) { - processBuyTx(tx); - } - else { - coinbaseService.getBuyOrder(accessToken, accountId, b.data.id, function (err, buyResp) { - if (err) { - ongoingProcess.set('buyingBitcoin', false, statusChangeHandler); - showError(err); - return; - } - var tx = buyResp.data ? buyResp.data.transaction : null; - processBuyTx(tx); - }); - } - }, 8000); - }); - }); - }); - }; - - $scope.showWalletSelector = function() { - $scope.walletSelectorTitle = 'Receive in'; - $scope.showWallets = true; - }; - - $scope.onWalletSelect = function(wallet) { - $scope.wallet = wallet; - }; - - $scope.goBackHome = function() { - $scope.sendStatus = ''; - $ionicHistory.nextViewOptions({ - disableAnimate: true, - historyRoot: true - }); - $ionicHistory.clearHistory(); - $state.go('tabs.home').then(function() { - $state.transitionTo('tabs.buyandsell.coinbase'); - }); - }; -}); diff --git a/src/js/controllers/buyGlidera.js b/src/js/controllers/buyGlidera.js deleted file mode 100644 index 46d0c3238..000000000 --- a/src/js/controllers/buyGlidera.js +++ /dev/null @@ -1,178 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('buyGlideraController', function($scope, $log, $state, $timeout, $ionicHistory, $ionicConfig, lodash, glideraService, popupService, profileService, ongoingProcess, walletService, platformInfo, txFormatService) { - - var amount; - var currency; - - $scope.isCordova = platformInfo.isCordova; - - var showErrorAndBack = function(err) { - $scope.sendStatus = ''; - $log.error(err); - err = err.errors ? err.errors[0].message : err || ''; - popupService.showAlert('Error', err, function() { - $ionicHistory.goBack(); - }); - }; - - var showError = function(err) { - $scope.sendStatus = ''; - $log.error(err); - err = err.errors ? err.errors[0].message : err; - popupService.showAlert('Error', err); - }; - - var statusChangeHandler = function (processName, showName, isOn) { - $log.debug('statusChangeHandler: ', processName, showName, isOn); - if ( processName == 'buyingBitcoin' && !isOn) { - $scope.sendStatus = 'success'; - $timeout(function() { - $scope.$digest(); - }, 100); - } else if (showName) { - $scope.sendStatus = showName; - } - }; - - $scope.$on("$ionicView.beforeLeave", function(event, data) { - $ionicConfig.views.swipeBackEnabled(true); - }); - - $scope.$on("$ionicView.enter", function(event, data) { - $ionicConfig.views.swipeBackEnabled(false); - }); - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - $scope.isFiat = data.stateParams.currency != 'bits' && data.stateParams.currency != 'BTC' ? true : false; - var parsedAmount = txFormatService.parseAmount( - data.stateParams.amount, - data.stateParams.currency); - - amount = parsedAmount.amount; - currency = parsedAmount.currency; - $scope.amountUnitStr = parsedAmount.amountUnitStr; - - $scope.network = glideraService.getNetwork(); - $scope.wallets = profileService.getWallets({ - onlyComplete: true, - network: $scope.network - }); - - if (lodash.isEmpty($scope.wallets)) { - showErrorAndBack('No wallets available'); - return; - } - $scope.wallet = $scope.wallets[0]; // Default first wallet - - ongoingProcess.set('connectingGlidera', true); - glideraService.init(function(err, data) { - if (err) { - ongoingProcess.set('connectingGlidera', false); - showErrorAndBack(err); - return; - } - $scope.token = data.token; - var price = {}; - if ($scope.isFiat) { - price['fiat'] = amount; - } else { - price['qty'] = amount; - } - glideraService.buyPrice($scope.token, price, function(err, buy) { - ongoingProcess.set('connectingGlidera', false); - if (err) { - showErrorAndBack(err); - return; - } - $scope.buyInfo = buy; - }); - }); - }); - - var ask2FaCode = function(mode, cb) { - if (mode != 'NONE') { - // SHOW PROMPT - var title = 'Please, enter the code below'; - var message; - if (mode == 'PIN') { - message = 'You have enabled PIN based two-factor authentication.'; - } else if (mode == 'AUTHENTICATOR') { - message = 'Use an authenticator app (Authy or Google Authenticator).'; - } else { - message = 'A SMS containing a confirmation code was sent to your phone.'; - } - popupService.showPrompt(title, message, null, function(twoFaCode) { - if (typeof twoFaCode == 'undefined') return cb(); - return cb(twoFaCode); - }); - } else { - return cb(); - } - }; - - $scope.buyConfirm = function() { - var message = 'Buy bitcoin for ' + amount + ' ' + currency; - var okText = 'Confirm'; - var cancelText = 'Cancel'; - popupService.showConfirm(null, message, okText, cancelText, function(ok) { - if (!ok) return; - ongoingProcess.set('buyingBitcoin', true, statusChangeHandler); - glideraService.get2faCode($scope.token, function(err, tfa) { - if (err) { - ongoingProcess.set('buyingBitcoin', false, statusChangeHandler); - showError(err); - return; - } - ask2FaCode(tfa.mode, function(twoFaCode) { - if (tfa.mode != 'NONE' && lodash.isEmpty(twoFaCode)) { - ongoingProcess.set('buyingBitcoin', false, statusChangeHandler); - showError('No code entered'); - return; - } - - walletService.getAddress($scope.wallet, false, function(err, walletAddr) { - if (err) { - ongoingProcess.set('buyingBitcoin', false, statusChangeHandler); - showError(err); - return; - } - var data = { - destinationAddress: walletAddr, - qty: $scope.buyInfo.qty, - priceUuid: $scope.buyInfo.priceUuid, - useCurrentPrice: false, - ip: null - }; - glideraService.buy($scope.token, twoFaCode, data, function(err, data) { - ongoingProcess.set('buyingBitcoin', false, statusChangeHandler); - if (err) return showError(err); - $log.info(data); - }); - }); - }); - }); - }); - }; - - $scope.showWalletSelector = function() { - $scope.walletSelectorTitle = 'Receive in'; - $scope.showWallets = true; - }; - - $scope.onWalletSelect = function(wallet) { - $scope.wallet = wallet; - }; - - $scope.goBackHome = function() { - $scope.sendStatus = ''; - $ionicHistory.nextViewOptions({ - disableAnimate: true, - historyRoot: true - }); - $ionicHistory.clearHistory(); - $state.go('tabs.home').then(function() { - $state.transitionTo('tabs.buyandsell.glidera'); - }); - }; -}); diff --git a/src/js/controllers/buyandsellController.js b/src/js/controllers/buyandsellController.js deleted file mode 100644 index 643ba401a..000000000 --- a/src/js/controllers/buyandsellController.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('buyandsellController', function($scope, $ionicHistory, buyAndSellService, lodash) { - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - $scope.services = buyAndSellService.get(); - - if (lodash.isEmpty($scope.services)) - $ionicHistory.goBack(); - }); -}); diff --git a/src/js/controllers/coinbase.js b/src/js/controllers/coinbase.js deleted file mode 100644 index c4cac9811..000000000 --- a/src/js/controllers/coinbase.js +++ /dev/null @@ -1,148 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('coinbaseController', function($scope, $timeout, $ionicModal, $ionicHistory, $log, coinbaseService, lodash, platformInfo, ongoingProcess, popupService, externalLinkService) { - - var isNW = platformInfo.isNW; - var isCordova = platformInfo.isCordova; - - var init = function() { - $scope.currency = coinbaseService.getAvailableCurrency(); - coinbaseService.getStoredToken(function(at) { - $scope.accessToken = at; - - // Update Access Token if necessary - $scope.loading = true; - coinbaseService.init(function(err, data) { - $scope.loading = false; - if (err || lodash.isEmpty(data)) { - if (err) { - $log.error(err); - var errorId = err.errors ? err.errors[0].id : null; - err = err.errors ? err.errors[0].message : err; - popupService.showAlert('Error connecting to Coinbase', err, function() { - if (errorId == 'revoked_token') { - coinbaseService.logout(function() {}); - } - $ionicHistory.goBack(); - }); - } - return; - } - - // Show rates - coinbaseService.buyPrice(data.accessToken, $scope.currency, function(err, b) { - $scope.buyPrice = b.data || null; - }); - coinbaseService.sellPrice(data.accessToken, $scope.currency, function(err, s) { - $scope.sellPrice = s.data || null; - }); - - // Updating accessToken and accountId - $timeout(function() { - $scope.accessToken = data.accessToken; - $scope.accountId = data.accountId; - $scope.updateTransactions(); - $scope.$apply(); - }, 100); - }); - }); - }; - - $scope.updateTransactions = function() { - $log.debug('Getting transactions...'); - $scope.pendingTransactions = { data: {} }; - coinbaseService.getPendingTransactions($scope.pendingTransactions); - }; - - this.openAuthenticateWindow = function() { - var oauthUrl = this.getAuthenticateUrl(); - if (!isNW) { - externalLinkService.open(oauthUrl); - } else { - var self = this; - var gui = require('nw.gui'); - gui.Window.open(oauthUrl, { - focus: true, - position: 'center' - }, function(new_win) { - new_win.on('loaded', function() { - var title = new_win.window.document.title; - $timeout(function() { - if (title.indexOf('Coinbase') == -1) { - $scope.code = title; - self.submitOauthCode($scope.code); - new_win.close(); - } - }, 100); - }); - }); - } - } - - this.openSignupWindow = function() { - var url = coinbaseService.getSignupUrl(); - var optIn = true; - var title = 'Sign Up for Coinbase'; - var message = 'This will open Coinbase.com, where you can create an account.'; - var okText = 'Go to Coinbase'; - var cancelText = 'Back'; - externalLinkService.open(url, optIn, title, message, okText, cancelText); - } - - this.openSupportWindow = function() { - var url = coinbaseService.getSupportUrl(); - var optIn = true; - var title = 'Coinbase Support'; - var message = 'You can email support@coinbase.com for direct support, or you can view their help center.'; - var okText = 'Open Help Center'; - var cancelText = 'Go Back'; - externalLinkService.open(url, optIn, title, message, okText, cancelText); - } - - this.getAuthenticateUrl = function() { - $scope.showOauthForm = isCordova || isNW ? false : true; - return coinbaseService.getOauthCodeUrl(); - }; - - this.toggleOauthForm = function() { - $scope.showOauthForm = !$scope.showOauthForm; - } - - this.submitOauthCode = function(code) { - var self = this; - ongoingProcess.set('connectingCoinbase', true); - coinbaseService.getToken(code, function(err, accessToken) { - ongoingProcess.set('connectingCoinbase', false); - if (err) { - popupService.showAlert('Error connecting to Coinbase', err); - return; - } - $scope.accessToken = accessToken; - init(); - }); - }; - - this.openTxModal = function(tx) { - $scope.tx = tx; - - $ionicModal.fromTemplateUrl('views/modals/coinbase-tx-details.html', { - scope: $scope, - animation: 'slide-in-up' - }).then(function(modal) { - $scope.modal = modal; - $scope.modal.show(); - }); - }; - - var self = this; - $scope.$on("$ionicView.beforeEnter", function(event, data) { - $scope.showOauthForm = false; - if (data.stateParams && data.stateParams.code) { - coinbaseService.getStoredToken(function(at) { - if (!at) self.submitOauthCode(data.stateParams.code); - }); - } else { - init(); - } - }); -}); diff --git a/src/js/controllers/confirm.js b/src/js/controllers/confirm.js deleted file mode 100644 index eff5aa4b2..000000000 --- a/src/js/controllers/confirm.js +++ /dev/null @@ -1,606 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('confirmController', function($rootScope, $scope, $interval, $filter, $timeout, $ionicScrollDelegate, gettextCatalog, walletService, platformInfo, lodash, configService, rateService, $stateParams, $window, $state, $log, profileService, bitcore, txFormatService, ongoingProcess, $ionicModal, popupService, $ionicHistory, $ionicConfig, payproService, feeService, bwcError, txConfirmNotification) { - - var countDown = null; - var CONFIRM_LIMIT_USD = 20; - var FEE_TOO_HIGH_LIMIT_PER = 15; - - var tx = {}; - - // Config Related values - var config = configService.getSync(); - var walletConfig = config.wallet; - var unitToSatoshi = walletConfig.settings.unitToSatoshi; - var unitDecimals = walletConfig.settings.unitDecimals; - var satToUnit = 1 / unitToSatoshi; - var configFeeLevel = walletConfig.settings.feeLevel ? walletConfig.settings.feeLevel : 'normal'; - - - // Platform info - var isChromeApp = platformInfo.isChromeApp; - var isCordova = platformInfo.isCordova; - var isWindowsPhoneApp = platformInfo.isCordova && platformInfo.isWP; - - //custom fee flag - var usingCustomFee = null; - - function refresh() { - $timeout(function() { - $scope.$apply(); - }, 1); - } - - - $scope.showWalletSelector = function() { - $scope.walletSelector = true; - refresh(); - }; - - $scope.$on("$ionicView.beforeLeave", function(event, data) { - $ionicConfig.views.swipeBackEnabled(true); - }); - - $scope.$on("$ionicView.enter", function(event, data) { - $ionicConfig.views.swipeBackEnabled(false); - }); - - - function exitWithError(err) { - $log.info('Error setting wallet selector:' + err); - popupService.showAlert(gettextCatalog.getString(), bwcError.msg(err), function() { - $ionicHistory.nextViewOptions({ - disableAnimate: true, - historyRoot: true - }); - $ionicHistory.clearHistory(); - $state.go('tabs.send'); - }); - }; - - function setNoWallet(msg) { - $scope.wallet = null; - $scope.noWalletMessage = msg; - $log.warn('Not ready to make the payment:' + msg); - $timeout(function() { - $scope.$apply(); - }); - }; - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - - function setWalletSelector(network, minAmount, cb) { - - // no min amount? (sendMax) => look for no empty wallets - minAmount = minAmount || 1; - - $scope.wallets = profileService.getWallets({ - onlyComplete: true, - network: network - }); - - if (!$scope.wallets || !$scope.wallets.length) { - setNoWallet(gettextCatalog.getString('No wallets available')); - return cb(); - } - - var filteredWallets = []; - var index = 0; - var walletsUpdated = 0; - - lodash.each($scope.wallets, function(w) { - walletService.getStatus(w, {}, function(err, status) { - if (err || !status) { - $log.error(err); - } else { - walletsUpdated++; - w.status = status; - - if (!status.availableBalanceSat) - $log.debug('No balance available in: ' + w.name); - - if (status.availableBalanceSat > minAmount) { - filteredWallets.push(w); - } - } - - if (++index == $scope.wallets.length) { - if (!walletsUpdated) - return cb('Could not update any wallet'); - - if (lodash.isEmpty(filteredWallets)) { - setNoWallet(gettextCatalog.getString('Insufficient funds')); - } - $scope.wallets = lodash.clone(filteredWallets); - return cb(); - } - }); - }); - }; - - // Setup $scope - - // Grab stateParams - tx = { - toAmount: parseInt(data.stateParams.toAmount), - sendMax: data.stateParams.useSendMax == 'true' ? true : false, - toAddress: data.stateParams.toAddress, - description: data.stateParams.description, - paypro: data.stateParams.paypro, - - feeLevel: configFeeLevel, - spendUnconfirmed: walletConfig.spendUnconfirmed, - - // Vanity tx info (not in the real tx) - recipientType: data.stateParams.recipientType || null, - toName: data.stateParams.toName, - toEmail: data.stateParams.toEmail, - toColor: data.stateParams.toColor, - network: (new bitcore.Address(data.stateParams.toAddress)).network.name, - txp: {}, - }; - - - // Other Scope vars - $scope.isCordova = isCordova; - $scope.isWindowsPhoneApp = isWindowsPhoneApp; - $scope.showAddress = false; - - updateTx(tx, null, {}, function() { - - $scope.walletSelectorTitle = gettextCatalog.getString('Send from'); - - setWalletSelector(tx.network, tx.toAmount, function(err) { - if (err) { - return exitWithError('Could not update wallets'); - } - - if ($scope.wallets.length > 1) { - $scope.showWalletSelector(); - } else if ($scope.wallets.length) { - setWallet($scope.wallets[0], tx); - } - }); - - }); - }); - - - function getSendMaxInfo(tx, wallet, cb) { - if (!tx.sendMax) return cb(); - - //ongoingProcess.set('retrievingInputs', true); - walletService.getSendMaxInfo(wallet, { - feePerKb: tx.feeRate, - excludeUnconfirmedUtxos: !tx.spendUnconfirmed, - returnInputs: true, - }, cb); - }; - - - function getTxp(tx, wallet, dryRun, cb) { - - // ToDo: use a credential's (or fc's) function for this - if (tx.description && !wallet.credentials.sharedEncryptingKey) { - var msg = gettextCatalog.getString('Could not add message to imported wallet without shared encrypting key'); - $log.warn(msg); - return setSendError(msg); - } - - if (tx.toAmount > Number.MAX_SAFE_INTEGER) { - var msg = gettextCatalog.getString('Amount too big'); - $log.warn(msg); - return setSendError(msg); - } - - var txp = {}; - - txp.outputs = [{ - 'toAddress': tx.toAddress, - 'amount': tx.toAmount, - 'message': tx.description - }]; - - if (tx.sendMaxInfo) { - txp.inputs = tx.sendMaxInfo.inputs; - txp.fee = tx.sendMaxInfo.fee; - } else { - if (usingCustomFee) { - txp.feePerKb = tx.feeRate; - } else txp.feeLevel = tx.feeLevel; - } - - txp.message = tx.description; - - if (tx.paypro) { - txp.payProUrl = tx.paypro.url; - } - txp.excludeUnconfirmedUtxos = !tx.spendUnconfirmed; - txp.dryRun = dryRun; - walletService.createTx(wallet, txp, function(err, ctxp) { - if (err) { - setSendError(err); - return cb(err); - } - return cb(null, ctxp); - }); - }; - - function updateTx(tx, wallet, opts, cb) { - - if (opts.clearCache) { - tx.txp = {}; - } - - $scope.tx = tx; - - function updateAmount() { - if (!tx.toAmount) return; - - // Amount - tx.amountStr = txFormatService.formatAmountStr(tx.toAmount); - tx.amountValueStr = tx.amountStr.split(' ')[0]; - tx.amountUnitStr = tx.amountStr.split(' ')[1]; - txFormatService.formatAlternativeStr(tx.toAmount, function(v) { - tx.alternativeAmountStr = v; - }); - } - - updateAmount(); - refresh(); - - // End of quick refresh, before wallet is selected. - if (!wallet) return cb(); - - feeService.getFeeRate(tx.network, tx.feeLevel, function(err, feeRate) { - if (err) return cb(err); - - if (!usingCustomFee) tx.feeRate = feeRate; - tx.feeLevelName = feeService.feeOpts[tx.feeLevel]; - - if (!wallet) - return cb(); - - getSendMaxInfo(lodash.clone(tx), wallet, function(err, sendMaxInfo) { - if (err) { - var msg = gettextCatalog.getString('Error getting SendMax information'); - return setSendError(msg); - } - - if (sendMaxInfo) { - - $log.debug('Send max info', sendMaxInfo); - - if (tx.sendMax && sendMaxInfo.amount == 0) { - setNoWallet(gettextCatalog.getString('Insufficient funds')); - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Not enough funds for fee')); - return cb('no_funds'); - } - - tx.sendMaxInfo = sendMaxInfo; - tx.toAmount = tx.sendMaxInfo.amount; - updateAmount(); - showSendMaxWarning(sendMaxInfo); - } - - // txp already generated for this wallet? - if (tx.txp[wallet.id]) { - refresh(); - return cb(); - } - - getTxp(lodash.clone(tx), wallet, opts.dryRun, function(err, txp) { - if (err) return cb(err); - - txp.feeStr = txFormatService.formatAmountStr(txp.fee); - txFormatService.formatAlternativeStr(txp.fee, function(v) { - txp.alternativeFeeStr = v; - }); - - var per = (txp.fee / (txp.amount + txp.fee) * 100); - txp.feeRatePerStr = per.toFixed(2) + '%'; - txp.feeToHigh = per > FEE_TOO_HIGH_LIMIT_PER; - - tx.txp[wallet.id] = txp; - $log.debug('Confirm. TX Fully Updated for wallet:' + wallet.id, tx); - refresh(); - - return cb(); - }); - }); - }); - } - - function useSelectedWallet() { - - if (!$scope.useSendMax) { - showAmount(tx.toAmount); - } - - $scope.onWalletSelect($scope.wallet); - } - - function setButtonText(isMultisig, isPayPro) { - $scope.buttonText = gettextCatalog.getString(isCordova && !isWindowsPhoneApp ? 'Slide' : 'Click') + ' '; - - if (isPayPro) { - $scope.buttonText += gettextCatalog.getString('to pay'); - } else if (isMultisig) { - $scope.buttonText += gettextCatalog.getString('to accept'); - } else - $scope.buttonText += gettextCatalog.getString('to send'); - }; - - - $scope.toggleAddress = function() { - $scope.showAddress = !$scope.showAddress; - }; - - - function showSendMaxWarning(sendMaxInfo) { - - function verifyExcludedUtxos() { - var warningMsg = []; - if (sendMaxInfo.utxosBelowFee > 0) { - warningMsg.push(gettextCatalog.getString("A total of {{amountBelowFeeStr}} were excluded. These funds come from UTXOs smaller than the network fee provided.", { - amountBelowFeeStr: txFormatService.formatAmountStr(sendMaxInfo.amountBelowFee) - })); - } - - if (sendMaxInfo.utxosAboveMaxSize > 0) { - warningMsg.push(gettextCatalog.getString("A total of {{amountAboveMaxSizeStr}} were excluded. The maximum size allowed for a transaction was exceeded.", { - amountAboveMaxSizeStr: txFormatService.formatAmountStr(sendMaxInfo.amountAboveMaxSize) - })); - } - return warningMsg.join('\n'); - }; - - var msg = gettextCatalog.getString("{{fee}} will be deducted for bitcoin networking fees.", { - fee: txFormatService.formatAmountStr(sendMaxInfo.fee) - }); - var warningMsg = verifyExcludedUtxos(); - - if (!lodash.isEmpty(warningMsg)) - msg += '\n' + warningMsg; - - popupService.showAlert(null, msg, function() {}); - }; - - $scope.onWalletSelect = function(wallet) { - setWallet(wallet, tx); - }; - - $scope.showDescriptionPopup = function(tx) { - var message = gettextCatalog.getString('Add description'); - var opts = { - defaultText: tx.description - }; - - popupService.showPrompt(null, message, opts, function(res) { - if (typeof res != 'undefined') tx.description = res; - $timeout(function() { - $scope.$apply(); - }); - }); - }; - - function _paymentTimeControl(expirationTime) { - $scope.paymentExpired = false; - setExpirationTime(); - - countDown = $interval(function() { - setExpirationTime(); - }, 1000); - - function setExpirationTime() { - var now = Math.floor(Date.now() / 1000); - - if (now > expirationTime) { - setExpiredValues(); - return; - } - - var totalSecs = expirationTime - now; - var m = Math.floor(totalSecs / 60); - var s = totalSecs % 60; - $scope.remainingTimeStr = ('0' + m).slice(-2) + ":" + ('0' + s).slice(-2); - }; - - function setExpiredValues() { - $scope.paymentExpired = true; - $scope.remainingTimeStr = gettextCatalog.getString('Expired'); - if (countDown) $interval.cancel(countDown); - $timeout(function() { - $scope.$apply(); - }); - }; - }; - - /* sets a wallet on the UI, creates a TXPs for that wallet */ - - function setWallet(wallet, tx) { - - $scope.wallet = wallet; - - setButtonText(wallet.credentials.m > 1, !!tx.paypro); - - if (tx.paypro) - _paymentTimeControl(tx.paypro.expires); - - updateTx(tx, wallet, { - dryRun: true - }, function(err) { - $timeout(function() { - $ionicScrollDelegate.resize(); - $scope.$apply(); - }, 10); - - }); - - }; - - var setSendError = function(msg) { - $scope.sendStatus = ''; - $timeout(function() { - $scope.$apply(); - }); - popupService.showAlert(gettextCatalog.getString('Error at confirm'), bwcError.msg(msg)); - }; - - $scope.openPPModal = function() { - $ionicModal.fromTemplateUrl('views/modals/paypro.html', { - scope: $scope - }).then(function(modal) { - $scope.payproModal = modal; - $scope.payproModal.show(); - }); - }; - - $scope.cancel = function() { - $scope.payproModal.hide(); - }; - - $scope.approve = function(tx, wallet, onSendStatusChange) { - - if (!tx || !wallet) return; - - if ($scope.paymentExpired) { - popupService.showAlert(null, gettextCatalog.getString('This bitcoin payment request has expired.')); - $scope.sendStatus = ''; - $timeout(function() { - $scope.$apply(); - }); - return; - } - - ongoingProcess.set('creatingTx', true, onSendStatusChange); - getTxp(lodash.clone(tx), wallet, false, function(err, txp) { - ongoingProcess.set('creatingTx', false, onSendStatusChange); - if (err) return; - - // confirm txs for more that 20usd, if not spending/touchid is enabled - function confirmTx(cb) { - if (walletService.isEncrypted(wallet)) - return cb(); - - var amountUsd = parseFloat(txFormatService.formatToUSD(txp.amount)); - if (amountUsd <= CONFIRM_LIMIT_USD) - return cb(); - - var message = gettextCatalog.getString('Sending {{amountStr}} from your {{name}} wallet', { - amountStr: tx.amountStr, - name: wallet.name - }); - var okText = gettextCatalog.getString('Confirm'); - var cancelText = gettextCatalog.getString('Cancel'); - popupService.showConfirm(null, message, okText, cancelText, function(ok) { - return cb(!ok); - }); - }; - - function publishAndSign() { - if (!wallet.canSign() && !wallet.isPrivKeyExternal()) { - $log.info('No signing proposal: No private key'); - - return walletService.onlyPublish(wallet, txp, function(err) { - if (err) setSendError(err); - }, onSendStatusChange); - } - - walletService.publishAndSign(wallet, txp, function(err, txp) { - if (err) return setSendError(err); - if (config.confirmedTxsNotifications && config.confirmedTxsNotifications.enabled) { - txConfirmNotification.subscribe(wallet, { - txid: txp.txid - }); - } - }, onSendStatusChange); - }; - - confirmTx(function(nok) { - if (nok) { - $scope.sendStatus = ''; - $timeout(function() { - $scope.$apply(); - }); - return; - } - publishAndSign(); - }); - }); - }; - - function statusChangeHandler(processName, showName, isOn) { - $log.debug('statusChangeHandler: ', processName, showName, isOn); - if ( - ( - processName === 'broadcastingTx' || - ((processName === 'signingTx') && $scope.wallet.m > 1) || - (processName == 'sendingTx' && !$scope.wallet.canSign() && !$scope.wallet.isPrivKeyExternal()) - ) && !isOn) { - $scope.sendStatus = 'success'; - $timeout(function() { - $scope.$digest(); - }, 100); - } else if (showName) { - $scope.sendStatus = showName; - } - }; - - $scope.statusChangeHandler = statusChangeHandler; - - $scope.onSuccessConfirm = function() { - $scope.sendStatus = ''; - $ionicHistory.nextViewOptions({ - disableAnimate: true, - historyRoot: true - }); - $state.go('tabs.send').then(function() { - $ionicHistory.clearHistory(); - $state.transitionTo('tabs.home'); - }); - }; - - $scope.chooseFeeLevel = function(tx, wallet) { - - var scope = $rootScope.$new(true); - scope.network = tx.network; - scope.feeLevel = tx.feeLevel; - scope.noSave = true; - - if (usingCustomFee) { - scope.customFeePerKB = tx.feeRate; - scope.feePerSatByte = tx.feeRate / 1000; - } - - $ionicModal.fromTemplateUrl('views/modals/chooseFeeLevel.html', { - scope: scope, - backdropClickToClose: false, - hardwareBackButtonClose: false - }).then(function(modal) { - scope.chooseFeeLevelModal = modal; - scope.openModal(); - }); - scope.openModal = function() { - scope.chooseFeeLevelModal.show(); - }; - - scope.hideModal = function(newFeeLevel, customFeePerKB) { - scope.chooseFeeLevelModal.hide(); - $log.debug('New fee level choosen:' + newFeeLevel + ' was:' + tx.feeLevel); - - usingCustomFee = newFeeLevel == 'custom' ? true : false; - - if (tx.feeLevel == newFeeLevel && !usingCustomFee) return; - - tx.feeLevel = newFeeLevel; - if (usingCustomFee) tx.feeRate = parseInt(customFeePerKB); - - updateTx(tx, wallet, { - clearCache: true, - dryRun: true - }, function() {}); - }; - }; - -}); diff --git a/src/js/controllers/copayers.js b/src/js/controllers/copayers.js deleted file mode 100644 index 4e74a3862..000000000 --- a/src/js/controllers/copayers.js +++ /dev/null @@ -1,105 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('copayersController', - function($scope, $log, $timeout, $stateParams, $state, $rootScope, $ionicHistory, appConfigService, lodash, profileService, walletService, popupService, bwcError, platformInfo, gettextCatalog, ongoingProcess, pushNotificationsService) { - - var listener; - var appName = appConfigService.userVisibleName; - var appUrl = appConfigService.url; - - $scope.isCordova = platformInfo.isCordova; - $scope.$on("$ionicView.beforeEnter", function(event, data) { - $scope.wallet = profileService.getWallet(data.stateParams.walletId); - updateWallet(); - $scope.shareIcon = platformInfo.isIOS ? 'iOS' : 'Android'; - - listener = $rootScope.$on('bwsEvent', function(e, walletId, type, n) { - if ($scope.wallet && walletId == $scope.wallet.id && type == ('NewCopayer' || 'WalletComplete')) - updateWalletDebounced(); - }); - }); - - $scope.$on("$ionicView.leave", function(event, data) { - listener(); - }); - - var updateWallet = function() { - $log.debug('Updating wallet:' + $scope.wallet.name) - walletService.getStatus($scope.wallet, {}, function(err, status) { - if (err) { - return popupService.showAlert(bwcError.msg(err, gettextCatalog.getString('Could not update wallet'))); - } - $scope.wallet.status = status; - $scope.copayers = $scope.wallet.status.wallet.copayers; - $scope.secret = $scope.wallet.status.wallet.secret; - $timeout(function() { - $scope.$apply(); - }); - if (status.wallet.status == 'complete') { - $scope.wallet.openWallet(function(err, status) { - if (err) $log.error(err); - $scope.clearNextView(); - $state.go('tabs.home').then(function() { - $state.transitionTo('tabs.wallet', { - walletId: $scope.wallet.credentials.walletId - }); - }); - }); - } - }); - }; - - var updateWalletDebounced = lodash.debounce(updateWallet, 5000, true); - - $scope.showDeletePopup = function() { - var title = gettextCatalog.getString('Confirm'); - var msg = gettextCatalog.getString('Are you sure you want to cancel and delete this wallet?'); - popupService.showConfirm(title, msg, null, null, function(res) { - if (res) deleteWallet(); - }); - }; - - function deleteWallet() { - ongoingProcess.set('deletingWallet', true); - profileService.deleteWalletClient($scope.wallet, function(err) { - ongoingProcess.set('deletingWallet', false); - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err.message || err); - } else { - pushNotificationsService.unsubscribe($scope.wallet); - $scope.clearNextView(); - $state.go('tabs.home'); - } - }); - }; - - $scope.copySecret = function() { - if ($scope.isCordova) { - window.cordova.plugins.clipboard.copy($scope.secret); - window.plugins.toast.showShortCenter(gettextCatalog.getString('Copied to clipboard')); - } - }; - - $scope.shareSecret = function() { - if ($scope.isCordova) { - var message = gettextCatalog.getString('Join my {{appName}} Wallet. Here is the invitation code: {{secret}} You can download {{appName}} for your phone or desktop at {{appUrl}}', { - secret: $scope.secret, - appName: appName, - appUrl: appUrl - }); - window.plugins.socialsharing.share(message, gettextCatalog.getString('Invitation to share a {{appName}} Wallet', { - appName: appName - }), null, null); - } - }; - - $scope.clearNextView = function() { - listener(); // remove listener - $ionicHistory.nextViewOptions({ - disableAnimate: true, - historyRoot: true - }); - $ionicHistory.clearHistory(); - }; - - }); diff --git a/src/js/controllers/create.js b/src/js/controllers/create.js deleted file mode 100644 index c43bf406b..000000000 --- a/src/js/controllers/create.js +++ /dev/null @@ -1,249 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('createController', - function($scope, $rootScope, $timeout, $log, lodash, $state, $ionicScrollDelegate, $ionicHistory, profileService, configService, gettextCatalog, ledger, trezor, intelTEE, derivationPathHelper, ongoingProcess, walletService, storageService, popupService, appConfigService, pushNotificationsService) { - - /* For compressed keys, m*73 + n*34 <= 496 */ - var COPAYER_PAIR_LIMITS = { - 1: 1, - 2: 2, - 3: 3, - 4: 4, - 5: 4, - 6: 4, - 7: 3, - 8: 3, - 9: 2, - 10: 2, - 11: 1, - 12: 1, - }; - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - $scope.formData = {}; - var defaults = configService.getDefaults(); - var tc = $state.current.name == 'tabs.add.create-personal' ? 1 : defaults.wallet.totalCopayers; - $scope.formData.account = 1; - $scope.formData.bwsurl = defaults.bws.url; - $scope.TCValues = lodash.range(2, defaults.limits.totalCopayers + 1); - $scope.formData.derivationPath = derivationPathHelper.default; - $scope.setTotalCopayers(tc); - updateRCSelect(tc); - resetPasswordFields(); - }); - - $scope.showAdvChange = function() { - $scope.showAdv = !$scope.showAdv; - $scope.encrypt = null; - $scope.resizeView(); - }; - - $scope.checkPassword = function(pw1, pw2) { - if (pw1 && pw1.length > 0) { - if (pw2 && pw2.length > 0) { - if (pw1 == pw2) $scope.result = 'correct'; - else { - $scope.formData.passwordSaved = null; - $scope.result = 'incorrect'; - } - } else - $scope.result = null; - } else - $scope.result = null; - }; - - $scope.resizeView = function() { - $timeout(function() { - $ionicScrollDelegate.resize(); - }, 10); - resetPasswordFields(); - }; - - function resetPasswordFields() { - $scope.formData.passphrase = $scope.formData.createPassphrase = $scope.formData.passwordSaved = $scope.formData.repeatPassword = $scope.result = null; - $timeout(function() { - $scope.$apply(); - }); - }; - - function updateRCSelect(n) { - $scope.formData.totalCopayers = n; - var maxReq = COPAYER_PAIR_LIMITS[n]; - $scope.RCValues = lodash.range(1, maxReq + 1); - $scope.formData.requiredCopayers = Math.min(parseInt(n / 2 + 1), maxReq); - }; - - function updateSeedSourceSelect(n) { - var seedOptions = [{ - id: 'new', - label: gettextCatalog.getString('Random'), - supportsTestnet: true - }, { - id: 'set', - label: gettextCatalog.getString('Specify Recovery Phrase...'), - supportsTestnet: false - }]; - - $scope.formData.seedSource = seedOptions[0]; - - /* - - Disable Hardware Wallets for BitPay distribution - - */ - - if (appConfigService.name == 'copay') { - if (n > 1 && walletService.externalSource.ledger.supported) - seedOptions.push({ - id: walletService.externalSource.ledger.id, - label: walletService.externalSource.ledger.longName, - supportsTestnet: walletService.externalSource.ledger.supportsTestnet - }); - - if (walletService.externalSource.trezor.supported) { - seedOptions.push({ - id: walletService.externalSource.trezor.id, - label: walletService.externalSource.trezor.longName, - supportsTestnet: walletService.externalSource.trezor.supportsTestnet - }); - } - - if (walletService.externalSource.intelTEE.supported) { - seedOptions.push({ - id: walletService.externalSource.intelTEE.id, - label: walletService.externalSource.intelTEE.longName, - supportsTestnet: walletService.externalSource.intelTEE.supportsTestnet - }); - } - } - - $scope.seedOptions = seedOptions; - }; - - $scope.setTotalCopayers = function(tc) { - $scope.formData.totalCopayers = tc; - updateRCSelect(tc); - updateSeedSourceSelect(tc); - }; - - $scope.create = function() { - - var opts = { - name: $scope.formData.walletName, - m: $scope.formData.requiredCopayers, - n: $scope.formData.totalCopayers, - myName: $scope.formData.totalCopayers > 1 ? $scope.formData.myName : null, - networkName: $scope.formData.testnetEnabled ? 'testnet' : 'livenet', - bwsurl: $scope.formData.bwsurl, - singleAddress: $scope.formData.singleAddressEnabled, - walletPrivKey: $scope.formData._walletPrivKey, // Only for testing - }; - - var setSeed = $scope.formData.seedSource.id == 'set'; - if (setSeed) { - - var words = $scope.formData.privateKey || ''; - if (words.indexOf(' ') == -1 && words.indexOf('prv') == 1 && words.length > 108) { - opts.extendedPrivateKey = words; - } else { - opts.mnemonic = words; - } - opts.passphrase = $scope.formData.passphrase; - - var pathData = derivationPathHelper.parse($scope.formData.derivationPath); - if (!pathData) { - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Invalid derivation path')); - return; - } - - opts.account = pathData.account; - opts.networkName = pathData.networkName; - opts.derivationStrategy = pathData.derivationStrategy; - - } else { - opts.passphrase = $scope.formData.createPassphrase; - } - - if (setSeed && !opts.mnemonic && !opts.extendedPrivateKey) { - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Please enter the wallet recovery phrase')); - return; - } - - if ($scope.formData.seedSource.id == walletService.externalSource.ledger.id || $scope.formData.seedSource.id == walletService.externalSource.trezor.id || $scope.formData.seedSource.id == walletService.externalSource.intelTEE.id) { - var account = $scope.formData.account; - if (!account || account < 1) { - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Invalid account number')); - return; - } - - if ($scope.formData.seedSource.id == walletService.externalSource.trezor.id || $scope.formData.seedSource.id == walletService.externalSource.intelTEE.id) - account = account - 1; - - opts.account = account; - ongoingProcess.set('connecting ' + $scope.formData.seedSource.id, true); - - var src; - switch ($scope.formData.seedSource.id) { - case walletService.externalSource.ledger.id: - src = ledger; - break; - case walletService.externalSource.trezor.id: - src = trezor; - break; - case walletService.externalSource.intelTEE.id: - src = intelTEE; - break; - default: - popupService.showAlert(gettextCatalog.getString('Error'), 'Invalid seed source id'); - return; - } - - src.getInfoForNewWallet(opts.n > 1, account, opts.networkName, function(err, lopts) { - ongoingProcess.set('connecting ' + $scope.formData.seedSource.id, false); - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err); - return; - } - opts = lodash.assign(lopts, opts); - _create(opts); - }); - } else { - _create(opts); - } - }; - - function _create(opts) { - ongoingProcess.set('creatingWallet', true); - $timeout(function() { - profileService.createWallet(opts, function(err, client) { - ongoingProcess.set('creatingWallet', false); - if (err) { - $log.warn(err); - popupService.showAlert(gettextCatalog.getString('Error'), err); - return; - } - - walletService.updateRemotePreferences(client); - pushNotificationsService.updateSubscription(client); - - if ($scope.formData.seedSource.id == 'set') { - profileService.setBackupFlag(client.credentials.walletId); - } - - $ionicHistory.removeBackView(); - - if (!client.isComplete()) { - $ionicHistory.nextViewOptions({ - disableAnimate: true - }); - $state.go('tabs.home'); - $timeout(function() { - $state.transitionTo('tabs.copayers', { - walletId: client.credentials.walletId - }); - }, 100); - } else $state.go('tabs.home'); - }); - }, 300); - } - }); diff --git a/src/js/controllers/customAmount.js b/src/js/controllers/customAmount.js deleted file mode 100644 index 9a2b46f6c..000000000 --- a/src/js/controllers/customAmount.js +++ /dev/null @@ -1,72 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('customAmountController', function($scope, $ionicHistory, txFormatService, platformInfo, configService, profileService, walletService, popupService) { - - var showErrorAndBack = function(title, msg) { - popupService.showAlert(title, msg, function() { - $scope.close(); - }); - }; - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - var walletId = data.stateParams.id; - - if (!walletId) { - showErrorAndBack('Error', 'No wallet selected'); - return; - } - - $scope.showShareButton = platformInfo.isCordova ? (platformInfo.isIOS ? 'iOS' : 'Android') : null; - - $scope.wallet = profileService.getWallet(walletId); - - walletService.getAddress($scope.wallet, false, function(err, addr) { - if (!addr) { - showErrorAndBack('Error', 'Could not get the address'); - return; - } - - $scope.address = addr; - - var parsedAmount = txFormatService.parseAmount( - data.stateParams.amount, - data.stateParams.currency); - - // Amount in USD or BTC - var amount = parsedAmount.amount; - var currency = parsedAmount.currency; - $scope.amountUnitStr = parsedAmount.amountUnitStr; - - if (currency != 'BTC') { - // Convert to BTC - var config = configService.getSync().wallet.settings; - var amountUnit = txFormatService.satToUnit(parsedAmount.amountSat); - var btcParsedAmount = txFormatService.parseAmount(amountUnit, config.unitName); - - $scope.amountBtc = btcParsedAmount.amount; - $scope.altAmountStr = btcParsedAmount.amountUnitStr; - } else { - $scope.amountBtc = amount; // BTC - $scope.altAmountStr = txFormatService.formatAlternativeStr(parsedAmount.amountSat); - } - }); - }); - - $scope.close = function() { - $ionicHistory.nextViewOptions({ - disableAnimate: true - }); - $ionicHistory.goBack(-2); - }; - - $scope.shareAddress = function() { - if (!platformInfo.isCordova) return; - var data = 'bitcoin:' + $scope.address + '?amount=' + $scope.amountBtc; - window.plugins.socialsharing.share(data, null, null, null); - } - - $scope.copyToClipboard = function() { - return 'bitcoin:' + $scope.address + '?amount=' + $scope.amountBtc; - }; - -}); diff --git a/src/js/controllers/devLogin.js b/src/js/controllers/devLogin.js deleted file mode 100644 index 92565725b..000000000 --- a/src/js/controllers/devLogin.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('DevLoginController', function($scope, $rootScope, $routeParams, identityService) { - - var mail = $routeParams.mail; - var password = $routeParams.password; - - var form = {}; - form.email = {}; - form.password = {}; - form.email.$modelValue = mail; - form.password.$modelValue = password; - - identityService.open($scope, form); - -}); diff --git a/src/js/controllers/export.js b/src/js/controllers/export.js deleted file mode 100644 index d42132c8d..000000000 --- a/src/js/controllers/export.js +++ /dev/null @@ -1,235 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('exportController', - function($scope, $timeout, $log, $ionicHistory, $ionicScrollDelegate, backupService, walletService, storageService, profileService, platformInfo, gettextCatalog, $state, $stateParams, popupService, appConfigService) { - var wallet = profileService.getWallet($stateParams.walletId); - $scope.wallet = wallet; - - $scope.showAdvChange = function() { - $scope.showAdv = !$scope.showAdv; - $scope.resizeView(); - }; - - $scope.resizeView = function() { - $timeout(function() { - $ionicScrollDelegate.resize(); - }, 10); - }; - - $scope.checkPassword = function(pw1, pw2) { - if (pw1.length > 0) { - if (pw2.length > 0) { - if (pw1 == pw2) $scope.result = 'correct'; - else $scope.result = 'incorrect'; - } else - $scope.result = null; - } else - $scope.result = null; - }; - - function getPassword(cb) { - if ($scope.password) return cb(null, $scope.password); - - walletService.prepare(wallet, function(err, password) { - if (err) return cb(err); - $scope.password = password; - return cb(null, password); - }); - }; - - $scope.generateQrCode = function() { - if ($scope.formData.exportWalletInfo || !walletService.isEncrypted(wallet)) { - $scope.file.value = false; - } - - getPassword(function(err, password) { - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err); - return; - } - - walletService.getEncodedWalletInfo(wallet, password, function(err, code) { - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err); - return; - } - - if (!code) - $scope.formData.supported = false; - else { - $scope.formData.supported = true; - $scope.formData.exportWalletInfo = code; - } - - $scope.file.value = false; - $timeout(function() { - $scope.$apply(); - }); - }); - }); - }; - - var init = function() { - $scope.formData = {}; - $scope.formData.password = $scope.formData.repeatpassword = ''; - $scope.isEncrypted = wallet.isPrivKeyEncrypted(); - $scope.isCordova = platformInfo.isCordova; - $scope.isSafari = platformInfo.isSafari; - $scope.formData.noSignEnabled = false; - $scope.showAdvanced = false; - $scope.wallet = wallet; - $scope.canSign = wallet.canSign(); - }; - - /* - EXPORT WITHOUT PRIVATE KEY - PENDING - */ - - $scope.noSignEnabledChange = function() { - if (!$scope.formData.supported) return; - - walletService.getEncodedWalletInfo(wallet, function(err, code) { - if (err) { - $log.error(err); - $scope.formData.supported = false; - $scope.formData.exportWalletInfo = null; - } else { - $scope.formData.supported = true; - $scope.formData.exportWalletInfo = code; - } - $timeout(function() { - $scope.$apply(); - }, 1); - }); - }; - - $scope.downloadWalletBackup = function() { - getPassword(function(err, password) { - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err); - return; - } - - $scope.getAddressbook(function(err, localAddressBook) { - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Failed to export')); - return; - } - var opts = { - noSign: $scope.formData.noSignEnabled, - addressBook: localAddressBook, - password: password - }; - - backupService.walletDownload($scope.formData.password, opts, function(err) { - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Failed to export')); - return; - } - $ionicHistory.removeBackView(); - $state.go('tabs.home'); - }); - }); - }); - }; - - $scope.getAddressbook = function(cb) { - storageService.getAddressbook(wallet.credentials.network, function(err, addressBook) { - if (err) return cb(err); - - var localAddressBook = []; - try { - localAddressBook = JSON.parse(addressBook); - } catch (ex) { - $log.warn(ex); - } - - return cb(null, localAddressBook); - }); - }; - - $scope.getBackup = function(cb) { - getPassword(function(err, password) { - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err); - return; - } - - $scope.getAddressbook(function(err, localAddressBook) { - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Failed to export')); - return cb(null); - } - var opts = { - noSign: $scope.formData.noSignEnabled, - addressBook: localAddressBook, - password: password - }; - - var ew = backupService.walletExport($scope.formData.password, opts); - if (!ew) { - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Failed to export')); - } - return cb(ew); - }); - }); - }; - - $scope.viewWalletBackup = function() { - $timeout(function() { - $scope.getBackup(function(backup) { - var ew = backup; - if (!ew) return; - $scope.backupWalletPlainText = ew; - }); - }, 100); - }; - - $scope.copyWalletBackup = function() { - $scope.getBackup(function(backup) { - var ew = backup; - if (!ew) return; - window.cordova.plugins.clipboard.copy(ew); - window.plugins.toast.showShortCenter(gettextCatalog.getString('Copied to clipboard')); - }); - }; - - $scope.sendWalletBackup = function() { - window.plugins.toast.showShortCenter(gettextCatalog.getString('Preparing backup...')); - var name = (wallet.credentials.walletName || wallet.credentials.walletId); - if (wallet.alias) { - name = wallet.alias + ' [' + name + ']'; - } - $scope.getBackup(function(backup) { - var ew = backup; - if (!ew) return; - - if ($scope.formData.noSignEnabled) - name = name + '(No Private Key)'; - - 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, - subject, - null, // TO: must be null or an array - null, // CC: must be null or an array - null, // BCC: must be null or an array - null, // FILES: can be null, a string, or an array - function() {}, - function() {} - ); - }); - }; - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - init(); - $scope.file = { - value: true - }; - $scope.formData.exportWalletInfo = null; - $scope.password = null; - $scope.result = null; - }); - - }); diff --git a/src/js/controllers/feedback/complete.js b/src/js/controllers/feedback/complete.js deleted file mode 100644 index ec38055e2..000000000 --- a/src/js/controllers/feedback/complete.js +++ /dev/null @@ -1,143 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('completeController', function($scope, $stateParams, $timeout, $log, $ionicHistory, $state, $ionicNavBarDelegate, $ionicConfig, platformInfo, configService, storageService, lodash, appConfigService, gettextCatalog) { - $scope.isCordova = platformInfo.isCordova; - $scope.title = gettextCatalog.getString("Share {{appName}}", { - appName: appConfigService.nameCase - }); - - var defaults = configService.getDefaults(); - var downloadUrl = appConfigService.name == 'copay' ? defaults.download.copay.url : defaults.download.bitpay.url; - - function quickFeedback(cb) { - window.plugins.spinnerDialog.show(); - $timeout(window.plugins.spinnerDialog.hide, 300); - $timeout(cb, 20); - } - - $scope.shareFacebook = function() { - quickFeedback(function() { - window.plugins.socialsharing.shareVia($scope.shareFacebookVia, null, null, null, downloadUrl); - }); - }; - - $scope.shareTwitter = function() { - quickFeedback(function() { - window.plugins.socialsharing.shareVia($scope.shareTwitterVia, null, null, null, downloadUrl); - }); - }; - - $scope.shareGooglePlus = function() { - quickFeedback(function() { - window.plugins.socialsharing.shareVia($scope.shareGooglePlusVia, downloadUrl); - }); - }; - - $scope.shareEmail = function() { - quickFeedback(function() { - window.plugins.socialsharing.shareViaEmail(downloadUrl); - }); - }; - - $scope.shareWhatsapp = function() { - quickFeedback(function() { - window.plugins.socialsharing.shareViaWhatsApp(downloadUrl); - }); - }; - - $scope.shareMessage = function() { - quickFeedback(function() { - window.plugins.socialsharing.shareViaSMS(downloadUrl); - }); - }; - - $scope.$on("$ionicView.beforeLeave", function() { - $ionicConfig.views.swipeBackEnabled(true); - }); - - $scope.$on("$ionicView.enter", function() { - if (!$scope.fromSettings) - $ionicConfig.views.swipeBackEnabled(false); - }); - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - $scope.score = (data.stateParams && data.stateParams.score) ? parseInt(data.stateParams.score) : null; - $scope.skipped = (data.stateParams && data.stateParams.skipped) ? true : false; - $scope.rated = (data.stateParams && data.stateParams.rated) ? true : false; - $scope.fromSettings = (data.stateParams && data.stateParams.fromSettings) ? true : false; - - if (!$scope.fromSettings) { - $ionicNavBarDelegate.showBackButton(false); - } else { - $ionicNavBarDelegate.showBackButton(true); - } - - storageService.getFeedbackInfo(function(error, info) { - var feedbackInfo = lodash.isString(info) ? JSON.parse(info) : null; - feedbackInfo.sent = true; - storageService.setFeedbackInfo(JSON.stringify(feedbackInfo), function() {}); - }); - - if (!$scope.isCordova) return; - $scope.animate = true; - - window.plugins.socialsharing.available(function(isAvailable) { - // the boolean is only false on iOS < 6 - $scope.socialsharing = isAvailable; - if (isAvailable) { - window.plugins.socialsharing.canShareVia('com.apple.social.facebook', 'msg', null, null, null, function(e) { - $scope.shareFacebookVia = 'com.apple.social.facebook'; - $scope.facebook = true; - }, function(e) { - window.plugins.socialsharing.canShareVia('com.facebook.katana', 'msg', null, null, null, function(e) { - $scope.shareFacebookVia = 'com.facebook.katana'; - $scope.facebook = true; - }, function(e) { - $log.debug('facebook error: ' + e); - $scope.facebook = false; - }); - }); - window.plugins.socialsharing.canShareVia('com.apple.social.twitter', 'msg', null, null, null, function(e) { - $scope.shareTwitterVia = 'com.apple.social.twitter'; - $scope.twitter = true; - }, function(e) { - window.plugins.socialsharing.canShareVia('com.twitter.android', 'msg', null, null, null, function(e) { - $scope.shareTwitterVia = 'com.twitter.android'; - $scope.twitter = true; - }, function(e) { - $log.debug('twitter error: ' + e); - $scope.twitter = false; - }); - }); - window.plugins.socialsharing.canShareVia('com.google.android.apps.plus', 'msg', null, null, null, function(e) { - $scope.shareGooglePlusVia = 'com.google.android.apps.plus'; - $scope.googleplus = true; - }, function(e) { - $log.debug('googlePlus error: ' + e); - $scope.googleplus = false; - }); - window.plugins.socialsharing.canShareViaEmail(function(e) { - $scope.email = true; - }, function(e) { - $log.debug('email error: ' + e); - $scope.email = false; - }); - window.plugins.socialsharing.canShareVia('whatsapp', 'msg', null, null, null, function(e) { - $scope.whatsapp = true; - }, function(e) { - $log.debug('whatsapp error: ' + e); - $scope.whatsapp = false; - }); - } - }, 100); - }); - - $scope.close = function() { - $ionicHistory.nextViewOptions({ - disableAnimate: false, - historyRoot: true - }); - if ($scope.score == 5) $ionicHistory.goBack(-3); - else $ionicHistory.goBack(-2); - }; -}); diff --git a/src/js/controllers/feedback/rateApp.js b/src/js/controllers/feedback/rateApp.js deleted file mode 100644 index 7e2bc8e41..000000000 --- a/src/js/controllers/feedback/rateApp.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('rateAppController', function($scope, $state, $stateParams, $window, lodash, externalLinkService, configService, platformInfo, feedbackService, ongoingProcess, popupService, appConfigService) { - $scope.score = parseInt($stateParams.score); - $scope.appName = appConfigService.nameCase; - var isAndroid = platformInfo.isAndroid; - var isIOS = platformInfo.isIOS; - - var config = configService.getSync(); - - $scope.skip = function() { - var dataSrc = { - "Email": lodash.values(config.emailFor)[0] || ' ', - "Feedback": ' ', - "Score": $stateParams.score, - "AppVersion": $window.version, - "Platform": ionic.Platform.platform(), - "DeviceVersion": ionic.Platform.version() - }; - feedbackService.send(dataSrc, function(err) { - if (err) { - // try to send, but not essential, since the user didn't add a message - $log.warn('Could not send feedback.'); - } - }); - $state.go('tabs.rate.complete', { - score: $stateParams.score, - skipped: true - }); - }; - - $scope.sendFeedback = function() { - $state.go('tabs.rate.send', { - score: $scope.score - }); - }; - - $scope.goAppStore = function() { - var defaults = configService.getDefaults(); - var url; - if (isAndroid) - url = $scope.appName == 'Copay' ? defaults.rateApp.copay.android : defaults.rateApp.bitpay.android; - if (isIOS) - url = $scope.appName == 'Copay' ? defaults.rateApp.copay.ios : defaults.rateApp.bitpay.ios; - - externalLinkService.open(url); - $state.go('tabs.rate.complete', { - score: $stateParams.score, - skipped: true, - rated: true - }); - }; -}); diff --git a/src/js/controllers/feedback/rateCard.js b/src/js/controllers/feedback/rateCard.js deleted file mode 100644 index abc109796..000000000 --- a/src/js/controllers/feedback/rateCard.js +++ /dev/null @@ -1,60 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('rateCardController', function($scope, $state, $timeout, $log, gettextCatalog, platformInfo, storageService, appConfigService) { - - $scope.isCordova = platformInfo.isCordova; - $scope.score = 0; - $scope.appName = appConfigService.nameCase; - - $scope.goFeedbackFlow = function() { - $scope.hideCard(); - if ($scope.isCordova && $scope.score == 5) { - $state.go('tabs.rate.rateApp', { - score: $scope.score - }); - } else { - $state.go('tabs.rate.send', { - score: $scope.score - }); - } - }; - - $scope.setScore = function(score) { - $scope.score = score; - switch ($scope.score) { - case 1: - $scope.button_title = gettextCatalog.getString("I think this app is terrible."); - break; - case 2: - $scope.button_title = gettextCatalog.getString("I don't like it"); - break; - case 3: - $scope.button_title = gettextCatalog.getString("Meh - it's alright"); - break; - case 4: - $scope.button_title = gettextCatalog.getString("I like the app"); - break; - case 5: - $scope.button_title = gettextCatalog.getString("This app is fantastic!"); - break; - } - $timeout(function() { - $scope.$apply(); - }); - }; - - $scope.hideCard = function() { - $log.debug('Feedback card dismissed.') - storageService.getFeedbackInfo(function(error, info) { - var feedbackInfo = JSON.parse(info); - feedbackInfo.sent = true; - storageService.setFeedbackInfo(JSON.stringify(feedbackInfo), function() { - $scope.showRateCard.value = false; - $timeout(function() { - $scope.$apply(); - }, 100); - }); - }); - } - -}); diff --git a/src/js/controllers/feedback/send.js b/src/js/controllers/feedback/send.js deleted file mode 100644 index 23fb0ea59..000000000 --- a/src/js/controllers/feedback/send.js +++ /dev/null @@ -1,102 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('sendController', function($scope, $state, $log, $timeout, $stateParams, $ionicNavBarDelegate, $ionicHistory, $ionicConfig, $window, gettextCatalog, popupService, configService, lodash, feedbackService, ongoingProcess, platformInfo, appConfigService) { - - $scope.sendFeedback = function(feedback, goHome) { - - var config = configService.getSync(); - - var dataSrc = { - "Email": lodash.values(config.emailFor)[0] || ' ', - "Feedback": goHome ? ' ' : feedback, - "Score": $stateParams.score || ' ', - "AppVersion": $window.version, - "Platform": ionic.Platform.platform(), - "DeviceVersion": ionic.Platform.version() - }; - - if (!goHome) ongoingProcess.set('sendingFeedback', true); - feedbackService.send(dataSrc, function(err) { - if (goHome) return; - ongoingProcess.set('sendingFeedback', false); - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Feedback could not be submitted. Please try again later.')); - return; - } - if (!$stateParams.score) { - popupService.showAlert(gettextCatalog.getString('Thank you!'), gettextCatalog.getString('A member of the team will review your feedback as soon as possible.'), function() { - $scope.feedback.value = ''; - $ionicHistory.nextViewOptions({ - disableAnimate: false, - historyRoot: true - }); - $ionicHistory.goBack(); - }, gettextCatalog.getString('Finish')); - return; - } - $state.go('tabs.rate.complete', { - score: $stateParams.score - }); - }); - if (goHome) $state.go('tabs.home'); - }; - - $scope.$on("$ionicView.beforeLeave", function(event, data) { - $ionicConfig.views.swipeBackEnabled(true); - }); - - $scope.$on("$ionicView.enter", function(event, data) { - if ($scope.score) - $ionicConfig.views.swipeBackEnabled(false); - }); - - $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 = {}; - - switch ($scope.score) { - case 1: - $scope.reaction = "Ouch!"; - $scope.comment = gettextCatalog.getString("There's obviously something we're doing wrong.") + ' ' + gettextCatalog.getString("How could we improve your experience?"); - break; - case 2: - $scope.reaction = gettextCatalog.getString("Oh no!"); - $scope.comment = gettextCatalog.getString("There's obviously something we're doing wrong.") + ' ' + gettextCatalog.getString("How could we improve your experience?"); - break; - case 3: - $scope.reaction = "Hmm..."; - $scope.comment = gettextCatalog.getString("We'd love to do better.") + ' ' + gettextCatalog.getString("How could we improve your experience?"); - break; - case 4: - $scope.reaction = gettextCatalog.getString("Thanks!"); - $scope.comment = gettextCatalog.getString("That's exciting to hear. We'd love to earn that fifth star from you – how could we improve your experience?"); - break; - case 5: - $scope.reaction = gettextCatalog.getString("Thank you!"); - $scope.comment = gettextCatalog.getString("We're always looking for ways to improve {{appName}}.", { - appName: appConfigService.nameCase - }) + ' ' + gettextCatalog.getString("Is there anything we could do better?"); - break; - default: - $scope.justFeedback = true; - $scope.comment = gettextCatalog.getString("We're always looking for ways to improve {{appName}}. How could we improve your experience?", { - appName: appConfigService.nameCase - }); - break; - } - }); - - $scope.$on("$ionicView.afterEnter", function() { - $scope.showForm = true; - }); - - $scope.goBack = function() { - $ionicHistory.nextViewOptions({ - disableAnimate: false, - historyRoot: true - }); - $ionicHistory.goBack(); - }; - -}); diff --git a/src/js/controllers/glidera.js b/src/js/controllers/glidera.js deleted file mode 100644 index 9110658a8..000000000 --- a/src/js/controllers/glidera.js +++ /dev/null @@ -1,112 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('glideraController', - function($scope, $timeout, $ionicModal, $log, storageService, glideraService, ongoingProcess, platformInfo, externalLinkService, popupService, lodash) { - - $scope.openExternalLink = function(url) { - externalLinkService.open(url); - }; - - var init = function() { - ongoingProcess.set('connectingGlidera', true); - glideraService.init(function(err, data) { - ongoingProcess.set('connectingGlidera', false); - if (err) { - popupService.showAlert('Error connecting Glidera', err + '. Please re-connect to Glidera'); - return; - } - if (!data || (data && !data.token)) return; - - $scope.account['token'] = data.token; - $scope.account['status'] = data.status; - $scope.account['txs'] = data.txs; - - $timeout(function() { - $scope.$digest(); - $scope.update(); - }); - }); - }; - - $scope.update = function(opts) { - $log.debug('Updating Glidera...'); - glideraService.updateStatus($scope.account); - }; - - $scope.getAuthenticateUrl = function() { - return glideraService.getOauthCodeUrl(); - }; - - $scope.submitOauthCode = function(code) { - ongoingProcess.set('connectingGlidera', true); - glideraService.authorize(code, function(err, data) { - ongoingProcess.set('connectingGlidera', false); - if (err) { - popupService.showAlert('Authorisation error', err); - return; - } - $scope.account['token'] = data.token; - $scope.account['status'] = data.status; - init(); - }); - }; - - $scope.openTxModal = function(tx) { - $scope.tx = tx; - - glideraService.getTransaction($scope.account.token, tx.transactionUuid, function(err, tx) { - if (err) { - popupService.showAlert('Error getting transaction', 'Could not get transactions'); - return; - } - $scope.tx = tx; - }); - - $ionicModal.fromTemplateUrl('views/modals/glidera-tx-details.html', { - scope: $scope, - backdropClickToClose: false, - hardwareBackButtonClose: false, - animation: 'slide-in-up' - }).then(function(modal) { - $scope.glideraTxDetailsModal = modal; - $scope.glideraTxDetailsModal.show(); - }); - }; - - $scope.openAuthenticateWindow = function() { - $scope.openExternalLink($scope.getAuthenticateUrl()); - $scope.showOauthForm = true - } - - $scope.openLoginWindow = function() { - var glideraUrl = ($scope.network === 'testnet') ? 'https://sandbox.glidera.io/login' : 'https://glidera.io/login'; - $scope.openExternalLink(glideraUrl); - } - - $scope.openSupportWindow = function() { - var url = glideraService.getSupportUrl(); - var optIn = true; - var title = 'Glidera Support'; - var message = 'You can email glidera at support@glidera.io for direct support, or you can contact Glidera on Twitter.'; - var okText = 'Tweet @GlideraInc'; - var cancelText = 'Go Back'; - externalLinkService.open(url, optIn, title, message, okText, cancelText); - } - - $scope.toggleOauthForm = function() { - $scope.showOauthForm = !$scope.showOauthForm; - } - - $scope.$on("$ionicView.afterEnter", function(event, data) { - $scope.network = glideraService.getNetwork(); - $scope.currency = glideraService.getCurrency(); - $scope.showOauthForm = false; - $scope.account = {}; - if (data.stateParams && data.stateParams.code) { - $scope.submitOauthCode(data.stateParams.code); - } else { - init(); - } - }); - - }); diff --git a/src/js/controllers/headController.js b/src/js/controllers/headController.js deleted file mode 100644 index d65318799..000000000 --- a/src/js/controllers/headController.js +++ /dev/null @@ -1,6 +0,0 @@ -'use strict'; - -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/homeIntegrations.js b/src/js/controllers/homeIntegrations.js deleted file mode 100644 index fe01d816b..000000000 --- a/src/js/controllers/homeIntegrations.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('homeIntegrationsController', function($scope, homeIntegrationsService, $ionicScrollDelegate, $timeout) { - - $scope.hide = false; - $scope.services = homeIntegrationsService.get(); - - $scope.toggle = function() { - $scope.hide = !$scope.hide; - $timeout(function() { - $ionicScrollDelegate.resize(); - $scope.$apply(); - }, 10); - }; - -}); diff --git a/src/js/controllers/import.js b/src/js/controllers/import.js deleted file mode 100644 index 3b34839ad..000000000 --- a/src/js/controllers/import.js +++ /dev/null @@ -1,405 +0,0 @@ -'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, appConfigService, hwWallet) { - - var reader = new FileReader(); - var defaults = configService.getDefaults(); - var errors = bwcService.getErrors(); - - $scope.init = function() { - $scope.supportsLedger = platformInfo.supportsLedger; - $scope.supportsTrezor = platformInfo.supportsTrezor; - $scope.isCordova = platformInfo.isCordova; - $scope.formData = {}; - $scope.formData.bwsurl = defaults.bws.url; - $scope.formData.derivationPath = derivationPathHelper.default; - $scope.formData.account = 1; - $scope.importErr = false; - $scope.isCopay = appConfigService.name == 'copay'; - $scope.fromHardwareWallet = { value: false }; - - if ($stateParams.code) - $scope.processWalletInfo($stateParams.code); - - $scope.seedOptions = []; - - if ($scope.supportsLedger) { - $scope.seedOptions.push({ - id: walletService.externalSource.ledger.id, - label: walletService.externalSource.ledger.longName, - }); - } - - if ($scope.supportsTrezor) { - $scope.seedOptions.push({ - id: walletService.externalSource.trezor.id, - label: walletService.externalSource.trezor.longName, - }); - $scope.formData.seedSource = $scope.seedOptions[0]; - } - - - $scope.seedOptionsAll = []; - - $scope.seedOptionsAll.push({ - id: walletService.externalSource.ledger.id, - label: walletService.externalSource.ledger.longName, - }); - - $scope.seedOptionsAll.push({ - id: walletService.externalSource.trezor.id, - label: walletService.externalSource.trezor.longName, - }); - $scope.formData.seedSourceAll = $scope.seedOptionsAll[0]; - - - $timeout(function() { - $scope.$apply(); - }); - }; - - $scope.processWalletInfo = function(code) { - if (!code) return; - - $scope.importErr = false; - var parsedCode = code.split('|'); - - if (parsedCode.length != 5) { - /// Trying to import a malformed wallet export QR code - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Incorrect code format')); - return; - } - - var info = { - type: parsedCode[0], - data: parsedCode[1], - network: parsedCode[2], - derivationPath: parsedCode[3], - hasPassphrase: parsedCode[4] == 'true' ? true : false - }; - - if (info.type == 1 && info.hasPassphrase) - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Password required. Make sure to enter your password in advanced options')); - - $scope.formData.derivationPath = info.derivationPath; - $scope.formData.testnetEnabled = info.network == 'testnet' ? true : false; - - $timeout(function() { - $scope.formData.words = info.data; - $scope.$apply(); - }, 1); - }; - - var _importBlob = function(str, opts) { - var str2, err; - try { - str2 = sjcl.decrypt($scope.formData.password, str); - } catch (e) { - err = gettextCatalog.getString('Could not decrypt file, check your password'); - $log.warn(e); - }; - - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err); - return; - } - - ongoingProcess.set('importingWallet', true); - opts.compressed = null; - opts.password = null; - - $timeout(function() { - profileService.importWallet(str2, opts, function(err, client) { - ongoingProcess.set('importingWallet', false); - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err); - return; - - } - finish(client); - }); - }, 100); - }; - - var _importExtendedPrivateKey = function(xPrivKey, opts) { - ongoingProcess.set('importingWallet', true); - $timeout(function() { - profileService.importExtendedPrivateKey(xPrivKey, opts, function(err, client) { - ongoingProcess.set('importingWallet', false); - if (err) { - if (err instanceof errors.NOT_AUTHORIZED) { - $scope.importErr = true; - } else { - popupService.showAlert(gettextCatalog.getString('Error'), err); - } - return $timeout(function() { - $scope.$apply(); - }); - } - finish(client); - }); - }, 100); - }; - - /* - IMPORT FROM PUBLIC KEY - PENDING - - var _importExtendedPublicKey = function(xPubKey, opts) { - ongoingProcess.set('importingWallet', true); - $timeout(function() { - profileService.importExtendedPublicKey(opts, function(err, walletId) { - ongoingProcess.set('importingWallet', false); - if (err) { - $scope.error = err; - return $timeout(function() { - $scope.$apply(); - }); - } - - profileService.setBackupFlag(walletId); - if ($stateParams.fromOnboarding) { - profileService.setDisclaimerAccepted(function(err) { - if (err) $log.error(err); - }); - } - - $state.go('tabs.home'); - }); - }, 100); - }; - */ - - var _importMnemonic = function(words, opts) { - ongoingProcess.set('importingWallet', true); - - $timeout(function() { - profileService.importMnemonic(words, opts, function(err, client) { - - ongoingProcess.set('importingWallet', false); - - if (err) { - if (err instanceof errors.NOT_AUTHORIZED) { - $scope.importErr = true; - } else { - popupService.showAlert(gettextCatalog.getString('Error'), err); - } - return $timeout(function() { - $scope.$apply(); - }); - } - finish(client); - }); - }, 100); - }; - - $scope.setDerivationPath = function() { - $scope.formData.derivationPath = $scope.formData.testnetEnabled ? derivationPathHelper.defaultTestnet : derivationPathHelper.default; - }; - - $scope.getFile = function() { - // If we use onloadend, we need to check the readyState. - reader.onloadend = function(evt) { - if (evt.target.readyState == FileReader.DONE) { // DONE == 2 - var opts = {}; - opts.bwsurl = $scope.formData.bwsurl; - _importBlob(evt.target.result, opts); - } - } - }; - - $scope.importBlob = function(form) { - if (form.$invalid) { - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('There is an error in the form')); - return; - } - - var backupFile = $scope.formData.file; - var backupText = $scope.formData.backupText; - var password = $scope.formData.password; - - if (!backupFile && !backupText) { - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Please, select your backup file')); - return; - } - - if (backupFile) { - reader.readAsBinaryString(backupFile); - } else { - var opts = {}; - opts.bwsurl = $scope.formData.bwsurl; - _importBlob(backupText, opts); - } - }; - - $scope.importMnemonic = function(form) { - if (form.$invalid) { - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('There is an error in the form')); - return; - } - - var opts = {}; - - if ($scope.formData.bwsurl) - opts.bwsurl = $scope.formData.bwsurl; - - var pathData = derivationPathHelper.parse($scope.formData.derivationPath); - - if (!pathData) { - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Invalid derivation path')); - return; - } - - opts.account = pathData.account; - opts.networkName = pathData.networkName; - opts.derivationStrategy = pathData.derivationStrategy; - - var words = $scope.formData.words || null; - - 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) { - return _importExtendedPublicKey(words, opts); - } else { - var wordList = words.split(/[\u3000\s]+/); - - if ((wordList.length % 3) != 0) { - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Wrong number of recovery words: ') + wordList.length); - return; - } - } - - opts.passphrase = $scope.formData.passphrase || null; - - if ($scope.fromHardwareWallet.value) { - $log.debug('Importing seed from hardware wallet'); - $log.warn('This wont work for Intel TEE wallets'); - - var id = $scope.formData.seedSourceAll.id; - var isMultisig = opts.derivationStrategy =='BIP48'; - var account = opts.account; - opts.entropySourcePath = 'm/' + hwWallet.getEntropyPath(id, isMultisig, account); - } - - _importMnemonic(words, opts); - }; - - $scope.importTrezor = function(account, isMultisig) { - trezor.getInfoForNewWallet(isMultisig, account, 'livenet', function(err, lopts) { - ongoingProcess.clear(); - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err); - return; - } - - lopts.externalSource = walletService.externalSource.trezor.id; - lopts.bwsurl = $scope.formData.bwsurl; - lopts.account = account; - ongoingProcess.set('importingWallet', true); - $log.debug('Import opts', lopts); - - profileService.importExtendedPublicKey(lopts, function(err, wallet) { - ongoingProcess.set('importingWallet', false); - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err); - return; - } - finish(wallet); - }); - }, 100); - }; - - $scope.importHW = function(form) { - if (form.$invalid || $scope.formData.account < 0) { - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('There is an error in the form')); - return; - } - - $scope.importErr = false; - - var account = $scope.formData.account; - - if ($scope.formData.seedSource.id == walletService.externalSource.trezor.id) { - if (account < 1) { - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Invalid account number')); - return; - } - account = account - 1; - } - - switch ($scope.formData.seedSource.id) { - case (walletService.externalSource.ledger.id): - ongoingProcess.set('connectingledger', true); - $scope.importLedger(account); - break; - case (walletService.externalSource.trezor.id): - ongoingProcess.set('connectingtrezor', true); - $scope.importTrezor(account, $scope.formData.isMultisig); - break; - default: - throw ('Error: bad source id'); - }; - }; - - $scope.importLedger = function(account) { - ledger.getInfoForNewWallet(true, account, 'livenet', function(err, lopts) { - ongoingProcess.clear(); - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err); - return; - } - - lopts.externalSource = lopts.externalSource = walletService.externalSource.ledger.id; - lopts.bwsurl = $scope.formData.bwsurl; - lopts.account = account; - ongoingProcess.set('importingWallet', true); - $log.debug('Import opts', lopts); - - profileService.importExtendedPublicKey(lopts, function(err, wallet) { - ongoingProcess.set('importingWallet', false); - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err); - return; - } - finish(wallet); - }); - }, 100); - }; - - var finish = function(wallet) { - walletService.updateRemotePreferences(wallet); - - profileService.setBackupFlag(wallet.credentials.walletId); - if ($stateParams.fromOnboarding) { - profileService.setDisclaimerAccepted(function(err) { - if (err) $log.error(err); - }); - } - $ionicHistory.removeBackView(); - $state.go('tabs.home', { - fromOnboarding: $stateParams.fromOnboarding - }); - }; - - $scope.showAdvChange = function() { - $scope.showAdv = !$scope.showAdv; - $timeout(function() { - $scope.resizeView(); - }, 100); - }; - - $scope.resizeView = function() { - $timeout(function() { - $ionicScrollDelegate.resize(); - }, 10); - }; - - $scope.$on("$ionicView.afterEnter", function(event, data) { - $scope.showAdv = false; - $scope.init(); - }); - - }); diff --git a/src/js/controllers/join.js b/src/js/controllers/join.js deleted file mode 100644 index 2728b6eb0..000000000 --- a/src/js/controllers/join.js +++ /dev/null @@ -1,212 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('joinController', - function($scope, $rootScope, $timeout, $state, $ionicHistory, $ionicScrollDelegate, profileService, configService, storageService, applicationService, gettextCatalog, lodash, ledger, trezor, intelTEE, derivationPathHelper, ongoingProcess, walletService, $log, $stateParams, popupService, appConfigService) { - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - var defaults = configService.getDefaults(); - $scope.formData = {}; - $scope.formData.bwsurl = defaults.bws.url; - $scope.formData.derivationPath = derivationPathHelper.default; - $scope.formData.account = 1; - $scope.formData.secret = null; - resetPasswordFields(); - updateSeedSourceSelect(); - }); - - $scope.showAdvChange = function() { - $scope.showAdv = !$scope.showAdv; - $scope.encrypt = null; - $scope.resizeView(); - }; - - $scope.checkPassword = function(pw1, pw2) { - if (pw1 && pw1.length > 0) { - if (pw2 && pw2.length > 0) { - if (pw1 == pw2) $scope.result = 'correct'; - else { - $scope.formData.passwordSaved = null; - $scope.result = 'incorrect'; - } - } else - $scope.result = null; - } else - $scope.result = null; - }; - - $scope.resizeView = function() { - $timeout(function() { - $ionicScrollDelegate.resize(); - }, 10); - resetPasswordFields(); - }; - - function resetPasswordFields() { - $scope.formData.passphrase = $scope.formData.createPassphrase = $scope.formData.passwordSaved = $scope.formData.repeatPassword = $scope.result = null; - $timeout(function() { - $scope.$apply(); - }); - }; - - $scope.onQrCodeScannedJoin = function(data) { - $scope.formData.secret = data; - $scope.$apply(); - }; - - if ($stateParams.url) { - var data = $stateParams.url; - data = data.replace('copay:', ''); - $scope.onQrCodeScannedJoin(data); - } - - function updateSeedSourceSelect() { - $scope.seedOptions = [{ - id: 'new', - label: gettextCatalog.getString('Random'), - }, { - id: 'set', - label: gettextCatalog.getString('Specify Recovery Phrase...'), - }]; - $scope.formData.seedSource = $scope.seedOptions[0]; - /* - - Disable Hardware Wallets - - */ - - if (appConfigService.name == 'copay') { - if (walletService.externalSource.ledger.supported) { - $scope.seedOptions.push({ - id: walletService.externalSource.ledger.id, - label: walletService.externalSource.ledger.longName - }); - } - - if (walletService.externalSource.trezor.supported) { - $scope.seedOptions.push({ - id: walletService.externalSource.trezor.id, - label: walletService.externalSource.trezor.longName - }); - } - - if (walletService.externalSource.intelTEE.supported) { - $scope.seedOptions.push({ - id: walletService.externalSource.intelTEE.id, - label: walletService.externalSource.intelTEE.longName - }); - } - } - }; - - $scope.join = function() { - - var opts = { - secret: $scope.formData.secret, - myName: $scope.formData.myName, - bwsurl: $scope.formData.bwsurl - } - - var setSeed = $scope.formData.seedSource.id == 'set'; - if (setSeed) { - var words = $scope.formData.privateKey; - if (words.indexOf(' ') == -1 && words.indexOf('prv') == 1 && words.length > 108) { - opts.extendedPrivateKey = words; - } else { - opts.mnemonic = words; - } - opts.passphrase = $scope.formData.passphrase; - - var pathData = derivationPathHelper.parse($scope.formData.derivationPath); - if (!pathData) { - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Invalid derivation path')); - return; - } - opts.account = pathData.account; - opts.networkName = pathData.networkName; - opts.derivationStrategy = pathData.derivationStrategy; - } else { - opts.passphrase = $scope.formData.createPassphrase; - } - - opts.walletPrivKey = $scope._walletPrivKey; // Only for testing - - - if (setSeed && !opts.mnemonic && !opts.extendedPrivateKey) { - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Please enter the wallet recovery phrase')); - return; - } - - if ($scope.formData.seedSource.id == walletService.externalSource.ledger.id || $scope.formData.seedSource.id == walletService.externalSource.trezor.id || $scope.formData.seedSource.id == walletService.externalSource.intelTEE.id) { - var account = $scope.formData.account; - if (!account || account < 1) { - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Invalid account number')); - return; - } - - if ($scope.formData.seedSource.id == walletService.externalSource.trezor.id || $scope.formData.seedSource.id == walletService.externalSource.intelTEE.id) - account = account - 1; - - opts.account = account; - opts.isMultisig = true; - ongoingProcess.set('connecting' + $scope.formData.seedSource.id, true); - - var src; - switch ($scope.formData.seedSource.id) { - case walletService.externalSource.ledger.id: - src = ledger; - break; - case walletService.externalSource.trezor.id: - src = trezor; - break; - case walletService.externalSource.intelTEE.id: - src = intelTEE; - break; - default: - popupService.showAlert(gettextCatalog.getString('Error'), 'Invalid seed source id'); - return; - } - - // TODO: cannot currently join an intelTEE testnet wallet (need to detect from the secret) - src.getInfoForNewWallet(true, account, 'livenet', function(err, lopts) { - ongoingProcess.set('connecting' + $scope.formData.seedSource.id, false); - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err); - return; - } - opts = lodash.assign(lopts, opts); - _join(opts); - }); - } else { - - _join(opts); - } - }; - - function _join(opts) { - ongoingProcess.set('joiningWallet', true); - $timeout(function() { - profileService.joinWallet(opts, function(err, client) { - ongoingProcess.set('joiningWallet', false); - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err); - return; - } - - walletService.updateRemotePreferences(client); - $ionicHistory.removeBackView(); - - if (!client.isComplete()) { - $ionicHistory.nextViewOptions({ - disableAnimate: true - }); - $state.go('tabs.home'); - $timeout(function() { - $state.transitionTo('tabs.copayers', { - walletId: client.credentials.walletId - }); - }); - } else $state.go('tabs.home'); - }); - }); - }; - }); diff --git a/src/js/controllers/lockSetup.js b/src/js/controllers/lockSetup.js deleted file mode 100644 index 39b86de61..000000000 --- a/src/js/controllers/lockSetup.js +++ /dev/null @@ -1,163 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('lockSetupController', function($state, $rootScope, $scope, $timeout, $log, configService, gettextCatalog, fingerprintService, profileService, lodash, applicationService) { - - function init() { - $scope.options = [ - { - method: 'none', - label: gettextCatalog.getString('Disabled'), - disabled: false, - }, - { - method: 'pin', - label: gettextCatalog.getString('Lock by PIN'), - needsBackup: false, - disabled: false, - }, - ]; - - if (fingerprintService.isAvailable()) { - $scope.options.push({ - method: 'fingerprint', - label: gettextCatalog.getString('Lock by Fingerprint'), - needsBackup: false, - disabled: false, - }); - } - - initMethodSelector(); - processWallets(); - }; - - $scope.$on("$ionicView.beforeEnter", function(event) { - init(); - }); - - function getSavedMethod() { - var config = configService.getSync(); - if (config.lock && config.lock.method) return config.lock.method; - return 'none'; - }; - - function initMethodSelector() { - function disable(method) { - lodash.find($scope.options, { - method: method - }).disabled = true; - }; - - var savedMethod = getSavedMethod(); - - lodash.each($scope.options, function(o) { - o.disabled = false; - }); - - // HACK: Disable until we allow to change between methods directly - if (fingerprintService.isAvailable()) { - switch (savedMethod) { - case 'pin': - disable('fingerprint'); - break; - case 'fingerprint': - disable('pin'); - break; - } - } - - $scope.currentOption = lodash.find($scope.options, { - method: savedMethod - }); - $timeout(function() { - $scope.$apply(); - }); - }; - - function processWallets() { - var wallets = profileService.getWallets(); - var singleLivenetWallet = wallets.length == 1 && wallets[0].network == 'livenet' && wallets[0].needsBackup; - var atLeastOneLivenetWallet = lodash.any(wallets, function(w) { - return w.network == 'livenet' && w.needsBackup; - }); - - if (singleLivenetWallet) { - $scope.errorMsg = gettextCatalog.getString('Backup your wallet before using this function'); - disableOptsUntilBackup(); - } else if (atLeastOneLivenetWallet) { - $scope.errorMsg = gettextCatalog.getString('Backup all livenet wallets before using this function'); - disableOptsUntilBackup(); - } else { - enableOptsAfterBackup(); - $scope.errorMsg = null; - } - - function enableOptsAfterBackup() { - $scope.options[1].needsBackup = false; - if ($scope.options[2]) $scope.options[2].needsBackup = false; - }; - - function disableOptsUntilBackup() { - $scope.options[1].needsBackup = true; - if ($scope.options[2]) $scope.options[2].needsBackup = true; - }; - - $timeout(function() { - $scope.$apply(); - }); - }; - - $scope.select = function(selectedMethod) { - var savedMethod = getSavedMethod(); - if (savedMethod == selectedMethod) return; - - if (selectedMethod == 'none') { - disableMethod(savedMethod); - } else { - enableMethod(selectedMethod); - } - }; - - function disableMethod(method) { - switch (method) { - case 'pin': - applicationService.pinModal('disable'); - break; - case 'fingerprint': - fingerprintService.check('unlockingApp', function(err) { - if (err) init(); - else saveConfig('none'); - }); - break; - } - }; - - function enableMethod(method) { - switch (method) { - case 'pin': - applicationService.pinModal('setup'); - break; - case 'fingerprint': - saveConfig('fingerprint'); - break; - } - }; - - function saveConfig(method) { - var opts = { - lock: { - method: method, - value: null, - } - }; - - configService.set(opts, function(err) { - if (err) $log.debug(err); - initMethodSelector(); - }); - }; - - $rootScope.$on('pinModalClosed', function() { - init() - }); - -}); diff --git a/src/js/controllers/modals/amazonCardDetails.js b/src/js/controllers/modals/amazonCardDetails.js deleted file mode 100644 index b1f6539a4..000000000 --- a/src/js/controllers/modals/amazonCardDetails.js +++ /dev/null @@ -1,83 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('amazonCardDetailsController', function($scope, $log, $timeout, $ionicScrollDelegate, bwcError, amazonService, lodash, ongoingProcess, popupService, externalLinkService) { - - $scope.cancelGiftCard = function() { - ongoingProcess.set('cancelingGiftCard', true); - amazonService.cancelGiftCard($scope.card, function(err, data) { - ongoingProcess.set('cancelingGiftCard', false); - if (err) { - popupService.showAlert('Error canceling gift card', bwcError.msg(err)); - return; - } - $scope.card.cardStatus = data.cardStatus; - $timeout(function() { - $ionicScrollDelegate.resize(); - $ionicScrollDelegate.scrollTop(); - }, 10); - amazonService.savePendingGiftCard($scope.card, null, function(err) { - $scope.refreshGiftCard(); - }); - }); - }; - - $scope.remove = function() { - amazonService.savePendingGiftCard($scope.card, { - remove: true - }, function(err) { - $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('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('Error', bwcError.msg(err)); - return; - } - if (!lodash.isEmpty(giftCard)) { - var newData = {}; - lodash.merge(newData, dataFromStorage, giftCard); - amazonService.savePendingGiftCard(newData, null, function(err) { - $log.debug("Saving new gift card"); - $scope.card = newData; - $timeout(function() { - $scope.$digest(); - }); - }); - } else $log.debug("pending gift card not available yet"); - }); - } - }); - }); - }; - - $scope.cancel = function() { - $scope.amazonCardDetailsModal.hide(); - }; - - $scope.openExternalLink = function(url) { - externalLinkService.open(url); - }; - -}); diff --git a/src/js/controllers/modals/bitpayCardConfirmation.js b/src/js/controllers/modals/bitpayCardConfirmation.js deleted file mode 100644 index 1ccd5455f..000000000 --- a/src/js/controllers/modals/bitpayCardConfirmation.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('bitpayCardConfirmationController', function($scope, $timeout, $state, bitpayCardService) { - - $scope.ok = function() { - bitpayCardService.logout(function() { - $state.go('bitpayCard.main'); - }); - $scope.cancel(); - }; - - $scope.cancel = function() { - $scope.bitpayCardConfirmationModal.hide(); - }; - -}); diff --git a/src/js/controllers/modals/coinbaseTxDetails.js b/src/js/controllers/modals/coinbaseTxDetails.js deleted file mode 100644 index bb9cd3020..000000000 --- a/src/js/controllers/modals/coinbaseTxDetails.js +++ /dev/null @@ -1,28 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('coinbaseTxDetailsController', function($scope, coinbaseService, popupService) { - - $scope.remove = function() { - coinbaseService.setCredentials(); - $scope.updateRequired = false; - var message = 'Are you sure you want to remove this transaction?'; - popupService.showConfirm(null, message, null, null, function(ok) { - if (!ok) { - return; - } - coinbaseService.savePendingTransaction($scope.tx, { - remove: true - }, function(err) { - $scope.updateRequired = true; - $scope.close(); - }); - }); - }; - - $scope.close = function() { - $scope.modal.hide().then(function() { - if ($scope.updateRequired) $scope.updateTransactions(); - }); - }; - -}); diff --git a/src/js/controllers/modals/confirmation.js b/src/js/controllers/modals/confirmation.js deleted file mode 100644 index 534e33740..000000000 --- a/src/js/controllers/modals/confirmation.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('confirmationController', function($scope) { - - $scope.ok = function() { - $scope.loading = true; - $scope.okAction(); - $scope.confirmationModal.hide(); - }; - - $scope.cancel = function() { - $scope.confirmationModal.hide(); - }; - -}); diff --git a/src/js/controllers/modals/feeLevels.js b/src/js/controllers/modals/feeLevels.js deleted file mode 100644 index 72a3e2abf..000000000 --- a/src/js/controllers/modals/feeLevels.js +++ /dev/null @@ -1,119 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('feeLevelsController', function($scope, $timeout, $log, lodash, gettextCatalog, configService, feeService, ongoingProcess, popupService) { - - var FEE_MULTIPLIER = 10; - var FEE_MIN = 0; - - var showErrorAndClose = function(title, msg) { - title = title || gettextCatalog.getString('Error'); - $log.error(msg); - popupService.showAlert(title, msg, function() { - $scope.chooseFeeLevelModal.hide(); - }); - - }; - - var getMinRecommended = function() { - var value = lodash.find($scope.feeLevels[$scope.network], { - level: 'superEconomy' - }); - return parseInt((value.feePerKB / 1000).toFixed()); - }; - - var getMaxRecommended = function() { - var value = lodash.find($scope.feeLevels[$scope.network], { - level: 'urgent' - }); - return parseInt((value.feePerKB / 1000).toFixed()); - }; - - $scope.ok = function() { - $scope.customFeePerKB = $scope.customFeePerKB ? ($scope.customSatPerByte.value * 1000).toFixed() : null; - $scope.hideModal($scope.feeLevel, $scope.customFeePerKB); - }; - - $scope.setFeesRecommended = function() { - $scope.maxFeeRecommended = getMaxRecommended(); - $scope.minFeeRecommended = getMinRecommended(); - $scope.minFeeAllowed = FEE_MIN; - $scope.maxFeeAllowed = $scope.maxFeeRecommended * FEE_MULTIPLIER; - }; - - $scope.checkFees = function(feePerSatByte) { - var fee = Number(feePerSatByte); - - if (fee <= $scope.minFeeAllowed) $scope.showError = true; - else $scope.showError = false; - - if (fee > $scope.minFeeAllowed && fee < $scope.minFeeRecommended) $scope.showMinWarning = true; - else $scope.showMinWarning = false; - - if (fee < $scope.maxFeeAllowed && fee > $scope.maxFeeRecommended) $scope.showMaxWarning = true; - else $scope.showMaxWarning = false; - }; - - $scope.updateFeeRate = function() { - var value = lodash.find($scope.feeLevels[$scope.network], { - level: $scope.feeLevel - }); - - // If no custom fee - if (value) { - $scope.customFeePerKB = null; - $scope.feePerSatByte = (value.feePerKB / 1000).toFixed(); - $scope.avgConfirmationTime = value.nbBlocks * 10; - } else { - $scope.avgConfirmationTime = null; - $scope.customSatPerByte = { value: Number($scope.feePerSatByte) }; - $scope.customFeePerKB = ($scope.feePerSatByte * 1000).toFixed(); - } - - // Warnings - $scope.setFeesRecommended(); - $scope.checkFees($scope.feePerSatByte); - - $timeout(function() { - $scope.$apply(); - }); - }; - - $scope.$watch( - "selectedFee.value", - function ( newValue, oldValue ) { - if (newValue != oldValue) { - $log.debug('New fee level: ' + newValue); - $scope.feeLevel = $scope.selectedFee.value; - $scope.updateFeeRate(); - } - } - ); - - // From parent controller - // $scope.network - // $scope.feeLevel - // - // IF usingCustomFee - // $scope.customFeePerKB - // $scope.feePerSatByte - - if (lodash.isEmpty($scope.feeLevel)) showErrorAndClose(null, gettextCatalog.getString('Fee level is not defined') ); - $scope.selectedFee = { value: $scope.feeLevel }; - - $scope.feeOpts = feeService.feeOpts; - $scope.loadingFee = true; - feeService.getFeeLevels(function(err, levels) { - $scope.loadingFee = false; - if (err || lodash.isEmpty(levels)) { - showErrorAndClose(null, err); - return; - } - if (lodash.isEmpty(levels)) { - showErrorAndClose(null, gettextCatalog.getString('Could not get fee levels')); - return; - } - $scope.feeLevels = levels; - $scope.updateFeeRate(); - }); - -}); diff --git a/src/js/controllers/modals/glideraTxDetails.js b/src/js/controllers/modals/glideraTxDetails.js deleted file mode 100644 index 34b74643e..000000000 --- a/src/js/controllers/modals/glideraTxDetails.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('glideraTxDetailsController', function($scope) { - - $scope.cancel = function() { - $scope.glideraTxDetailsModal.hide(); - }; - -}); diff --git a/src/js/controllers/modals/pin.js b/src/js/controllers/modals/pin.js deleted file mode 100644 index bb7fa41a9..000000000 --- a/src/js/controllers/modals/pin.js +++ /dev/null @@ -1,207 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('pinController', function($state, $interval, $stateParams, $ionicHistory, $timeout, $scope, $log, configService, appConfigService, applicationService) { - var ATTEMPT_LIMIT = 3; - var ATTEMPT_LOCK_OUT_TIME = 5 * 60; - var currentPin; - currentPin = $scope.confirmPin = ''; - - $scope.match = $scope.error = $scope.disableButtons = false; - $scope.currentAttempts = 0; - $scope.appName = appConfigService.name; - - configService.whenAvailable(function(config) { - if (!config.lock) return; - $scope.bannedUntil = config.lock.bannedUntil || null; - if ($scope.bannedUntil) { - var now = Math.floor(Date.now() / 1000); - if (now < $scope.bannedUntil) { - $scope.error = $scope.disableButtons = true; - lockTimeControl($scope.bannedUntil); - } - } - }); - - function getSavedMethod() { - var config = configService.getSync(); - if (config.lock) return config.lock.method; - return 'none'; - }; - - function checkAttempts() { - $scope.currentAttempts += 1; - $log.debug('Attempts to unlock:', $scope.currentAttempts); - if ($scope.currentAttempts === ATTEMPT_LIMIT) { - $scope.currentAttempts = 0; - var bannedUntil = Math.floor(Date.now() / 1000) + ATTEMPT_LOCK_OUT_TIME; - saveFailedAttempt(bannedUntil); - } - }; - - function lockTimeControl(bannedUntil) { - setExpirationTime(); - - var countDown = $interval(function() { - setExpirationTime(); - }, 1000); - - function setExpirationTime() { - var now = Math.floor(Date.now() / 1000); - if (now > bannedUntil) { - if (countDown) reset(); - } else { - $scope.disableButtons = true; - var totalSecs = bannedUntil - now; - var m = Math.floor(totalSecs / 60); - var s = totalSecs % 60; - $scope.expires = ('0' + m).slice(-2) + ":" + ('0' + s).slice(-2); - } - }; - - function reset() { - $scope.expires = $scope.error = $scope.disableButtons = null; - currentPin = $scope.confirmPin = ''; - $interval.cancel(countDown); - $timeout(function() { - $scope.$apply(); - }); - return; - }; - }; - - $scope.getFilledClass = function(limit) { - return currentPin.length >= limit ? 'filled-' + $scope.appName : null; - }; - - $scope.delete = function() { - if ($scope.disableButtons) return; - if (currentPin.length > 0) { - currentPin = currentPin.substring(0, currentPin.length - 1); - $scope.error = false; - $scope.updatePin(); - } - }; - - $scope.isComplete = function() { - if (currentPin.length < 4) return false; - else return true; - }; - - $scope.updatePin = function(value) { - if ($scope.disableButtons) return; - $scope.error = false; - if (value && !$scope.isComplete()) { - currentPin = currentPin + value; - $timeout(function() { - $scope.$apply(); - }); - } - $scope.save(); - }; - - function isMatch(pin) { - var config = configService.getSync(); - return config.lock.value == pin; - }; - - $scope.save = function() { - if (!$scope.isComplete()) return; - var savedMethod = getSavedMethod(); - - switch ($scope.action) { - case 'setup': - applyAndCheckPin(); - break; - case 'disable': - if (isMatch(currentPin)) { - deletePin(); - } else { - showError(); - checkAttempts(); - } - break; - case 'check': - if (isMatch(currentPin)) { - $scope.hideModal(); - return; - } - showError(); - checkAttempts(); - break; - } - }; - - function showError() { - $timeout(function() { - $scope.confirmPin = currentPin = ''; - $scope.error = true; - }, 200); - - $timeout(function() { - $scope.$apply(); - }); - }; - - function applyAndCheckPin() { - if (!$scope.confirmPin) { - $timeout(function() { - $scope.confirmPin = currentPin; - currentPin = ''; - }, 200); - } else { - if ($scope.confirmPin == currentPin) - savePin($scope.confirmPin); - else { - $scope.confirmPin = currentPin = ''; - $scope.error = true; - } - } - $timeout(function() { - $scope.$apply(); - }); - }; - - function deletePin() { - var opts = { - lock: { - method: 'none', - value: null, - bannedUntil: null, - } - }; - - configService.set(opts, function(err) { - if (err) $log.debug(err); - $scope.hideModal(); - }); - }; - - function savePin(value) { - var opts = { - lock: { - method: 'pin', - value: value, - bannedUntil: null, - } - }; - - configService.set(opts, function(err) { - if (err) $log.debug(err); - $scope.hideModal(); - }); - }; - - function saveFailedAttempt(bannedUntil) { - var opts = { - lock: { - bannedUntil: bannedUntil, - } - }; - - configService.set(opts, function(err) { - if (err) $log.debug(err); - lockTimeControl(bannedUntil); - }); - }; - -}); diff --git a/src/js/controllers/modals/search.js b/src/js/controllers/modals/search.js deleted file mode 100644 index 3d5ae366e..000000000 --- a/src/js/controllers/modals/search.js +++ /dev/null @@ -1,80 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('searchController', function($scope, $interval, $timeout, $filter, $log, $ionicModal, $ionicPopover, $state, $stateParams, $ionicScrollDelegate, bwcError, profileService, lodash, configService, gettext, gettextCatalog, platformInfo, walletService) { - - var HISTORY_SHOW_LIMIT = 10; - var currentTxHistoryPage = 0; - var wallet; - var isCordova = platformInfo.isCordova; - - $scope.updateSearchInput = function(search) { - if (isCordova) - window.plugins.toast.hide(); - currentTxHistoryPage = 0; - throttleSearch(search); - $timeout(function() { - $ionicScrollDelegate.resize(); - }, 10); - } - - var throttleSearch = lodash.throttle(function(search) { - - function filter(search) { - $scope.filteredTxHistory = []; - - function computeSearchableString(tx) { - var addrbook = ''; - if (tx.addressTo && $scope.addressbook && $scope.addressbook[tx.addressTo]) addrbook = $scope.addressbook[tx.addressTo].name || $scope.addressbook[tx.addressTo] || ''; - var searchableDate = computeSearchableDate(new Date(tx.time * 1000)); - var message = tx.message ? tx.message : ''; - var comment = tx.note ? tx.note.body : ''; - var addressTo = tx.addressTo ? tx.addressTo : ''; - var txid = tx.txid ? tx.txid : ''; - return ((tx.amountStr + message + addressTo + addrbook + searchableDate + comment + txid).toString()).toLowerCase(); - } - - function computeSearchableDate(date) { - var day = ('0' + date.getDate()).slice(-2).toString(); - var month = ('0' + (date.getMonth() + 1)).slice(-2).toString(); - var year = date.getFullYear(); - return [month, day, year].join('/'); - }; - - if (lodash.isEmpty(search)) { - $scope.txHistoryShowMore = false; - return []; - } - - $scope.filteredTxHistory = lodash.filter($scope.completeTxHistory, function(tx) { - if (!tx.searcheableString) tx.searcheableString = computeSearchableString(tx); - return lodash.includes(tx.searcheableString, search.toLowerCase()); - }); - - if ($scope.filteredTxHistory.length > HISTORY_SHOW_LIMIT) $scope.txHistoryShowMore = true; - else $scope.txHistoryShowMore = false; - return $scope.filteredTxHistory; - }; - - $scope.txHistorySearchResults = filter(search).slice(0, HISTORY_SHOW_LIMIT); - - if (isCordova) - window.plugins.toast.showShortBottom(gettextCatalog.getString('Matches: ' + $scope.filteredTxHistory.length)); - - $timeout(function() { - $scope.$apply(); - }); - - }, 1000); - - $scope.moreSearchResults = function() { - currentTxHistoryPage++; - $scope.showHistory(); - $scope.$broadcast('scroll.infiniteScrollComplete'); - }; - - $scope.showHistory = function() { - $scope.txHistorySearchResults = $scope.filteredTxHistory ? $scope.filteredTxHistory.slice(0, (currentTxHistoryPage + 1) * HISTORY_SHOW_LIMIT) : []; - $scope.txHistoryShowMore = $scope.filteredTxHistory.length > $scope.txHistorySearchResults.length; - }; - -}); diff --git a/src/js/controllers/modals/txStatus.js b/src/js/controllers/modals/txStatus.js deleted file mode 100644 index e9e3aa537..000000000 --- a/src/js/controllers/modals/txStatus.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('txStatusController', function($scope, $timeout) { - - if ($scope.cb) $timeout($scope.cb, 100); - - $scope.cancel = function() { - $scope.txStatusModal.hide(); - }; - -}); diff --git a/src/js/controllers/modals/txpDetails.js b/src/js/controllers/modals/txpDetails.js deleted file mode 100644 index 68c6d0778..000000000 --- a/src/js/controllers/modals/txpDetails.js +++ /dev/null @@ -1,288 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('txpDetailsController', function($scope, $rootScope, $timeout, $interval, $log, ongoingProcess, platformInfo, $ionicScrollDelegate, txFormatService, bwcError, gettextCatalog, lodash, walletService, popupService, $ionicHistory, feeService) { - var isGlidera = $scope.isGlidera; - var GLIDERA_LOCK_TIME = 6 * 60 * 60; - var now = Math.floor(Date.now() / 1000); - var countDown; - - $scope.init = function() { - $scope.loading = null; - $scope.isCordova = platformInfo.isCordova; - $scope.isWindowsPhoneApp = platformInfo.isCordova && platformInfo.isWP; - $scope.copayers = $scope.wallet.status.wallet.copayers; - $scope.copayerId = $scope.wallet.credentials.copayerId; - $scope.isShared = $scope.wallet.credentials.n > 1; - $scope.canSign = $scope.wallet.canSign() || $scope.wallet.isPrivKeyExternal(); - $scope.color = $scope.wallet.color; - $scope.data = {}; - displayFeeValues(); - initActionList(); - checkPaypro(); - applyButtonText(); - }; - - function displayFeeValues() { - txFormatService.formatAlternativeStr($scope.tx.fee, function(v) { - $scope.tx.feeFiatStr = v; - }); - $scope.tx.feeRateStr = ($scope.tx.fee / ($scope.tx.amount + $scope.tx.fee) * 100).toFixed(2) + '%'; - $scope.tx.feeLevelStr = feeService.feeOpts[$scope.tx.feeLevel]; - }; - - function applyButtonText() { - $scope.buttonText = $scope.isCordova && !$scope.isWindowsPhoneApp ? gettextCatalog.getString('Slide') + ' ' : gettextCatalog.getString('Click') + ' '; - - var lastSigner = lodash.filter($scope.tx.actions, { - type: 'accept' - }).length == $scope.tx.requiredSignatures - 1; - - if (lastSigner) { - $scope.buttonText += gettextCatalog.getString('to send'); - $scope.successText = gettextCatalog.getString('Payment Sent'); - } else { - $scope.buttonText += gettextCatalog.getString('to accept'); - $scope.successText = gettextCatalog.getString('Payment Accepted'); - } - }; - - function initActionList() { - $scope.actionList = []; - - if (!$scope.isShared) return; - - var actionDescriptions = { - created: gettextCatalog.getString('Proposal Created'), - accept: gettextCatalog.getString('Accepted'), - reject: gettextCatalog.getString('Rejected'), - broadcasted: gettextCatalog.getString('Broadcasted'), - }; - - $scope.actionList.push({ - type: 'created', - time: $scope.tx.createdOn, - description: actionDescriptions['created'], - by: $scope.tx.creatorName - }); - - lodash.each($scope.tx.actions, function(action) { - $scope.actionList.push({ - type: action.type, - time: action.createdOn, - description: actionDescriptions[action.type], - by: action.copayerName - }); - }); - - $timeout(function() { - $scope.actionList.reverse(); - }, 10); - }; - - function checkPaypro() { - if ($scope.tx.payProUrl && !platformInfo.isChromeApp) { - $scope.wallet.fetchPayPro({ - payProUrl: $scope.tx.payProUrl, - }, function(err, paypro) { - if (err) return; - $scope.tx.paypro = paypro; - paymentTimeControl($scope.tx.paypro.expires); - $timeout(function() { - $ionicScrollDelegate.resize(); - }, 10); - }); - } - }; - - function paymentTimeControl(expirationTime) { - $scope.paymentExpired = false; - setExpirationTime(); - - countDown = $interval(function() { - setExpirationTime(); - }, 1000); - - function setExpirationTime() { - var now = Math.floor(Date.now() / 1000); - if (now > expirationTime) { - $scope.paymentExpired = true; - if (countDown) $interval.cancel(countDown); - return; - } - var totalSecs = expirationTime - now; - var m = Math.floor(totalSecs / 60); - var s = totalSecs % 60; - $scope.expires = ('0' + m).slice(-2) + ":" + ('0' + s).slice(-2); - }; - }; - - $scope.$on('accepted', function(event) { - $scope.sign(); - }); - - // ToDo: use tx.customData instead of tx.message - if ($scope.tx.message === 'Glidera transaction' && isGlidera) { - $scope.tx.isGlidera = true; - if ($scope.tx.canBeRemoved) { - $scope.tx.canBeRemoved = (Date.now() / 1000 - ($scope.tx.ts || $scope.tx.createdOn)) > GLIDERA_LOCK_TIME; - } - } - - var setError = function(err, prefix) { - $scope.sendStatus = ''; - $scope.loading = false; - popupService.showAlert(gettextCatalog.getString('Error'), bwcError.msg(err, prefix)); - }; - - $scope.sign = function(onSendStatusChange) { - $scope.loading = true; - walletService.publishAndSign($scope.wallet, $scope.tx, function(err, txp) { - $scope.$emit('UpdateTx'); - if (err) return setError(err, gettextCatalog.getString('Could not send payment')); - success(); - }, onSendStatusChange); - }; - - $scope.reject = function(txp) { - var title = gettextCatalog.getString('Warning!'); - var msg = gettextCatalog.getString('Are you sure you want to reject this transaction?'); - popupService.showConfirm(title, msg, null, null, function(res) { - if (res) { - $scope.loading = true; - - walletService.reject($scope.wallet, $scope.tx, function(err, txpr) { - if (err) - return setError(err, gettextCatalog.getString('Could not reject payment')); - - $scope.close(); - }); - } - }); - }; - - $scope.remove = function() { - var title = gettextCatalog.getString('Warning!'); - var msg = gettextCatalog.getString('Are you sure you want to remove this transaction?'); - popupService.showConfirm(title, msg, null, null, function(res) { - if (res) { - ongoingProcess.set('removeTx', true); - walletService.removeTx($scope.wallet, $scope.tx, function(err) { - ongoingProcess.set('removeTx', false); - - // Hacky: request tries to parse an empty response - if (err && !(err.message && err.message.match(/Unexpected/))) { - $scope.$emit('UpdateTx'); - return setError(err, gettextCatalog.getString('Could not delete payment proposal')); - } - - $scope.close(); - }); - } - }); - }; - - $scope.broadcast = function(txp) { - $scope.loading = true; - - $timeout(function() { - ongoingProcess.set('broadcastingTx', true); - walletService.broadcastTx($scope.wallet, $scope.tx, function(err, txpb) { - ongoingProcess.set('broadcastingTx', false); - - if (err) { - return setError(err, gettextCatalog.getString('Could not broadcast payment')); - } - - $scope.close(); - }); - }, 10); - }; - - $scope.getShortNetworkName = function() { - return $scope.wallet.credentials.networkName.substring(0, 4); - }; - - var updateTxInfo = function(eventName) { - $scope.wallet.getTx($scope.tx.id, function(err, tx) { - if (err) { - if (err.message && err.message == 'Transaction proposal not found' && - (eventName == 'transactionProposalRemoved' || eventName == 'TxProposalRemoved')) { - $scope.tx.removed = true; - $scope.tx.canBeRemoved = false; - $scope.tx.pendingForUs = false; - $scope.$apply(); - } - return; - } - - var action = lodash.find(tx.actions, { - copayerId: $scope.wallet.credentials.copayerId - }); - - $scope.tx = txFormatService.processTx(tx); - - if (!action && tx.status == 'pending') - $scope.tx.pendingForUs = true; - - $scope.updateCopayerList(); - initActionList(); - $scope.$apply(); - }); - }; - - var bwsEvent = $rootScope.$on('bwsEvent', function(e, walletId, type, n) { - lodash.each([ - 'TxProposalRejectedBy', - 'TxProposalAcceptedBy', - 'transactionProposalRemoved', - 'TxProposalRemoved', - 'NewOutgoingTx', - 'UpdateTx' - ], function(eventName) { - if (walletId == $scope.wallet.id && type == eventName) { - updateTxInfo(eventName); - } - }); - }); - - $scope.updateCopayerList = function() { - lodash.map($scope.copayers, function(cp) { - lodash.each($scope.tx.actions, function(ac) { - if (cp.id == ac.copayerId) { - cp.action = ac.type; - } - }); - }); - }; - - function statusChangeHandler(processName, showName, isOn) { - $log.debug('statusChangeHandler: ', processName, showName, isOn); - if (showName) { - $scope.sendStatus = showName; - } - } - - function success() { - $scope.sendStatus = 'success'; - $scope.$digest(); - } - - $scope.statusChangeHandler = statusChangeHandler; - - $scope.onConfirm = function() { - $scope.sign(statusChangeHandler); - }; - - $scope.onSuccessConfirm = function() { - $ionicHistory.nextViewOptions({ - disableAnimate: true - }); - $scope.close(); - }; - - $scope.close = function() { - bwsEvent(); - $scope.loading = null; - $scope.txpDetailsModal.hide(); - }; -}); diff --git a/src/js/controllers/modals/wallets.js b/src/js/controllers/modals/wallets.js deleted file mode 100644 index c8552501b..000000000 --- a/src/js/controllers/modals/wallets.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('walletsController', function($scope, $timeout, bwcError, profileService) { - - $scope.selectWallet = function(walletId) { - - var client = profileService.getClient(walletId); - $scope.errorSelectedWallet = {}; - - profileService.isReady(client, function(err) { - if (err) { - $scope.errorSelectedWallet[walletId] = bwcError.msg(err); - $timeout(function() { - $scope.$apply(); - }); - return; - } - - $scope.$emit('walletSelected', walletId); - }); - }; - - $scope.cancel = function() { - $scope.walletsModal.hide(); - }; - -}); diff --git a/src/js/controllers/nextStepsController.js b/src/js/controllers/nextStepsController.js deleted file mode 100644 index b745825ec..000000000 --- a/src/js/controllers/nextStepsController.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('nextStepsController', function($scope, nextStepsService, $ionicScrollDelegate, $timeout) { - - $scope.hide = false; - $scope.services = nextStepsService.get(); - - $scope.toggle = function() { - $scope.hide = !$scope.hide; - $timeout(function() { - $ionicScrollDelegate.resize(); - $scope.$apply(); - }, 10); - }; - -}); diff --git a/src/js/controllers/onboarding/backupRequest.js b/src/js/controllers/onboarding/backupRequest.js deleted file mode 100644 index 0aad02874..000000000 --- a/src/js/controllers/onboarding/backupRequest.js +++ /dev/null @@ -1,39 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('backupRequestController', function($scope, $state, $stateParams, $ionicConfig, popupService, gettextCatalog) { - - $scope.walletId = $stateParams.walletId; - - $scope.$on("$ionicView.enter", function() { - $ionicConfig.views.swipeBackEnabled(false); - }); - - $scope.$on("$ionicView.beforeLeave", function() { - $ionicConfig.views.swipeBackEnabled(true); - }); - - $scope.openPopup = function() { - - 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 it?'); - var message = gettextCatalog.getString('You can create a backup later from your wallet settings.'); - var okText = gettextCatalog.getString('Yes, skip'); - var cancelText = gettextCatalog.getString('Go back'); - popupService.showConfirm(title, message, okText, cancelText, function(val) { - if (val) { - $state.go('onboarding.disclaimer', { - walletId: $scope.walletId, - backedUp: false - }); - } - }); - } - }); - } - -}); diff --git a/src/js/controllers/onboarding/backupWarning.js b/src/js/controllers/onboarding/backupWarning.js deleted file mode 100644 index 248b2b3a1..000000000 --- a/src/js/controllers/onboarding/backupWarning.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('backupWarningController', function($scope, $state, $timeout, $stateParams, $ionicModal) { - - $scope.walletId = $stateParams.walletId; - $scope.fromState = $stateParams.from == 'onboarding' ? $stateParams.from + '.backupRequest' : $stateParams.from; - $scope.toState = $stateParams.from + '.backup'; - - $scope.openPopup = function() { - $ionicModal.fromTemplateUrl('views/includes/screenshotWarningModal.html', { - scope: $scope, - backdropClickToClose: true, - hardwareBackButtonClose: true - }).then(function(modal) { - $scope.warningModal = modal; - $scope.warningModal.show(); - }); - - $scope.close = function() { - $scope.warningModal.remove(); - $timeout(function() { - $state.go($scope.toState, { - walletId: $scope.walletId - }); - }, 200); - }; - } - - $scope.goBack = function() { - $state.go($scope.fromState, { - walletId: $scope.walletId - }); - }; - -}); diff --git a/src/js/controllers/onboarding/collectEmail.js b/src/js/controllers/onboarding/collectEmail.js deleted file mode 100644 index e8766d5e4..000000000 --- a/src/js/controllers/onboarding/collectEmail.js +++ /dev/null @@ -1,86 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('collectEmailController', function($scope, $state, $log, $timeout, $http, $httpParamSerializer, $ionicConfig, profileService, configService, walletService, appConfigService, emailService) { - - var wallet, walletId; - $scope.data = {}; - // Get more info: https://mashe.hawksey.info/2014/07/google-sheets-as-a-database-insert-with-apps-script-using-postget-methods-with-ajax-example/ - var URL = "https://script.google.com/macros/s/AKfycbwQXvUw6-Ix0cRLMi7hBB8dlgNTCTgwfNIQRds6RypPV7dO8evW/exec"; - - var _post = function(dataSrc) { - return { - method: 'POST', - url: URL, - headers: { - 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8' - }, - data: $httpParamSerializer(dataSrc) - }; - }; - - $scope.$on("$ionicView.beforeLeave", function() { - $ionicConfig.views.swipeBackEnabled(true); - }); - - $scope.$on("$ionicView.enter", function() { - $ionicConfig.views.swipeBackEnabled(false); - }); - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - walletId = data.stateParams.walletId; - wallet = profileService.getWallet(walletId); - $scope.data.accept = true; - }); - - var collectEmail = function() { - var dataSrc = { - "App": appConfigService.nameCase, - "Email": $scope.data.email, - "Platform": ionic.Platform.platform(), - "DeviceVersion": ionic.Platform.version() - }; - - $http(_post(dataSrc)).then(function() { - $log.info("SUCCESS: Email collected"); - }, function(err) { - $log.error("ERROR: Could not collect email"); - }); - }; - - $scope.save = function() { - $scope.disableButton = true; - $timeout(function() { - var enabled = true; // Set enabled email: true - - emailService.updateEmail({ - enabled: enabled, - email: enabled ? $scope.data.email : null - }); - - if ($scope.data.accept) collectEmail(); - - $timeout(function() { - $scope.goNextView(); - }, 200); - }, 200); - }; - - $scope.goNextView = function() { - $state.go('onboarding.backupRequest', { - walletId: walletId - }); - }; - - $scope.confirm = function(emailForm) { - if (emailForm.$invalid) return; - $scope.confirmation = true; - }; - - $scope.cancel = function() { - $scope.confirmation = false; - $timeout(function() { - $scope.$digest(); - }, 1); - }; - -}); diff --git a/src/js/controllers/onboarding/disclaimer.js b/src/js/controllers/onboarding/disclaimer.js deleted file mode 100644 index ab5c7774b..000000000 --- a/src/js/controllers/onboarding/disclaimer.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('disclaimerController', function($scope, $timeout, $state, $log, $ionicModal, $ionicConfig, profileService, uxLanguage, externalLinkService, storageService, $stateParams, startupService, $rootScope) { - - $scope.$on("$ionicView.afterEnter", function() { - startupService.ready(); - }); - - $scope.$on("$ionicView.beforeEnter", function() { - $scope.lang = uxLanguage.currentLanguage; - $scope.terms = {}; - $scope.accepted = {}; - $scope.accepted.first = $scope.accepted.second = $scope.accepted.third = false; - $scope.backedUp = $stateParams.backedUp == 'false' ? false : true; - $scope.resume = $stateParams.resume || false; - $scope.shrinkView = false; - }); - - $scope.$on("$ionicView.enter", function() { - if ($scope.backedUp || $scope.resume) $ionicConfig.views.swipeBackEnabled(false); - }); - - $scope.$on("$ionicView.beforeLeave", function() { - $ionicConfig.views.swipeBackEnabled(true); - }); - - $scope.confirm = function() { - profileService.setDisclaimerAccepted(function(err) { - if (err) $log.error(err); - else { - $state.go('tabs.home', { - fromOnboarding: true - }); - } - }); - }; - - $scope.openExternalLink = function(url, target) { - externalLinkService.open(url, target); - }; - - $scope.openTerms = function() { - $scope.shrinkView = !$scope.shrinkView; - } - - $scope.goBack = function() { - $state.go('onboarding.backupRequest', { - walletId: $stateParams.walletId - }); - } - - -}); diff --git a/src/js/controllers/onboarding/terms.js b/src/js/controllers/onboarding/terms.js deleted file mode 100644 index 3a7c2adf5..000000000 --- a/src/js/controllers/onboarding/terms.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('termsController', function($scope, $log, $state, appConfigService, uxLanguage, profileService, externalLinkService, gettextCatalog) { - $scope.lang = uxLanguage.currentLanguage; - - $scope.confirm = function() { - profileService.setDisclaimerAccepted(function(err) { - if (err) $log.error(err); - else { - $state.go('tabs.home', { - fromOnboarding: true - }); - } - }); - }; - - $scope.openExternalLink = function() { - 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.'); - 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/tour.js b/src/js/controllers/onboarding/tour.js deleted file mode 100644 index bcea8c405..000000000 --- a/src/js/controllers/onboarding/tour.js +++ /dev/null @@ -1,88 +0,0 @@ -'use strict'; -angular.module('copayApp.controllers').controller('tourController', - function($scope, $state, $log, $timeout, $filter, ongoingProcess, profileService, rateService, popupService, gettextCatalog) { - - $scope.data = { - index: 0 - }; - - $scope.options = { - loop: false, - effect: 'flip', - speed: 500, - spaceBetween: 100 - } - - $scope.$on("$ionicSlides.sliderInitialized", function(event, data) { - $scope.slider = data.slider; - }); - - $scope.$on("$ionicSlides.slideChangeStart", function(event, data) { - $scope.data.index = data.slider.activeIndex; - }); - - $scope.$on("$ionicSlides.slideChangeEnd", function(event, data) {}); - - $scope.$on("$ionicView.enter", function(event, data) { - rateService.whenAvailable(function() { - var localCurrency = 'USD'; - var btcAmount = 1; - var rate = rateService.toFiat(btcAmount * 1e8, localCurrency); - $scope.localCurrencySymbol = '$'; - $scope.localCurrencyPerBtc = $filter('formatFiatAmount')(parseFloat(rate.toFixed(2), 10)); - $timeout(function() { - $scope.$apply(); - }) - }); - }); - - var retryCount = 0; - $scope.createDefaultWallet = function() { - ongoingProcess.set('creatingWallet', true); - $timeout(function() { - profileService.createDefaultWallet(function(err, walletClient) { - if (err) { - $log.warn(err); - - return $timeout(function() { - $log.warn('Retrying to create default wallet.....:' + ++retryCount); - if (retryCount > 3) { - ongoingProcess.set('creatingWallet', false); - popupService.showAlert( - gettextCatalog.getString('Cannot Create Wallet'), err, - function() { - retryCount = 0; - return $scope.createDefaultWallet(); - }, gettextCatalog.getString('Retry')); - } else { - return $scope.createDefaultWallet(); - } - }, 2000); - }; - ongoingProcess.set('creatingWallet', false); - var wallet = walletClient; - var walletId = wallet.credentials.walletId; - - $state.go('onboarding.collectEmail', { - walletId: walletId - }); - - /* - $state.go('onboarding.backupRequest', { - walletId: walletId - }); - */ - }); - }, 300); - }; - - $scope.goBack = function() { - if ($scope.data.index != 0) $scope.slider.slidePrev(); - else $state.go('onboarding.welcome'); - } - - $scope.slideNext = function() { - if ($scope.data.index != 2) $scope.slider.slideNext(); - else $state.go('onboarding.welcome'); - } - }); diff --git a/src/js/controllers/onboarding/welcomeController.js b/src/js/controllers/onboarding/welcomeController.js deleted file mode 100644 index 3b92d5d22..000000000 --- a/src/js/controllers/onboarding/welcomeController.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('welcomeController', function($scope, $state, $timeout, $ionicConfig, $log, profileService, startupService, storageService) { - - $scope.$on("$ionicView.afterEnter", function() { - startupService.ready(); - }); - - $scope.$on("$ionicView.enter", function() { - $ionicConfig.views.swipeBackEnabled(false); - }); - - $scope.$on("$ionicView.beforeLeave", function() { - $ionicConfig.views.swipeBackEnabled(true); - }); - - $scope.createProfile = function() { - $log.debug('Creating profile'); - profileService.createProfile(function(err) { - if (err) $log.warn(err); - }); - }; - -}); diff --git a/src/js/controllers/paperWallet.js b/src/js/controllers/paperWallet.js deleted file mode 100644 index 83346fbbc..000000000 --- a/src/js/controllers/paperWallet.js +++ /dev/null @@ -1,145 +0,0 @@ -angular.module('copayApp.controllers').controller('paperWalletController', - function($scope, $timeout, $log, $ionicModal, $ionicHistory, feeService, popupService, gettextCatalog, platformInfo, configService, profileService, $state, bitcore, ongoingProcess, txFormatService, $stateParams, walletService) { - - function _scanFunds(cb) { - function getPrivateKey(scannedKey, isPkEncrypted, passphrase, cb) { - if (!isPkEncrypted) return cb(null, scannedKey); - $scope.wallet.decryptBIP38PrivateKey(scannedKey, passphrase, null, cb); - }; - - function getBalance(privateKey, cb) { - $scope.wallet.getBalanceFromPrivateKey(privateKey, cb); - }; - - function checkPrivateKey(privateKey) { - try { - new bitcore.PrivateKey(privateKey, 'livenet'); - } catch (err) { - return false; - } - return true; - }; - - getPrivateKey($scope.scannedKey, $scope.isPkEncrypted, $scope.passphrase, function(err, privateKey) { - if (err) return cb(err); - if (!checkPrivateKey(privateKey)) return cb(new Error('Invalid private key')); - - getBalance(privateKey, function(err, balance) { - if (err) return cb(err); - return cb(null, privateKey, balance); - }); - }); - }; - - $scope.scanFunds = function() { - ongoingProcess.set('scanning', true); - $timeout(function() { - _scanFunds(function(err, privateKey, balance) { - ongoingProcess.set('scanning', false); - if (err) { - $log.error(err); - popupService.showAlert(gettextCatalog.getString('Error scanning funds:'), err || err.toString()); - $state.go('tabs.home'); - } else { - $scope.privateKey = privateKey; - $scope.balanceSat = balance; - if ($scope.balanceSat <= 0) - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Not funds found')); - var config = configService.getSync().wallet.settings; - $scope.balance = txFormatService.formatAmount(balance) + ' ' + config.unitName; - } - $scope.$apply(); - }); - }, 100); - }; - - function _sweepWallet(cb) { - walletService.getAddress($scope.wallet, true, function(err, destinationAddress) { - if (err) return cb(err); - - $scope.wallet.buildTxFromPrivateKey($scope.privateKey, destinationAddress, null, function(err, testTx) { - if (err) return cb(err); - var rawTxLength = testTx.serialize().length; - feeService.getCurrentFeeRate('livenet', function(err, feePerKB) { - var opts = {}; - opts.fee = Math.round((feePerKB * rawTxLength) / 2000); - $scope.wallet.buildTxFromPrivateKey($scope.privateKey, destinationAddress, opts, function(err, tx) { - if (err) return cb(err); - $scope.wallet.broadcastRawTx({ - rawTx: tx.serialize(), - network: 'livenet' - }, function(err, txid) { - if (err) return cb(err); - return cb(null, destinationAddress, txid); - }); - }); - }); - }); - }); - }; - - $scope.sweepWallet = function() { - ongoingProcess.set('sweepingWallet', true); - $scope.sending = true; - - $timeout(function() { - _sweepWallet(function(err, destinationAddress, txid) { - ongoingProcess.set('sweepingWallet', false); - $scope.sending = false; - if (err) { - $log.error(err); - popupService.showAlert(gettextCatalog.getString('Error sweeping wallet:'), err || err.toString()); - } else { - $scope.sendStatus = 'success'; - } - $scope.$apply(); - }); - }, 100); - }; - - $scope.onSuccessConfirm = function() { - $state.go('tabs.home'); - }; - - $scope.onWalletSelect = function(wallet) { - $scope.wallet = wallet; - }; - - $scope.showWalletSelector = function() { - if ($scope.singleWallet) return; - $scope.walletSelectorTitle = gettextCatalog.getString('Transfer to'); - $scope.showWallets = true; - }; - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - $scope.scannedKey = (data.stateParams && data.stateParams.privateKey) ? data.stateParams.privateKey : null; - $scope.isPkEncrypted = $scope.scannedKey ? ($scope.scannedKey.substring(0, 2) == '6P') : null; - $scope.sendStatus = null; - $scope.error = false; - - $scope.wallets = profileService.getWallets({ - onlyComplete: true, - network: 'livenet', - }); - $scope.singleWallet = $scope.wallets.length == 1; - - if (!$scope.wallets || !$scope.wallets.length) { - $scope.noMatchingWallet = true; - return; - } - }); - - $scope.$on("$ionicView.enter", function(event, data) { - $scope.wallet = $scope.wallets[0]; - if (!$scope.wallet) return; - if (!$scope.isPkEncrypted) $scope.scanFunds(); - else { - var message = gettextCatalog.getString('Private key encrypted. Enter password'); - popupService.showPrompt(null, message, null, function(res) { - $scope.passphrase = res; - $scope.scanFunds(); - }); - } - }); - - }); diff --git a/src/js/controllers/paymentUri.js b/src/js/controllers/paymentUri.js deleted file mode 100644 index 803f52a2e..000000000 --- a/src/js/controllers/paymentUri.js +++ /dev/null @@ -1,56 +0,0 @@ -'use strict'; -angular.module('copayApp.controllers').controller('paymentUriController', - function($rootScope, $scope, $stateParams, $location, $timeout, $ionicHistory, profileService, configService, lodash, bitcore, $state) { - function strip(number) { - return (parseFloat(number.toPrecision(12))); - }; - - // Build bitcoinURI with querystring - this.init = function() { - var query = []; - this.bitcoinURI = $stateParams.url; - - var URI = bitcore.URI; - var isUriValid = URI.isValid(this.bitcoinURI); - if (!URI.isValid(this.bitcoinURI)) { - this.error = true; - return; - } - var uri = new URI(this.bitcoinURI); - - if (uri && uri.address) { - var config = configService.getSync().wallet.settings; - var unitToSatoshi = config.unitToSatoshi; - var satToUnit = 1 / unitToSatoshi; - var unitName = config.unitName; - - if (uri.amount) { - uri.amount = strip(uri.amount * satToUnit) + ' ' + unitName; - } - uri.network = uri.address.network.name; - this.uri = uri; - } - }; - - this.getWallets = function(network) { - - $scope.wallets = []; - lodash.forEach(profileService.getWallets(network), function(w) { - var client = profileService.getClient(w.id); - profileService.isReady(client, function(err) { - if (err) return; - $scope.wallets.push(w); - }) - }); - }; - - this.selectWallet = function(wid) { - var self = this; - profileService.setAndStoreFocus(wid, function() {}); - $ionicHistory.removeBackView(); - $state.go('tabs.home'); - $timeout(function() { - $rootScope.$emit('paymentUri', self.bitcoinURI); - }, 1000); - }; - }); diff --git a/src/js/controllers/preferences.js b/src/js/controllers/preferences.js deleted file mode 100644 index ef95c00db..000000000 --- a/src/js/controllers/preferences.js +++ /dev/null @@ -1,105 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('preferencesController', - function($scope, $rootScope, $timeout, $log, $ionicHistory, configService, profileService, fingerprintService, walletService, platformInfo) { - var wallet; - var walletId; - - $scope.hiddenBalanceChange = function() { - var opts = { - balance: { - enabled: $scope.hiddenBalance.value - } - }; - profileService.toggleHideBalanceFlag(walletId, function(err) { - if (err) $log.error(err); - }); - }; - - $scope.encryptChange = function() { - if (!wallet) return; - var val = $scope.encryptEnabled.value; - - if (val && !walletService.isEncrypted(wallet)) { - $log.debug('Encrypting private key for', wallet.name); - walletService.encrypt(wallet, function(err) { - if (err) { - $log.warn(err); - - // ToDo show error? - $scope.encryptEnabled.value = false; - $timeout(function() { - $scope.$apply(); - }); - return; - } - profileService.updateCredentials(JSON.parse(wallet.export()), function() { - $log.debug('Wallet encrypted'); - return; - }); - }) - } else if (!val && walletService.isEncrypted(wallet)) { - walletService.decrypt(wallet, function(err) { - if (err) { - $log.warn(err); - - // ToDo show error? - $scope.encryptEnabled.value = true; - $timeout(function() { - $scope.$apply(); - }); - return; - } - profileService.updateCredentials(JSON.parse(wallet.export()), function() { - $log.debug('Wallet decrypted'); - return; - }); - }) - } - }; - - $scope.touchIdChange = function() { - var newStatus = $scope.touchIdEnabled.value; - walletService.setTouchId(wallet, !!newStatus, function(err) { - if (err) { - $scope.touchIdEnabled.value = !newStatus; - $timeout(function() { - $scope.$apply(); - }, 1); - return; - } - $log.debug('Touch Id status changed: ' + newStatus); - }); - }; - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - wallet = profileService.getWallet(data.stateParams.walletId); - walletId = wallet.credentials.walletId; - $scope.wallet = wallet; - $scope.isWindowsPhoneApp = platformInfo.isCordova && platformInfo.isWP; - $scope.externalSource = null; - - if (!wallet) - return $ionicHistory.goBack(); - - var config = configService.getSync(); - - $scope.hiddenBalance = { - value: $scope.wallet.balanceHidden - }; - - $scope.encryptEnabled = { - value: walletService.isEncrypted(wallet) - }; - - $scope.touchIdAvailable = fingerprintService.isAvailable(); - $scope.touchIdEnabled = { - value: config.touchIdFor ? config.touchIdFor[walletId] : null - }; - - $scope.deleted = false; - if (wallet.credentials && !wallet.credentials.mnemonicEncrypted && !wallet.credentials.mnemonic) { - $scope.deleted = true; - } - }); - }); diff --git a/src/js/controllers/preferencesAbout.js b/src/js/controllers/preferencesAbout.js deleted file mode 100644 index 91a49a0d4..000000000 --- a/src/js/controllers/preferencesAbout.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('preferencesAbout', - function($scope, $window, appConfigService, gettextCatalog, externalLinkService) { - - $scope.title = gettextCatalog.getString('About') + ' ' + appConfigService.nameCase; - $scope.version = $window.version; - $scope.commitHash = $window.commitHash; - - $scope.openExternalLink = function() { - 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.'); - var okText = gettextCatalog.getString('Open GitHub'); - var cancelText = gettextCatalog.getString('Go Back'); - externalLinkService.open(url, optIn, title, message, okText, cancelText); - }; - }); diff --git a/src/js/controllers/preferencesAdvancedController.js b/src/js/controllers/preferencesAdvancedController.js deleted file mode 100644 index c49c6e9e5..000000000 --- a/src/js/controllers/preferencesAdvancedController.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('preferencesAdvancedController', function($scope, $timeout, $state, $stateParams, profileService) { - var wallet = profileService.getWallet($stateParams.walletId); - $scope.network = wallet.network; - $scope.wallet = wallet; - - $scope.goToAddresses = function() { - $state.go('tabs.settings.addresses', { - walletId: $stateParams.walletId, - }); - }; - - $timeout(function() { - $scope.$apply(); - }, 1); -}); diff --git a/src/js/controllers/preferencesAlias.js b/src/js/controllers/preferencesAlias.js deleted file mode 100644 index 8cb9f2670..000000000 --- a/src/js/controllers/preferencesAlias.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('preferencesAliasController', - function($scope, $timeout, $stateParams, $ionicHistory, configService, profileService, walletService) { - var wallet = profileService.getWallet($stateParams.walletId); - var walletId = wallet.credentials.walletId; - var config = configService.getSync(); - - $scope.walletName = wallet.credentials.walletName; - $scope.walletAlias = config.aliasFor && config.aliasFor[walletId] ? config.aliasFor[walletId] : wallet.credentials.walletName; - $scope.alias = { - value: $scope.walletAlias - }; - - $scope.save = function() { - var opts = { - aliasFor: {} - }; - - opts.aliasFor[walletId] = $scope.alias.value; - - configService.set(opts, function(err) { - if (err) $log.warn(err); - $ionicHistory.goBack(); - }); - }; - }); diff --git a/src/js/controllers/preferencesAltCurrency.js b/src/js/controllers/preferencesAltCurrency.js deleted file mode 100644 index 33c0e47fb..000000000 --- a/src/js/controllers/preferencesAltCurrency.js +++ /dev/null @@ -1,89 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('preferencesAltCurrencyController', - function($scope, $log, $timeout, $ionicHistory, configService, rateService, lodash, profileService, walletService, storageService) { - - var next = 10; - var completeAlternativeList = []; - - function init() { - var unusedCurrencyList = [{ - isoCode: 'LTL' - }, { - isoCode: 'BTC' - }]; - rateService.whenAvailable(function() { - - $scope.listComplete = false; - - var idx = lodash.indexBy(unusedCurrencyList, 'isoCode'); - var idx2 = lodash.indexBy($scope.lastUsedAltCurrencyList, 'isoCode'); - - completeAlternativeList = lodash.reject(rateService.listAlternatives(true), function(c) { - return idx[c.isoCode] || idx2[c.isoCode]; - }); - - $scope.altCurrencyList = completeAlternativeList.slice(0, 10); - - $timeout(function() { - $scope.$apply(); - }); - }); - } - - $scope.loadMore = function() { - $timeout(function() { - $scope.altCurrencyList = completeAlternativeList.slice(0, next); - next += 10; - $scope.listComplete = $scope.altCurrencyList.length >= completeAlternativeList.length; - $scope.$broadcast('scroll.infiniteScrollComplete'); - }, 100); - }; - - $scope.findCurrency = function(search) { - if (!search) init(); - $scope.altCurrencyList = lodash.filter(completeAlternativeList, function(item) { - var val = item.name; - return lodash.includes(val.toLowerCase(), search.toLowerCase()); - }); - $timeout(function() { - $scope.$apply(); - }); - }; - - $scope.save = function(newAltCurrency) { - var opts = { - wallet: { - settings: { - alternativeName: newAltCurrency.name, - alternativeIsoCode: newAltCurrency.isoCode, - } - } - }; - - configService.set(opts, function(err) { - if (err) $log.warn(err); - - $ionicHistory.goBack(); - saveLastUsed(newAltCurrency); - walletService.updateRemotePreferences(profileService.getWallets()); - }); - }; - - function saveLastUsed(newAltCurrency) { - $scope.lastUsedAltCurrencyList.unshift(newAltCurrency); - $scope.lastUsedAltCurrencyList = lodash.uniq($scope.lastUsedAltCurrencyList, 'isoCode'); - $scope.lastUsedAltCurrencyList = $scope.lastUsedAltCurrencyList.slice(0, 3); - storageService.setLastCurrencyUsed(JSON.stringify($scope.lastUsedAltCurrencyList), function() {}); - }; - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - var config = configService.getSync(); - $scope.currentCurrency = config.wallet.settings.alternativeIsoCode; - - storageService.getLastCurrencyUsed(function(err, lastUsedAltCurrency) { - $scope.lastUsedAltCurrencyList = lastUsedAltCurrency ? JSON.parse(lastUsedAltCurrency) : []; - init(); - }); - }); - }); diff --git a/src/js/controllers/preferencesBitpayCard.js b/src/js/controllers/preferencesBitpayCard.js deleted file mode 100644 index 8ac6ba2d7..000000000 --- a/src/js/controllers/preferencesBitpayCard.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('preferencesBitpayCardController', - function($scope, $state, $timeout, $ionicHistory, bitpayCardService, popupService, gettextCatalog, $log) { - - $scope.remove = function(card) { - var msg = gettextCatalog.getString('Are you sure you would like to remove your BitPay Card ({{lastFourDigits}}) from this device?', { - lastFourDigits: card.lastFourDigits - }); - popupService.showConfirm(null, msg, null, null, function(res) { - $log.info('Removing bitpay card:' + card.eid) - if (res) - remove(card.eid); - }); - }; - - var remove = function(cardEid) { - bitpayCardService.remove(cardEid, function(err) { - if (err) { - return popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Could not remove card')); - } - $ionicHistory.clearHistory(); - $timeout(function() { - $state.go('tabs.home'); - }, 100); - }); - }; - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - bitpayCardService.getCards(function(err, data) { - if (err) return; - - $scope.bitpayCards = data; - }); - }); - - }); diff --git a/src/js/controllers/preferencesBitpayServices.js b/src/js/controllers/preferencesBitpayServices.js deleted file mode 100644 index 2af60532d..000000000 --- a/src/js/controllers/preferencesBitpayServices.js +++ /dev/null @@ -1,78 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('preferencesBitpayServicesController', - function($rootScope, $scope, $state, $timeout, $ionicHistory, bitpayAccountService, bitpayCardService, popupService, gettextCatalog) { - - $scope.removeAccount = function(account) { - var title = gettextCatalog.getString('Remove BitPay Account?'); - var msg = gettextCatalog.getString('Removing your BitPay account will remove all associated BitPay account data from this device. Are you sure you would like to remove your BitPay Account ({{email}}) from this device?', { - email: account.email - }); - popupService.showConfirm(title, msg, null, null, function(res) { - if (res) { - removeAccount(account); - } - }); - }; - - $scope.removeCard = function(card) { - var title = gettextCatalog.getString('Remove BitPay Card?'); - var msg = gettextCatalog.getString('Are you sure you would like to remove your BitPay Card ({{lastFourDigits}}) from this device?', { - lastFourDigits: card.lastFourDigits - }); - popupService.showConfirm(title, msg, null, null, function(res) { - if (res) { - removeCard(card); - } - }); - }; - - var removeAccount = function(account) { - bitpayAccountService.removeAccount(account, function(err) { - if (err) { - return popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Could not remove account')); - } - setScope(function() { - // If there are no paired accounts then change views. - if ($scope.bitpayAccounts.length == 0) { - $state.go('tabs.settings').then(function() { - $ionicHistory.clearHistory(); - $state.go('tabs.home'); - }); - } - }); - }); - }; - - var removeCard = function(card) { - bitpayCardService.remove(card.id, function(err) { - if (err) { - return popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Could not remove card')); - } - setScope(); - }); - }; - - var setScope = function(cb) { - bitpayAccountService.getAccounts(function(err, accounts) { - if (err) return; - $scope.bitpayAccounts = accounts; - - bitpayCardService.getCards(function(err, cards) { - if (err) return; - $scope.bitpayCards = cards; - if (cb) { - cb(); - } - $timeout(function(){ - $rootScope.$apply(); - }, 10); - }); - }); - }; - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - setScope(); - }); - - }); diff --git a/src/js/controllers/preferencesBwsUrl.js b/src/js/controllers/preferencesBwsUrl.js deleted file mode 100644 index 010d8ae70..000000000 --- a/src/js/controllers/preferencesBwsUrl.js +++ /dev/null @@ -1,56 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('preferencesBwsUrlController', - function($scope, $log, $stateParams, configService, applicationService, profileService, storageService, appConfigService) { - $scope.success = null; - - var wallet = profileService.getWallet($stateParams.walletId); - $scope.wallet = wallet; - - var walletId = wallet.credentials.walletId; - var defaults = configService.getDefaults(); - var config = configService.getSync(); - $scope.appName = appConfigService.nameCase; - $scope.bwsurl = { - value: (config.bwsFor && config.bwsFor[walletId]) || defaults.bws.url - }; - - $scope.resetDefaultUrl = function() { - $scope.bwsurl.value = defaults.bws.url; - }; - - $scope.save = function() { - - var bws; - switch ($scope.bwsurl.value) { - case 'prod': - case 'production': - bws = 'https://bws.bitpay.com/bws/api' - break; - case 'sta': - case 'staging': - bws = 'https://bws-staging.b-pay.net/bws/api' - break; - case 'loc': - case 'local': - bws = 'http://localhost:3232/bws/api' - break; - }; - if (bws) { - $log.info('Using BWS URL Alias to ' + bws); - $scope.bwsurl.value = bws; - } - - var opts = { - bwsFor: {} - }; - opts.bwsFor[walletId] = $scope.bwsurl.value; - - configService.set(opts, function(err) { - if (err) $log.debug(err); - storageService.setCleanAndScanAddresses(walletId, function() { - applicationService.restart(); - }); - }); - }; - }); diff --git a/src/js/controllers/preferencesCoinbase.js b/src/js/controllers/preferencesCoinbase.js deleted file mode 100644 index 5537fb37b..000000000 --- a/src/js/controllers/preferencesCoinbase.js +++ /dev/null @@ -1,48 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('preferencesCoinbaseController', function($scope, $timeout, $log, $state, $ionicHistory, lodash, ongoingProcess, popupService, coinbaseService) { - - $scope.revokeToken = function() { - popupService.showConfirm('Coinbase', 'Are you sure you would like to log out of your Coinbase account?', null, null, function(res) { - if (res) { - coinbaseService.logout(function() { - $ionicHistory.clearHistory(); - $timeout(function() { - $state.go('tabs.home'); - }, 100); - }); - } - }); - }; - - $scope.$on("$ionicView.enter", function(event, data){ - ongoingProcess.set('connectingCoinbase', true); - coinbaseService.init(function(err, data) { - if (err || lodash.isEmpty(data)) { - ongoingProcess.set('connectingCoinbase', false); - if (err) { - $log.error(err); - var errorId = err.errors ? err.errors[0].id : null; - err = err.errors ? err.errors[0].message : err; - popupService.showAlert('Error connecting to Coinbase', err, function() { - if (errorId == 'revoked_token') { - coinbaseService.logout(function() {}); - $ionicHistory.goBack(); - } - }); - } - return; - } - var accessToken = data.accessToken; - var accountId = data.accountId; - coinbaseService.getAccount(accessToken, accountId, function(err, account) { - ongoingProcess.set('connectingCoinbase', false); - $scope.coinbaseAccount = account.data; - }); - coinbaseService.getCurrentUser(accessToken, function(err, user) { - $scope.coinbaseUser = user.data; - }); - }); - }); - -}); diff --git a/src/js/controllers/preferencesColor.js b/src/js/controllers/preferencesColor.js deleted file mode 100644 index 5bb68797c..000000000 --- a/src/js/controllers/preferencesColor.js +++ /dev/null @@ -1,74 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('preferencesColorController', function($scope, $timeout, $log, $stateParams, $ionicHistory, configService, profileService) { - var wallet = profileService.getWallet($stateParams.walletId); - $scope.wallet = wallet; - var walletId = wallet.credentials.walletId; - var config = configService.getSync(); - config.colorFor = config.colorFor || {}; - - var retries = 3; - $scope.colorCount = getColorCount(); - setCurrentColorIndex(); - - $scope.save = function(i) { - var color = indexToColor(i); - if (!color) return; - - var opts = { - colorFor: {} - }; - opts.colorFor[walletId] = color; - - configService.set(opts, function(err) { - if (err) $log.warn(err); - $ionicHistory.goBack(); - }); - }; - - function getColorDefault() { - return rgb2hex(window.getComputedStyle(document.getElementsByClassName('wallet-color-default')[0]).color); - }; - - function getColorCount() { - var count = window.getComputedStyle(document.getElementsByClassName('wallet-color-count')[0]).content; - return parseInt(count.replace(/[^0-9]/g, '')); - }; - - function setCurrentColorIndex() { - try { - $scope.currentColorIndex = colorToIndex(config.colorFor[walletId] || getColorDefault()); - } catch(e) { - // Wait for DOM to render and try again. - $timeout(function() { - if (retries > 0) { - retries -= 1; - setCurrentColorIndex(); - } - }, 100); - } - }; - - function colorToIndex(color) { - for (var i = 0; i < $scope.colorCount; i++) { - if (indexToColor(i) == color.toLowerCase()) { - return i; - } - } - return undefined; - }; - - function indexToColor(i) { - // Expect an exception to be thrown if can't getComputedStyle(). - return rgb2hex(window.getComputedStyle(document.getElementsByClassName('wallet-color-' + i)[0]).backgroundColor); - }; - - function rgb2hex(rgb) { - rgb = rgb.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i); - return (rgb && rgb.length === 4) ? "#" + - ("0" + parseInt(rgb[1],10).toString(16)).slice(-2) + - ("0" + parseInt(rgb[2],10).toString(16)).slice(-2) + - ("0" + parseInt(rgb[3],10).toString(16)).slice(-2) : ''; - }; - -}); diff --git a/src/js/controllers/preferencesDelete.js b/src/js/controllers/preferencesDelete.js deleted file mode 100644 index 21c1d1c64..000000000 --- a/src/js/controllers/preferencesDelete.js +++ /dev/null @@ -1,51 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('preferencesDeleteWalletController', - function($scope, $ionicHistory, gettextCatalog, lodash, profileService, $state, ongoingProcess, popupService, pushNotificationsService) { - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - if (!data.stateParams || !data.stateParams.walletId) { - popupService.showAlert(null, gettextCatalog.getString('No wallet selected'), function() { - $ionicHistory.goBack(); - }); - return; - } - $scope.wallet = profileService.getWallet(data.stateParams.walletId); - if (!$scope.wallet) { - popupService.showAlert(null, gettextCatalog.getString('No wallet found'), function() { - $ionicHistory.goBack(); - }); - return; - } - $scope.alias = lodash.isEqual($scope.wallet.name, $scope.wallet.credentials.walletName) ? null : $scope.wallet.name + ' '; - $scope.walletName = $scope.wallet.credentials.walletName; - }); - - $scope.showDeletePopup = function() { - var title = gettextCatalog.getString('Warning!'); - var message = gettextCatalog.getString('Are you sure you want to delete this wallet?'); - popupService.showConfirm(title, message, null, null, function(res) { - if (res) deleteWallet(); - }); - }; - - function deleteWallet() { - ongoingProcess.set('deletingWallet', true); - profileService.deleteWalletClient($scope.wallet, function(err) { - ongoingProcess.set('deletingWallet', false); - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err.message || err); - } else { - pushNotificationsService.unsubscribe($scope.wallet); - $ionicHistory.nextViewOptions({ - disableAnimate: true, - historyRoot: true - }); - $ionicHistory.clearHistory(); - $state.go('tabs.settings').then(function() { - $state.transitionTo('tabs.home'); - }); - } - }); - }; - }); diff --git a/src/js/controllers/preferencesExternal.js b/src/js/controllers/preferencesExternal.js deleted file mode 100644 index 916dc0e60..000000000 --- a/src/js/controllers/preferencesExternal.js +++ /dev/null @@ -1,28 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('preferencesExternalController', function($scope, $stateParams, lodash, gettextCatalog, popupService, profileService, walletService) { - var wallet = profileService.getWallet($stateParams.walletId); - - $scope.externalSource = lodash.find(walletService.externalSource, function(source) { - return source.id == wallet.getPrivKeyExternalSourceName(); - }); - - if ($scope.externalSource.isEmbeddedHardware) { - $scope.hardwareConnected = $scope.externalSource.version.length > 0; - - $scope.showMneumonicFromHardwarePopup = function() { - var title = gettextCatalog.getString('Warning!'); - var message = gettextCatalog.getString('Are you being watched? Anyone with your recovery phrase can access or spend your bitcoin.'); - popupService.showConfirm(title, message, null, null, function(res) { - if (res) { - walletService.showMneumonicFromHardware(wallet, function(err) { - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err.message || err); - } - }); - } - }); - }; - } - -}); \ No newline at end of file diff --git a/src/js/controllers/preferencesFee.js b/src/js/controllers/preferencesFee.js deleted file mode 100644 index 9339b413e..000000000 --- a/src/js/controllers/preferencesFee.js +++ /dev/null @@ -1,118 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('preferencesFeeController', function($scope, $timeout, $ionicHistory, lodash, gettextCatalog, configService, feeService, ongoingProcess, popupService) { - - $scope.save = function(newFee) { - - $scope.currentFeeLevel = newFee; - - if ($scope.currentFeeLevel != 'custom') updateCurrentValues(); - else showCustomFeePrompt(); - - if ($scope.noSave) return; - - var opts = { - wallet: { - settings: { - feeLevel: newFee - } - } - }; - - configService.set(opts, function(err) { - if (err) $log.debug(err); - $timeout(function() { - $scope.$apply(); - }); - }); - }; - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - $scope.init(); - }); - - $scope.init = function() { - $scope.network = $scope.network || 'livenet'; - $scope.feeOpts = feeService.feeOpts; - $scope.currentFeeLevel = $scope.feeLevel || feeService.getCurrentFeeLevel(); - $scope.loadingFee = true; - feeService.getFeeLevels(function(err, levels) { - $scope.loadingFee = false; - if (err) { - //Error is already formatted - popupService.showAlert(err); - return; - } - $scope.feeLevels = levels; - updateCurrentValues(); - $timeout(function() { - $scope.$apply(); - }); - }); - }; - - var updateCurrentValues = function() { - if (lodash.isEmpty($scope.feeLevels) || lodash.isEmpty($scope.currentFeeLevel)) return; - - var value = lodash.find($scope.feeLevels[$scope.network], { - level: $scope.currentFeeLevel - }); - - if (lodash.isEmpty(value)) { - $scope.feePerSatByte = $scope.currentFeeLevel == 'custom' ? $scope.feePerSatByte : null; - $scope.avgConfirmationTime = null; - setMinWarning(); - setMaxWarning(); - return; - } - - $scope.feePerSatByte = (value.feePerKB / 1000).toFixed(); - $scope.avgConfirmationTime = value.nbBlocks * 10; - $scope.invalidCustomFeeEntered = false; - setMinWarning(); - setMaxWarning(); - }; - - $scope.chooseNewFee = function() { - $scope.hideModal($scope.currentFeeLevel, $scope.customFeePerKB); - }; - - var showCustomFeePrompt = function() { - $scope.invalidCustomFeeEntered = true; - $scope.showMaxWarning = false; - $scope.showMinWarning = false; - popupService.showPrompt(gettextCatalog.getString('Custom Fee'), gettextCatalog.getString('Set your own fee in satoshis/byte'), null, function(text) { - if (!text || !parseInt(text) || parseInt(text) <= 0) return; - $scope.feePerSatByte = parseInt(text); - $scope.customFeePerKB = ($scope.feePerSatByte * 1000).toFixed(); - setMaxWarning(); - setMinWarning(); - $timeout(function() { - $scope.$apply(); - }); - }); - }; - - $scope.getMinimumRecommeded = function() { - var value = lodash.find($scope.feeLevels[$scope.network], { - level: 'superEconomy' - }); - return parseInt((value.feePerKB / 1000).toFixed()); - }; - - var setMinWarning = function() { - if (parseInt($scope.feePerSatByte) < $scope.getMinimumRecommeded()) $scope.showMinWarning = true; - else $scope.showMinWarning = false; - }; - - var setMaxWarning = function() { - if (parseInt($scope.feePerSatByte) > 1000) { - $scope.showMaxWarning = true; - $scope.invalidCustomFeeEntered = true; - } else { - $scope.showMaxWarning = false; - $scope.invalidCustomFeeEntered = false; - } - }; - -}); diff --git a/src/js/controllers/preferencesGlidera.js b/src/js/controllers/preferencesGlidera.js deleted file mode 100644 index 12469e00f..000000000 --- a/src/js/controllers/preferencesGlidera.js +++ /dev/null @@ -1,36 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('preferencesGlideraController', - function($scope, $timeout, $state, $ionicHistory, glideraService, popupService) { - - $scope.revokeToken = function() { - popupService.showConfirm('Glidera', 'Are you sure you would like to log out of your Glidera account?', null, null, function(res) { - if (res) { - glideraService.remove(function() { - $ionicHistory.clearHistory(); - $timeout(function() { - $state.go('tabs.home'); - }, 100); - }); - } - }); - }; - - $scope.$on("$ionicView.afterEnter", function(event, data){ - glideraService.updateStatus($scope.account); - }); - - $scope.$on("$ionicView.beforeEnter", function(event, data){ - $scope.account = {}; - glideraService.init(function(err, glidera) { - if (err || !glidera) { - if (err) popupService.showAlert('Error connecting Glidera', err); - return; - } - $scope.account['token'] = glidera.token; - $scope.account['permissions'] = glidera.permissions; - $scope.account['status'] = glidera.status; - }); - }); - - }); diff --git a/src/js/controllers/preferencesHistory.js b/src/js/controllers/preferencesHistory.js deleted file mode 100644 index 68c6f8daa..000000000 --- a/src/js/controllers/preferencesHistory.js +++ /dev/null @@ -1,152 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('preferencesHistory', - function($scope, $log, $stateParams, $timeout, $state, $ionicHistory, storageService, platformInfo, profileService, lodash, appConfigService, walletService) { - $scope.wallet = profileService.getWallet($stateParams.walletId); - $scope.csvReady = false; - $scope.isCordova = platformInfo.isCordova; - $scope.appName = appConfigService.nameCase; - - - // TODO : move this to walletService. - $scope.csvHistory = function(cb) { - var allTxs = []; - - function getHistory(cb) { - storageService.getTxHistory($scope.wallet.id, function(err, txs) { - if (err) return cb(err); - - var txsFromLocal = []; - try { - txsFromLocal = JSON.parse(txs); - } catch (ex) { - $log.warn(ex); - } - - allTxs.push(txsFromLocal); - return cb(null, lodash.compact(lodash.flatten(allTxs))); - }); - }; - - $log.debug('Generating CSV from History'); - getHistory(function(err, txs) { - if (err || lodash.isEmpty(txs)) { - if (err) { - $log.warn('Failed to generate CSV:', err); - $scope.err = err; - } else { - $log.warn('Failed to generate CSV: no transactions'); - $scope.err = 'no transactions'; - } - if (cb) return cb(err); - return; - } - $log.debug('Wallet Transaction History Length:', txs.length); - - $scope.satToUnit = 1 / $scope.unitToSatoshi; - var data = txs; - var satToBtc = 1 / 100000000; - $scope.csvContent = []; - $scope.csvFilename = $scope.appName + '-' + $scope.wallet.name + '.csv'; - $scope.csvHeader = ['Date', 'Destination', 'Description', 'Amount', 'Currency', 'Txid', 'Creator', 'Copayers', 'Comment']; - - var _amount, _note, _copayers, _creator, _comment; - data.forEach(function(it, index) { - var amount = it.amount; - - if (it.action == 'moved') - amount = 0; - - _copayers = ''; - _creator = ''; - - if (it.actions && it.actions.length > 1) { - for (var i = 0; i < it.actions.length; i++) { - _copayers += it.actions[i].copayerName + ':' + it.actions[i].type + ' - '; - } - _creator = (it.creatorName && it.creatorName != 'undefined') ? it.creatorName : ''; - } - _amount = (it.action == 'sent' ? '-' : '') + (amount * satToBtc).toFixed(8); - _note = it.message || ''; - _comment = it.note ? it.note.body : ''; - - if (it.action == 'moved') - _note += ' Moved:' + (it.amount * satToBtc).toFixed(8) - - $scope.csvContent.push({ - 'Date': formatDate(it.time * 1000), - 'Destination': it.addressTo || '', - 'Description': _note, - 'Amount': _amount, - 'Currency': 'BTC', - 'Txid': it.txid, - 'Creator': _creator, - 'Copayers': _copayers, - 'Comment': _comment - }); - - if (it.fees && (it.action == 'moved' || it.action == 'sent')) { - var _fee = (it.fees * satToBtc).toFixed(8) - $scope.csvContent.push({ - 'Date': formatDate(it.time * 1000), - 'Destination': 'Bitcoin Network Fees', - 'Description': '', - 'Amount': '-' + _fee, - 'Currency': 'BTC', - 'Txid': '', - 'Creator': '', - 'Copayers': '' - }); - } - }); - - $scope.csvReady = true; - $timeout(function() { - $scope.$apply(); - }, 100); - - if (cb) - return cb(); - return; - }); - - function formatDate(date) { - var dateObj = new Date(date); - if (!dateObj) { - $log.debug('Error formating a date'); - return 'DateError' - } - if (!dateObj.toJSON()) { - return ''; - } - - return dateObj.toJSON(); - }; - }; - - $scope.clearTransactionHistory = function() { - $log.info('Removing Transaction history ' + $scope.wallet.id); - - walletService.clearTxHistory($scope.wallet, function(err) { - - if (err) { - $log.error(err); - return; - } - - $log.info('Transaction history cleared for :' + $scope.wallet.id); - - $ionicHistory.removeBackView(); - $state.go('tabs.home'); - $timeout(function() { - $state.transitionTo('tabs.wallet', { - walletId: $scope.wallet.id - }); - }, 100); - }); - }; - - $scope.$on("$ionicView.enter", function(event, data) { - $scope.csvHistory(); - }); - }); diff --git a/src/js/controllers/preferencesInformation.js b/src/js/controllers/preferencesInformation.js deleted file mode 100644 index 9362d883f..000000000 --- a/src/js/controllers/preferencesInformation.js +++ /dev/null @@ -1,56 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('preferencesInformation', - function($scope, $log, $ionicHistory, platformInfo, lodash, profileService, configService, $stateParams, $state, walletService) { - var wallet = profileService.getWallet($stateParams.walletId); - $scope.wallet = wallet; - - var walletId = wallet.id; - var config = configService.getSync(); - var colorCounter = 1; - var BLACK_WALLET_COLOR = '#202020'; - $scope.isCordova = platformInfo.isCordova; - config.colorFor = config.colorFor || {}; - - $scope.saveBlack = function() { - function save(color) { - var opts = { - colorFor: {} - }; - opts.colorFor[walletId] = color; - - configService.set(opts, function(err) { - $ionicHistory.removeBackView(); - $state.go('tabs.home'); - if (err) $log.warn(err); - }); - }; - - if (colorCounter != 5) return colorCounter++; - save(BLACK_WALLET_COLOR); - }; - - $scope.$on("$ionicView.enter", function(event, data) { - var c = wallet.credentials; - var basePath = c.getBaseAddressDerivationPath(); - - $scope.wallet = wallet; - $scope.walletName = c.walletName; - $scope.walletId = c.walletId; - $scope.network = c.network; - $scope.addressType = c.addressType || 'P2SH'; - $scope.derivationStrategy = c.derivationStrategy || 'BIP45'; - $scope.basePath = basePath; - $scope.M = c.m; - $scope.N = c.n; - $scope.pubKeys = lodash.pluck(c.publicKeyRing, 'xPubKey'); - $scope.externalSource = null; - - if (wallet.isPrivKeyExternal()) { - $scope.externalSource = lodash.find(walletService.externalSource, function(source) { - return source.id == wallet.getPrivKeyExternalSourceName(); - }).name; - } - }); - - }); diff --git a/src/js/controllers/preferencesLanguage.js b/src/js/controllers/preferencesLanguage.js deleted file mode 100644 index c8d14d30d..000000000 --- a/src/js/controllers/preferencesLanguage.js +++ /dev/null @@ -1,39 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('preferencesLanguageController', - function($scope, $log, $ionicHistory, configService, profileService, uxLanguage, walletService, externalLinkService, gettextCatalog) { - - $scope.availableLanguages = uxLanguage.getLanguages(); - - $scope.openExternalLink = function() { - var url = 'https://crowdin.com/project/copay'; - var optIn = true; - var title = gettextCatalog.getString('Open Translation Community'); - var message = gettextCatalog.getString('You can make contributions by signing up on our Crowdin community translation website. We’re looking forward to hearing from you!'); - var okText = gettextCatalog.getString('Open Crowdin'); - var cancelText = gettextCatalog.getString('Go Back'); - externalLinkService.open(url, optIn, title, message, okText, cancelText); - }; - - $scope.save = function(newLang) { - var opts = { - wallet: { - settings: { - defaultLanguage: newLang - } - } - }; - - uxLanguage._set(newLang); - configService.set(opts, function(err) { - if (err) $log.warn(err); - walletService.updateRemotePreferences(profileService.getWallets()); - }); - - $ionicHistory.goBack(); - }; - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - $scope.currentLanguage = uxLanguage.getCurrentLanguage(); - }); - }); diff --git a/src/js/controllers/preferencesLogs.js b/src/js/controllers/preferencesLogs.js deleted file mode 100644 index 5ee106bf0..000000000 --- a/src/js/controllers/preferencesLogs.js +++ /dev/null @@ -1,73 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('preferencesLogs', - function($scope, historicLog, lodash, configService, gettextCatalog) { - - var config = configService.getSync(); - var logLevels = historicLog.getLevels(); - var selectedLevel; - - $scope.logOptions = lodash.indexBy(logLevels, 'level'); - - var filterLogs = function(weight) { - $scope.filteredLogs = historicLog.get(weight); - }; - - $scope.setOptionSelected = function(level) { - var weight = $scope.logOptions[level].weight; - $scope.fillClass = 'fill-bar-' + level; - filterLogs(weight); - lodash.each($scope.logOptions, function(opt) { - opt.selected = opt.weight <= weight ? true : false; - opt.head = opt.weight == weight; - }); - - // Save the setting. - var opts = { - log: { - filter: level - } - }; - configService.set(opts, function(err) { - if (err) $log.debug(err); - }); - }; - - $scope.prepareLogs = function() { - var log = 'Copay Session Logs\n Be careful, this could contain sensitive private data\n\n'; - log += '\n\n'; - log += historicLog.get().map(function(v) { - return '[' + v.timestamp + '][' + v.level + ']' + v.msg; - }).join('\n'); - - return log; - }; - - $scope.sendLogs = function() { - var body = $scope.prepareLogs(); - - window.plugins.socialsharing.shareViaEmail( - body, - 'Copay Logs', - null, // TO: must be null or an array - null, // CC: must be null or an array - null, // BCC: must be null or an array - null, // FILES: can be null, a string, or an array - function() {}, - function() {} - ); - }; - - $scope.showOptionsMenu = function() { - $scope.showOptions = true; - }; - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - selectedLevel = lodash.has(config, 'log.filter') ? historicLog.getLevel(config.log.filter) : historicLog.getDefaultLevel(); - $scope.setOptionSelected(selectedLevel.level); - }); - - $scope.$on("$ionicView.enter", function(event, data) { - filterLogs(selectedLevel.weight); - }); - }); diff --git a/src/js/controllers/preferencesNotifications.js b/src/js/controllers/preferencesNotifications.js deleted file mode 100644 index 3d78e98db..000000000 --- a/src/js/controllers/preferencesNotifications.js +++ /dev/null @@ -1,93 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('preferencesNotificationsController', function($scope, $log, $timeout, appConfigService, lodash, configService, platformInfo, pushNotificationsService, emailService) { - var updateConfig = function() { - var config = configService.getSync(); - $scope.appName = appConfigService.nameCase; - $scope.PNEnabledByUser = true; - $scope.usePushNotifications = platformInfo.isCordova && !platformInfo.isWP; - $scope.isIOSApp = platformInfo.isIOS && platformInfo.isCordova; - - $scope.pushNotifications = { - value: config.pushNotificationsEnabled - }; - - var isConfirmedTxsNotificationsEnabled = config.confirmedTxsNotifications ? config.confirmedTxsNotifications.enabled : false; - $scope.confirmedTxsNotifications = { - value: isConfirmedTxsNotificationsEnabled - }; - - $scope.latestEmail = { - value: emailService.getEmailIfEnabled() - }; - - $scope.newEmail = lodash.clone($scope.latestEmail); - var isEmailEnabled = config.emailNotifications ? config.emailNotifications.enabled : false; - - $scope.emailNotifications = { - value: isEmailEnabled && $scope.newEmail.value ? true : false - }; - - $timeout(function() { - $scope.$apply(); - }); - }; - - $scope.pushNotificationsChange = function() { - if (!$scope.pushNotifications) return; - var opts = { - pushNotificationsEnabled: $scope.pushNotifications.value - }; - configService.set(opts, function(err) { - if (err) $log.debug(err); - if (opts.pushNotificationsEnabled) - pushNotificationsService.init(); - else - pushNotificationsService.disable(); - }); - }; - - $scope.confirmedTxsNotificationsChange = function() { - if (!$scope.pushNotifications) return; - var opts = { - confirmedTxsNotifications: { - enabled: $scope.confirmedTxsNotifications.value - } - }; - configService.set(opts, function(err) { - if (err) $log.debug(err); - }); - }; - - $scope.emailNotificationsChange = function() { - var opts = { - enabled: $scope.emailNotifications.value, - email: $scope.newEmail.value - }; - - $scope.latestEmail = { - value: emailService.getEmailIfEnabled() - }; - - emailService.updateEmail(opts); - }; - - $scope.save = function() { - emailService.updateEmail({ - enabled: $scope.emailNotifications.value, - email: $scope.newEmail.value - }); - - $scope.latestEmail = { - value: $scope.newEmail.value - }; - - $timeout(function() { - $scope.$apply(); - }); - }; - - $scope.$on("$ionicView.enter", function(event, data) { - updateConfig(); - }); -}); diff --git a/src/js/controllers/preferencesUnit.js b/src/js/controllers/preferencesUnit.js deleted file mode 100644 index 235deb3b2..000000000 --- a/src/js/controllers/preferencesUnit.js +++ /dev/null @@ -1,43 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('preferencesUnitController', function($scope, $log, configService, $ionicHistory, gettextCatalog, walletService, profileService) { - - var config = configService.getSync(); - $scope.unitList = [{ - name: 'bits (1,000,000 bits = 1BTC)', - shortName: 'bits', - value: 100, - decimals: 2, - code: 'bit', - }, { - name: 'BTC', - shortName: 'BTC', - value: 100000000, - decimals: 8, - code: 'btc', - }]; - - $scope.save = function(newUnit) { - var opts = { - wallet: { - settings: { - unitName: newUnit.shortName, - unitToSatoshi: newUnit.value, - unitDecimals: newUnit.decimals, - unitCode: newUnit.code, - } - } - }; - - configService.set(opts, function(err) { - if (err) $log.warn(err); - - $ionicHistory.goBack(); - walletService.updateRemotePreferences(profileService.getWallets()) - }); - }; - - $scope.$on("$ionicView.enter", function(event, data){ - $scope.currentUnit = config.wallet.settings.unitCode; - }); -}); diff --git a/src/js/controllers/proposals.js b/src/js/controllers/proposals.js deleted file mode 100644 index 0d997dfe9..000000000 --- a/src/js/controllers/proposals.js +++ /dev/null @@ -1,32 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('proposalsController', - function($timeout, $scope, profileService, $log, txpModalService, addressbookService, timeService) { - - $scope.fetchingProposals = true; - - $scope.$on("$ionicView.enter", function(event, data) { - addressbookService.list(function(err, ab) { - if (err) $log.error(err); - $scope.addressbook = ab || {}; - - profileService.getTxps(50, function(err, txps) { - $scope.fetchingProposals = false; - if (err) { - $log.error(err); - return; - } - $scope.txps = txps; - $timeout(function() { - $scope.$apply(); - }); - }); - }); - }); - - $scope.openTxpModal = txpModalService.open; - - $scope.createdWithinPastDay = function(time) { - return timeService.withinPastDay(time); - }; - }); diff --git a/src/js/controllers/sellCoinbase.js b/src/js/controllers/sellCoinbase.js deleted file mode 100644 index c6fd31f58..000000000 --- a/src/js/controllers/sellCoinbase.js +++ /dev/null @@ -1,323 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('sellCoinbaseController', function($scope, $log, $state, $timeout, $ionicHistory, $ionicScrollDelegate, $ionicConfig, lodash, coinbaseService, popupService, profileService, ongoingProcess, walletService, appConfigService, configService, txFormatService) { - - var amount; - var currency; - - var showErrorAndBack = function(err) { - $scope.sendStatus = ''; - $log.error(err); - err = err.errors ? err.errors[0].message : err; - popupService.showAlert('Error', err, function() { - $ionicHistory.goBack(); - }); - }; - - var showError = function(err) { - $scope.sendStatus = ''; - $log.error(err); - err = err.errors ? err.errors[0].message : err; - popupService.showAlert('Error', err); - }; - - var publishAndSign = function (wallet, txp, onSendStatusChange, cb) { - if (!wallet.canSign() && !wallet.isPrivKeyExternal()) { - var err = 'No signing proposal: No private key'; - $log.info(err); - return cb(err); - } - - walletService.publishAndSign(wallet, txp, function(err, txp) { - if (err) return cb(err); - return cb(null, txp); - }, onSendStatusChange); - }; - - var checkTransaction = lodash.throttle(function(count, txp) { - $log.warn('Check if transaction has been received by Coinbase. Try ' + count + '/5'); - // TX amount in BTC - var satToBtc = 1 / 100000000; - var amountBTC = (txp.amount * satToBtc).toFixed(8); - coinbaseService.init(function(err, res) { - if (err) { - $log.error(err); - checkTransaction(count, txp); - return; - } - var accessToken = res.accessToken; - var accountId = res.accountId; - var sellPrice = null; - - coinbaseService.sellPrice(accessToken, coinbaseService.getAvailableCurrency(), function(err, sell) { - if (err) { - $log.debug(err); - checkTransaction(count, txp); - return; - } - sellPrice = sell.data; - - coinbaseService.getTransactions(accessToken, accountId, function(err, ctxs) { - if (err) { - $log.debug(err); - checkTransaction(count, txp); - return; - } - - var coinbaseTransactions = ctxs.data; - var txFound = false; - var ctx; - for(var i = 0; i < coinbaseTransactions.length; i++) { - ctx = coinbaseTransactions[i]; - if (ctx.type == 'send' && ctx.from && ctx.amount.amount == amountBTC ) { - $log.warn('Transaction found!', ctx); - txFound = true; - $log.debug('Saving transaction to process later...'); - ctx['payment_method'] = $scope.selectedPaymentMethodId.value; - ctx['status'] = 'pending'; // Forcing "pending" status to process later - ctx['price_sensitivity'] = $scope.selectedPriceSensitivity.data; - ctx['sell_price_amount'] = sellPrice ? sellPrice.amount : ''; - ctx['sell_price_currency'] = sellPrice ? sellPrice.currency : 'USD'; - ctx['description'] = appConfigService.nameCase + ' Wallet: ' + $scope.wallet.name; - coinbaseService.savePendingTransaction(ctx, null, function(err) { - ongoingProcess.set('sellingBitcoin', false, statusChangeHandler); - if (err) $log.debug(err); - }); - return; - } - } - if (!txFound) { - // Transaction sent, but could not be verified by Coinbase.com - $log.warn('Transaction not found in Coinbase.'); - if (count < 5) { - checkTransaction(count + 1, txp); - } else { - ongoingProcess.set('sellingBitcoin', false, statusChangeHandler); - showError('No transaction found'); - return; - } - } - }); - }); - }); - }, 8000, { - 'leading': true - }); - - var statusChangeHandler = function (processName, showName, isOn) { - $log.debug('statusChangeHandler: ', processName, showName, isOn); - if ( processName == 'sellingBitcoin' && !isOn) { - $scope.sendStatus = 'success'; - $timeout(function() { - $scope.$digest(); - }, 100); - } else if (showName) { - $scope.sendStatus = showName; - } - }; - - $scope.$on("$ionicView.beforeLeave", function(event, data) { - $ionicConfig.views.swipeBackEnabled(true); - }); - - $scope.$on("$ionicView.enter", function(event, data) { - $ionicConfig.views.swipeBackEnabled(false); - }); - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - $scope.isFiat = data.stateParams.currency != 'bits' && data.stateParams.currency != 'BTC' ? true : false; - var parsedAmount = txFormatService.parseAmount( - data.stateParams.amount, - data.stateParams.currency); - - amount = parsedAmount.amount; - currency = parsedAmount.currency; - $scope.amountUnitStr = parsedAmount.amountUnitStr; - - $scope.priceSensitivity = coinbaseService.priceSensitivity; - $scope.selectedPriceSensitivity = { data: coinbaseService.selectedPriceSensitivity }; - - $scope.network = coinbaseService.getNetwork(); - $scope.wallets = profileService.getWallets({ - m: 1, // Only 1-signature wallet - onlyComplete: true, - network: $scope.network, - hasFunds: true, - minAmount: parsedAmount.amountSat - }); - - if (lodash.isEmpty($scope.wallets)) { - showErrorAndBack('Insufficient funds'); - return; - } - $scope.wallet = $scope.wallets[0]; // Default first wallet - - ongoingProcess.set('connectingCoinbase', true); - coinbaseService.init(function(err, res) { - if (err) { - ongoingProcess.set('connectingCoinbase', false); - showErrorAndBack(err); - return; - } - var accessToken = res.accessToken; - - coinbaseService.sellPrice(accessToken, coinbaseService.getAvailableCurrency(), function(err, s) { - $scope.sellPrice = s.data || null; - }); - - $scope.paymentMethods = []; - $scope.selectedPaymentMethodId = { value : null }; - coinbaseService.getPaymentMethods(accessToken, function(err, p) { - if (err) { - ongoingProcess.set('connectingCoinbase', false); - showErrorAndBack(err); - return; - } - var hasPrimary; - var pm; - for(var i = 0; i < p.data.length; i++) { - pm = p.data[i]; - if (pm.allow_sell) { - $scope.paymentMethods.push(pm); - } - if (pm.allow_sell && pm.primary_sell) { - hasPrimary = true; - $scope.selectedPaymentMethodId.value = pm.id; - } - } - if (lodash.isEmpty($scope.paymentMethods)) { - ongoingProcess.set('connectingCoinbase', false); - showErrorAndBack('No payment method available to sell'); - return; - } - if (!hasPrimary) $scope.selectedPaymentMethodId.value = $scope.paymentMethods[0].id; - $scope.sellRequest(); - }); - }); - }); - - $scope.sellRequest = function() { - ongoingProcess.set('connectingCoinbase', true); - coinbaseService.init(function(err, res) { - if (err) { - ongoingProcess.set('connectingCoinbase', false); - showErrorAndBack(err); - return; - } - var accessToken = res.accessToken; - var accountId = res.accountId; - var dataSrc = { - amount: amount, - currency: currency, - payment_method: $scope.selectedPaymentMethodId.value, - quote: true - }; - coinbaseService.sellRequest(accessToken, accountId, dataSrc, function(err, data) { - ongoingProcess.set('connectingCoinbase', false); - if (err) { - showErrorAndBack(err); - return; - } - $scope.sellRequestInfo = data.data; - $timeout(function() { - $scope.$apply(); - }, 100); - }); - }); - }; - - $scope.sellConfirm = function() { - var config = configService.getSync(); - var configWallet = config.wallet; - var walletSettings = configWallet.settings; - - var message = 'Selling bitcoin for ' + amount + ' ' + currency; - var okText = 'Confirm'; - var cancelText = 'Cancel'; - popupService.showConfirm(null, message, okText, cancelText, function(ok) { - if (!ok) return; - - ongoingProcess.set('sellingBitcoin', true, statusChangeHandler); - coinbaseService.init(function(err, res) { - if (err) { - ongoingProcess.set('sellingBitcoin', false, statusChangeHandler); - showError(err); - return; - } - var accessToken = res.accessToken; - var accountId = res.accountId; - - var dataSrc = { - name: 'Received from ' + appConfigService.nameCase - }; - coinbaseService.createAddress(accessToken, accountId, dataSrc, function(err, data) { - if (err) { - ongoingProcess.set('sellingBitcoin', false, statusChangeHandler); - showError(err); - return; - } - var outputs = []; - var toAddress = data.data.address; - var amountSat = parseInt(($scope.sellRequestInfo.amount.amount * 100000000).toFixed(0)); - var comment = 'Sell bitcoin (Coinbase)'; - - outputs.push({ - 'toAddress': toAddress, - 'amount': amountSat, - 'message': comment - }); - - var txp = { - toAddress: toAddress, - amount: amountSat, - outputs: outputs, - message: comment, - payProUrl: null, - excludeUnconfirmedUtxos: configWallet.spendUnconfirmed ? false : true, - feeLevel: walletSettings.feeLevel || 'normal' - }; - - walletService.createTx($scope.wallet, txp, function(err, ctxp) { - if (err) { - ongoingProcess.set('sellingBitcoin', false, statusChangeHandler); - showError(err); - return; - } - $log.debug('Transaction created.'); - publishAndSign($scope.wallet, ctxp, function() {}, function(err, txSent) { - if (err) { - ongoingProcess.set('sellingBitcoin', false, statusChangeHandler); - showError(err); - return; - } - $log.debug('Transaction broadcasted. Wait for Coinbase confirmation...'); - checkTransaction(1, txSent); - }); - }); - }); - }); - }); - }; - - $scope.showWalletSelector = function() { - $scope.walletSelectorTitle = 'Sell From'; - $scope.showWallets = true; - }; - - $scope.onWalletSelect = function(wallet) { - $scope.wallet = wallet; - }; - - $scope.goBackHome = function() { - $scope.sendStatus = ''; - $ionicHistory.nextViewOptions({ - disableAnimate: true, - historyRoot: true - }); - $ionicHistory.clearHistory(); - $state.go('tabs.home').then(function() { - $state.transitionTo('tabs.buyandsell.coinbase'); - }); - }; - -}); diff --git a/src/js/controllers/sellGlidera.js b/src/js/controllers/sellGlidera.js deleted file mode 100644 index 90a6ed027..000000000 --- a/src/js/controllers/sellGlidera.js +++ /dev/null @@ -1,248 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('sellGlideraController', function($scope, $log, $state, $timeout, $ionicHistory, $ionicConfig, lodash, glideraService, popupService, profileService, ongoingProcess, walletService, configService, platformInfo, txFormatService) { - - var amount; - var currency; - - $scope.isCordova = platformInfo.isCordova; - - var showErrorAndBack = function(err) { - $scope.sendStatus = ''; - $log.error(err); - err = err.errors ? err.errors[0].message : err; - popupService.showAlert('Error', err, function() { - $ionicHistory.goBack(); - }); - }; - - var showError = function(err) { - $scope.sendStatus = ''; - $log.error(err); - err = err.errors ? err.errors[0].message : err; - popupService.showAlert('Error', err); - }; - - var statusChangeHandler = function (processName, showName, isOn) { - $log.debug('statusChangeHandler: ', processName, showName, isOn); - if ( processName == 'sellingBitcoin' && !isOn) { - $scope.sendStatus = 'success'; - $timeout(function() { - $scope.$digest(); - }, 100); - } else if (showName) { - $scope.sendStatus = showName; - } - }; - - $scope.$on("$ionicView.beforeLeave", function(event, data) { - $ionicConfig.views.swipeBackEnabled(true); - }); - - $scope.$on("$ionicView.enter", function(event, data) { - $ionicConfig.views.swipeBackEnabled(false); - }); - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - $scope.isFiat = data.stateParams.currency != 'bits' && data.stateParams.currency != 'BTC' ? true : false; - var parsedAmount = txFormatService.parseAmount( - data.stateParams.amount, - data.stateParams.currency); - - amount = parsedAmount.amount; - currency = parsedAmount.currency; - $scope.amountUnitStr = parsedAmount.amountUnitStr; - - $scope.network = glideraService.getNetwork(); - $scope.wallets = profileService.getWallets({ - m: 1, // Only 1-signature wallet - onlyComplete: true, - network: $scope.network, - hasFunds: true, - minAmount: parsedAmount.amountSat - }); - - if (lodash.isEmpty($scope.wallets)) { - showErrorAndBack('Insufficient funds'); - return; - } - $scope.wallet = $scope.wallets[0]; // Default first wallet - - ongoingProcess.set('connectingGlidera', true); - glideraService.init(function(err, data) { - if (err) { - ongoingProcess.set('connectingGlidera', false); - showErrorAndBack(err); - return; - } - $scope.token = data.token; - var price = {}; - if ($scope.isFiat) { - price['fiat'] = amount; - } else { - price['qty'] = amount; - } - glideraService.sellPrice($scope.token, price, function(err, sell) { - ongoingProcess.set('connectingGlidera', false); - if (err) { - showErrorAndBack(err); - return; - } - $scope.sellInfo = sell; - }); - }); - }); - - var ask2FaCode = function(mode, cb) { - if (mode != 'NONE') { - // SHOW PROMPT - var title = 'Please, enter the code below'; - var message; - if (mode == 'PIN') { - message = 'You have enabled PIN based two-factor authentication.'; - } else if (mode == 'AUTHENTICATOR') { - message = 'Use an authenticator app (Authy or Google Authenticator).'; - } else { - message = 'A SMS containing a confirmation code was sent to your phone.'; - } - popupService.showPrompt(title, message, null, function(twoFaCode) { - if (typeof twoFaCode == 'undefined') return cb(); - return cb(twoFaCode); - }); - } else { - return cb(); - } - }; - - $scope.sellConfirm = function() { - var message = 'Sell bitcoin for ' + amount + ' ' + currency; - var okText = 'Confirm'; - var cancelText = 'Cancel'; - popupService.showConfirm(null, message, okText, cancelText, function(ok) { - if (!ok) return; - ongoingProcess.set('sellingBitcoin', true, statusChangeHandler); - glideraService.get2faCode($scope.token, function(err, tfa) { - if (err) { - ongoingProcess.set('sellingBitcoin', false, statusChangeHandler); - showError(err); - return; - } - ask2FaCode(tfa.mode, function(twoFaCode) { - if (tfa.mode != 'NONE' && lodash.isEmpty(twoFaCode)) { - ongoingProcess.set('sellingBitcoin', false, statusChangeHandler); - showError('No code entered'); - return; - } - - var outputs = []; - var config = configService.getSync(); - var configWallet = config.wallet; - var walletSettings = configWallet.settings; - - walletService.getAddress($scope.wallet, null, function(err, refundAddress) { - if (!refundAddress) { - ongoingProcess.set('sellingBitcoin', false, statusChangeHandler); - showError('Could not create address'); - return; - } - glideraService.getSellAddress($scope.token, function(err, sellAddress) { - if (!sellAddress || err) { - ongoingProcess.set('sellingBitcoin', false, statusChangeHandler); - showError(err); - return; - } - var amount = parseInt(($scope.sellInfo.qty * 100000000).toFixed(0)); - var comment = 'Glidera transaction'; - - outputs.push({ - 'toAddress': sellAddress, - 'amount': amount, - 'message': comment - }); - - var txp = { - toAddress: sellAddress, - amount: amount, - outputs: outputs, - message: comment, - payProUrl: null, - excludeUnconfirmedUtxos: configWallet.spendUnconfirmed ? false : true, - feeLevel: walletSettings.feeLevel || 'normal', - customData: { - 'glideraToken': $scope.token - } - }; - - walletService.createTx($scope.wallet, txp, function(err, createdTxp) { - if (err) { - ongoingProcess.set('sellingBitcoin', false, statusChangeHandler); - showError(err); - return; - } - walletService.prepare($scope.wallet, function(err, password) { - if (err) { - ongoingProcess.set('sellingBitcoin', false, statusChangeHandler); - showError(err); - return; - } - walletService.publishTx($scope.wallet, createdTxp, function(err, publishedTxp) { - if (err) { - ongoingProcess.set('sellingBitcoin', false, statusChangeHandler); - showError(err); - return; - } - walletService.signTx($scope.wallet, publishedTxp, password, function(err, signedTxp) { - if (err) { - ongoingProcess.set('sellingBitcoin', false, statusChangeHandler); - showError(err); - walletService.removeTx($scope.wallet, signedTxp, function(err) { - if (err) $log.debug(err); - }); - return; - } - var rawTx = signedTxp.raw; - var data = { - refundAddress: refundAddress, - signedTransaction: rawTx, - priceUuid: $scope.sellInfo.priceUuid, - useCurrentPrice: $scope.sellInfo.priceUuid ? false : true, - ip: null - }; - glideraService.sell($scope.token, twoFaCode, data, function(err, data) { - ongoingProcess.set('sellingBitcoin', false, statusChangeHandler); - if (err) return showError(err); - $log.info(data); - }); - }); - }); - }); - }); - }); - }); - }); - }); - }); - }; - - $scope.showWalletSelector = function() { - $scope.walletSelectorTitle = 'Sell From'; - $scope.showWallets = true; - }; - - $scope.onWalletSelect = function(wallet) { - $scope.wallet = wallet; - }; - - $scope.goBackHome = function() { - $scope.sendStatus = ''; - $ionicHistory.nextViewOptions({ - disableAnimate: true, - historyRoot: true - }); - $ionicHistory.clearHistory(); - $state.go('tabs.home').then(function() { - $state.transitionTo('tabs.buyandsell.glidera'); - }); - }; - -}); diff --git a/src/js/controllers/tab-home.js b/src/js/controllers/tab-home.js deleted file mode 100644 index 79be14391..000000000 --- a/src/js/controllers/tab-home.js +++ /dev/null @@ -1,282 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('tabHomeController', - function($rootScope, $timeout, $scope, $state, $stateParams, $ionicModal, $ionicScrollDelegate, $window, gettextCatalog, lodash, popupService, ongoingProcess, externalLinkService, latestReleaseService, profileService, walletService, configService, $log, platformInfo, storageService, txpModalService, appConfigService, startupService, addressbookService, feedbackService, bwcError, nextStepsService, buyAndSellService, homeIntegrationsService, bitpayCardService, pushNotificationsService, timeService) { - var wallet; - var listeners = []; - var notifications = []; - $scope.externalServices = {}; - $scope.openTxpModal = txpModalService.open; - $scope.version = $window.version; - $scope.name = appConfigService.nameCase; - $scope.homeTip = $stateParams.fromOnboarding; - $scope.isCordova = platformInfo.isCordova; - $scope.isAndroid = platformInfo.isAndroid; - $scope.isWindowsPhoneApp = platformInfo.isCordova && platformInfo.isWP; - $scope.isNW = platformInfo.isNW; - $scope.showRateCard = {}; - - $scope.$on("$ionicView.afterEnter", function() { - startupService.ready(); - }); - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - if (!$scope.homeTip) { - storageService.getHomeTipAccepted(function(error, value) { - $scope.homeTip = (value == 'accepted') ? false : true; - }); - } - - if ($scope.isNW) { - latestReleaseService.checkLatestRelease(function(err, newRelease) { - if (err) { - $log.warn(err); - return; - } - if (newRelease) { - $scope.newRelease = true; - $scope.updateText = gettextCatalog.getString('There is a new version of {{appName}} available', { - appName: $scope.name - }); - } - }); - } - - storageService.getFeedbackInfo(function(error, info) { - - if ($scope.isWindowsPhoneApp) { - $scope.showRateCard.value = false; - return; - } - if (!info) { - initFeedBackInfo(); - } else { - var feedbackInfo = JSON.parse(info); - //Check if current version is greater than saved version - var currentVersion = $scope.version; - var savedVersion = feedbackInfo.version; - var isVersionUpdated = feedbackService.isVersionUpdated(currentVersion, savedVersion); - if (!isVersionUpdated) { - initFeedBackInfo(); - return; - } - var now = moment().unix(); - var timeExceeded = (now - feedbackInfo.time) >= 24 * 7 * 60 * 60; - $scope.showRateCard.value = timeExceeded && !feedbackInfo.sent; - $timeout(function() { - $scope.$apply(); - }); - } - }); - - function initFeedBackInfo() { - var feedbackInfo = {}; - feedbackInfo.time = moment().unix(); - feedbackInfo.version = $scope.version; - feedbackInfo.sent = false; - storageService.setFeedbackInfo(JSON.stringify(feedbackInfo), function() { - $scope.showRateCard.value = false; - }); - }; - }); - - $scope.$on("$ionicView.enter", function(event, data) { - updateAllWallets(); - - addressbookService.list(function(err, ab) { - if (err) $log.error(err); - $scope.addressbook = ab || {}; - }); - - listeners = [ - $rootScope.$on('bwsEvent', function(e, walletId, type, n) { - var wallet = profileService.getWallet(walletId); - updateWallet(wallet); - if ($scope.recentTransactionsEnabled) getNotifications(); - - }), - $rootScope.$on('Local/TxAction', function(e, walletId) { - $log.debug('Got action for wallet ' + walletId); - var wallet = profileService.getWallet(walletId); - updateWallet(wallet); - if ($scope.recentTransactionsEnabled) getNotifications(); - }) - ]; - - - $scope.buyAndSellItems = buyAndSellService.getLinked(); - $scope.homeIntegrations = homeIntegrationsService.get(); - - bitpayCardService.get({}, function(err, cards) { - $scope.bitpayCardItems = cards; - }); - - configService.whenAvailable(function(config) { - $scope.recentTransactionsEnabled = config.recentTransactions.enabled; - if ($scope.recentTransactionsEnabled) getNotifications(); - - if (config.hideNextSteps.enabled) { - $scope.nextStepsItems = null; - } else { - $scope.nextStepsItems = nextStepsService.get(); - } - - pushNotificationsService.init(); - - $timeout(function() { - $ionicScrollDelegate.resize(); - $scope.$apply(); - }, 10); - }); - }); - - $scope.$on("$ionicView.leave", function(event, data) { - lodash.each(listeners, function(x) { - x(); - }); - }); - - $scope.createdWithinPastDay = function(time) { - return timeService.withinPastDay(time); - }; - - $scope.openExternalLink = function() { - var url = 'https://github.com/bitpay/copay/releases/latest'; - var optIn = true; - var title = gettextCatalog.getString('Update Available'); - var message = gettextCatalog.getString('An update to this app is available. For your security, please update to the latest version.'); - var okText = gettextCatalog.getString('View Update'); - var cancelText = gettextCatalog.getString('Go Back'); - externalLinkService.open(url, optIn, title, message, okText, cancelText); - }; - - $scope.openNotificationModal = function(n) { - wallet = profileService.getWallet(n.walletId); - - if (n.txid) { - $state.transitionTo('tabs.wallet.tx-details', { - txid: n.txid, - walletId: n.walletId - }); - } else { - var txp = lodash.find($scope.txps, { - id: n.txpId - }); - if (txp) { - txpModalService.open(txp); - } else { - ongoingProcess.set('loadingTxInfo', true); - walletService.getTxp(wallet, n.txpId, function(err, txp) { - var _txp = txp; - ongoingProcess.set('loadingTxInfo', false); - if (err) { - $log.warn('No txp found'); - return popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Transaction not found')); - } - txpModalService.open(_txp); - }); - } - } - }; - - $scope.openWallet = function(wallet) { - if (!wallet.isComplete()) { - return $state.go('tabs.copayers', { - walletId: wallet.credentials.walletId - }); - } - - $state.go('tabs.wallet', { - walletId: wallet.credentials.walletId - }); - }; - - var updateTxps = function() { - profileService.getTxps({ - limit: 3 - }, function(err, txps, n) { - if (err) $log.error(err); - $scope.txps = txps; - $scope.txpsN = n; - $timeout(function() { - $ionicScrollDelegate.resize(); - $scope.$apply(); - }, 10); - }) - }; - - var updateAllWallets = function() { - $scope.wallets = profileService.getWallets(); - if (lodash.isEmpty($scope.wallets)) return; - - var i = $scope.wallets.length; - var j = 0; - var timeSpan = 60 * 60 * 24 * 7; - - lodash.each($scope.wallets, function(wallet) { - walletService.getStatus(wallet, {}, function(err, status) { - if (err) { - - wallet.error = (err === 'WALLET_NOT_REGISTERED') ? gettextCatalog.getString('Wallet not registered') : bwcError.msg(err); - - $log.error(err); - } else { - wallet.error = null; - wallet.status = status; - - // TODO service refactor? not in profile service - profileService.setLastKnownBalance(wallet.id, wallet.status.totalBalanceStr, function() {}); - } - if (++j == i) { - updateTxps(); - } - }); - }); - }; - - var updateWallet = function(wallet) { - $log.debug('Updating wallet:' + wallet.name) - walletService.getStatus(wallet, {}, function(err, status) { - if (err) { - $log.error(err); - return; - } - wallet.status = status; - updateTxps(); - }); - }; - - var getNotifications = function() { - profileService.getNotifications({ - limit: 3 - }, function(err, notifications, total) { - if (err) { - $log.error(err); - return; - } - $scope.notifications = notifications; - $scope.notificationsN = total; - $timeout(function() { - $ionicScrollDelegate.resize(); - $scope.$apply(); - }, 10); - }); - }; - - $scope.hideHomeTip = function() { - storageService.setHomeTipAccepted('accepted', function() { - $scope.homeTip = false; - $timeout(function() { - $scope.$apply(); - }) - }); - }; - - - $scope.onRefresh = function() { - $timeout(function() { - $scope.$broadcast('scroll.refreshComplete'); - }, 300); - updateAllWallets(); - }; - }); diff --git a/src/js/controllers/tab-receive.js b/src/js/controllers/tab-receive.js deleted file mode 100644 index 39446924f..000000000 --- a/src/js/controllers/tab-receive.js +++ /dev/null @@ -1,141 +0,0 @@ -'use strict'; - -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 = []; - $scope.isCordova = platformInfo.isCordova; - $scope.isNW = platformInfo.isNW; - - $scope.requestSpecificAmount = function() { - $state.go('tabs.paymentRequest.amount', { - id: $scope.wallet.credentials.walletId - }); - }; - - $scope.setAddress = function(newAddr) { - $scope.addr = null; - if (!$scope.wallet || $scope.generatingAddress || !$scope.wallet.isComplete()) return; - $scope.generatingAddress = true; - walletService.getAddress($scope.wallet, newAddr, function(err, addr) { - $scope.generatingAddress = false; - - if (err) { - //Error is already formated - popupService.showAlert(err); - } - - $scope.addr = addr; - $timeout(function() { - $scope.$apply(); - }, 10); - }); - }; - - $scope.goCopayers = function() { - $ionicHistory.removeBackView(); - $ionicHistory.nextViewOptions({ - disableAnimate: true - }); - $state.go('tabs.home'); - $timeout(function() { - $state.transitionTo('tabs.copayers', { - walletId: $scope.wallet.credentials.walletId - }); - }, 100); - }; - - $scope.openBackupNeededModal = function() { - $ionicModal.fromTemplateUrl('views/includes/backupNeededPopup.html', { - scope: $scope, - backdropClickToClose: false, - hardwareBackButtonClose: false - }).then(function(modal) { - $scope.BackupNeededModal = modal; - $scope.BackupNeededModal.show(); - }); - }; - - $scope.close = function() { - $scope.BackupNeededModal.hide(); - $scope.BackupNeededModal.remove(); - }; - - $scope.doBackup = function() { - $scope.close(); - $scope.goToBackupFlow(); - }; - - $scope.goToBackupFlow = function() { - $state.go('tabs.receive.backupWarning', { - from: 'tabs.receive', - walletId: $scope.wallet.credentials.walletId - }); - }; - - $scope.shouldShowReceiveAddressFromHardware = function() { - var wallet = $scope.wallet; - if (wallet.isPrivKeyExternal() && wallet.credentials.hwInfo) { - return (wallet.credentials.hwInfo.name == walletService.externalSource.intelTEE.id); - } else { - return false; - } - }; - - $scope.showReceiveAddressFromHardware = function() { - var wallet = $scope.wallet; - if (wallet.isPrivKeyExternal() && wallet.credentials.hwInfo) { - walletService.showReceiveAddressFromHardware(wallet, $scope.addr, function() {}); - } - }; - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - $scope.wallets = profileService.getWallets(); - $scope.singleWallet = $scope.wallets.length == 1; - - if (!$scope.wallets[0]) return; - - // select first wallet if no wallet selected previously - var selectedWallet = checkSelectedWallet($scope.wallet, $scope.wallets); - $scope.onWalletSelect(selectedWallet); - - $scope.showShareButton = platformInfo.isCordova ? (platformInfo.isIOS ? 'iOS' : 'Android') : null; - - listeners = [ - $rootScope.$on('bwsEvent', function(e, walletId, type, n) { - // Update current address - if ($scope.wallet && walletId == $scope.wallet.id && type == 'NewIncomingTx') $scope.setAddress(true); - }) - ]; - }); - - $scope.$on("$ionicView.leave", function(event, data) { - lodash.each(listeners, function(x) { - x(); - }); - }); - - var checkSelectedWallet = function(wallet, wallets) { - if (!wallet) return wallets[0]; - var w = lodash.find(wallets, function(w) { - return w.id == wallet.id; - }); - if (!w) return wallets[0]; - return wallet; - } - - $scope.onWalletSelect = function(wallet) { - $scope.wallet = wallet; - $scope.setAddress(); - }; - - $scope.showWalletSelector = function() { - if ($scope.singleWallet) return; - $scope.walletSelectorTitle = gettextCatalog.getString('Select a wallet'); - $scope.showWallets = true; - }; - - $scope.shareAddress = function() { - if (!$scope.isCordova) return; - window.plugins.socialsharing.share('bitcoin:' + $scope.addr, null, null, null); - } -}); diff --git a/src/js/controllers/tab-scan.js b/src/js/controllers/tab-scan.js deleted file mode 100644 index 88542c2dc..000000000 --- a/src/js/controllers/tab-scan.js +++ /dev/null @@ -1,147 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('tabScanController', function($scope, $log, $timeout, scannerService, incomingData, $state, $ionicHistory, $rootScope) { - - var scannerStates = { - unauthorized: 'unauthorized', - denied: 'denied', - unavailable: 'unavailable', - loading: 'loading', - visible: 'visible' - }; - $scope.scannerStates = scannerStates; - - function _updateCapabilities(){ - var capabilities = scannerService.getCapabilities(); - $scope.scannerIsAvailable = capabilities.isAvailable; - $scope.scannerHasPermission = capabilities.hasPermission; - $scope.scannerIsDenied = capabilities.isDenied; - $scope.scannerIsRestricted = capabilities.isRestricted; - $scope.canEnableLight = capabilities.canEnableLight; - $scope.canChangeCamera = capabilities.canChangeCamera; - $scope.canOpenSettings = capabilities.canOpenSettings; - } - - function _handleCapabilities(){ - // always update the view - $timeout(function(){ - if(!scannerService.isInitialized()){ - $scope.currentState = scannerStates.loading; - } else if(!$scope.scannerIsAvailable){ - $scope.currentState = scannerStates.unavailable; - } else if($scope.scannerIsDenied){ - $scope.currentState = scannerStates.denied; - } else if($scope.scannerIsRestricted){ - $scope.currentState = scannerStates.denied; - } else if(!$scope.scannerHasPermission){ - $scope.currentState = scannerStates.unauthorized; - } - $log.debug('Scan view state set to: ' + $scope.currentState); - }); - } - - function _refreshScanView(){ - _updateCapabilities(); - _handleCapabilities(); - if($scope.scannerHasPermission){ - activate(); - } - } - - // This could be much cleaner with a Promise API - // (needs a polyfill for some platforms) - $rootScope.$on('scannerServiceInitialized', function(){ - $log.debug('Scanner initialization finished, reinitializing scan view...'); - _refreshScanView(); - }); - - $scope.$on("$ionicView.afterEnter", function() { - // try initializing and refreshing status any time the view is entered - if(!scannerService.isInitialized()){ - scannerService.gentleInitialize(); - } - activate(); - }); - - function activate(){ - scannerService.activate(function(){ - _updateCapabilities(); - _handleCapabilities(); - $log.debug('Scanner activated, setting to visible...'); - $scope.currentState = scannerStates.visible; - // pause to update the view - $timeout(function(){ - scannerService.scan(function(err, contents){ - if(err){ - $log.debug('Scan canceled.'); - } else if ($state.params.passthroughMode) { - $rootScope.scanResult = contents; - goBack(); - } else { - handleSuccessfulScan(contents); - } - }); - // resume preview if paused - scannerService.resumePreview(); - }); - }); - } - $scope.activate = activate; - - $scope.authorize = function(){ - scannerService.initialize(function(){ - _refreshScanView(); - }); - }; - - $scope.$on("$ionicView.afterLeave", function() { - scannerService.deactivate(); - }); - - function handleSuccessfulScan(contents){ - $log.debug('Scan returned: "' + contents + '"'); - scannerService.pausePreview(); - incomingData.redir(contents); - } - - $rootScope.$on('incomingDataMenu.menuHidden', function() { - activate(); - }); - - $scope.openSettings = function(){ - scannerService.openSettings(); - }; - - $scope.attemptToReactivate = function(){ - scannerService.reinitialize(); - }; - - $scope.toggleLight = function(){ - scannerService.toggleLight(function(lightEnabled){ - $scope.lightActive = lightEnabled; - $scope.$apply(); - }); - }; - - $scope.toggleCamera = function(){ - $scope.cameraToggleActive = true; - scannerService.toggleCamera(function(status){ - // (a short delay for the user to see the visual feedback) - $timeout(function(){ - $scope.cameraToggleActive = false; - $log.debug('Camera toggle control deactivated.'); - }, 200); - }); - }; - - $scope.canGoBack = function(){ - return $state.params.passthroughMode; - }; - function goBack(){ - $ionicHistory.nextViewOptions({ - disableAnimate: true - }); - $ionicHistory.backView().go(); - } - $scope.goBack = goBack; -}); diff --git a/src/js/controllers/tab-send.js b/src/js/controllers/tab-send.js deleted file mode 100644 index 830cc167b..000000000 --- a/src/js/controllers/tab-send.js +++ /dev/null @@ -1,230 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('tabSendController', function($scope, $rootScope, $log, $timeout, $ionicScrollDelegate, addressbookService, profileService, lodash, $state, walletService, incomingData, popupService, platformInfo, bwcError, gettextCatalog, scannerService) { - - var originalList; - var CONTACTS_SHOW_LIMIT; - var currentContactsPage; - $scope.isChromeApp = platformInfo.isChromeApp; - - - var hasWallets = function() { - $scope.wallets = profileService.getWallets({ - onlyComplete: true - }); - $scope.hasWallets = lodash.isEmpty($scope.wallets) ? false : true; - }; - - // THIS is ONLY to show the 'buy bitcoins' message - // does not has any other function. - - var updateHasFunds = function() { - - if ($rootScope.everHasFunds) { - $scope.hasFunds = true; - return; - } - - $scope.hasFunds = false; - var index = 0; - lodash.each($scope.wallets, function(w) { - walletService.getStatus(w, {}, function(err, status) { - - ++index; - if (err && !status) { - $log.error(err); - // error updating the wallet. Probably a network error, do not show - // the 'buy bitcoins' message. - - $scope.hasFunds = true; - } else if (status.availableBalanceSat > 0) { - $scope.hasFunds = true; - $rootScope.everHasFunds = true; - } - - if (index == $scope.wallets.length) { - $scope.checkingBalance = false; - $timeout(function() { - $scope.$apply(); - }); - } - }); - }); - }; - - var updateWalletsList = function() { - - var networkResult = lodash.countBy($scope.wallets, 'network'); - - $scope.showTransferCard = $scope.hasWallets && (networkResult.livenet > 1 || networkResult.testnet > 1); - - if ($scope.showTransferCard) { - var walletsToTransfer = $scope.wallets; - if (!(networkResult.livenet > 1)) { - walletsToTransfer = lodash.filter(walletsToTransfer, function(item) { - return item.network == 'testnet'; - }); - } - if (!(networkResult.testnet > 1)) { - walletsToTransfer = lodash.filter(walletsToTransfer, function(item) { - return item.network == 'livenet'; - }); - } - var walletList = []; - lodash.each(walletsToTransfer, function(v) { - walletList.push({ - color: v.color, - name: v.name, - recipientType: 'wallet', - getAddress: function(cb) { - walletService.getAddress(v, false, cb); - }, - }); - }); - originalList = originalList.concat(walletList); - } - } - - var updateContactsList = function(cb) { - addressbookService.list(function(err, ab) { - if (err) $log.error(err); - - $scope.hasContacts = lodash.isEmpty(ab) ? false : true; - if (!$scope.hasContacts) return cb(); - - var completeContacts = []; - lodash.each(ab, function(v, k) { - completeContacts.push({ - name: lodash.isObject(v) ? v.name : v, - address: k, - email: lodash.isObject(v) ? v.email : null, - recipientType: 'contact', - getAddress: function(cb) { - return cb(null, k); - }, - }); - }); - var contacts = completeContacts.slice(0, (currentContactsPage + 1) * CONTACTS_SHOW_LIMIT); - $scope.contactsShowMore = completeContacts.length > contacts.length; - originalList = originalList.concat(contacts); - return cb(); - }); - }; - - var updateList = function() { - $scope.list = lodash.clone(originalList); - $timeout(function() { - $ionicScrollDelegate.resize(); - $scope.$apply(); - }, 10); - }; - - $scope.openScanner = function() { - var isWindowsPhoneApp = platformInfo.isCordova && platformInfo.isWP; - - if (!isWindowsPhoneApp) { - $state.go('tabs.scan'); - return; - } - - scannerService.useOldScanner(function(err, contents) { - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err); - return; - } - incomingData.redir(contents); - }); - }; - - $scope.showMore = function() { - currentContactsPage++; - updateWalletsList(); - }; - - $scope.searchInFocus = function() { - $scope.searchFocus = true; - }; - - $scope.searchBlurred = function() { - if ($scope.formData.search == null || $scope.formData.search.length == 0) { - $scope.searchFocus = false; - } - }; - - $scope.findContact = function(search) { - - if (incomingData.redir(search)) { - return; - } - - if (!search || search.length < 2) { - $scope.list = originalList; - $timeout(function() { - $scope.$apply(); - }); - return; - } - - var result = lodash.filter(originalList, function(item) { - var val = item.name; - return lodash.includes(val.toLowerCase(), search.toLowerCase()); - }); - - $scope.list = result; - }; - - $scope.goToAmount = function(item) { - $timeout(function() { - item.getAddress(function(err, addr) { - if (err || !addr) { - //Error is already formated - return popupService.showAlert(err); - } - $log.debug('Got toAddress:' + addr + ' | ' + item.name); - return $state.transitionTo('tabs.send.amount', { - recipientType: item.recipientType, - toAddress: addr, - toName: item.name, - toEmail: item.email, - toColor: item.color - }) - }); - }); - }; - - // This could probably be enhanced refactoring the routes abstract states - $scope.createWallet = function() { - $state.go('tabs.home').then(function() { - $state.go('tabs.add.create-personal'); - }); - }; - - $scope.buyBitcoin = function() { - $state.go('tabs.home').then(function() { - $state.go('tabs.buyandsell'); - }); - }; - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - $scope.checkingBalance = true; - $scope.formData = { - search: null - }; - originalList = []; - CONTACTS_SHOW_LIMIT = 10; - currentContactsPage = 0; - hasWallets(); - }); - - $scope.$on("$ionicView.enter", function(event, data) { - if (!$scope.hasWallets) { - $scope.checkingBalance = false; - return; - } - updateHasFunds(); - updateWalletsList(); - updateContactsList(function() { - updateList(); - }); - }); -}); diff --git a/src/js/controllers/tab-settings.js b/src/js/controllers/tab-settings.js deleted file mode 100644 index 01ffacd42..000000000 --- a/src/js/controllers/tab-settings.js +++ /dev/null @@ -1,70 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('tabSettingsController', function($rootScope, $timeout, $scope, appConfigService, $ionicModal, $log, lodash, uxLanguage, platformInfo, profileService, feeService, configService, externalLinkService, bitpayAccountService, bitpayCardService, storageService, glideraService, gettextCatalog, buyAndSellService) { - - var updateConfig = function() { - $scope.currentLanguageName = uxLanguage.getCurrentLanguageName(); - $scope.feeOpts = feeService.feeOpts; - $scope.currentFeeLevel = feeService.getCurrentFeeLevel(); - $scope.wallets = profileService.getWallets(); - $scope.buyAndSellServices = buyAndSellService.getLinked(); - - configService.whenAvailable(function(config) { - $scope.unitName = config.wallet.settings.unitName; - $scope.selectedAlternative = { - name: config.wallet.settings.alternativeName, - isoCode: config.wallet.settings.alternativeIsoCode - }; - - // TODO move this to a generic service - bitpayAccountService.getAccounts(function(err, data) { - if (err) $log.error(err); - $scope.bitpayAccounts = !lodash.isEmpty(data); - - $timeout(function() { - $rootScope.$apply(); - }, 10); - }); - - // TODO move this to a generic service - bitpayCardService.getCards(function(err, cards) { - if (err) $log.error(err); - $scope.bitpayCards = cards && cards.length > 0; - - $timeout(function() { - $rootScope.$apply(); - }, 10); - }); - }); - }; - - $scope.openExternalLink = function() { - var appName = appConfigService.name; - var url = appName == 'copay' ? 'https://github.com/bitpay/copay/issues' : 'https://help.bitpay.com/bitpay-app'; - var optIn = true; - var title = null; - var message = gettextCatalog.getString('Help and support information is available at the website.'); - var okText = gettextCatalog.getString('Open'); - var cancelText = gettextCatalog.getString('Go Back'); - externalLinkService.open(url, optIn, title, message, okText, cancelText); - }; - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - $scope.isCordova = platformInfo.isCordova; - $scope.isWindowsPhoneApp = platformInfo.isCordova && platformInfo.isWP; - $scope.isDevel = platformInfo.isDevel; - $scope.appName = appConfigService.nameCase; - configService.whenAvailable(function(config) { - $scope.locked = config.lock && config.lock.method; - if (!$scope.locked || $scope.locked == 'none') - $scope.method = gettextCatalog.getString('Disabled'); - else - $scope.method = $scope.locked.charAt(0).toUpperCase() + config.lock.method.slice(1); - }); - }); - - $scope.$on("$ionicView.enter", function(event, data) { - updateConfig(); - }); - -}); diff --git a/src/js/controllers/tabsController.js b/src/js/controllers/tabsController.js deleted file mode 100644 index a186879e3..000000000 --- a/src/js/controllers/tabsController.js +++ /dev/null @@ -1,44 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('tabsController', function($rootScope, $log, $scope, $state, $stateParams, $timeout, platformInfo, incomingData, lodash, popupService, gettextCatalog, scannerService) { - - $scope.onScan = function(data) { - if (!incomingData.redir(data)) { - popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Invalid data')); - } - }; - - $scope.setScanFn = function(scanFn) { - $scope.scan = function() { - $log.debug('Scanning...'); - scanFn(); - }; - }; - - $scope.importInit = function() { - $scope.fromOnboarding = $stateParams.fromOnboarding; - $timeout(function() { - $scope.$apply(); - }, 1); - }; - - $scope.chooseScanner = function() { - - var isWindowsPhoneApp = platformInfo.isCordova && platformInfo.isWP; - - if (!isWindowsPhoneApp) { - $state.go('tabs.scan'); - return; - } - - scannerService.useOldScanner(function(err, contents) { - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err); - return; - } - incomingData.redir(contents); - }); - - }; - -}); diff --git a/src/js/controllers/topup.js b/src/js/controllers/topup.js deleted file mode 100644 index 3a505e729..000000000 --- a/src/js/controllers/topup.js +++ /dev/null @@ -1,339 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('topUpController', function($scope, $log, $state, $timeout, $ionicHistory, $ionicConfig, lodash, popupService, profileService, ongoingProcess, walletService, configService, platformInfo, bitpayService, bitpayCardService, payproService, bwcError, txFormatService, sendMaxService, gettextCatalog) { - - $scope.isCordova = platformInfo.isCordova; - var cardId; - var useSendMax; - var amount; - var currency; - var createdTx; - var message; - var configWallet = configService.getSync().wallet; - - var _resetValues = function() { - $scope.totalAmountStr = $scope.amount = $scope.invoiceFee = $scope.networkFee = $scope.totalAmount = $scope.wallet = null; - createdTx = message = null; - }; - - var showErrorAndBack = function(title, msg) { - title = title || gettextCatalog.getString('Error'); - $scope.sendStatus = ''; - $log.error(msg); - msg = msg.errors ? msg.errors[0].message : msg; - popupService.showAlert(title, msg, function() { - $ionicHistory.goBack(); - }); - }; - - var showError = function(title, msg, cb) { - cb = cb || function() {}; - title = title || gettextCatalog.getString('Error'); - $scope.sendStatus = ''; - $log.error(msg); - msg = msg.errors ? msg.errors[0].message : msg; - popupService.showAlert(title, msg, cb); - }; - - var satToFiat = function(sat, cb) { - txFormatService.toFiat(sat, $scope.currencyIsoCode, function(value) { - return cb(value); - }); - }; - - var publishAndSign = function (wallet, txp, onSendStatusChange, cb) { - if (!wallet.canSign() && !wallet.isPrivKeyExternal()) { - var err = gettextCatalog.getString('No signing proposal: No private key'); - $log.info(err); - return cb(err); - } - - walletService.publishAndSign(wallet, txp, function(err, txp) { - if (err) return cb(err); - return cb(null, txp); - }, onSendStatusChange); - }; - - var statusChangeHandler = function (processName, showName, isOn) { - $log.debug('statusChangeHandler: ', processName, showName, isOn); - if (processName == 'topup' && !isOn) { - $scope.sendStatus = 'success'; - $timeout(function() { - $scope.$digest(); - }, 100); - } else if (showName) { - $scope.sendStatus = showName; - } - }; - - var setTotalAmount = function(amountSat, invoiceFeeSat, networkFeeSat) { - satToFiat(amountSat, function(a) { - $scope.amount = Number(a); - - satToFiat(invoiceFeeSat, function(i) { - $scope.invoiceFee = Number(i); - - satToFiat(networkFeeSat, function(n) { - $scope.networkFee = Number(n); - $scope.totalAmount = $scope.amount + $scope.invoiceFee + $scope.networkFee; - $timeout(function() { - $scope.$digest(); - }); - }); - }); - }); - }; - - var createInvoice = function(data, cb) { - bitpayCardService.topUp(cardId, data, function(err, invoiceId) { - if (err) { - return cb({ - title: gettextCatalog.getString('Could not create the invoice'), - message: err - }); - } - - bitpayCardService.getInvoice(invoiceId, function(err, inv) { - if (err) { - return cb({ - title: gettextCatalog.getString('Could not get the invoice'), - message: err - }); - } - return cb(null, inv); - }); - }); - }; - - var createTx = function(wallet, invoice, message, cb) { - var payProUrl = (invoice && invoice.paymentUrls) ? invoice.paymentUrls.BIP73 : null; - - if (!payProUrl) { - return cb({ - title: gettextCatalog.getString('Error in Payment Protocol'), - message: gettextCatalog.getString('Invalid URL') - }); - } - - var outputs = []; - var toAddress = invoice.bitcoinAddress; - var amountSat = parseInt(invoice.btcDue * 100000000); // BTC to Satoshi - - outputs.push({ - 'toAddress': toAddress, - 'amount': amountSat, - 'message': message - }); - - var txp = { - toAddress: toAddress, - amount: amountSat, - outputs: outputs, - message: message, - payProUrl: payProUrl, - excludeUnconfirmedUtxos: configWallet.spendUnconfirmed ? false : true, - feeLevel: configWallet.settings.feeLevel || 'normal' - }; - - walletService.createTx(wallet, txp, function(err, ctxp) { - if (err) { - return cb({ - title: gettextCatalog.getString('Could not create transaction'), - message: bwcError.msg(err) - }); - } - return cb(null, ctxp); - }); - }; - - var calculateAmount = function(wallet, cb) { - // Global variables defined beforeEnter - var a = amount; - var c = currency; - - if (useSendMax) { - sendMaxService.getInfo(wallet, function(err, maxValues) { - if (err) { - return cb({ - title: null, - message: err - }) - } - - if (maxValues.amount == 0) { - return cb({message: gettextCatalog.getString('Insufficient funds for fee')}); - } - - var maxAmountBtc = Number((maxValues.amount / 100000000).toFixed(8)); - - createInvoice({amount: maxAmountBtc, currency: 'BTC'}, function(err, inv) { - if (err) return cb(err); - - var invoiceFeeSat = parseInt((inv.buyerPaidBtcMinerFee * 100000000).toFixed()); - var newAmountSat = maxValues.amount - invoiceFeeSat; - - if (newAmountSat <= 0) { - return cb({message: gettextCatalog.getString('Insufficient funds for fee')}); - } - - return cb(null, newAmountSat, 'sat'); - }); - }); - } else { - return cb(null, a, c); - } - }; - - var initializeTopUp = function(wallet, parsedAmount) { - $scope.amountUnitStr = parsedAmount.amountUnitStr; - var dataSrc = { - amount: parsedAmount.amount, - currency: parsedAmount.currency - }; - ongoingProcess.set('loadingTxInfo', true); - createInvoice(dataSrc, function(err, invoice) { - if (err) { - ongoingProcess.set('loadingTxInfo', false); - showErrorAndBack(err.title, err.message); - return; - } - - // Sometimes API does not return this element; - invoice['buyerPaidBtcMinerFee'] = invoice.buyerPaidBtcMinerFee || 0; - var invoiceFeeSat = (invoice.buyerPaidBtcMinerFee * 100000000).toFixed(); - - message = gettextCatalog.getString("Top up {{amountStr}} to debit card ({{cardLastNumber}})", { - amountStr: $scope.amountUnitStr, - cardLastNumber: $scope.lastFourDigits - }); - - createTx(wallet, invoice, message, function(err, ctxp) { - ongoingProcess.set('loadingTxInfo', false); - if (err) { - _resetValues(); - showError(err.title, err.message); - return; - } - - // Save TX in memory - createdTx = ctxp; - - $scope.totalAmountStr = txFormatService.formatAmountStr(ctxp.amount); - - setTotalAmount(parsedAmount.amountSat, invoiceFeeSat, ctxp.fee); - - }); - - }); - - }; - - $scope.$on("$ionicView.beforeLeave", function(event, data) { - $ionicConfig.views.swipeBackEnabled(true); - }); - - $scope.$on("$ionicView.enter", function(event, data) { - $ionicConfig.views.swipeBackEnabled(false); - }); - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - - cardId = data.stateParams.id; - useSendMax = data.stateParams.useSendMax; - amount = data.stateParams.amount; - currency = data.stateParams.currency; - - bitpayCardService.get({ cardId: cardId, noRefresh: true }, function(err, card) { - if (err) { - showErrorAndBack(null, err); - return; - } - bitpayCardService.setCurrencySymbol(card[0]); - $scope.lastFourDigits = card[0].lastFourDigits; - $scope.currencySymbol = card[0].currencySymbol; - $scope.currencyIsoCode = card[0].currency; - - $scope.wallets = profileService.getWallets({ - onlyComplete: true, - network: bitpayService.getEnvironment().network, - hasFunds: true - }); - - if (lodash.isEmpty($scope.wallets)) { - showErrorAndBack(null, gettextCatalog.getString('No wallets available')); - return; - } - - bitpayCardService.getRates($scope.currencyIsoCode, function(err, r) { - if (err) $log.error(err); - $scope.rate = r.rate; - }); - - $scope.onWalletSelect($scope.wallets[0]); // Default first wallet - }); - }); - - $scope.topUpConfirm = function() { - - if (!createdTx) { - showError(null, gettextCatalog.getString('Transaction has not been created')); - return; - } - - var title = gettextCatalog.getString('Confirm'); - var okText = gettextCatalog.getString('OK'); - var cancelText = gettextCatalog.getString('Cancel'); - popupService.showConfirm(title, message, okText, cancelText, function(ok) { - if (!ok) { - $scope.sendStatus = ''; - return; - } - - ongoingProcess.set('topup', true, statusChangeHandler); - publishAndSign($scope.wallet, createdTx, function() {}, function(err, txSent) { - if (err) { - _resetValues(); - ongoingProcess.set('topup', false, statusChangeHandler); - showError(gettextCatalog.getString('Could not send transaction'), err); - return; - } - ongoingProcess.set('topup', false, statusChangeHandler); - }); - }); - }; - - $scope.showWalletSelector = function() { - $scope.walletSelectorTitle = gettextCatalog.getString('From'); - $scope.showWallets = true; - }; - - $scope.onWalletSelect = function(wallet) { - $scope.wallet = wallet; - ongoingProcess.set('retrievingInputs', true); - calculateAmount(wallet, function(err, a, c) { - ongoingProcess.set('retrievingInputs', false); - if (err) { - _resetValues(); - showError(err.title, err.message, function() { - $scope.showWalletSelector(); - }); - return; - } - var parsedAmount = txFormatService.parseAmount(a, c); - initializeTopUp(wallet, parsedAmount); - }); - }; - - $scope.goBackHome = function() { - $scope.sendStatus = ''; - $ionicHistory.nextViewOptions({ - disableAnimate: true, - historyRoot: true - }); - $ionicHistory.clearHistory(); - $state.go('tabs.home').then(function() { - $state.transitionTo('tabs.bitpayCard', {id: cardId}); - }); - }; - -}); diff --git a/src/js/controllers/tx-details.js b/src/js/controllers/tx-details.js deleted file mode 100644 index 0c277e469..000000000 --- a/src/js/controllers/tx-details.js +++ /dev/null @@ -1,212 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('txDetailsController', function($rootScope, $log, $ionicHistory, $scope, $timeout, walletService, lodash, gettextCatalog, profileService, externalLinkService, popupService, ongoingProcess, txFormatService, txConfirmNotification, feeService, configService) { - - var txId; - var listeners = []; - var config = configService.getSync(); - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - txId = data.stateParams.txid; - $scope.title = gettextCatalog.getString('Transaction'); - $scope.wallet = profileService.getWallet(data.stateParams.walletId); - $scope.color = $scope.wallet.color; - $scope.copayerId = $scope.wallet.credentials.copayerId; - $scope.isShared = $scope.wallet.credentials.n > 1; - $scope.txsUnsubscribedForNotifications = config.confirmedTxsNotifications ? !config.confirmedTxsNotifications.enabled : true; - - txConfirmNotification.checkIfEnabled(txId, function(res) { - $scope.txNotification = { - value: res - }; - }); - - updateTx(); - - listeners = [ - $rootScope.$on('bwsEvent', function(e, walletId, type, n) { - if (type == 'NewBlock' && n && n.data && n.data.network == 'livenet') { - updateTxDebounced({ - hideLoading: true - }); - } - }) - ]; - }); - - $scope.$on("$ionicView.leave", function(event, data) { - lodash.each(listeners, function(x) { - x(); - }); - }); - - function updateMemo() { - walletService.getTxNote($scope.wallet, $scope.btx.txid, function(err, note) { - if (err) { - $log.warn('Could not fetch transaction note: ' + err); - return; - } - if (!note) return; - - $scope.btx.note = note; - $scope.$apply(); - }); - } - - function initActionList() { - $scope.actionList = []; - if ($scope.btx.action != 'sent' || !$scope.isShared) return; - - var actionDescriptions = { - created: gettextCatalog.getString('Proposal Created'), - accept: gettextCatalog.getString('Accepted'), - reject: gettextCatalog.getString('Rejected'), - broadcasted: gettextCatalog.getString('Broadcasted'), - }; - - $scope.actionList.push({ - type: 'created', - time: $scope.btx.createdOn, - description: actionDescriptions['created'], - by: $scope.btx.creatorName - }); - - lodash.each($scope.btx.actions, function(action) { - $scope.actionList.push({ - type: action.type, - time: action.createdOn, - description: actionDescriptions[action.type], - by: action.copayerName - }); - }); - - $scope.actionList.push({ - type: 'broadcasted', - time: $scope.btx.time, - description: actionDescriptions['broadcasted'], - }); - - $timeout(function() { - $scope.actionList.reverse(); - }, 10); - } - - var updateTx = function(opts) { - opts = opts || {}; - if (!opts.hideLoading) ongoingProcess.set('loadingTxInfo', true); - walletService.getTx($scope.wallet, txId, function(err, tx) { - if (!opts.hideLoading) ongoingProcess.set('loadingTxInfo', false); - if (err) { - $log.warn('Error getting transaction: ' + err); - $ionicHistory.goBack(); - return popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Transaction not available at this time')); - } - - $scope.btx = txFormatService.processTx(tx); - txFormatService.formatAlternativeStr(tx.fees, function(v) { - $scope.btx.feeFiatStr = v; - $scope.btx.feeRateStr = ($scope.btx.fees / ($scope.btx.amount + $scope.btx.fees) * 100).toFixed(2) + '%'; - }); - - if ($scope.btx.action != 'invalid') { - if ($scope.btx.action == 'sent') $scope.title = gettextCatalog.getString('Sent Funds'); - if ($scope.btx.action == 'received') $scope.title = gettextCatalog.getString('Received Funds'); - if ($scope.btx.action == 'moved') $scope.title = gettextCatalog.getString('Moved Funds'); - } - - updateMemo(); - initActionList(); - getFiatRate(); - $timeout(function() { - $scope.$digest(); - }); - - feeService.getFeeLevels(function(err, levels) { - if (err) return; - walletService.getLowAmount($scope.wallet, levels, function(err, amount) { - if (err) return; - $scope.btx.lowAmount = tx.amount < amount; - - $timeout(function() { - $scope.$apply(); - }); - - }); - }); - }); - }; - - var updateTxDebounced = lodash.debounce(updateTx, 5000); - - $scope.showCommentPopup = function() { - var opts = {}; - if ($scope.btx.message) { - opts.defaultText = $scope.btx.message; - } - if ($scope.btx.note && $scope.btx.note.body) opts.defaultText = $scope.btx.note.body; - - popupService.showPrompt($scope.wallet.name, gettextCatalog.getString('Memo'), opts, function(text) { - if (typeof text == "undefined") return; - - $scope.btx.note = { - body: text - }; - $log.debug('Saving memo'); - - var args = { - txid: $scope.btx.txid, - body: text - }; - - walletService.editTxNote($scope.wallet, args, function(err, res) { - if (err) { - $log.debug('Could not save tx comment ' + err); - } - }); - }); - }; - - $scope.viewOnBlockchain = function() { - var btx = $scope.btx; - var url = 'https://' + ($scope.getShortNetworkName() == 'test' ? 'test-' : '') + 'insight.bitpay.com/tx/' + btx.txid; - var optIn = true; - 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); - }; - - $scope.getShortNetworkName = function() { - var n = $scope.wallet.credentials.network; - return n.substring(0, 4); - }; - - var getFiatRate = function() { - $scope.alternativeIsoCode = $scope.wallet.status.alternativeIsoCode; - $scope.wallet.getFiatRate({ - code: $scope.alternativeIsoCode, - ts: $scope.btx.time * 1000 - }, function(err, res) { - if (err) { - $log.debug('Could not get historic rate'); - return; - } - if (res && res.rate) { - $scope.rateDate = res.fetchedOn; - $scope.rate = res.rate; - } - }); - }; - - $scope.txConfirmNotificationChange = function() { - if ($scope.txNotification.value) { - txConfirmNotification.subscribe($scope.wallet, { - txid: txId - }); - } else { - txConfirmNotification.unsubscribe($scope.wallet, txId); - } - }; - -}); diff --git a/src/js/controllers/version.js b/src/js/controllers/version.js deleted file mode 100644 index ad8e5071b..000000000 --- a/src/js/controllers/version.js +++ /dev/null @@ -1,6 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('versionController', function() { - this.version = window.version; - this.commitHash = window.commitHash; -}); diff --git a/src/js/controllers/walletDetails.js b/src/js/controllers/walletDetails.js deleted file mode 100644 index 13698f0cd..000000000 --- a/src/js/controllers/walletDetails.js +++ /dev/null @@ -1,437 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('walletDetailsController', function($scope, $rootScope, $interval, $timeout, $filter, $log, $ionicModal, $ionicPopover, $state, $stateParams, $ionicHistory, profileService, lodash, configService, platformInfo, walletService, txpModalService, externalLinkService, popupService, addressbookService, storageService, $ionicScrollDelegate, $window, bwcError, gettextCatalog, timeService, feeService, appConfigService) { - - var HISTORY_SHOW_LIMIT = 10; - var currentTxHistoryPage = 0; - var listeners = []; - $scope.txps = []; - $scope.completeTxHistory = []; - $scope.openTxpModal = txpModalService.open; - $scope.isCordova = platformInfo.isCordova; - $scope.isAndroid = platformInfo.isAndroid; - $scope.isIOS = platformInfo.isIOS; - - $scope.amountIsCollapsible = !$scope.isAndroid; - - $scope.openExternalLink = function(url, target) { - externalLinkService.open(url, target); - }; - - var setPendingTxps = function(txps) { - - /* Uncomment to test multiple outputs */ - - // var txp = { - // message: 'test multi-output', - // fee: 1000, - // createdOn: new Date() / 1000, - // outputs: [], - // wallet: $scope.wallet - // }; - // - // function addOutput(n) { - // txp.outputs.push({ - // amount: 600, - // toAddress: '2N8bhEwbKtMvR2jqMRcTCQqzHP6zXGToXcK', - // message: 'output #' + (Number(n) + 1) - // }); - // }; - // lodash.times(15, addOutput); - // txps.push(txp); - - if (!txps) { - $scope.txps = []; - return; - } - $scope.txps = lodash.sortBy(txps, 'createdOn').reverse(); - }; - - var analyzeUtxosDone; - - var analyzeUtxos = function() { - if (analyzeUtxosDone) return; - - feeService.getFeeLevels(function(err, levels) { - if (err) return; - walletService.getLowUtxos($scope.wallet, levels, function(err, resp) { - if (err || !resp) return; - analyzeUtxosDone = true; - $scope.lowUtxosWarning = resp.warning; - }); - }); - }; - - var updateStatus = function(force) { - $scope.updatingStatus = true; - $scope.updateStatusError = null; - $scope.walletNotRegistered = false; - - walletService.getStatus($scope.wallet, { - force: !!force, - }, function(err, status) { - $scope.updatingStatus = false; - if (err) { - if (err === 'WALLET_NOT_REGISTERED') { - $scope.walletNotRegistered = true; - } else { - $scope.updateStatusError = bwcError.msg(err, gettextCatalog.getString('Could not update wallet')); - } - $scope.status = null; - } else { - setPendingTxps(status.pendingTxps); - $scope.status = status; - } - refreshAmountSection(); - $timeout(function() { - $scope.$apply(); - }); - - analyzeUtxos(); - - }); - }; - - $scope.openSearchModal = function() { - $scope.color = $scope.wallet.color; - $scope.isSearching = true; - $scope.txHistorySearchResults = []; - $scope.filteredTxHistory = []; - - $ionicModal.fromTemplateUrl('views/modals/search.html', { - scope: $scope, - focusFirstInput: true - }).then(function(modal) { - $scope.searchModal = modal; - $scope.searchModal.show(); - }); - - $scope.close = function() { - $scope.isSearching = false; - $scope.searchModal.hide(); - }; - - $scope.openTx = function(tx) { - $ionicHistory.nextViewOptions({ - disableAnimate: true - }); - $scope.close(); - $scope.openTxModal(tx); - }; - }; - - $scope.openTxModal = function(btx) { - $scope.btx = lodash.cloneDeep(btx); - $scope.walletId = $scope.wallet.id; - $state.transitionTo('tabs.wallet.tx-details', { - txid: $scope.btx.txid, - walletId: $scope.walletId - }); - }; - - $scope.openBalanceModal = function() { - $ionicModal.fromTemplateUrl('views/modals/wallet-balance.html', { - scope: $scope - }).then(function(modal) { - $scope.walletBalanceModal = modal; - $scope.walletBalanceModal.show(); - }); - - $scope.close = function() { - $scope.walletBalanceModal.hide(); - }; - }; - - $scope.recreate = function() { - walletService.recreate($scope.wallet, function(err) { - if (err) return; - $timeout(function() { - walletService.startScan($scope.wallet, function() { - $scope.updateAll(); - $scope.$apply(); - }); - }); - }); - }; - - var updateTxHistory = function(cb) { - if (!cb) cb = function() {}; - if ($scope.updatingTxHistory) return; - - $scope.updatingTxHistory = true; - $scope.updateTxHistoryError = false; - $scope.updatingTxHistoryProgress = 0; - - var progressFn = function(txs, newTxs) { - $scope.updatingTxHistoryProgress = newTxs; - $scope.completeTxHistory = txs; - $scope.showHistory(); - $timeout(function() { - $scope.$apply(); - }); - }; - - feeService.getFeeLevels(function(err, levels) { - walletService.getTxHistory($scope.wallet, { - progressFn: progressFn, - feeLevels: levels, - }, function(err, txHistory) { - $scope.updatingTxHistory = false; - if (err) { - $scope.txHistory = null; - $scope.updateTxHistoryError = true; - return; - } - $scope.completeTxHistory = txHistory; - $scope.showHistory(); - $scope.$apply(); - return cb(); - }); - }); - }; - - $scope.showHistory = function() { - if ($scope.completeTxHistory) { - $scope.txHistory = $scope.completeTxHistory.slice(0, (currentTxHistoryPage + 1) * HISTORY_SHOW_LIMIT); - $scope.txHistoryShowMore = $scope.completeTxHistory.length > $scope.txHistory.length; - } - }; - - $scope.getDate = function(txCreated) { - var date = new Date(txCreated * 1000); - return date; - }; - - $scope.isFirstInGroup = function(index) { - if (index === 0) { - return true; - } - var curTx = $scope.txHistory[index]; - var prevTx = $scope.txHistory[index - 1]; - return !$scope.createdDuringSameMonth(curTx, prevTx); - }; - - $scope.isLastInGroup = function(index) { - if (index === $scope.txHistory.length - 1) { - return true; - } - return $scope.isFirstInGroup(index + 1); - }; - - $scope.createdDuringSameMonth = function(curTx, prevTx) { - return timeService.withinSameMonth(curTx.time * 1000, prevTx.time * 1000); - }; - - $scope.createdWithinPastDay = function(time) { - return timeService.withinPastDay(time); - }; - - $scope.isDateInCurrentMonth = function(date) { - return timeService.isDateInCurrentMonth(date); - }; - - $scope.isUnconfirmed = function(tx) { - return !tx.confirmations || tx.confirmations === 0; - }; - - $scope.showMore = function() { - $timeout(function() { - currentTxHistoryPage++; - $scope.showHistory(); - $scope.$broadcast('scroll.infiniteScrollComplete'); - }, 100); - }; - - $scope.onRefresh = function() { - $timeout(function() { - $scope.$broadcast('scroll.refreshComplete'); - }, 300); - $scope.updateAll(true); - }; - - $scope.updateAll = function(force, cb)  { - updateStatus(force); - updateTxHistory(cb); - }; - - $scope.hideToggle = function() { - profileService.toggleHideBalanceFlag($scope.wallet.credentials.walletId, function(err) { - if (err) $log.error(err); - }); - }; - - var prevPos; - - function getScrollPosition() { - var scrollPosition = $ionicScrollDelegate.getScrollPosition(); - if (!scrollPosition) { - $window.requestAnimationFrame(function() { - getScrollPosition(); - }); - return; - } - var pos = scrollPosition.top; - if (pos === prevPos) { - $window.requestAnimationFrame(function() { - getScrollPosition(); - }); - return; - } - prevPos = pos; - refreshAmountSection(pos); - }; - - function refreshAmountSection(scrollPos) { - $scope.showBalanceButton = false; - if ($scope.status) { - $scope.showBalanceButton = ($scope.status.totalBalanceSat != $scope.status.spendableAmount); - } - if (!$scope.amountIsCollapsible) { - var t = ($scope.showBalanceButton ? 15 : 45); - $scope.amountScale = 'translateY(' + t + 'px)'; - return; - } - - scrollPos = scrollPos || 0; - var amountHeight = 210 - scrollPos; - if (amountHeight < 80) { - amountHeight = 80; - } - var contentMargin = amountHeight; - if (contentMargin > 210) { - contentMargin = 210; - } - - var amountScale = (amountHeight / 210); - if (amountScale < 0.5) { - amountScale = 0.5; - } - if (amountScale > 1.1) { - amountScale = 1.1; - } - - var s = amountScale; - - // Make space for the balance button when it needs to display. - var TOP_NO_BALANCE_BUTTON = 115; - var TOP_BALANCE_BUTTON = 30; - var top = TOP_NO_BALANCE_BUTTON; - if ($scope.showBalanceButton) { - top = TOP_BALANCE_BUTTON; - } - - var amountTop = ((amountScale - 0.7) / 0.7) * top; - if (amountTop < -10) { - amountTop = -10; - } - if (amountTop > top) { - amountTop = top; - } - - var t = amountTop; - - $scope.altAmountOpacity = (amountHeight - 100) / 80; - $window.requestAnimationFrame(function() { - $scope.amountHeight = amountHeight + 'px'; - $scope.contentMargin = contentMargin + 'px'; - $scope.amountScale = 'scale3d(' + s + ',' + s + ',' + s + ') translateY(' + t + 'px)'; - $scope.$digest(); - getScrollPosition(); - }); - } - - var scrollWatcherInitialized; - - $scope.$on("$ionicView.enter", function(event, data) { - if ($scope.isCordova && $scope.isAndroid) setAndroidStatusBarColor(); - if (scrollWatcherInitialized || !$scope.amountIsCollapsible) { - return; - } - scrollWatcherInitialized = true; - }); - - $scope.$on("$ionicView.beforeEnter", function(event, data) { - $scope.walletId = data.stateParams.walletId; - $scope.wallet = profileService.getWallet($scope.walletId); - if (!$scope.wallet) return; - $scope.requiresMultipleSignatures = $scope.wallet.credentials.m > 1; - - addressbookService.list(function(err, ab) { - if (err) $log.error(err); - $scope.addressbook = ab || {}; - }); - - listeners = [ - $rootScope.$on('bwsEvent', function(e, walletId) { - if (walletId == $scope.wallet.id && e.type != 'NewAddress') - $scope.updateAll(); - }), - $rootScope.$on('Local/TxAction', function(e, walletId) { - if (walletId == $scope.wallet.id) - $scope.updateAll(); - }), - ]; - }); - - $scope.$on("$ionicView.afterEnter", function(event, data) { - $scope.updateAll(); - refreshAmountSection(); - }); - - $scope.$on("$ionicView.afterLeave", function(event, data) { - - if ($window.StatusBar) { - var statusBarColor = appConfigService.name == 'copay' ? '#192c3a' : '#1e3186'; - $window.StatusBar.backgroundColorByHexString(statusBarColor); - } - }); - - $scope.$on("$ionicView.leave", function(event, data) { - lodash.each(listeners, function(x) { - x(); - }); - }); - - function setAndroidStatusBarColor() { - var SUBTRACT_AMOUNT = 15; - var walletColor; - if (!$scope.wallet.color) walletColor = appConfigService.name == 'copay' ? '#019477' : '#4a90e2'; - else walletColor = $scope.wallet.color; - var rgb = hexToRgb(walletColor); - var keys = Object.keys(rgb); - keys.forEach(function(k) { - if (rgb[k] - SUBTRACT_AMOUNT < 0) { - rgb[k] = 0; - } else { - rgb[k] -= SUBTRACT_AMOUNT; - } - }); - var statusBarColorHexString = rgbToHex(rgb.r, rgb.g, rgb.b); - if ($window.StatusBar) - $window.StatusBar.backgroundColorByHexString(statusBarColorHexString); - } - - function hexToRgb(hex) { - // Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF") - var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; - hex = hex.replace(shorthandRegex, function(m, r, g, b) { - return r + r + g + g + b + b; - }); - - var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); - return result ? { - r: parseInt(result[1], 16), - g: parseInt(result[2], 16), - b: parseInt(result[3], 16) - } : null; - } - - function componentToHex(c) { - var hex = c.toString(16); - return hex.length == 1 ? "0" + hex : hex; - } - - function rgbToHex(r, g, b) { - return "#" + componentToHex(r) + componentToHex(g) + componentToHex(b); - } -}); diff --git a/src/js/directives/accountSelector.js b/src/js/directives/accountSelector.js deleted file mode 100644 index 4e7937b4a..000000000 --- a/src/js/directives/accountSelector.js +++ /dev/null @@ -1,28 +0,0 @@ -'use strict'; - -angular.module('copayApp.directives') - .directive('accountSelector', function($timeout) { - return { - restrict: 'E', - templateUrl: 'views/includes/accountSelector.html', - transclude: true, - scope: { - title: '=accountSelectorTitle', - show: '=accountSelectorShow', - accounts: '=accountSelectorAccounts', - selectedAccount: '=accountSelectorSelectedAccount', - onSelect: '=accountSelectorOnSelect' - }, - link: function(scope, element, attrs) { - scope.hide = function() { - scope.show = false; - }; - scope.selectAccount = function(account) { - $timeout(function() { - scope.hide(); - }, 100); - scope.onSelect(account); - }; - } - }; - }); diff --git a/src/js/directives/actionSheet.js b/src/js/directives/actionSheet.js deleted file mode 100644 index 734b7f2b3..000000000 --- a/src/js/directives/actionSheet.js +++ /dev/null @@ -1,28 +0,0 @@ -'use strict'; - -angular.module('copayApp.directives') - .directive('actionSheet', function($rootScope, $timeout) { - return { - restrict: 'E', - templateUrl: 'views/includes/actionSheet.html', - transclude: true, - scope: { - show: '=actionSheetShow', - }, - link: function(scope, element, attrs) { - scope.$watch('show', function() { - if (scope.show) { - $timeout(function() { - scope.revealMenu = true; - }, 100); - } else { - scope.revealMenu = false; - } - }); - scope.hide = function() { - scope.show = false; - $rootScope.$broadcast('incomingDataMenu.menuHidden'); - }; - } - }; - }); diff --git a/src/js/directives/clickToAccept.js b/src/js/directives/clickToAccept.js deleted file mode 100644 index bb31b45b4..000000000 --- a/src/js/directives/clickToAccept.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict'; - -angular.module('copayApp.directives') - .directive('clickToAccept', function() { - return { - restrict: 'E', - templateUrl: 'views/includes/clickToAccept.html', - transclude: true, - scope: { - sendStatus: '=clickSendStatus', - isDisabled: '=isDisabled', - }, - link: function(scope, element, attrs) { - scope.$watch('sendStatus', function() { - if (scope.sendStatus !== 'success') { - scope.displaySendStatus = scope.sendStatus; - } - }); - } - }; - }); diff --git a/src/js/directives/copyToClipboard.js b/src/js/directives/copyToClipboard.js deleted file mode 100644 index 5de40f23e..000000000 --- a/src/js/directives/copyToClipboard.js +++ /dev/null @@ -1,39 +0,0 @@ -'use strict'; - -angular.module('copayApp.directives') - .directive('copyToClipboard', function(platformInfo, nodeWebkitService, gettextCatalog, ionicToast, clipboard) { - return { - restrict: 'A', - scope: { - copyToClipboard: '=copyToClipboard' - }, - link: function(scope, elem, attrs, ctrl) { - var isCordova = platformInfo.isCordova; - var isChromeApp = platformInfo.isChromeApp; - var isNW = platformInfo.isNW; - elem.bind('mouseover', function() { - elem.css('cursor', 'pointer'); - }); - - var msg = gettextCatalog.getString('Copied to clipboard'); - elem.bind('click', function() { - var data = scope.copyToClipboard; - if (!data) return; - - if (isCordova) { - cordova.plugins.clipboard.copy(data); - } else if (isNW) { - nodeWebkitService.writeToClipboard(data); - } else if (clipboard.supported) { - clipboard.copyText(data); - } else { - // No supported - return; - } - scope.$apply(function() { - ionicToast.show(msg, 'bottom', false, 1000); - }); - }); - } - } - }); diff --git a/src/js/directives/countdown.js b/src/js/directives/countdown.js deleted file mode 100644 index 1e9ee4100..000000000 --- a/src/js/directives/countdown.js +++ /dev/null @@ -1,67 +0,0 @@ -'use strict'; - -angular.module('copayApp.directives') - .directive('timer', function() { - return { - restrict: 'EAC', - replace: false, - scope: { - countdown: "=", - interval: "=", - active: "=", - onZeroCallback: "=" - }, - template:"{{formatted}}", - controller: function ($scope, $attrs, $timeout, lodash) { - $scope.format = $attrs.outputFormat; - - var queueTick = function () { - $scope.timer = $timeout(function () { - if ($scope.countdown > 0) { - $scope.countdown -= 1; - - if ($scope.countdown > 0) { - queueTick(); - } else { - $scope.countdown = 0; - $scope.active = false; - if (!lodash.isUndefined($scope.onZeroCallback)) { - $scope.onZeroCallback(); - } - } - } - }, $scope.interval); - }; - - if ($scope.active) { - queueTick(); - } - - $scope.$watch('active', function (newValue, oldValue) { - if (newValue !== oldValue) { - if (newValue === true) { - if ($scope.countdown > 0) { - queueTick(); - } else { - $scope.active = false; - } - } else { - $timeout.cancel($scope.timer); - } - } - }); - $scope.$watch('countdown', function () { - updateFormatted(); - }); - - var updateFormatted = function () { - $scope.formatted = moment($scope.countdown * $scope.interval).format($scope.format); - }; - updateFormatted(); - - $scope.$on('$destroy', function () { - $timeout.cancel($scope.timer); - }); - } - }; - }); diff --git a/src/js/directives/directives.js b/src/js/directives/directives.js deleted file mode 100644 index ed59564b7..000000000 --- a/src/js/directives/directives.js +++ /dev/null @@ -1,146 +0,0 @@ -'use strict'; -angular.module('copayApp.directives') - .directive('validAddress', ['$rootScope', 'bitcore', - function($rootScope, bitcore) { - return { - require: 'ngModel', - link: function(scope, elem, attrs, ctrl) { - var URI = bitcore.URI; - var Address = bitcore.Address - var validator = function(value) { - - // Regular url - if (/^https?:\/\//.test(value)) { - ctrl.$setValidity('validAddress', true); - return value; - } - - // Bip21 uri - if (/^bitcoin:/.test(value)) { - var uri, isAddressValidLivenet, isAddressValidTestnet; - var isUriValid = URI.isValid(value); - if (isUriValid) { - uri = new URI(value); - isAddressValidLivenet = Address.isValid(uri.address.toString(), 'livenet') - isAddressValidTestnet = Address.isValid(uri.address.toString(), 'testnet') - } - ctrl.$setValidity('validAddress', isUriValid && (isAddressValidLivenet || isAddressValidTestnet)); - return value; - } - - if (typeof value == 'undefined') { - ctrl.$pristine = true; - return; - } - - // Regular Address - var regularAddressLivenet = Address.isValid(value, 'livenet'); - var regularAddressTestnet = Address.isValid(value, 'testnet'); - ctrl.$setValidity('validAddress', (regularAddressLivenet || regularAddressTestnet)); - return value; - }; - - - ctrl.$parsers.unshift(validator); - ctrl.$formatters.unshift(validator); - } - }; - } - ]) - .directive('validAmount', ['configService', - function(configService) { - - return { - require: 'ngModel', - link: function(scope, element, attrs, ctrl) { - var val = function(value) { - var settings = configService.getSync().wallet.settings; - var vNum = Number((value * settings.unitToSatoshi).toFixed(0)); - if (typeof value == 'undefined' || value == 0) { - ctrl.$pristine = true; - } - - - - if (typeof vNum == "number" && vNum > 0) { - if (vNum > Number.MAX_SAFE_INTEGER) { - ctrl.$setValidity('validAmount', false); - } else { - var decimals = Number(settings.unitDecimals); - var sep_index = ('' + value).indexOf('.'); - var str_value = ('' + value).substring(sep_index + 1); - if (sep_index >= 0 && str_value.length > decimals) { - ctrl.$setValidity('validAmount', false); - return; - } else { - ctrl.$setValidity('validAmount', true); - } - } - } else { - ctrl.$setValidity('validAmount', false); - } - return value; - } - ctrl.$parsers.unshift(val); - ctrl.$formatters.unshift(val); - } - }; - } - ]) - .directive('walletSecret', function(bitcore) { - return { - require: 'ngModel', - link: function(scope, elem, attrs, ctrl) { - var validator = function(value) { - if (value.length > 0) { - var m = value.match(/^[0-9A-HJ-NP-Za-km-z]{70,80}$/); - ctrl.$setValidity('walletSecret', m ? true : false); - } - return value; - }; - - ctrl.$parsers.unshift(validator); - } - }; - }) - .directive('ngFileSelect', function() { - return { - link: function($scope, el) { - el.bind('change', function(e) { - $scope.formData.file = (e.srcElement || e.target).files[0]; - $scope.getFile(); - }); - } - } - }) - .directive('contact', ['addressbookService', 'lodash', - function(addressbookService, lodash) { - return { - restrict: 'E', - link: function(scope, element, attrs) { - var addr = attrs.address; - addressbookService.get(addr, function(err, ab) { - if (ab) { - var name = lodash.isObject(ab) ? ab.name : ab; - element.append(name); - } else { - element.append(addr); - } - }); - } - }; - } - ]) - .directive('ignoreMouseWheel', function($rootScope, $timeout) { - return { - restrict: 'A', - link: function(scope, element, attrs) { - element.bind('mousewheel', function(event) { - element[0].blur(); - $timeout(function() { - element[0].focus(); - }, 1); - }); - } - } - }); diff --git a/src/js/directives/gravatar.js b/src/js/directives/gravatar.js deleted file mode 100644 index 5f7931798..000000000 --- a/src/js/directives/gravatar.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict'; - -angular.module('copayApp.directives') - .directive('gravatar', function(md5) { - return { - restrict: 'AE', - replace: true, - scope: { - name: '@', - height: '@', - width: '@', - email: '@' - }, - link: function(scope, el, attr) { - if (typeof scope.email === "string") { - scope.emailHash = md5.createHash(scope.email.toLowerCase() || ''); - } - }, - template: '{{ name }}' - }; - }); diff --git a/src/js/directives/hideTabs.js b/src/js/directives/hideTabs.js deleted file mode 100644 index 47a59a9e0..000000000 --- a/src/js/directives/hideTabs.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; -angular.module('copayApp.directives') -.directive('hideTabs', function($rootScope, $timeout) { - return { - restrict: 'A', - link: function($scope, $el) { - $scope.$on("$ionicView.beforeEnter", function(event, data){ - $timeout(function() { - $rootScope.hideTabs = 'tabs-item-hide'; - $rootScope.$apply(); - }); - }); - } - }; -}); diff --git a/src/js/directives/incomingDataMenu.js b/src/js/directives/incomingDataMenu.js deleted file mode 100644 index 629ee2562..000000000 --- a/src/js/directives/incomingDataMenu.js +++ /dev/null @@ -1,64 +0,0 @@ -'use strict'; - -angular.module('copayApp.directives') - .directive('incomingDataMenu', function($timeout, $rootScope, $state, externalLinkService) { - return { - restrict: 'E', - templateUrl: 'views/includes/incomingDataMenu.html', - link: function(scope, element, attrs) { - $rootScope.$on('incomingDataMenu.showMenu', function(event, data) { - $timeout(function() { - scope.data = data.data; - scope.type = data.type; - scope.showMenu = true; - scope.https = false; - - if (scope.type === 'url') { - if (scope.data.indexOf('https://') === 0) { - scope.https = true; - } - } - }); - }); - scope.hide = function() { - scope.showMenu = false; - $rootScope.$broadcast('incomingDataMenu.menuHidden'); - }; - scope.goToUrl = function(url) { - externalLinkService.open(url); - }; - scope.sendPaymentToAddress = function(bitcoinAddress) { - scope.showMenu = false; - $state.go('tabs.send').then(function() { - $timeout(function() { - $state.transitionTo('tabs.send.amount', { - toAddress: bitcoinAddress - }); - }, 50); - }); - }; - scope.addToAddressBook = function(bitcoinAddress) { - scope.showMenu = false; - $timeout(function() { - $state.go('tabs.send').then(function() { - $timeout(function() { - $state.transitionTo('tabs.send.addressbook', { - addressbookEntry: bitcoinAddress - }); - }); - }); - }, 100); - }; - scope.scanPaperWallet = function(privateKey) { - scope.showMenu = false; - $state.go('tabs.home').then(function() { - $timeout(function() { - $state.transitionTo('tabs.home.paperWallet', { - privateKey: privateKey - }); - }, 50); - }); - }; - } - }; - }); diff --git a/src/js/directives/itemSelector.js b/src/js/directives/itemSelector.js deleted file mode 100644 index 0d99c4c66..000000000 --- a/src/js/directives/itemSelector.js +++ /dev/null @@ -1,25 +0,0 @@ -'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/directives/logOptions.js b/src/js/directives/logOptions.js deleted file mode 100644 index 6b00cdc0c..000000000 --- a/src/js/directives/logOptions.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict'; - -angular.module('copayApp.directives') - .directive('logOptions', function($timeout, platformInfo) { - return { - restrict: 'E', - templateUrl: 'views/includes/logOptions.html', - transclude: true, - scope: { - show: '=logOptionsShow', - options: '=logOptions', - fillClass: '=logOptionsFillClass', - onSelect: '=logOptionsOnSelect', - onCopy: '=logOptionsOnCopy', - onSend: '=logOptionsOnSend' - }, - link: function(scope, element, attrs) { - scope.isCordova = platformInfo.isCordova; - - scope.hide = function() { - scope.show = false; - }; - - scope.getFillClass = function(index) { - scope.onSelect(index); - }; - } - }; - }); diff --git a/src/js/directives/noLowFee.js b/src/js/directives/noLowFee.js deleted file mode 100644 index 68046056b..000000000 --- a/src/js/directives/noLowFee.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -angular.module('copayApp.directives') - /** - * Replaces img tag with its svg content to allow for CSS styling of the svg. - */ - .directive('noLowFee', function($log, $ionicHistory, configService, popupService) { - return { - restrict: 'A', - link: function(scope, elem, attrs, ctrl) { - - - elem.bind('click', function() { - configService.whenAvailable(function(config) { - if (config.wallet.settings.feeLevel && config.wallet.settings.feeLevel.match(/conomy/)) { - $log.debug('Economy Fee setting... disabling link:' + elem.text()); - popupService.showAlert('Low Fee Error', 'Please change your Bitcoin Network Fee Policy setting to Normal or higher to use this service', function() { - $ionicHistory.goBack(); - }); - } - }); - }); - } - } - }); diff --git a/src/js/directives/qrScanner.js b/src/js/directives/qrScanner.js deleted file mode 100644 index 158f71c7e..000000000 --- a/src/js/directives/qrScanner.js +++ /dev/null @@ -1,59 +0,0 @@ -'use strict'; - -angular.module('copayApp.directives') - .directive('qrScanner', function($state, $rootScope, $log, $ionicHistory, platformInfo, scannerService, popupService) { - - return { - restrict: 'E', - scope: { - onScan: "&" - }, - replace: true, - template: '', - link: function(scope, el, attrs) { - - scope.chooseScanner = function() { - var isWindowsPhoneApp = platformInfo.isCordova && platformInfo.isWP; - - if (!isWindowsPhoneApp) { - scope.openScanner(); - return; - } - - scannerService.useOldScanner(function(err, contents) { - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err); - return; - } - scope.onScan({ - data: contents - }); - }); - }; - - scope.openScanner = function() { - $log.debug('Opening scanner by directive...'); - $ionicHistory.nextViewOptions({ - disableAnimate: true - }); - $state.go('scanner', { - passthroughMode: 1 - }); - }; - - var afterEnter = $rootScope.$on('$ionicView.afterEnter', function() { - if ($rootScope.scanResult) { - scope.onScan({ - data: $rootScope.scanResult - }); - $rootScope.scanResult = null; - } - }); - - // Destroy event - scope.$on('$destroy', function() { - afterEnter(); - }); - } - } - }); diff --git a/src/js/directives/showTabs.js b/src/js/directives/showTabs.js deleted file mode 100644 index 5c56ec0db..000000000 --- a/src/js/directives/showTabs.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; -angular.module('copayApp.directives') - .directive('showTabs', function($rootScope, $timeout) { - return { - restrict: 'A', - link: function($scope, $el) { - $scope.$on("$ionicView.beforeEnter", function(event, data) { - $timeout(function() { - $rootScope.hideTabs = ''; - $rootScope.$apply(); - }); - }); - } - }; - }); diff --git a/src/js/directives/slideToAccept.js b/src/js/directives/slideToAccept.js deleted file mode 100644 index 3f4db0ef9..000000000 --- a/src/js/directives/slideToAccept.js +++ /dev/null @@ -1,255 +0,0 @@ -'use strict'; - -angular.module('copayApp.directives') - .directive('slideToAccept', function($timeout, $window, $q) { - return { - restrict: 'E', - templateUrl: 'views/includes/slideToAccept.html', - transclude: true, - scope: { - sendStatus: '=slideSendStatus', - onConfirm: '&slideOnConfirm', - isDisabled: '=isDisabled' - }, - link: function(scope, element, attrs) { - - var KNOB_WIDTH = 71; - var MAX_SLIDE_START_PERCENTAGE = 50; - var FULLY_SLID_PERCENTAGE = 72; - var PERCENTAGE_BUMP = 5; - var JIGGLE_EASING = linear; - var JIGGLE_DURATION = 100; - var RECEDE_DURATION = 250; - var INITIAL_TAP_EASE_DURATION = 75; - - var elm = element[0]; - var isSliding = false; - var curSliderPct = getKnobWidthPercentage(); - var curBitcoinPct = 0; - var curTextPct = 0; - var currentEaseStartTime; - var bezier = $window.BezierEasing(0.175, 0.885, 0.320, 1.275); - - scope.isSlidFully = false; - scope.displaySendStatus = ''; - - scope.$watch('sendStatus', function() { - if (!scope.sendStatus) { - reset(); - } else if (scope.sendStatus === 'success') { - scope.displaySendStatus = ''; - $timeout(function() { - reset(); - }, 500); - } else { - scope.displaySendStatus = scope.sendStatus; - } - }); - - function easePosition(fromPct, pct, duration, easeFx, animateFx) { - var deferred = $q.defer(); - currentEaseStartTime = Date.now(); - var startTime = currentEaseStartTime; - var initialPct = fromPct; - var distance = pct - fromPct; - - function ease() { - if (startTime !== currentEaseStartTime) { - return; - } - $window.requestAnimationFrame(function() { - var now = Date.now(); - var elapsed = now - startTime; - var normalizedElapsedTime = elapsed / duration; - var newVal = easeFx(normalizedElapsedTime); - var newPct = newVal * distance + initialPct; - animateFx(newPct); - scope.$digest(); - if (elapsed < duration) { - ease(); - } else { - deferred.resolve(); - } - }); - } - ease(); - return deferred.promise; - } - - function linear(t) { - return t; - } - - function easeInOutBack(t) { - return bezier(t); - } - - function reset() { - scope.isSlidFully = false; - isSliding = false; - setNewSliderStyle(getKnobWidthPercentage()); - setNewBitcoinStyle(0); - setNewTextStyle(0); - } - - function setNewSliderStyle(pct) { - var knobWidthPct = getKnobWidthPercentage(); - var translatePct = pct - knobWidthPct; - if (isSliding) { - translatePct += 0.35 * pct; - } - scope.sliderStyle = getTransformStyle(translatePct); - curSliderPct = pct; - } - - function setNewBitcoinStyle(pct) { - var translatePct = -2.25 * pct; - scope.bitcoinStyle = getTransformStyle(translatePct); - curBitcoinPct = pct; - } - - function setNewTextStyle(pct) { - var translatePct = -0.1 * pct; - scope.textStyle = getTransformStyle(translatePct); - curTextPct = pct; - } - - function getTransformStyle(translatePct) { - return { - 'transform': 'translateX(' + translatePct + '%)' - }; - } - - function getKnobWidthPercentage() { - var knobWidthPct = (KNOB_WIDTH / elm.clientWidth) * 100; - return knobWidthPct; - } - - function setSliderPosition(pct) { - setNewSliderStyle(pct); - setNewBitcoinStyle(pct); - setNewTextStyle(pct); - } - - function easeSliderPosition(pct) { - var duration = INITIAL_TAP_EASE_DURATION; - easePosition(curSliderPct, pct, duration, JIGGLE_EASING, function(pct) { - setNewSliderStyle(pct); - }); - easePosition(curBitcoinPct, pct, duration, JIGGLE_EASING, function(pct) { - setNewBitcoinStyle(pct); - }); - easePosition(curTextPct, pct, duration, JIGGLE_EASING, function(pct) { - setNewTextStyle(pct); - }); - } - - function jiggleSlider() { - var pct = getKnobWidthPercentage() + PERCENTAGE_BUMP; - var duration = JIGGLE_DURATION; - var p1 = easePosition(curSliderPct, pct, duration, JIGGLE_EASING, function(pct) { - setNewSliderStyle(pct); - }); - var p2 = easePosition(curBitcoinPct, pct, duration, JIGGLE_EASING, function(pct) { - setNewBitcoinStyle(pct); - }); - - $q.all([p1, p2]).then(function() { - recede(); - }); - } - - function recede() { - var duration = RECEDE_DURATION; - easePosition(curSliderPct, getKnobWidthPercentage(), duration, easeInOutBack, function(pct) { - setNewSliderStyle(pct); - }); - easePosition(curBitcoinPct, 0, duration, easeInOutBack, function(pct) { - setNewBitcoinStyle(pct); - }); - easePosition(curTextPct, 0, duration, easeInOutBack, function(pct) { - setNewTextStyle(pct); - }); - } - - function alertSlidFully() { - scope.isSlidFully = true; - scope.onConfirm(); - } - - function getTouchXPosition($event) { - var x; - if ($event.touches || $event.changedTouches) { - if ($event.touches.length) { - x = $event.touches[0].clientX; - } else { - x = $event.changedTouches[0].clientX; - } - } else { - x = $event.clientX; - } - return x; - } - - function getSlidPercentage($event) { - var x = getTouchXPosition($event); - var width = elm.clientWidth; - var pct = (x / width) * 100; - if (x >= width) { - pct = 100; - } - return pct; - } - - scope.onTouchstart = function($event) { - if (scope.isSlidFully) { - return; - } - if (!isSliding) { - var pct = getSlidPercentage($event); - if (pct > MAX_SLIDE_START_PERCENTAGE) { - jiggleSlider(); - return; - } else { - isSliding = true; - var knobWidthPct = getKnobWidthPercentage(); - if (pct < knobWidthPct) { - pct = knobWidthPct; - } - pct += PERCENTAGE_BUMP; - easeSliderPosition(pct); - } - } - }; - - scope.onTouchmove = function($event) { - if (!isSliding || scope.isSlidFully) { - return; - } - var pct = getSlidPercentage($event); - var knobWidthPct = getKnobWidthPercentage(); - if (pct < knobWidthPct) { - pct = knobWidthPct; - } - pct += PERCENTAGE_BUMP; - currentEaseStartTime = null; - setSliderPosition(pct); - }; - - scope.onTouchend = function($event) { - if (scope.isSlidFully) { - return; - } - var pct = getSlidPercentage($event); - if (isSliding && pct > FULLY_SLID_PERCENTAGE) { - pct = 100; - setSliderPosition(pct); - alertSlidFully(); - } else { - recede(); - } - isSliding = false; - }; - } - }; - }); diff --git a/src/js/directives/slideToAcceptSuccess.js b/src/js/directives/slideToAcceptSuccess.js deleted file mode 100644 index fbd588bfe..000000000 --- a/src/js/directives/slideToAcceptSuccess.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict'; - -angular.module('copayApp.directives') - .directive('slideToAcceptSuccess', function($timeout, platformInfo) { - return { - restrict: 'E', - templateUrl: 'views/includes/slideToAcceptSuccess.html', - transclude: true, - scope: { - isShown: '=slideSuccessShow', - onConfirm: '&slideSuccessOnConfirm', - hideOnConfirm: '=slideSuccessHideOnConfirm' - }, - link: function(scope, element, attrs) { - - scope.isWindowsPhoneApp = platformInfo.isCordova && platformInfo.isWP; - - var elm = element[0]; - elm.style.display = 'none'; - scope.$watch('isShown', function() { - if (scope.isShown) { - elm.style.display = 'flex'; - $timeout(function() { - scope.fillScreen = true; - }, 10); - } - }); - scope.onConfirmButtonClick = function() { - scope.onConfirm(); - if (scope.hideOnConfirm) { - scope.fillScreen = false; - elm.style.display = 'none'; - } - }; - } - }; - }); diff --git a/src/js/directives/svg.js b/src/js/directives/svg.js deleted file mode 100644 index 99ee79261..000000000 --- a/src/js/directives/svg.js +++ /dev/null @@ -1,44 +0,0 @@ -'use strict'; - -angular.module('copayApp.directives') - /** - * Replaces img tag with its svg content to allow for CSS styling of the svg. - */ - .directive('svg', function($http) { - return { - restrict: 'C', - link: function(scope, element, attrs) { - var imgId = attrs.id; - var imgClass = attrs.class; - var imgUrl = attrs.src || attrs.ngSrc; - var svg; - - // Load svg content - $http.get(imgUrl).success(function(data, status) { - svg = angular.element(data); - for (var i = svg.length - 1; i >= 0; i--) { - if (svg[i].constructor == SVGSVGElement) { - svg = angular.element(svg[i]); - break; - } - } - - if (typeof imgId !== 'undefined') { - svg.attr('id', imgId); - } - - if (typeof imgClass !== 'undefined') { - svg.attr('class', imgClass); - } - // Remove invalid attributes - svg = svg.removeAttr('xmlns:a'); - element.replaceWith(svg); - }); - - scope.$on('$destroy', function() { - if (svg) svg.remove(); - }); - } - }; - }); - \ No newline at end of file diff --git a/src/js/directives/walletSelector.js b/src/js/directives/walletSelector.js deleted file mode 100644 index c5dfff59a..000000000 --- a/src/js/directives/walletSelector.js +++ /dev/null @@ -1,28 +0,0 @@ -'use strict'; - -angular.module('copayApp.directives') - .directive('walletSelector', function($timeout) { - return { - restrict: 'E', - templateUrl: 'views/includes/walletSelector.html', - transclude: true, - scope: { - title: '=walletSelectorTitle', - show: '=walletSelectorShow', - wallets: '=walletSelectorWallets', - selectedWallet: '=walletSelectorSelectedWallet', - onSelect: '=walletSelectorOnSelect' - }, - link: function(scope, element, attrs) { - scope.hide = function() { - scope.show = false; - }; - scope.selectWallet = function(wallet) { - $timeout(function() { - scope.hide(); - }, 100); - scope.onSelect(wallet); - }; - } - }; - }); diff --git a/src/js/filters/filters.js b/src/js/filters/filters.js deleted file mode 100644 index 8d9a56d10..000000000 --- a/src/js/filters/filters.js +++ /dev/null @@ -1,82 +0,0 @@ -'use strict'; - -angular.module('copayApp.filters', []) - .filter('amTimeAgo', ['amMoment', - function(amMoment) { - return function(input) { - return amMoment.preprocessDate(input).fromNow(); - }; - } - ]) - .filter('paged', function() { - return function(elements) { - if (elements) { - return elements.filter(Boolean); - } - - return false; - }; - }) - .filter('removeEmpty', function() { - return function(elements) { - elements = elements || []; - // Hide empty change addresses from other copayers - return elements.filter(function(e) { - return !e.isChange || e.balance > 0; - }); - } - }) - .filter('formatFiatAmount', ['$filter', '$locale', 'configService', - function(filter, locale, configService) { - var numberFilter = filter('number'); - var formats = locale.NUMBER_FORMATS; - var config = configService.getSync().wallet.settings; - return function(amount) { - if (!config) return amount; - - var fractionSize = 2; - var value = numberFilter(amount, fractionSize); - var sep = value.indexOf(formats.DECIMAL_SEP); - var group = value.indexOf(formats.GROUP_SEP); - - if (amount >= 0) { - if (group > 0) { - if (sep < 0) { - return value; - } - var intValue = value.substring(0, sep); - var floatValue = parseFloat(value.substring(sep)); - floatValue = floatValue.toFixed(2); - floatValue = floatValue.toString().substring(1); - var finalValue = intValue + floatValue; - return finalValue; - } else { - value = parseFloat(value); - return value.toFixed(2); - } - } - return 0; - }; - } - ]) - .filter('orderObjectBy', function() { - return function(items, field, reverse) { - var filtered = []; - angular.forEach(items, function(item) { - filtered.push(item); - }); - filtered.sort(function(a, b) { - return (a[field] > b[field] ? 1 : -1); - }); - if (reverse) filtered.reverse(); - return filtered; - }; - }) - .filter('range', function() { - return function(input, total) { - total = parseInt(total); - for (var i = 0; i < total; i++) - input.push(i); - return input; - }; - }); diff --git a/src/js/init.js b/src/js/init.js deleted file mode 100644 index e85f7997e..000000000 --- a/src/js/init.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict'; - -angular.element(document).ready(function() { - - // Run copayApp after device is ready. - var startAngular = function() { - angular.bootstrap(document, ['copayApp']); - }; - - - function handleOpenURL(url) { - if ('cordova' in window) { - console.log('DEEP LINK:' + url); - cordova.fireDocumentEvent('handleopenurl', { - url: url - }); - } else { - console.log("ERROR: Cannont handle open URL in non-cordova apps") - } - }; - - /* Cordova specific Init */ - if ('cordova' in window) { - - window.handleOpenURL = handleOpenURL; - - - document.addEventListener('deviceready', function() { - - window.open = cordova.InAppBrowser.open; - - // Create a sticky event for handling the app being opened via a custom URL - cordova.addStickyDocumentEventHandler('handleopenurl'); - startAngular(); - }, false); - - } else { - startAngular(); - } - -}); diff --git a/src/js/models/profile.js b/src/js/models/profile.js deleted file mode 100644 index a2b70fac4..000000000 --- a/src/js/models/profile.js +++ /dev/null @@ -1,117 +0,0 @@ -'use strict'; - -/** - * Profile - * - * credential: array of OBJECTS - */ -function Profile() { - this.version = '1.0.0'; -}; - -Profile.create = function(opts) { - opts = opts || {}; - - var x = new Profile(); - x.createdOn = Date.now(); - x.credentials = opts.credentials || []; - x.disclaimerAccepted = false; - x.checked = {}; - return x; -}; - -Profile.fromObj = function(obj) { - var x = new Profile(); - - x.createdOn = obj.createdOn; - x.credentials = obj.credentials; - x.disclaimerAccepted = obj.disclaimerAccepted; - x.checked = obj.checked || {}; - x.checkedUA = obj.checkedUA || {}; - - if (x.credentials[0] && typeof x.credentials[0] != 'object') - throw ("credentials should be an object"); - - return x; -}; - -Profile.fromString = function(str) { - return Profile.fromObj(JSON.parse(str)); -}; - -Profile.prototype.toObj = function() { - delete this.dirty; - return JSON.stringify(this); -}; - - -Profile.prototype.hasWallet = function(walletId) { - for (var i in this.credentials) { - var c = this.credentials[i]; - if (c.walletId == walletId) return true; - }; - return false; -}; - -Profile.prototype.isChecked = function(ua, walletId) { - return !!(this.checkedUA == ua && this.checked[walletId]); -}; - - -Profile.prototype.isDeviceChecked = function(ua) { - return this.checkedUA == ua; -}; - - -Profile.prototype.setChecked = function(ua, walletId) { - if (this.checkedUA != ua) { - this.checkedUA = ua; - this.checked = {}; - } - this.checked[walletId] = true; - this.dirty = true; -}; - - -Profile.prototype.addWallet = function(credentials) { - if (!credentials.walletId) - throw 'credentials must have .walletId'; - - if (this.hasWallet(credentials.walletId)) - return false; - - this.credentials.push(credentials); - this.dirty = true; - return true; -}; - -Profile.prototype.updateWallet = function(credentials) { - if (!credentials.walletId) - throw 'credentials must have .walletId'; - - if (!this.hasWallet(credentials.walletId)) - return false; - - this.credentials = this.credentials.map(function(c) { - if(c.walletId != credentials.walletId ) { - return c; - } else { - return credentials - } - }); - - this.dirty = true; - return true; -}; - -Profile.prototype.deleteWallet = function(walletId) { - if (!this.hasWallet(walletId)) - return false; - - this.credentials = this.credentials.filter(function(c) { - return c.walletId != walletId; - }); - - this.dirty = true; - return true; -}; diff --git a/src/js/routes.js b/src/js/routes.js deleted file mode 100644 index 4904be9f6..000000000 --- a/src/js/routes.js +++ /dev/null @@ -1,1280 +0,0 @@ -'use strict'; - -var unsupported, isaosp; - -if (window && window.navigator) { - var rxaosp = window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/); - isaosp = (rxaosp && rxaosp[1] < 537); - if (!window.cordova && isaosp) - unsupported = true; - if (unsupported) { - window.location = '#/unsupported'; - } -} - -//Setting up route -angular.module('copayApp').config(function(historicLogProvider, $provide, $logProvider, $stateProvider, $urlRouterProvider, $compileProvider, $ionicConfigProvider) { - $urlRouterProvider.otherwise('/starting'); - - // NO CACHE - //$ionicConfigProvider.views.maxCache(0); - - // TABS BOTTOM - $ionicConfigProvider.tabs.position('bottom'); - - // NAV TITTLE CENTERED - $ionicConfigProvider.navBar.alignTitle('center'); - - // NAV BUTTONS ALIGMENT - $ionicConfigProvider.navBar.positionPrimaryButtons('left'); - $ionicConfigProvider.navBar.positionSecondaryButtons('right'); - - // NAV BACK-BUTTON TEXT/ICON - $ionicConfigProvider.backButton.icon('icon ion-ios-arrow-thin-left').text(''); - $ionicConfigProvider.backButton.previousTitleText(false); - - // CHECKBOX CIRCLE - $ionicConfigProvider.form.checkbox('circle'); - - // USE NATIVE SCROLLING - $ionicConfigProvider.scrolling.jsScrolling(false); - - $logProvider.debugEnabled(true); - $provide.decorator('$log', ['$delegate', 'platformInfo', - function($delegate, platformInfo) { - var historicLog = historicLogProvider.$get(); - - historicLog.getLevels().forEach(function(levelDesc) { - var level = levelDesc.level; - if (platformInfo.isDevel && level == 'error') return; - - var orig = $delegate[level]; - $delegate[level] = function() { - if (level == 'error') - console.log(arguments); - - var args = Array.prototype.slice.call(arguments); - - args = args.map(function(v) { - try { - if (typeof v == 'undefined') v = 'undefined'; - if (!v) v = 'null'; - if (typeof v == 'object') { - if (v.message) - v = v.message; - else - v = JSON.stringify(v); - } - // Trim output in mobile - if (platformInfo.isCordova) { - v = v.toString(); - if (v.length > 3000) { - v = v.substr(0, 2997) + '...'; - } - } - } catch (e) { - console.log('Error at log decorator:', e); - v = 'undefined'; - } - return v; - }); - - try { - if (platformInfo.isCordova) - console.log(args.join(' ')); - - historicLog.add(level, args.join(' ')); - orig.apply(null, args); - } catch (e) { - console.log('ERROR (at log decorator):', e, args[0]); - } - }; - }); - return $delegate; - } - ]); - - // whitelist 'chrome-extension:' for chromeApp to work with image URLs processed by Angular - // link: http://stackoverflow.com/questions/15606751/angular-changes-urls-to-unsafe-in-extension-page?lq=1 - $compileProvider.imgSrcSanitizationWhitelist(/^\s*((https?|ftp|file|blob|chrome-extension):|data:image\/)/); - - $stateProvider - - /* - * - * Other pages - * - */ - - .state('unsupported', { - url: '/unsupported', - templateUrl: 'views/unsupported.html' - }) - - .state('starting', { - url: '/starting', - template: '
' - }) - - /* - * - * URI - * - */ - - .state('uri', { - url: '/uri/:url', - controller: function($stateParams, $log, openURLService, profileService) { - profileService.whenAvailable(function() { - $log.info('DEEP LINK from Browser:' + $stateParams.url); - openURLService.handleURL({ - url: $stateParams.url - }); - }) - } - }) - - /* - * - * Wallet - * - */ - - .state('tabs.wallet', { - url: '/wallet/:walletId/:fromOnboarding', - views: { - 'tab-home@tabs': { - controller: 'walletDetailsController', - templateUrl: 'views/walletDetails.html' - } - } - }) - .state('tabs.activity', { - url: '/activity', - views: { - 'tab-home@tabs': { - controller: 'activityController', - templateUrl: 'views/activity.html', - } - } - }) - .state('tabs.proposals', { - url: '/proposals', - views: { - 'tab-home@tabs': { - controller: 'proposalsController', - templateUrl: 'views/proposals.html', - } - } - }) - .state('tabs.wallet.tx-details', { - url: '/tx-details/:txid', - views: { - 'tab-home@tabs': { - controller: 'txDetailsController', - templateUrl: 'views/tx-details.html' - } - } - }) - .state('tabs.wallet.backupWarning', { - url: '/backupWarning/:from/:walletId', - views: { - 'tab-home@tabs': { - controller: 'backupWarningController', - templateUrl: 'views/backupWarning.html' - } - } - }) - .state('tabs.wallet.backup', { - url: '/backup/:walletId', - views: { - 'tab-home@tabs': { - templateUrl: 'views/backup.html', - controller: 'backupController' - } - } - }) - - .state('tabs.wallet.addresses', { - url: '/addresses/:walletId/:toAddress', - views: { - 'tab-home@tabs': { - controller: 'addressesController', - templateUrl: 'views/addresses.html' - } - } - }) - .state('tabs.wallet.allAddresses', { - url: '/allAddresses/:walletId', - views: { - 'tab-home@tabs': { - controller: 'addressesController', - templateUrl: 'views/allAddresses.html' - } - } - }) - - /* - * - * Tabs - * - */ - - .state('tabs', { - url: '/tabs', - abstract: true, - controller: 'tabsController', - templateUrl: 'views/tabs.html' - }) - .state('tabs.home', { - url: '/home/:fromOnboarding', - views: { - 'tab-home': { - controller: 'tabHomeController', - templateUrl: 'views/tab-home.html', - } - } - }) - .state('tabs.receive', { - url: '/receive', - views: { - 'tab-receive': { - controller: 'tabReceiveController', - templateUrl: 'views/tab-receive.html', - } - } - }) - .state('tabs.scan', { - url: '/scan', - views: { - 'tab-scan': { - controller: 'tabScanController', - templateUrl: 'views/tab-scan.html', - } - } - }) - .state('scanner', { - url: '/scanner', - params: { - passthroughMode: null, - }, - controller: 'tabScanController', - templateUrl: 'views/tab-scan.html' - }) - .state('tabs.send', { - url: '/send', - views: { - 'tab-send': { - controller: 'tabSendController', - templateUrl: 'views/tab-send.html', - } - } - }) - .state('tabs.settings', { - url: '/settings', - views: { - 'tab-settings': { - controller: 'tabSettingsController', - templateUrl: 'views/tab-settings.html', - } - } - }) - - /* - * - * Send - * - */ - - .state('tabs.send.amount', { - url: '/amount/:recipientType/:toAddress/:toName/:toEmail/:toColor', - views: { - 'tab-send@tabs': { - controller: 'amountController', - templateUrl: 'views/amount.html' - } - } - }) - .state('tabs.send.confirm', { - url: '/confirm/:recipientType/:toAddress/:toName/:toAmount/:toEmail/:toColor/:description/:useSendMax', - views: { - 'tab-send@tabs': { - controller: 'confirmController', - templateUrl: 'views/confirm.html' - } - }, - params: { - paypro: null - } - }) - .state('tabs.send.addressbook', { - url: '/addressbook/add/:fromSendTab/:addressbookEntry', - views: { - 'tab-send@tabs': { - templateUrl: 'views/addressbook.add.html', - controller: 'addressbookAddController' - } - } - }) - - /* - * - * Add - * - */ - - .state('tabs.add', { - url: '/add', - views: { - 'tab-home@tabs': { - templateUrl: 'views/add.html' - } - } - }) - .state('tabs.add.join', { - url: '/join/:url', - views: { - 'tab-home@tabs': { - templateUrl: 'views/join.html', - controller: 'joinController' - }, - } - }) - .state('tabs.add.import', { - url: '/import/:code', - views: { - 'tab-home@tabs': { - templateUrl: 'views/import.html', - controller: 'importController' - }, - }, - }) - .state('tabs.add.create-personal', { - url: '/create-personal', - views: { - 'tab-home@tabs': { - templateUrl: 'views/tab-create-personal.html', - controller: 'createController' - }, - } - }) - .state('tabs.add.create-shared', { - url: '/create-shared', - views: { - 'tab-home@tabs': { - templateUrl: 'views/tab-create-shared.html', - controller: 'createController' - }, - } - }) - - /* - * - * Global Settings - * - */ - - .state('tabs.notifications', { - url: '/notifications', - views: { - 'tab-settings@tabs': { - controller: 'preferencesNotificationsController', - templateUrl: 'views/preferencesNotifications.html' - } - } - }) - .state('tabs.language', { - url: '/language', - views: { - 'tab-settings@tabs': { - controller: 'preferencesLanguageController', - templateUrl: 'views/preferencesLanguage.html' - } - } - }) - .state('tabs.unit', { - url: '/unit', - views: { - 'tab-settings@tabs': { - controller: 'preferencesUnitController', - templateUrl: 'views/preferencesUnit.html' - } - } - }) - .state('tabs.fee', { - url: '/fee', - views: { - 'tab-settings@tabs': { - controller: 'preferencesFeeController', - templateUrl: 'views/preferencesFee.html' - } - } - }) - .state('tabs.altCurrency', { - url: '/altCurrency', - views: { - 'tab-settings@tabs': { - controller: 'preferencesAltCurrencyController', - templateUrl: 'views/preferencesAltCurrency.html' - } - } - }) - .state('tabs.about', { - url: '/about', - views: { - 'tab-settings@tabs': { - controller: 'preferencesAbout', - templateUrl: 'views/preferencesAbout.html' - } - } - }) - .state('tabs.about.logs', { - url: '/logs', - views: { - 'tab-settings@tabs': { - controller: 'preferencesLogs', - templateUrl: 'views/preferencesLogs.html' - } - } - }) - .state('tabs.about.termsOfUse', { - url: '/termsOfUse', - views: { - 'tab-settings@tabs': { - templateUrl: 'views/termsOfUse.html' - } - } - }) - .state('tabs.advanced', { - url: '/advanced', - views: { - 'tab-settings@tabs': { - controller: 'advancedSettingsController', - templateUrl: 'views/advancedSettings.html' - } - } - }) - .state('tabs.lockSetup', { - url: '/lockSetup', - views: { - 'tab-settings@tabs': { - controller: 'lockSetupController', - templateUrl: 'views/lockSetup.html', - } - } - }) - .state('tabs.pin', { - url: '/pin/:action', - views: { - 'tab-settings@tabs': { - controller: 'pinController', - templateUrl: 'views/pin.html', - cache: false - } - } - }) - - /* - * - * Wallet preferences - * - */ - - .state('tabs.preferences', { - url: '/preferences/:walletId', - views: { - 'tab-settings@tabs': { - controller: 'preferencesController', - templateUrl: 'views/preferences.html' - } - } - }) - .state('tabs.preferences.preferencesAlias', { - url: '/preferencesAlias', - views: { - 'tab-settings@tabs': { - controller: 'preferencesAliasController', - templateUrl: 'views/preferencesAlias.html' - } - } - }) - .state('tabs.preferences.preferencesColor', { - url: '/preferencesColor', - views: { - 'tab-settings@tabs': { - controller: 'preferencesColorController', - templateUrl: 'views/preferencesColor.html' - } - } - }) - .state('tabs.preferences.backupWarning', { - url: '/backupWarning/:from', - views: { - 'tab-settings@tabs': { - controller: 'backupWarningController', - templateUrl: 'views/backupWarning.html' - } - } - }) - .state('tabs.preferences.backup', { - url: '/backup', - views: { - 'tab-settings@tabs': { - controller: 'backupController', - templateUrl: 'views/backup.html' - } - } - }) - .state('tabs.preferences.preferencesAdvanced', { - url: '/preferencesAdvanced', - views: { - 'tab-settings@tabs': { - controller: 'preferencesAdvancedController', - templateUrl: 'views/preferencesAdvanced.html' - } - } - }) - .state('tabs.preferences.information', { - url: '/information', - views: { - 'tab-settings@tabs': { - controller: 'preferencesInformation', - templateUrl: 'views/preferencesInformation.html' - } - } - }) - .state('tabs.preferences.export', { - url: '/export', - views: { - 'tab-settings@tabs': { - controller: 'exportController', - templateUrl: 'views/export.html' - } - } - }) - .state('tabs.preferences.preferencesBwsUrl', { - url: '/preferencesBwsUrl', - views: { - 'tab-settings@tabs': { - controller: 'preferencesBwsUrlController', - templateUrl: 'views/preferencesBwsUrl.html' - } - } - }) - .state('tabs.preferences.preferencesHistory', { - url: '/preferencesHistory', - views: { - 'tab-settings@tabs': { - controller: 'preferencesHistory', - templateUrl: 'views/preferencesHistory.html' - } - } - }) - .state('tabs.preferences.preferencesExternal', { - url: '/preferencesExternal', - views: { - 'tab-settings@tabs': { - controller: 'preferencesExternalController', - templateUrl: 'views/preferencesExternal.html' - } - } - }) - .state('tabs.preferences.delete', { - url: '/delete', - views: { - 'tab-settings@tabs': { - controller: 'preferencesDeleteWalletController', - templateUrl: 'views/preferencesDeleteWallet.html' - } - } - }) - - /* - * - * Addressbook - * - */ - - - .state('tabs.addressbook', { - url: '/addressbook', - views: { - 'tab-settings@tabs': { - templateUrl: 'views/addressbook.html', - controller: 'addressbookListController' - } - } - }) - .state('tabs.addressbook.add', { - url: '/add', - views: { - 'tab-settings@tabs': { - templateUrl: 'views/addressbook.add.html', - controller: 'addressbookAddController' - } - } - }) - .state('tabs.addressbook.view', { - url: '/view/:address/:email/:name', - views: { - 'tab-settings@tabs': { - templateUrl: 'views/addressbook.view.html', - controller: 'addressbookViewController' - } - } - }) - - /* - * - * Copayers - * - */ - - .state('tabs.copayers', { - url: '/copayers/:walletId', - views: { - 'tab-home': { - templateUrl: 'views/copayers.html', - controller: 'copayersController' - } - } - }) - - /* - * - * Addresses - * - */ - - .state('tabs.settings.addresses', { - url: '/addresses/:walletId/:toAddress', - views: { - 'tab-settings@tabs': { - controller: 'addressesController', - templateUrl: 'views/addresses.html' - } - } - }) - .state('tabs.settings.allAddresses', { - url: '/allAddresses/:walletId', - views: { - 'tab-settings@tabs': { - controller: 'addressesController', - templateUrl: 'views/allAddresses.html' - } - } - }) - - /* - * - * Request Specific amount - * - */ - - .state('tabs.paymentRequest', { - url: '/payment-request', - abstract: true, - params: { - id: null, - nextStep: 'tabs.paymentRequest.confirm' - } - }) - - .state('tabs.paymentRequest.amount', { - url: '/amount', - views: { - 'tab-receive@tabs': { - controller: 'amountController', - templateUrl: 'views/amount.html' - } - } - }) - .state('tabs.paymentRequest.confirm', { - url: '/confirm/:amount/:currency', - views: { - 'tab-receive@tabs': { - controller: 'customAmountController', - templateUrl: 'views/customAmount.html' - } - } - }) - - /* - * - * Init backup flow - * - */ - - .state('tabs.receive.backupWarning', { - url: '/backupWarning/:from/:walletId', - views: { - 'tab-receive@tabs': { - controller: 'backupWarningController', - templateUrl: 'views/backupWarning.html' - } - } - }) - .state('tabs.receive.backup', { - url: '/backup/:walletId', - views: { - 'tab-receive@tabs': { - controller: 'backupController', - templateUrl: 'views/backup.html' - } - } - }) - - /* - * - * Paper Wallet - * - */ - - .state('tabs.home.paperWallet', { - url: '/paperWallet/:privateKey', - views: { - 'tab-home@tabs': { - controller: 'paperWalletController', - templateUrl: 'views/paperWallet.html' - } - } - }) - /* - * - * Onboarding - * - */ - - .state('onboarding', { - url: '/onboarding', - abstract: true, - template: '' - }) - .state('onboarding.welcome', { - url: '/welcome', - views: { - 'onboarding': { - templateUrl: 'views/onboarding/welcome.html', - controller: 'welcomeController' - } - } - }) - .state('onboarding.tour', { - url: '/tour', - views: { - 'onboarding': { - templateUrl: 'views/onboarding/tour.html', - controller: 'tourController' - } - } - }) - .state('onboarding.collectEmail', { - url: '/collectEmail/:walletId', - views: { - 'onboarding': { - templateUrl: 'views/onboarding/collectEmail.html', - controller: 'collectEmailController' - } - } - }) - .state('onboarding.backupRequest', { - url: '/backupRequest/:walletId', - views: { - 'onboarding': { - templateUrl: 'views/onboarding/backupRequest.html', - controller: 'backupRequestController' - } - } - }) - .state('onboarding.backupWarning', { - url: '/backupWarning/:from/:walletId', - views: { - 'onboarding': { - templateUrl: 'views/backupWarning.html', - controller: 'backupWarningController' - } - } - }) - .state('onboarding.backup', { - url: '/backup/:walletId', - views: { - 'onboarding': { - templateUrl: 'views/backup.html', - controller: 'backupController' - } - } - }) - .state('onboarding.disclaimer', { - url: '/disclaimer/:walletId/:backedUp/:resume', - views: { - 'onboarding': { - templateUrl: 'views/onboarding/disclaimer.html', - controller: 'disclaimerController' - } - } - }) - .state('onboarding.terms', { - url: '/terms', - views: { - 'onboarding': { - templateUrl: 'views/onboarding/terms.html', - controller: 'termsController' - } - } - }) - .state('onboarding.import', { - url: '/import', - views: { - 'onboarding': { - templateUrl: 'views/import.html', - controller: 'importController' - }, - }, - params: { - code: null, - fromOnboarding: null - }, - }) - - /* - * - * Feedback - * - */ - - .state('tabs.feedback', { - url: '/feedback', - views: { - 'tab-settings@tabs': { - templateUrl: 'views/feedback/send.html', - controller: 'sendController' - } - } - }) - .state('tabs.shareApp', { - url: '/shareApp/:score/:skipped/:fromSettings', - views: { - 'tab-settings@tabs': { - controller: 'completeController', - templateUrl: 'views/feedback/complete.html' - } - } - }) - .state('tabs.rate', { - url: '/rate', - abstract: true - }) - .state('tabs.rate.send', { - url: '/send/:score', - views: { - 'tab-home@tabs': { - templateUrl: 'views/feedback/send.html', - controller: 'sendController' - } - } - }) - .state('tabs.rate.complete', { - url: '/complete/:score/:skipped', - views: { - 'tab-home@tabs': { - controller: 'completeController', - templateUrl: 'views/feedback/complete.html' - } - } - }) - .state('tabs.rate.rateApp', { - url: '/rateApp/:score', - views: { - 'tab-home@tabs': { - controller: 'rateAppController', - templateUrl: 'views/feedback/rateApp.html' - } - } - }) - - /* - * - * Buy or Sell Bitcoin - * - */ - - .state('tabs.buyandsell', { - url: '/buyandsell', - views: { - 'tab-home': { - controller: 'buyandsellController', - templateUrl: 'views/buyandsell.html' - } - } - }) - - /* - * - * Glidera - * - * - */ - - .state('tabs.buyandsell.glidera', { - url: '/glidera/:code', - views: { - 'tab-home@tabs': { - controller: 'glideraController', - controllerAs: 'glidera', - templateUrl: 'views/glidera.html' - } - } - }) - .state('tabs.buyandsell.glidera.amount', { - url: '/amount/:nextStep/:currency', - views: { - 'tab-home@tabs': { - controller: 'amountController', - templateUrl: 'views/amount.html' - } - } - }) - .state('tabs.buyandsell.glidera.buy', { - url: '/buy/:amount/:currency', - views: { - 'tab-home@tabs': { - controller: 'buyGlideraController', - templateUrl: 'views/buyGlidera.html' - } - } - }) - .state('tabs.buyandsell.glidera.sell', { - url: '/sell/:amount/:currency', - views: { - 'tab-home@tabs': { - controller: 'sellGlideraController', - templateUrl: 'views/sellGlidera.html' - } - } - }) - .state('tabs.preferences.glidera', { - url: '/glidera', - views: { - 'tab-settings@tabs': { - controller: 'preferencesGlideraController', - templateUrl: 'views/preferencesGlidera.html' - } - } - }) - - /* - * - * Coinbase - * - */ - - .state('tabs.buyandsell.coinbase', { - url: '/coinbase/:code', - views: { - 'tab-home@tabs': { - controller: 'coinbaseController', - controllerAs: 'coinbase', - templateUrl: 'views/coinbase.html' - } - } - }) - .state('tabs.preferences.coinbase', { - url: '/coinbase', - views: { - 'tab-settings@tabs': { - controller: 'preferencesCoinbaseController', - templateUrl: 'views/preferencesCoinbase.html' - } - } - }) - .state('tabs.buyandsell.coinbase.amount', { - url: '/amount/:nextStep/:currency', - views: { - 'tab-home@tabs': { - controller: 'amountController', - templateUrl: 'views/amount.html' - } - } - }) - .state('tabs.buyandsell.coinbase.buy', { - url: '/buy/:amount/:currency', - views: { - 'tab-home@tabs': { - controller: 'buyCoinbaseController', - templateUrl: 'views/buyCoinbase.html' - } - } - }) - .state('tabs.buyandsell.coinbase.sell', { - url: '/sell/:amount/:currency', - views: { - 'tab-home@tabs': { - controller: 'sellCoinbaseController', - templateUrl: 'views/sellCoinbase.html' - } - } - }) - - /* - * - * Gift Cards - * - */ - - .state('tabs.giftcards', { - url: '/giftcards', - abstract: true - }) - - /* - * - * Amazon.com Gift Card - * - */ - - .state('tabs.giftcards.amazon', { - url: '/amazon', - views: { - 'tab-home@tabs': { - controller: 'amazonController', - templateUrl: 'views/amazon.html' - } - } - }) - .state('tabs.giftcards.amazon.cards', { - url: '/cards', - views: { - 'tab-home@tabs': { - controller: 'amazonCardsController', - templateUrl: 'views/amazonCards.html' - } - }, - params: { - invoiceId: null - } - }) - .state('tabs.giftcards.amazon.amount', { - url: '/amount', - views: { - 'tab-home@tabs': { - controller: 'amountController', - templateUrl: 'views/amount.html' - } - }, - params: { - nextStep: 'tabs.giftcards.amazon.buy', - currency: 'USD', - forceCurrency: true - } - }) - .state('tabs.giftcards.amazon.buy', { - url: '/buy/:amount/:currency', - views: { - 'tab-home@tabs': { - controller: 'buyAmazonController', - templateUrl: 'views/buyAmazon.html' - } - } - }) - - /* - * - * BitPay Card - * - */ - - .state('tabs.bitpayCardIntro', { - url: '/bitpay-card-intro/:secret/:email/:otp', - views: { - 'tab-home@tabs': { - controller: 'bitpayCardIntroController', - templateUrl: 'views/bitpayCardIntro.html' - } - } - }) - .state('tabs.bitpayCard', { - url: '/bitpay-card', - views: { - 'tab-home@tabs': { - controller: 'bitpayCardController', - controllerAs: 'bitpayCard', - templateUrl: 'views/bitpayCard.html' - } - }, - params: { - id: null, - currency: 'USD', - useSendMax: null - } - }) - .state('tabs.bitpayCard.amount', { - url: '/amount/:nextStep', - views: { - 'tab-home@tabs': { - controller: 'amountController', - templateUrl: 'views/amount.html' - } - } - }) - .state('tabs.bitpayCard.topup', { - url: '/topup/:amount', - views: { - 'tab-home@tabs': { - controller: 'topUpController', - templateUrl: 'views/topup.html' - } - } - }) - .state('tabs.preferences.bitpayServices', { - url: '/bitpay-services', - views: { - 'tab-settings@tabs': { - controller: 'preferencesBitpayServicesController', - templateUrl: 'views/preferencesBitpayServices.html' - } - } - }); - }) - .run(function($rootScope, $state, $location, $log, $timeout, startupService, ionicToast, fingerprintService, $ionicHistory, $ionicPlatform, $window, appConfigService, lodash, platformInfo, profileService, uxLanguage, gettextCatalog, openURLService, storageService, scannerService, configService, emailService, /* plugins START HERE => */ coinbaseService, glideraService, amazonService, bitpayCardService, applicationService) { - - uxLanguage.init(); - - $ionicPlatform.ready(function() { - if (screen.width < 768 && platformInfo.isCordova) - screen.lockOrientation('portrait'); - - if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard && !platformInfo.isWP) { - cordova.plugins.Keyboard.hideKeyboardAccessoryBar(false); - cordova.plugins.Keyboard.disableScroll(true); - } - - window.addEventListener('native.keyboardshow', function() { - document.body.classList.add('keyboard-open'); - }); - - $ionicPlatform.registerBackButtonAction(function(e) { - - //from root tabs view - var matchHome = $ionicHistory.currentStateName() == 'tabs.home' ? true : false; - var matchReceive = $ionicHistory.currentStateName() == 'tabs.receive' ? true : false; - var matchScan = $ionicHistory.currentStateName() == 'tabs.scan' ? true : false; - var matchSend = $ionicHistory.currentStateName() == 'tabs.send' ? true : false; - var matchSettings = $ionicHistory.currentStateName() == 'tabs.settings' ? true : false; - - var fromTabs = matchHome | matchReceive | matchScan | matchSend | matchSettings; - - //onboarding with no back views - var matchWelcome = $ionicHistory.currentStateName() == 'onboarding.welcome' ? true : false; - var matchCollectEmail = $ionicHistory.currentStateName() == 'onboarding.collectEmail' ? true : false; - var matchBackupRequest = $ionicHistory.currentStateName() == 'onboarding.backupRequest' ? true : false; - var backedUp = $ionicHistory.backView().stateName == 'onboarding.backup' ? true : false; - var noBackView = $ionicHistory.backView().stateName == 'starting' ? true : false; - var matchDisclaimer = $ionicHistory.currentStateName() == 'onboarding.disclaimer' && (backedUp || noBackView) ? true : false; - - var fromOnboarding = matchCollectEmail | matchBackupRequest | matchWelcome | matchDisclaimer; - - //views with disable backbutton - var matchComplete = $ionicHistory.currentStateName() == 'tabs.rate.complete' ? true : false; - var matchLockedView = $ionicHistory.currentStateName() == 'lockedView' ? true : false; - var matchPin = $ionicHistory.currentStateName() == 'pin' ? true : false; - - if ($ionicHistory.backView() && !fromTabs && !fromOnboarding && !matchComplete && !matchPin && !matchLockedView) { - $ionicHistory.goBack(); - } else - if ($rootScope.backButtonPressedOnceToExit) { - navigator.app.exitApp(); - } else { - $rootScope.backButtonPressedOnceToExit = true; - $rootScope.$apply(function() { - ionicToast.show(gettextCatalog.getString('Press again to exit'), 'bottom', false, 1000); - }); - $timeout(function() { - $rootScope.backButtonPressedOnceToExit = false; - }, 3000); - } - e.preventDefault(); - }, 101); - - $ionicPlatform.on('pause', function() { - // Nothing to do - }); - - $ionicPlatform.on('resume', function() { - applicationService.appLockModal('check'); - }); - - $ionicPlatform.on('menubutton', function() { - window.location = '#/preferences'; - }); - - $log.info('Init profile...'); - // Try to open local profile - profileService.loadAndBindProfile(function(err) { - $ionicHistory.nextViewOptions({ - disableAnimate: true - }); - if (err) { - if (err.message && err.message.match('NOPROFILE')) { - $log.debug('No profile... redirecting'); - $state.go('onboarding.welcome'); - } else if (err.message && err.message.match('NONAGREEDDISCLAIMER')) { - if (lodash.isEmpty(profileService.getWallets())) { - $log.debug('No wallets and no disclaimer... redirecting'); - $state.go('onboarding.welcome'); - } else { - $log.debug('Display disclaimer... redirecting'); - $state.go('onboarding.disclaimer', { - resume: true - }); - } - } else { - throw new Error(err); // TODO - } - } else { - profileService.storeProfileIfDirty(); - $log.debug('Profile loaded ... Starting UX.'); - scannerService.gentleInitialize(); - // Reload tab-home if necessary (from root path: starting) - $state.go('starting', {}, { - 'reload': true, - 'notify': $state.current.name == 'starting' ? false : true - }).then(function() { - $ionicHistory.nextViewOptions({ - disableAnimate: true, - historyRoot: true - }); - $state.transitionTo('tabs.home').then(function() { - // Clear history - $ionicHistory.clearHistory(); - }); - applicationService.appLockModal('check'); - }); - }; - // After everything have been loaded - $timeout(function() { - emailService.init(); // Update email subscription if necessary - openURLService.init(); - }, 1000); - }); - }); - - if (platformInfo.isNW) { - var gui = require('nw.gui'); - var win = gui.Window.get(); - var nativeMenuBar = new gui.Menu({ - type: "menubar" - }); - try { - nativeMenuBar.createMacBuiltin(appConfigService.nameCase); - } catch (e) { - $log.debug('This is not OSX'); - } - win.menu = nativeMenuBar; - } - - $rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams) { - $log.debug('Route change from:', fromState.name || '-', ' to:', toState.name); - $log.debug(' toParams:' + JSON.stringify(toParams || {})); - $log.debug(' fromParams:' + JSON.stringify(fromParams || {})); - }); - }); diff --git a/src/js/services/addressbookService.js b/src/js/services/addressbookService.js deleted file mode 100644 index edd3237d1..000000000 --- a/src/js/services/addressbookService.js +++ /dev/null @@ -1,83 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').factory('addressbookService', function(bitcore, storageService, lodash) { - var root = {}; - - root.get = function(addr, cb) { - storageService.getAddressbook('testnet', function(err, ab) { - if (err) return cb(err); - if (ab) ab = JSON.parse(ab); - if (ab && ab[addr]) return cb(null, ab[addr]); - - storageService.getAddressbook('livenet', function(err, ab) { - if (err) return cb(err); - if (ab) ab = JSON.parse(ab); - if (ab && ab[addr]) return cb(null, ab[addr]); - return cb(); - }); - }); - }; - - root.list = function(cb) { - storageService.getAddressbook('testnet', function(err, ab) { - if (err) return cb('Could not get the Addressbook'); - - if (ab) ab = JSON.parse(ab); - - ab = ab || {}; - storageService.getAddressbook('livenet', function(err, ab2) { - if (ab2) ab2 = JSON.parse(ab2); - - ab2 = ab2 || {}; - return cb(err, lodash.defaults(ab2, ab)); - }); - }); - }; - - root.add = function(entry, cb) { - var network = (new bitcore.Address(entry.address)).network.name; - storageService.getAddressbook(network, function(err, ab) { - if (err) return cb(err); - if (ab) ab = JSON.parse(ab); - ab = ab || {}; - if (lodash.isArray(ab)) ab = {}; // No array - if (ab[entry.address]) return cb('Entry already exist'); - ab[entry.address] = entry; - storageService.setAddressbook(network, JSON.stringify(ab), function(err, ab) { - if (err) return cb('Error adding new entry'); - root.list(function(err, ab) { - return cb(err, ab); - }); - }); - }); - }; - - root.remove = function(addr, cb) { - var network = (new bitcore.Address(addr)).network.name; - storageService.getAddressbook(network, function(err, ab) { - if (err) return cb(err); - if (ab) ab = JSON.parse(ab); - ab = ab || {}; - if (lodash.isEmpty(ab)) return cb('Addressbook is empty'); - if (!ab[addr]) return cb('Entry does not exist'); - delete ab[addr]; - storageService.setAddressbook(network, JSON.stringify(ab), function(err) { - if (err) return cb('Error deleting entry'); - root.list(function(err, ab) { - return cb(err, ab); - }); - }); - }); - }; - - root.removeAll = function() { - storageService.removeAddressbook('livenet', function(err) { - storageService.removeAddressbook('testnet', function(err) { - if (err) return cb('Error deleting addressbook'); - return cb(); - }); - }); - }; - - return root; -}); diff --git a/src/js/services/amazonService.js b/src/js/services/amazonService.js deleted file mode 100644 index 54d119c55..000000000 --- a/src/js/services/amazonService.js +++ /dev/null @@ -1,173 +0,0 @@ -'use strict'; -angular.module('copayApp.services').factory('amazonService', function($http, $log, lodash, moment, storageService, configService, platformInfo, nextStepsService, homeIntegrationsService) { - var root = {}; - var credentials = {}; - - root.limitPerDay = 1000; - - /* - * Development: 'testnet' - * Production: 'livenet' - */ - credentials.NETWORK = 'livenet'; - //credentials.NETWORK = 'testnet'; - - if (credentials.NETWORK == 'testnet') { - credentials.BITPAY_API_URL = "https://test.bitpay.com"; - } else { - credentials.BITPAY_API_URL = "https://bitpay.com"; - }; - - var homeItem = { - name: 'amazon', - title: 'Amazon.com Gift Cards', - icon: 'icon-amazon', - sref: 'tabs.giftcards.amazon', - }; - - var nextStepItem = { - name: 'amazon', - title: 'Buy Amazon.com Gift Cards', - icon: 'icon-amazon', - sref: 'tabs.giftcards.amazon', - }; - - var _getBitPay = function(endpoint) { - return { - method: 'GET', - url: credentials.BITPAY_API_URL + endpoint, - headers: { - 'content-type': 'application/json' - } - }; - }; - - var _postBitPay = function(endpoint, data) { - return { - method: 'POST', - url: credentials.BITPAY_API_URL + endpoint, - headers: { - 'content-type': 'application/json' - }, - data: data - }; - }; - - root.getNetwork = function() { - return credentials.NETWORK; - }; - - root.savePendingGiftCard = function(gc, opts, cb) { - var network = root.getNetwork(); - storageService.getAmazonGiftCards(network, function(err, oldGiftCards) { - if (lodash.isString(oldGiftCards)) { - oldGiftCards = JSON.parse(oldGiftCards); - } - if (lodash.isString(gc)) { - gc = JSON.parse(gc); - } - var inv = oldGiftCards || {}; - inv[gc.invoiceId] = gc; - if (opts && (opts.error || opts.status)) { - inv[gc.invoiceId] = lodash.assign(inv[gc.invoiceId], opts); - } - if (opts && opts.remove) { - delete(inv[gc.invoiceId]); - } - - inv = JSON.stringify(inv); - - - storageService.setAmazonGiftCards(network, inv, function(err) { - - homeIntegrationsService.register(homeItem); - nextStepsService.unregister(nextStepItem.name); - return cb(err); - }); - }); - }; - - root.getPendingGiftCards = function(cb) { - var network = root.getNetwork(); - storageService.getAmazonGiftCards(network, function(err, giftCards) { - var _gcds = giftCards ? JSON.parse(giftCards) : null; - return cb(err, _gcds); - }); - }; - - root.createBitPayInvoice = function(data, cb) { - - var dataSrc = { - currency: data.currency, - amount: data.amount, - clientId: data.uuid - }; - - $http(_postBitPay('/amazon-gift/pay', dataSrc)).then(function(data) { - $log.info('BitPay Create Invoice: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('BitPay Create Invoice: ERROR ' + data.data.message); - return cb(data.data); - }); - }; - - root.getBitPayInvoice = function(id, cb) { - $http(_getBitPay('/invoices/' + id)).then(function(data) { - $log.info('BitPay Get Invoice: SUCCESS'); - return cb(null, data.data.data); - }, function(data) { - $log.error('BitPay Get Invoice: ERROR ' + data.data.error); - return cb(data.data.error); - }); - }; - - root.createGiftCard = function(data, cb) { - - var dataSrc = { - "clientId": data.uuid, - "invoiceId": data.invoiceId, - "accessKey": data.accessKey - }; - - $http(_postBitPay('/amazon-gift/redeem', dataSrc)).then(function(data) { - var status = data.data.status == 'new' ? 'PENDING' : (data.data.status == 'paid') ? 'PENDING' : data.data.status; - data.data.status = status; - $log.info('Amazon.com Gift Card Create/Update: ' + status); - return cb(null, data.data); - }, function(data) { - $log.error('Amazon.com Gift Card Create/Update: ' + data.data.message); - return cb(data.data); - }); - }; - - root.cancelGiftCard = function(data, cb) { - - var dataSrc = { - "clientId": data.uuid, - "invoiceId": data.invoiceId, - "accessKey": data.accessKey - }; - - $http(_postBitPay('/amazon-gift/cancel', dataSrc)).then(function(data) { - $log.info('Amazon.com Gift Card Cancel: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Amazon.com Gift Card Cancel: ' + data.data.message); - return cb(data.data); - }); - }; - - var register = function() { - storageService.getAmazonGiftCards(root.getNetwork(), function(err, giftCards) { - if (giftCards) { - homeIntegrationsService.register(homeItem); - } else { - nextStepsService.register(nextStepItem); - } - }); - }; - - register(); - return root; -}); diff --git a/src/js/services/appConfigService.js b/src/js/services/appConfigService.js deleted file mode 100644 index d5b34c64c..000000000 --- a/src/js/services/appConfigService.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').factory('appConfigService', function($window) { - return $window.appConfig; -}); diff --git a/src/js/services/appIdentityService.js b/src/js/services/appIdentityService.js deleted file mode 100644 index 3f6debbbe..000000000 --- a/src/js/services/appIdentityService.js +++ /dev/null @@ -1,31 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').factory('appIdentityService', function($log, lodash, storageService, bitauthService) { - var root = {}; - - root.getIdentity = function(network, cb) { - var pubkey, sin, isNew; - storageService.getAppIdentity(network, function(err, data) { - if (err) return cb(err); - var appIdentity = data || {}; - if (lodash.isEmpty(appIdentity) || (appIdentity && !appIdentity.priv)) { - isNew = true; - appIdentity = bitauthService.generateSin(); - } - try { - pubkey = bitauthService.getPublicKeyFromPrivateKey(appIdentity.priv); - sin = bitauthService.getSinFromPublicKey(pubkey); - if (isNew) - storageService.setAppIdentity(network, JSON.stringify(appIdentity), function(err) {}); - } - catch (e) { - $log.error(e); - return cb(e); - }; - return cb(null, appIdentity); - }); - }; - - return root; - -}); \ No newline at end of file diff --git a/src/js/services/applicationService.js b/src/js/services/applicationService.js deleted file mode 100644 index 9bb9b5048..000000000 --- a/src/js/services/applicationService.js +++ /dev/null @@ -1,105 +0,0 @@ -'use strict'; -angular.module('copayApp.services') - .factory('applicationService', function($rootScope, $timeout, $ionicHistory, $ionicModal, platformInfo, fingerprintService, openURLService, configService, $state) { - var root = {}; - - root.isPinModalOpen = false; - - var isChromeApp = platformInfo.isChromeApp; - var isNW = platformInfo.isNW; - - root.restart = function() { - var hashIndex = window.location.href.indexOf('#/'); - if (platformInfo.isCordova) { - window.location = window.location.href.substr(0, hashIndex); - $timeout(function() { - $rootScope.$digest(); - }, 1); - - } else { - // Go home reloading the application - if (isChromeApp) { - chrome.runtime.reload(); - } else if (isNW) { - $ionicHistory.removeBackView(); - $state.go('tabs.home'); - $timeout(function() { - var win = require('nw.gui').Window.get(); - win.reload(3); - //or - win.reloadDev(); - }, 100); - } else { - window.location = window.location.href.substr(0, hashIndex); - } - } - }; - - root.fingerprintModal = function() { - - var scope = $rootScope.$new(true); - $ionicModal.fromTemplateUrl('views/modals/fingerprintCheck.html', { - scope: scope, - animation: 'none', - backdropClickToClose: false, - hardwareBackButtonClose: false - }).then(function(modal) { - scope.fingerprintCheckModal = modal; - root.isModalOpen = true; - scope.openModal(); - }); - scope.openModal = function() { - scope.fingerprintCheckModal.show(); - scope.checkFingerprint(); - }; - scope.hideModal = function() { - root.isModalOpen = false; - scope.fingerprintCheckModal.hide(); - }; - scope.checkFingerprint = function() { - fingerprintService.check('unlockingApp', function(err) { - if (err) return; - scope.hideModal(); - }); - } - }; - - root.pinModal = function(action) { - - var scope = $rootScope.$new(true); - scope.action = action; - $ionicModal.fromTemplateUrl('views/modals/pin.html', { - scope: scope, - animation: 'none', - backdropClickToClose: false, - hardwareBackButtonClose: false - }).then(function(modal) { - scope.pinModal = modal; - root.isModalOpen = true; - scope.openModal(); - }); - scope.openModal = function() { - scope.pinModal.show(); - }; - scope.hideModal = function() { - scope.$emit('pinModalClosed'); - root.isModalOpen = false; - scope.pinModal.hide(); - }; - }; - - root.appLockModal = function(action) { - - if (root.isModalOpen) return; - - configService.whenAvailable(function(config) { - var lockMethod = config.lock && config.lock.method; - if (!lockMethod || lockMethod == 'none') return; - - if (lockMethod == 'fingerprint' && fingerprintService.isAvailable()) root.fingerprintModal(); - if (lockMethod == 'pin') root.pinModal(action); - - }); - } - return root; - }); diff --git a/src/js/services/backupService.js b/src/js/services/backupService.js deleted file mode 100644 index 2b558511a..000000000 --- a/src/js/services/backupService.js +++ /dev/null @@ -1,87 +0,0 @@ -'use strict'; -angular.module('copayApp.services') - .factory('backupService', function backupServiceFactory($log, $timeout, $stateParams, profileService, sjcl, appConfigService) { - - var root = {}; - - var _download = function(ew, filename, cb) { - var NewBlob = function(data, datatype) { - var out; - - try { - out = new Blob([data], { - type: datatype - }); - $log.debug("case 1"); - } catch (e) { - window.BlobBuilder = window.BlobBuilder || - window.WebKitBlobBuilder || - window.MozBlobBuilder || - window.MSBlobBuilder; - - if (e.name == 'TypeError' && window.BlobBuilder) { - var bb = new BlobBuilder(); - bb.append(data); - out = bb.getBlob(datatype); - $log.debug("case 2"); - } else if (e.name == "InvalidStateError") { - // InvalidStateError (tested on FF13 WinXP) - out = new Blob([data], { - type: datatype - }); - $log.debug("case 3"); - } else { - // We're screwed, blob constructor unsupported entirely - $log.debug("Error"); - } - } - return out; - }; - - var a = angular.element(''); - var blob = new NewBlob(ew, 'text/plain;charset=utf-8'); - a.attr('href', window.URL.createObjectURL(blob)); - a.attr('download', filename); - a[0].click(); - return cb(); - }; - - root.addMetadata = function(b, opts) { - - b = JSON.parse(b); - if (opts.addressBook) b.addressBook = opts.addressBook; - return JSON.stringify(b); - } - - root.walletExport = function(password, opts) { - if (!password) { - return null; - } - var wallet = profileService.getWallet($stateParams.walletId); - try { - opts = opts || {}; - var b = wallet.export(opts); - if (opts.addressBook) b = root.addMetadata(b, opts); - - var e = sjcl.encrypt(password, b, { - iter: 10000 - }); - return e; - } catch (err) { - $log.debug('Error exporting wallet: ', err); - return null; - }; - }; - - root.walletDownload = function(password, opts, cb) { - var wallet = profileService.getWallet($stateParams.walletId); - var ew = root.walletExport(password, opts); - if (!ew) return cb('Could not create backup'); - - var walletName = (wallet.alias || '') + (wallet.alias ? '-' : '') + wallet.credentials.walletName; - if (opts.noSign) walletName = walletName + '-noSign' - var filename = walletName + '-' + appConfigService.nameCase + 'backup.aes.json'; - _download(ew, filename, cb) - }; - return root; - }); diff --git a/src/js/services/bitcore.js b/src/js/services/bitcore.js deleted file mode 100644 index 6c810aa99..000000000 --- a/src/js/services/bitcore.js +++ /dev/null @@ -1,6 +0,0 @@ -'use strict'; -angular.module('copayApp.services') - .factory('bitcore', function bitcoreFactory(bwcService) { - var bitcore = bwcService.getBitcore(); - return bitcore; - }); diff --git a/src/js/services/bitpayAccountService.js b/src/js/services/bitpayAccountService.js deleted file mode 100644 index 8204da246..000000000 --- a/src/js/services/bitpayAccountService.js +++ /dev/null @@ -1,192 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').factory('bitpayAccountService', function($log, lodash, platformInfo, appIdentityService, bitpayService, bitpayCardService, storageService, gettextCatalog, popupService) { - var root = {}; - - /* - * Pair this app with the bitpay server using the specified pairing data. - * An app identity will be created if one does not already exist. - * Pairing data is provided by an input URI provided by the bitpay server. - * - * pairData - data needed to complete the pairing process - * { - * secret: shared pairing secret - * email: email address associated with bitpay account - * otp: two-factor one-time use password - * } - * - * pairingReason - text string to be embedded into popup message. If `null` then the reason - * message is not shown to the UI. - * "To {{reason}} you must pair this app with your BitPay account ({{email}})." - * - * cb - callback after completion - * callback(err, paired, apiContext) - * - * err - something unexpected happened which prevented the pairing - * - * paired - boolean indicating whether the pairing was compledted by the user - * - * apiContext - the context needed for making future api calls - * { - * token: api token for use in future calls - * pairData: the input pair data - * appIdentity: the identity of this app - * } - */ - - root.pair = function(pairData, pairingReason, cb) { - checkOtp(pairData, function(otp) { - pairData.otp = otp; - var deviceName = 'Unknown device'; - if (platformInfo.isNW) { - deviceName = require('os').platform(); - } else if (platformInfo.isCordova) { - deviceName = device.model; - } - var json = { - method: 'createToken', - params: { - secret: pairData.secret, - version: 2, - deviceName: deviceName, - code: pairData.otp - } - }; - - bitpayService.postAuth(json, function(data) { - if (data && data.data.error) { - return cb(data.data.error); - } - var apiContext = { - token: data.data.data, - pairData: pairData, - appIdentity: data.appIdentity - }; - $log.info('BitPay service BitAuth create token: SUCCESS'); - - fetchBasicInfo(apiContext, function(err, basicInfo) { - if (err) return cb(err); - var title = gettextCatalog.getString('Add BitPay Account?'); - var msg; - - if (pairingReason) { - msg = gettextCatalog.getString('To {{reason}} you must first add your BitPay account - {{email}}', { - reason: pairingReason, - email: pairData.email - }); - } else { - msg = gettextCatalog.getString('Add this BitPay account ({{email}})?', { - email: pairData.email - }); - } - - var ok = gettextCatalog.getString('Add Account'); - var cancel = gettextCatalog.getString('Go back'); - popupService.showConfirm(title, msg, ok, cancel, function(res) { - if (res) { - var acctData = { - token: apiContext.token, - email: pairData.email, - givenName: basicInfo.givenName, - familyName: basicInfo.familyName - }; - setBitpayAccount(acctData, function(err) { - return cb(err, true, apiContext); - }); - } else { - $log.info('User cancelled BitPay pairing process'); - return cb(null, false); - } - }); - }); - }, function(data) { - return cb(_setError('BitPay service BitAuth create token: ERROR ', data)); - }); - }); - }; - - var checkOtp = function(pairData, cb) { - if (pairData.otp) { - var msg = gettextCatalog.getString('Enter Two Factor for your BitPay account'); - popupService.showPrompt(null, msg, null, function(res) { - cb(res); - }); - } else { - cb(); - } - }; - - var fetchBasicInfo = function(apiContext, cb) { - var json = { - method: 'getBasicInfo' - }; - // Get basic account information - bitpayService.post('/api/v2/' + apiContext.token, json, function(data) { - if (data && data.data.error) return cb(data.data.error); - $log.info('BitPay Account Get Basic Info: SUCCESS'); - return cb(null, data.data.data); - }, function(data) { - return cb(_setError('BitPay Account Error: Get Basic Info', data)); - }); - }; - - // Returns account objects as stored. - root.getAccountsAsStored = function(cb) { - storageService.getBitpayAccounts(bitpayService.getEnvironment().network, cb); - }; - - // Returns an array where each element represents an account including all information required for fetching data - // from the server for each account (apiContext). - root.getAccounts = function(cb) { - root.getAccountsAsStored(function(err, accounts) { - if (err || lodash.isEmpty(accounts)) { - return cb(err, []); - } - appIdentityService.getIdentity(bitpayService.getEnvironment().network, function(err, appIdentity) { - if (err) { - return cb(err); - } - - var accountsArray = []; - lodash.forEach(Object.keys(accounts), function(key) { - accounts[key].cards = accounts[key].cards; - accounts[key].email = key; - accounts[key].givenName = accounts[key].givenName || ''; - accounts[key].familyName = accounts[key].familyName || ''; - accounts[key].apiContext = { - token: accounts[key].token, - pairData: { - email: key - }, - appIdentity: appIdentity - }; - - accountsArray.push(accounts[key]); - }); - return cb(null, accountsArray); - }); - }); - }; - - var setBitpayAccount = function(account, cb) { - storageService.setBitpayAccount(bitpayService.getEnvironment().network, account, function(err) { - return cb(err); - }); - }; - - root.removeAccount = function(account, cb) { - storageService.removeBitpayAccount(bitpayService.getEnvironment().network, account, function(err) { - bitpayCardService.registerNextStep(); - cb(err); - }); - }; - - var _setError = function(msg, e) { - $log.error(msg); - var error = (e && e.data && e.data.error) ? e.data.error : msg; - return error; - }; - - return root; - -}); diff --git a/src/js/services/bitpayCardService.js b/src/js/services/bitpayCardService.js deleted file mode 100644 index ea0965b2a..000000000 --- a/src/js/services/bitpayCardService.js +++ /dev/null @@ -1,1492 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').factory('bitpayCardService', function($log, $rootScope, $filter, lodash, storageService, bitauthService, platformInfo, moment, appIdentityService, bitpayService, nextStepsService, txFormatService, appConfigService) { - var root = {}; - - var _setError = function(msg, e) { - $log.error(msg); - var error = (e && e.data && e.data.error) ? e.data.error : msg; - return error; - }; - - var _buildDate = function(date, time) { - date = date.match(/(\d{2})\/(\d{2})\/(\d{4})/); - time = time.match(/(\d{2})(\d{2})(\d{2})/); - var newDate = new Date(date[1] + '/' + date[2] + '/' + date[3]); - newDate.setHours(time[1], time[2], time[3]); - return newDate; - }; - - var _lowercaseMerchant = function(merchant) { - if (merchant.name && merchant.name.toLowerCase) { - merchant.name = merchant.name.toLowerCase(); - } - if (merchant.city && merchant.city.toLowerCase) { - merchant.city = merchant.city.toLowerCase(); - } - - return merchant; - }; - - var _getMerchantInfo = function(tx) { - var bpTranCodes = root.bpTranCodes; - lodash.keys(bpTranCodes).forEach(function(code) { - if (tx.type.indexOf(code) === 0) { - lodash.assign(tx, bpTranCodes[code]); - } - }); - return tx; - }; - - var _getIconName = function(tx) { - var icon = tx.mcc || tx.category || null; - if (!icon || root.iconMap[icon] == undefined) return 'default'; - return root.iconMap[icon]; - }; - - var _processDescription = function(tx) { - if (lodash.isArray(tx.description)) { - return tx.description[0]; - } - return tx.description; - }; - - var _processLocation = function(tx) { - if (tx.merchant.city && tx.merchant.state) { - return tx.merchant.city + ', ' + tx.merchant.state; - } else { - return tx.merchant.city || tx.merchant.state || ''; - } - }; - - var _fromTransaction = function(txn, runningBalance) { - var dateTime = _buildDate(txn.date, txn.time); - var merchant = _lowercaseMerchant(txn.merchant); - return _getMerchantInfo({ - date: txn.timestamp || dateTime, - category: txn.mcc, - merchant: merchant, - description: txn.description[0], - price: parseFloat(txn.amount) + parseFloat(txn.fee), - type: txn.type, - runningBalance: runningBalance - }); - }; - - var _processTransactions = function(invoices, history) { - - var balance = history.endingBalance || history.currentCardBalance; - var runningBalance = parseFloat(balance); - var activityList = []; - - if(history && history.transactionList){ - for (var j = 0; j < history.transactionList.length; j++) { - runningBalance -= parseFloat(history.transactionList[j].amount); - activityList.push(_fromTransaction(history.transactionList[j], runningBalance)); - } - } - - if (activityList.length > 0) { - - invoices = invoices ||  []; - for (var i = 0; i < invoices.length; i++) { - var matched = false; - for (var j = 0; j < history.transactionList.length; j++) { - var description = history.transactionList[j].description; - for (var k = 0; k < description.length; k++) { - if (description[k] && description[k].indexOf(invoices[i].id) > -1) { - matched = true; - } - } - } - - var isInvoiceLessThanOneDayOld = moment() < moment(new Date(invoices[i].invoiceTime)).add(1, 'day'); - - if (!matched && isInvoiceLessThanOneDayOld) { - var isInvoiceUnderpaid = invoices[i].exceptionStatus === 'paidPartial'; - - if (['paid', 'confirmed', 'complete'].indexOf(invoices[i].status) >= 0 || - (invoices[i].status === 'invalid' || isInvoiceUnderpaid)) { - - activityList.unshift(_getMerchantInfo({ - date: new Date(invoices[i].invoiceTime), - category: '', - merchant: '', - description: invoices[i].itemDesc, - price: invoices[i].price, - type: '00611 = Client Funded Deposit', - runningBalance: null, - pending: true, - transactionId: invoices[i].transactions && invoices[i].transactions[0] ? invoices[i].transactions[0].txid : '' - })); - } - } - } - } - for (var i = 0; i < activityList.length; i++) { - activityList[i].icon = _getIconName(activityList[i]); - activityList[i].desc = _processDescription(activityList[i]); - activityList[i].merchant['location'] = _processLocation(activityList[i]); - } - return activityList; - }; - - root.filterTransactions = function(type, txns) { - var list, - getPreAuth = lodash.filter(txns, function(txn) { - return txn.type.indexOf('93') > -1; - }), - getPending = lodash.filter(txns, function(txn) { - return txn.pending; - }), - getCompleted = lodash.filter(txns, function(txn) { - return !txn.pending && txn.type.indexOf('93') == -1; - }); - - switch (type) { - case "preAuth": - list = lodash.filter(getPreAuth); - break; - case "confirming": - list = lodash.filter(getPending); - break; - case "completed": - list = lodash.filter(getCompleted); - break; - default: - // code... - break; - } - return list; - }; - - root.sync = function(apiContext, cb) { - var json = { - method: 'getDebitCards' - }; - // Get Debit Cards - bitpayService.post('/api/v2/' + apiContext.token, json, function(data) { - if (data && data.data.error) return cb(data.data.error); - $log.info('BitPay Get Debit Cards: SUCCESS'); - - var cards = []; - - lodash.each(data.data.data, function(x) { - var n = {}; - - if (!x.eid || !x.id || !x.lastFourDigits || !x.token) { - $log.warn('BAD data from BitPay card' + JSON.stringify(x)); - return; - } - - n.eid = x.eid; - n.id = x.id; - n.lastFourDigits = x.lastFourDigits; - n.token = x.token; - n.currency = x.currency; - n.country = x.country; - cards.push(n); - }); - - storageService.setBitpayDebitCards(bitpayService.getEnvironment().network, apiContext.pairData.email, cards, function(err) { - root.registerNextStep(); - return cb(err, cards); - }); - }, function(data) { - return cb(_setError('BitPay Card Error: Get Debit Cards', data)); - }); - }; - - root.setCurrencySymbol = function(card) { - // Sets a currency symbol. - // Uses the currency code if no symbol is mapped (should never happen). - // Backaward compatibility for FirstView cards (all USD). - // This avoids users having to re-pair their account. - if (!card.currency) { - card.currency = 'USD'; - } - card.currencySymbol = root.currencySymbols[card.currency] || card.currency + ' '; - }; - - // opts: range - root.getHistory = function(cardId, opts, cb) { - var invoices, history; - opts = opts || {}; - - var json = { - method: 'getInvoiceHistory' - }; - - appIdentityService.getIdentity(bitpayService.getEnvironment().network, function(err, appIdentity) { - if (err) return cb(err); - - root.getCards(function(err, data) { - if (err) return cb(err); - var card = lodash.find(data, { - id: cardId - }); - - if (!card) - return cb(_setError('Card not found')); - - // Get invoices - bitpayService.post('/api/v2/' + card.token, json, function(data) { - $log.info('BitPay Get Invoices: SUCCESS'); - invoices = data.data.data || []; - - if (lodash.isEmpty(invoices)) - $log.info('No invoices'); - - json = { - method: 'getTransactionHistory', - params: JSON.stringify(opts) - }; - // Get transactions History list - bitpayService.post('/api/v2/' + card.token, json, function(data) { - $log.info('BitPay Get History: SUCCESS'); - history = data.data.data || {}; - history['txs'] = _processTransactions(invoices, history); - - root.setLastKnownBalance(cardId, history.currentCardBalance, function() {}); - - return cb(data.data.error, history); - }, function(data) { - return cb(_setError('BitPay Card Error: Get History', data)); - }); - }, function(data) { - return cb(_setError('BitPay Card Error: Get Invoices', data)); - }); - }); - }); - }; - - root.topUp = function(cardId, opts, cb) { - opts = opts || {}; - var json = { - method: 'generateTopUpInvoice', - params: JSON.stringify(opts) - }; - appIdentityService.getIdentity(bitpayService.getEnvironment().network, function(err, appIdentity) { - if (err) return cb(err); - - root.getCards(function(err, data) { - if (err) return cb(err); - - var card = lodash.find(data, { - id: cardId - }); - - if (!card) - return cb(_setError('Card not found')); - - bitpayService.post('/api/v2/' + card.token, json, function(data) { - $log.info('BitPay TopUp: SUCCESS'); - if (data.data.error) { - return cb(data.data.error); - } else { - return cb(null, data.data.data.invoice); - } - }, function(data) { - return cb(_setError('BitPay Card Error: TopUp', data)); - }); - }); - }); - }; - - root.getInvoice = function(id, cb) { - bitpayService.get('/invoices/' + id, function(data) { - $log.info('BitPay Get Invoice: SUCCESS'); - return cb(data.data.error, data.data.data); - }, function(data) { - return cb(_setError('BitPay Card Error: Get Invoice', data)); - }); - }; - - // get all cards, for all accounts. - root.getCards = function(cb) { - storageService.getBitpayDebitCards(bitpayService.getEnvironment().network, cb); - }; - - root.getLastKnownBalance = function(cardId, cb) { - storageService.getBalanceCache(cardId, cb); - }; - - root.addLastKnownBalance = function(card, cb) { - var now = Math.floor(Date.now() / 1000); - var showRange = 600; // 10min; - - root.getLastKnownBalance(card.eid, function(err, data) { - if (data) { - data = JSON.parse(data); - card.balance = data.balance; - card.updatedOn = (data.updatedOn < now - showRange) ? data.updatedOn : null; - } - return cb(); - }); - }; - - root.setLastKnownBalance = function(cardId, balance, cb) { - - storageService.setBalanceCache(cardId, { - balance: balance, - updatedOn: Math.floor(Date.now() / 1000), - }, cb); - }; - - root.remove = function(cardId, cb) { - storageService.removeBitpayDebitCard(bitpayService.getEnvironment().network, cardId, function(err) { - if (err) { - $log.error('Error removing BitPay debit card: ' + err); - return cb(err); - } - root.registerNextStep(); - storageService.removeBalanceCache(cardId, cb); - }); - }; - - root.getRates = function(currency, cb) { - bitpayService.get('/rates/' + currency, function(data) { - $log.info('BitPay Get Rates: SUCCESS'); - return cb(data.data.error, data.data.data); - }, function(data) { - return cb(_setError('BitPay Error: Get Rates', data)); - }); - }; - - - root.get = function(opts, cb) { - root.getCards(function(err, cards) { - if (err) return; - - if (lodash.isEmpty(cards)) { - return cb(); - } - - if (opts.cardId) { - cards = lodash.filter(cards, function(x) { - return opts.cardId == x.eid; - }); - } - - // Async, no problem - lodash.each(cards, function(x) { - - root.setCurrencySymbol(x); - root.addLastKnownBalance(x, function() {}); - - // async refresh - if (!opts.noRefresh) { - root.getHistory(x.id, {}, function(err, data) { - if (err) return; - root.addLastKnownBalance(x, function() {}); - }); - } - }); - - return cb(null, cards); - }); - }; - - /* - * CONSTANTS - */ - - root.currencySymbols = { - 'EUR': '€', - 'GBP': '£', - 'USD': '$' - }; - - root.bpTranCodes = { - '00611': { - merchant: { - name: 'BitPay', - city: 'Atlanta', - state: 'GA' - }, - category: 'bp001', - description: 'Top-Up' - }, - '602': { - merchant: { - name: 'ATM Withdrawal Fee', - }, - category: 'bp002', - description: '' - }, - '604': { - merchant: { - name: 'Foreign Transaction Fee', - }, - category: 'bp002', - description: '' - }, - '606': { - merchant: { - name: 'International ATM Fee', - }, - category: 'bp002', - description: '' - }, - '00240': { - merchant: { - name: 'ACH Debit Fee', - }, - category: 'bp002', - description: '' - }, - '5032': { - merchant: { - name: 'ACH Debit', - }, - category: 'bp002', - description: '' - }, - '37': { - merchant: { - name: 'ACH / Payroll Deposit', - }, - category: 'bp002', - description: '' - }, - '10036': { - merchant: { - name: 'Inactivity Fee (90 days)', - }, - category: 'bp002', - description: '' - }, - 'load': { - merchant: { - name: 'BitPay', - city: 'Atlanta', - state: 'GA' - }, - category: 'bp001', - description: 'Top-Up' - }, - 'unload | pos': { - description: 'Purchase' - }, - 'unload | epos': { - description: 'Online Purchase' - }, - 'transactionfee': { - merchant: { - name: 'Transaction Fee', - }, - category: 'bp002', - description: '' - } - }; - - root.iconMap = { - 742: 'medical', - 763: 'plant', - 780: 'plant', - 1520: 'repair', - 1711: 'repair', - 1731: 'repair', - 1740: 'repair', - 1750: 'repair', - 1761: 'repair', - 1771: 'repair', - 1799: 'repair', - 2741: 'books', - 2791: 'books', - 2842: 'clean', - 3000: 'airplane', - 3001: 'airplane', - 3002: 'airplane', - 3003: 'airplane', - 3004: 'airplane', - 3005: 'airplane', - 3006: 'airplane', - 3007: 'airplane', - 3008: 'airplane', - 3009: 'airplane', - 3010: 'airplane', - 3011: 'airplane', - 3012: 'airplane', - 3013: 'airplane', - 3014: 'airplane', - 3015: 'airplane', - 3016: 'airplane', - 3017: 'airplane', - 3018: 'airplane', - 3019: 'airplane', - 3020: 'airplane', - 3021: 'airplane', - 3022: 'airplane', - 3023: 'airplane', - 3024: 'airplane', - 3025: 'airplane', - 3026: 'airplane', - 3027: 'airplane', - 3028: 'airplane', - 3029: 'airplane', - 3030: 'airplane', - 3031: 'airplane', - 3032: 'airplane', - 3033: 'airplane', - 3034: 'airplane', - 3035: 'airplane', - 3036: 'airplane', - 3037: 'airplane', - 3038: 'airplane', - 3039: 'airplane', - 3040: 'airplane', - 3041: 'airplane', - 3042: 'airplane', - 3043: 'airplane', - 3044: 'airplane', - 3045: 'airplane', - 3046: 'airplane', - 3047: 'airplane', - 3048: 'airplane', - 3049: 'airplane', - 3050: 'airplane', - 3051: 'airplane', - 3052: 'airplane', - 3053: 'airplane', - 3054: 'airplane', - 3055: 'airplane', - 3056: 'airplane', - 3057: 'airplane', - 3058: 'airplane', - 3059: 'airplane', - 3060: 'airplane', - 3061: 'airplane', - 3062: 'airplane', - 3063: 'airplane', - 3064: 'airplane', - 3065: 'airplane', - 3066: 'airplane', - 3067: 'airplane', - 3068: 'airplane', - 3069: 'airplane', - 3070: 'airplane', - 3071: 'airplane', - 3072: 'airplane', - 3073: 'airplane', - 3074: 'airplane', - 3075: 'airplane', - 3076: 'airplane', - 3077: 'airplane', - 3078: 'airplane', - 3079: 'airplane', - 3080: 'airplane', - 3081: 'airplane', - 3082: 'airplane', - 3083: 'airplane', - 3084: 'airplane', - 3085: 'airplane', - 3086: 'airplane', - 3087: 'airplane', - 3088: 'airplane', - 3089: 'airplane', - 3090: 'airplane', - 3091: 'airplane', - 3092: 'airplane', - 3093: 'airplane', - 3094: 'airplane', - 3095: 'airplane', - 3096: 'airplane', - 3097: 'airplane', - 3098: 'airplane', - 3099: 'airplane', - 3100: 'airplane', - 3101: 'airplane', - 3102: 'airplane', - 3103: 'airplane', - 3104: 'airplane', - 3105: 'airplane', - 3106: 'airplane', - 3107: 'airplane', - 3108: 'airplane', - 3109: 'airplane', - 3110: 'airplane', - 3111: 'airplane', - 3112: 'airplane', - 3113: 'airplane', - 3114: 'airplane', - 3115: 'airplane', - 3116: 'airplane', - 3117: 'airplane', - 3118: 'airplane', - 3119: 'airplane', - 3120: 'airplane', - 3121: 'airplane', - 3122: 'airplane', - 3123: 'airplane', - 3124: 'airplane', - 3125: 'airplane', - 3126: 'airplane', - 3127: 'airplane', - 3128: 'airplane', - 3129: 'airplane', - 3130: 'airplane', - 3131: 'airplane', - 3132: 'airplane', - 3133: 'airplane', - 3134: 'airplane', - 3135: 'airplane', - 3136: 'airplane', - 3137: 'airplane', - 3138: 'airplane', - 3139: 'airplane', - 3140: 'airplane', - 3141: 'airplane', - 3142: 'airplane', - 3143: 'airplane', - 3144: 'airplane', - 3145: 'airplane', - 3146: 'airplane', - 3147: 'airplane', - 3148: 'airplane', - 3149: 'airplane', - 3150: 'airplane', - 3151: 'airplane', - 3152: 'airplane', - 3153: 'airplane', - 3154: 'airplane', - 3155: 'airplane', - 3156: 'airplane', - 3157: 'airplane', - 3158: 'airplane', - 3159: 'airplane', - 3160: 'airplane', - 3161: 'airplane', - 3162: 'airplane', - 3163: 'airplane', - 3164: 'airplane', - 3165: 'airplane', - 3166: 'airplane', - 3167: 'airplane', - 3168: 'airplane', - 3169: 'airplane', - 3170: 'airplane', - 3171: 'airplane', - 3172: 'airplane', - 3173: 'airplane', - 3174: 'airplane', - 3175: 'airplane', - 3176: 'airplane', - 3177: 'airplane', - 3178: 'airplane', - 3179: 'airplane', - 3180: 'airplane', - 3181: 'airplane', - 3182: 'airplane', - 3183: 'airplane', - 3184: 'airplane', - 3185: 'airplane', - 3186: 'airplane', - 3187: 'airplane', - 3188: 'airplane', - 3189: 'airplane', - 3190: 'airplane', - 3191: 'airplane', - 3192: 'airplane', - 3193: 'airplane', - 3194: 'airplane', - 3195: 'airplane', - 3196: 'airplane', - 3197: 'airplane', - 3198: 'airplane', - 3199: 'airplane', - 3200: 'airplane', - 3201: 'airplane', - 3202: 'airplane', - 3203: 'airplane', - 3204: 'airplane', - 3205: 'airplane', - 3206: 'airplane', - 3207: 'airplane', - 3208: 'airplane', - 3209: 'airplane', - 3210: 'airplane', - 3211: 'airplane', - 3212: 'airplane', - 3213: 'airplane', - 3214: 'airplane', - 3215: 'airplane', - 3216: 'airplane', - 3217: 'airplane', - 3218: 'airplane', - 3219: 'airplane', - 3220: 'airplane', - 3221: 'airplane', - 3222: 'airplane', - 3223: 'airplane', - 3224: 'airplane', - 3225: 'airplane', - 3226: 'airplane', - 3227: 'airplane', - 3228: 'airplane', - 3229: 'airplane', - 3230: 'airplane', - 3231: 'airplane', - 3232: 'airplane', - 3233: 'airplane', - 3234: 'airplane', - 3235: 'airplane', - 3236: 'airplane', - 3237: 'airplane', - 3238: 'airplane', - 3239: 'airplane', - 3240: 'airplane', - 3241: 'airplane', - 3242: 'airplane', - 3243: 'airplane', - 3244: 'airplane', - 3245: 'airplane', - 3246: 'airplane', - 3247: 'airplane', - 3248: 'airplane', - 3249: 'airplane', - 3250: 'airplane', - 3251: 'airplane', - 3252: 'airplane', - 3253: 'airplane', - 3254: 'airplane', - 3255: 'airplane', - 3256: 'airplane', - 3257: 'airplane', - 3258: 'airplane', - 3259: 'airplane', - 3260: 'airplane', - 3261: 'airplane', - 3262: 'airplane', - 3263: 'airplane', - 3264: 'airplane', - 3265: 'airplane', - 3266: 'airplane', - 3267: 'airplane', - 3268: 'airplane', - 3269: 'airplane', - 3270: 'airplane', - 3271: 'airplane', - 3272: 'airplane', - 3273: 'airplane', - 3274: 'airplane', - 3275: 'airplane', - 3276: 'airplane', - 3277: 'airplane', - 3278: 'airplane', - 3279: 'airplane', - 3280: 'airplane', - 3281: 'airplane', - 3282: 'airplane', - 3283: 'airplane', - 3284: 'airplane', - 3285: 'airplane', - 3286: 'airplane', - 3287: 'airplane', - 3288: 'airplane', - 3289: 'airplane', - 3290: 'airplane', - 3291: 'airplane', - 3292: 'airplane', - 3293: 'airplane', - 3294: 'airplane', - 3295: 'airplane', - 3296: 'airplane', - 3297: 'airplane', - 3298: 'airplane', - 3299: 'airplane', - 3351: 'car', - 3352: 'car', - 3353: 'car', - 3354: 'car', - 3355: 'car', - 3356: 'car', - 3357: 'car', - 3358: 'car', - 3359: 'car', - 3360: 'car', - 3361: 'car', - 3362: 'car', - 3363: 'car', - 3364: 'car', - 3365: 'car', - 3366: 'car', - 3367: 'car', - 3368: 'car', - 3369: 'car', - 3370: 'car', - 3371: 'car', - 3372: 'car', - 3373: 'car', - 3374: 'car', - 3375: 'car', - 3376: 'car', - 3377: 'car', - 3378: 'car', - 3379: 'car', - 3380: 'car', - 3381: 'car', - 3382: 'car', - 3383: 'car', - 3384: 'car', - 3385: 'car', - 3386: 'car', - 3387: 'car', - 3388: 'car', - 3389: 'car', - 3390: 'car', - 3391: 'car', - 3392: 'car', - 3393: 'car', - 3394: 'car', - 3395: 'car', - 3396: 'car', - 3397: 'car', - 3398: 'car', - 3399: 'car', - 3400: 'car', - 3401: 'car', - 3402: 'car', - 3403: 'car', - 3404: 'car', - 3405: 'car', - 3406: 'car', - 3407: 'car', - 3408: 'car', - 3409: 'car', - 3410: 'car', - 3411: 'car', - 3412: 'car', - 3413: 'car', - 3414: 'car', - 3415: 'car', - 3416: 'car', - 3417: 'car', - 3418: 'car', - 3419: 'car', - 3420: 'car', - 3421: 'car', - 3422: 'car', - 3423: 'car', - 3424: 'car', - 3425: 'car', - 3426: 'car', - 3427: 'car', - 3428: 'car', - 3429: 'car', - 3430: 'car', - 3431: 'car', - 3432: 'car', - 3433: 'car', - 3434: 'car', - 3435: 'car', - 3436: 'car', - 3437: 'car', - 3438: 'car', - 3439: 'car', - 3440: 'car', - 3441: 'car', - 3501: 'hotel', - 3502: 'hotel', - 3503: 'hotel', - 3504: 'hotel', - 3505: 'hotel', - 3506: 'hotel', - 3507: 'hotel', - 3508: 'hotel', - 3509: 'hotel', - 3510: 'hotel', - 3511: 'hotel', - 3512: 'hotel', - 3513: 'hotel', - 3514: 'hotel', - 3515: 'hotel', - 3516: 'hotel', - 3517: 'hotel', - 3518: 'hotel', - 3519: 'hotel', - 3520: 'hotel', - 3521: 'hotel', - 3522: 'hotel', - 3523: 'hotel', - 3524: 'hotel', - 3525: 'hotel', - 3526: 'hotel', - 3527: 'hotel', - 3528: 'hotel', - 3529: 'hotel', - 3530: 'hotel', - 3531: 'hotel', - 3532: 'hotel', - 3533: 'hotel', - 3534: 'hotel', - 3535: 'hotel', - 3536: 'hotel', - 3537: 'hotel', - 3538: 'hotel', - 3539: 'hotel', - 3540: 'hotel', - 3541: 'hotel', - 3542: 'hotel', - 3543: 'hotel', - 3544: 'hotel', - 3545: 'hotel', - 3546: 'hotel', - 3547: 'hotel', - 3548: 'hotel', - 3549: 'hotel', - 3550: 'hotel', - 3551: 'hotel', - 3552: 'hotel', - 3553: 'hotel', - 3554: 'hotel', - 3555: 'hotel', - 3556: 'hotel', - 3557: 'hotel', - 3558: 'hotel', - 3559: 'hotel', - 3560: 'hotel', - 3561: 'hotel', - 3562: 'hotel', - 3563: 'hotel', - 3564: 'hotel', - 3565: 'hotel', - 3566: 'hotel', - 3567: 'hotel', - 3568: 'hotel', - 3569: 'hotel', - 3570: 'hotel', - 3571: 'hotel', - 3572: 'hotel', - 3573: 'hotel', - 3574: 'hotel', - 3575: 'hotel', - 3576: 'hotel', - 3577: 'hotel', - 3578: 'hotel', - 3579: 'hotel', - 3580: 'hotel', - 3581: 'hotel', - 3582: 'hotel', - 3583: 'hotel', - 3584: 'hotel', - 3585: 'hotel', - 3586: 'hotel', - 3587: 'hotel', - 3588: 'hotel', - 3589: 'hotel', - 3590: 'hotel', - 3591: 'hotel', - 3592: 'hotel', - 3593: 'hotel', - 3594: 'hotel', - 3595: 'hotel', - 3596: 'hotel', - 3597: 'hotel', - 3598: 'hotel', - 3599: 'hotel', - 3600: 'hotel', - 3601: 'hotel', - 3602: 'hotel', - 3603: 'hotel', - 3604: 'hotel', - 3605: 'hotel', - 3606: 'hotel', - 3607: 'hotel', - 3608: 'hotel', - 3609: 'hotel', - 3610: 'hotel', - 3611: 'hotel', - 3612: 'hotel', - 3613: 'hotel', - 3614: 'hotel', - 3615: 'hotel', - 3616: 'hotel', - 3617: 'hotel', - 3618: 'hotel', - 3619: 'hotel', - 3620: 'hotel', - 3621: 'hotel', - 3622: 'hotel', - 3623: 'hotel', - 3624: 'hotel', - 3625: 'hotel', - 3626: 'hotel', - 3627: 'hotel', - 3628: 'hotel', - 3629: 'hotel', - 3630: 'hotel', - 3631: 'hotel', - 3632: 'hotel', - 3633: 'hotel', - 3634: 'hotel', - 3635: 'hotel', - 3636: 'hotel', - 3637: 'hotel', - 3638: 'hotel', - 3639: 'hotel', - 3640: 'hotel', - 3641: 'hotel', - 3642: 'hotel', - 3643: 'hotel', - 3644: 'hotel', - 3645: 'hotel', - 3646: 'hotel', - 3647: 'hotel', - 3648: 'hotel', - 3649: 'hotel', - 3650: 'hotel', - 3651: 'hotel', - 3652: 'hotel', - 3653: 'hotel', - 3654: 'hotel', - 3655: 'hotel', - 3656: 'hotel', - 3657: 'hotel', - 3658: 'hotel', - 3659: 'hotel', - 3660: 'hotel', - 3661: 'hotel', - 3662: 'hotel', - 3663: 'hotel', - 3664: 'hotel', - 3665: 'hotel', - 3666: 'hotel', - 3667: 'hotel', - 3668: 'hotel', - 3669: 'hotel', - 3670: 'hotel', - 3671: 'hotel', - 3672: 'hotel', - 3673: 'hotel', - 3674: 'hotel', - 3675: 'hotel', - 3676: 'hotel', - 3677: 'hotel', - 3678: 'hotel', - 3679: 'hotel', - 3680: 'hotel', - 3681: 'hotel', - 3682: 'hotel', - 3683: 'hotel', - 3684: 'hotel', - 3685: 'hotel', - 3686: 'hotel', - 3687: 'hotel', - 3688: 'hotel', - 3689: 'hotel', - 3690: 'hotel', - 3691: 'hotel', - 3692: 'hotel', - 3693: 'hotel', - 3694: 'hotel', - 3695: 'hotel', - 3696: 'hotel', - 3697: 'hotel', - 3698: 'hotel', - 3699: 'hotel', - 3700: 'hotel', - 3701: 'hotel', - 3702: 'hotel', - 3703: 'hotel', - 3704: 'hotel', - 3705: 'hotel', - 3706: 'hotel', - 3707: 'hotel', - 3708: 'hotel', - 3709: 'hotel', - 3710: 'hotel', - 3711: 'hotel', - 3712: 'hotel', - 3713: 'hotel', - 3714: 'hotel', - 3715: 'hotel', - 3716: 'hotel', - 3717: 'hotel', - 3718: 'hotel', - 3719: 'hotel', - 3720: 'hotel', - 3721: 'hotel', - 3722: 'hotel', - 3723: 'hotel', - 3724: 'hotel', - 3725: 'hotel', - 3726: 'hotel', - 3727: 'hotel', - 3728: 'hotel', - 3729: 'hotel', - 3730: 'hotel', - 3731: 'hotel', - 3732: 'hotel', - 3733: 'hotel', - 3734: 'hotel', - 3735: 'hotel', - 3736: 'hotel', - 3737: 'hotel', - 3738: 'hotel', - 3739: 'hotel', - 3740: 'hotel', - 3741: 'hotel', - 3742: 'hotel', - 3743: 'hotel', - 3744: 'hotel', - 3745: 'hotel', - 3746: 'hotel', - 3747: 'hotel', - 3748: 'hotel', - 3749: 'hotel', - 3750: 'hotel', - 3751: 'hotel', - 3752: 'hotel', - 3753: 'hotel', - 3754: 'hotel', - 3755: 'hotel', - 3756: 'hotel', - 3757: 'hotel', - 3758: 'hotel', - 3759: 'hotel', - 3760: 'hotel', - 3761: 'hotel', - 3762: 'hotel', - 3763: 'hotel', - 3764: 'hotel', - 3765: 'hotel', - 3766: 'hotel', - 3767: 'hotel', - 3768: 'hotel', - 3769: 'hotel', - 3770: 'hotel', - 3771: 'hotel', - 3772: 'hotel', - 3773: 'hotel', - 3774: 'hotel', - 3775: 'hotel', - 3776: 'hotel', - 3777: 'hotel', - 3778: 'hotel', - 3779: 'hotel', - 3780: 'hotel', - 3781: 'hotel', - 3782: 'hotel', - 3783: 'hotel', - 3784: 'hotel', - 3785: 'hotel', - 3786: 'hotel', - 3787: 'hotel', - 3788: 'hotel', - 3789: 'hotel', - 3790: 'hotel', - 3816: 'hotel', - 3835: 'hotel', - 4011: 'car', - 4111: 'car', - 4112: 'car', - 4119: 'car', - 4121: 'car', - 4131: 'car', - 4214: 'car', - 4215: 'bus', - 4225: 'default', - 4411: 'boat', - 4457: 'boat', - 4468: 'boat', - 4511: 'airplane', - 4582: 'airplane', - 4722: 'airplane', - 4723: 'airplane', - 4784: 'car', - 4789: 'car', - 4812: 'car', - 4814: 'telephone', - 4815: 'telephone', - 4816: 'computer', - 4821: 'money', - 4829: 'money', - 4899: 'television', - 4900: 'gas', - 5013: 'car', - 5021: 'default', - 5039: 'repair', - 5044: 'computer', - 5045: 'computer', - 5046: 'default', - 5047: 'medical', - 5051: 'default', - 5065: 'default', - 5072: 'default', - 5074: 'default', - 5085: 'default', - 5094: 'diamond-ring', - 5099: 'default', - 5111: 'default', - 5122: 'medical', - 5131: 'default', - 5137: 'shirt', - 5139: 'shoes', - 5169: 'gas', - 5172: 'gas', - 5192: 'books', - 5193: 'plant', - 5198: 'repair', - 5199: 'repair', - 5200: 'repair', - 5211: 'repair', - 5231: 'repair', - 5251: 'default', - 5261: 'plant', - 5271: 'bus', - 5300: 'purchase', - 5309: 'purchase', - 5310: 'purchase', - 5311: 'purchase', - 5331: 'purchase', - 5399: 'purchase', - 5411: 'food', - 5422: 'food', - 5441: 'food', - 5451: 'food', - 5462: 'food', - 5499: 'food', - 5511: 'car', - 5521: 'car', - 5531: 'car', - 5532: 'car', - 5533: 'car', - 5541: 'gas', - 5542: 'gas', - 5551: 'boat', - 5561: 'motorcycle', - 5571: 'motorcycle', - 5592: 'default', - 5598: 'default', - 5599: 'car', - 5611: 'shirt', - 5621: 'shirt', - 5631: 'shirt', - 5641: 'shirt', - 5651: 'shirt', - 5655: 'shirt', - 5661: 'shoes', - 5681: 'default', - 5691: 'shirt', - 5697: 'default', - 5698: 'default', - 5699: 'default', - 5712: 'default', - 5713: 'default', - 5714: 'default', - 5718: 'default', - 5719: 'default', - 5722: 'default', - 5732: 'computer', - 5733: 'music', - 5734: 'computer', - 5735: 'music', - 5811: 'food', - 5812: 'food', - 5813: 'cocktail', - 5814: 'food', - 5815: 'books', - 5816: 'computer', - 5817: 'default', - 5818: 'default', - 5832: 'default', - 5912: 'medical', - 5921: 'cocktail', - 5931: 'default', - 5932: 'default', - 5933: 'default', - 5935: 'default', - 5937: 'default', - 5940: 'bicycle', - 5941: 'bicycle', - 5942: 'books', - 5943: 'default', - 5944: 'clock', - 5945: 'toy', - 5946: 'camera', - 5947: 'default', - 5948: 'default', - 5949: 'default', - 5950: 'default', - 5960: 'default', - 5961: 'mail', - 5962: 'telephone', - 5963: 'default', - 5964: 'telephone', - 5965: 'telephone', - 5966: 'telephone', - 5967: 'telephone', - 5968: 'telephone', - 5969: 'telephone', - 5970: 'art', - 5971: 'art', - 5972: 'coins', - 5973: 'default', - 5975: 'default', - 5976: 'default', - 5977: 'default', - 5978: 'default', - 5983: 'gas', - 5992: 'plant', - 5993: 'default', - 5994: 'newspaper', - 5995: 'pet', - 5996: 'cocktail', - 5997: 'purchase', - 5998: 'tent', - 5999: 'money', - 6010: 'money', - 6011: 'money', - 6012: 'money', - 6051: 'money', - 6211: 'money', - 6300: 'money', - 6381: 'money', - 6399: 'repair', - 6513: 'repair', - 7011: 'hotel', - 7012: 'hotel', - 7032: 'park', - 7033: 'park', - 7210: 'shirt', - 7211: 'shirt', - 7216: 'shirt', - 7217: 'default', - 7221: 'camera', - 7230: 'scissors', - 7251: 'shoe', - 7261: 'sadface', - 7273: 'smiley-face', - 7276: 'money', - 7277: 'people', - 7278: 'people', - 7296: 'shirt', - 7297: 'smiley-face', - 7298: 'smiley-face', - 7299: 'default', - 7311: 'default', - 7321: 'default', - 7332: 'computer', - 7333: 'camera', - 7338: 'computer', - 7339: 'people', - 7342: 'bug', - 7349: 'default', - 7361: 'people', - 7372: 'computer', - 7375: 'computer', - 7379: 'computer', - 7392: 'people', - 7393: 'search', - 7394: 'default', - 7395: 'car', - 7399: 'car', - 7511: 'truck', - 7512: 'car', - 7513: 'truck', - 7519: 'truck', - 7523: 'car', - 7531: 'car', - 7534: 'car', - 7535: 'car', - 7538: 'car', - 7542: 'car', - 7549: 'truck', - 7622: 'television', - 7623: 'default', - 7629: 'default', - 7631: 'watch', - 7641: 'furniture', - 7692: 'default', - 7699: 'default', - 7800: 'money', - 7801: 'money', - 7802: 'money', - 7829: 'money', - 7832: 'film', - 7841: 'film', - 7911: 'music', - 7922: 'ticket', - 7929: 'ticket', - 7932: 'music', - 7933: 'bowling', - 7941: 'football', - 7991: 'people', - 7992: 'golf', - 7993: 'game', - 7994: 'game', - 7995: 'coins', - 7996: 'ticket', - 7997: 'money', - 7998: 'ticket', - 7999: 'people', - 8011: 'medical', - 8021: 'medical', - 8031: 'medical', - 8041: 'medical', - 8042: 'medical', - 8043: 'medical', - 8044: 'medical', - 8049: 'medical', - 8050: 'medical', - 8062: 'medical', - 8071: 'medical', - 8099: 'medical', - 8111: 'law', - 8211: 'books', - 8220: 'books', - 8241: 'books', - 8244: 'books', - 8249: 'books', - 8299: 'people', - 8351: 'people', - 8398: 'people', - 8641: 'people', - 8651: 'people', - 8661: 'people', - 8675: 'car', - 8699: 'people', - 8734: 'medical', - 8911: 'tree', - 8931: 'books', - 8999: 'suitcase', - 9211: 'law', - 9222: 'law', - 9223: 'law', - 9311: 'law', - 9399: 'default', - 9402: 'mail', - 9405: 'default', - 9700: 'default', - 9701: 'default', - 9702: 'default', - 9950: 'default', - 'bp001': 'bitcoin-topup', - 'bp002': 'default' - }; - - var nextStepItem = { - name: 'bitpaycard', - title: 'Add BitPay Visa® Card', - icon: 'icon-bitpay-card', - sref: 'tabs.bitpayCardIntro', - }; - - - root.registerNextStep = function() { - // Disable BitPay Card - if (!appConfigService._enabledExtensions.debitcard) return; - root.getCards(function(err, cards) { - if (lodash.isEmpty(cards)) { - nextStepsService.register(nextStepItem); - } else { - nextStepsService.unregister(nextStepItem.name); - } - }); - }; - - root.registerNextStep(); - return root; - -}); diff --git a/src/js/services/bitpayService.js b/src/js/services/bitpayService.js deleted file mode 100644 index 28035c9b6..000000000 --- a/src/js/services/bitpayService.js +++ /dev/null @@ -1,96 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').factory('bitpayService', function($log, $http, appIdentityService, bitauthService) { - var root = {}; - - var NETWORK = 'livenet'; - var BITPAY_API_URL = NETWORK == 'livenet' ? 'https://bitpay.com' : 'https://test.bitpay.com'; - - root.getEnvironment = function() { - return { - network: NETWORK - }; - }; - - root.get = function(endpoint, successCallback, errorCallback) { - $http(_get(endpoint)).then(function(data) { - successCallback(data); - }, function(data) { - errorCallback(data); - }); - }; - - root.post = function(endpoint, json, successCallback, errorCallback) { - appIdentityService.getIdentity(root.getEnvironment().network, function(err, appIdentity) { - if (err) { - return errorCallback(err); - } - $http(_post(endpoint, json, appIdentity)).then(function(data) { - successCallback(data); - }, function(data) { - errorCallback(data); - }); - }); - }; - - root.postAuth = function(json, successCallback, errorCallback) { - appIdentityService.getIdentity(root.getEnvironment().network, function(err, appIdentity) { - if (err) { - return errorCallback(err); - } - $http(_postAuth('/api/v2/', json, appIdentity)).then(function(data) { - data.appIdentity = appIdentity; - successCallback(data); - }, function(data) { - errorCallback(data); - }); - }); - }; - - var _get = function(endpoint) { - return { - method: 'GET', - url: BITPAY_API_URL + endpoint, - headers: { - 'content-type': 'application/json' - } - }; - }; - - var _post = function(endpoint, json, appIdentity) { - var dataToSign = BITPAY_API_URL + endpoint + JSON.stringify(json); - var signedData = bitauthService.sign(dataToSign, appIdentity.priv); - - return { - method: 'POST', - url: BITPAY_API_URL + endpoint, - headers: { - 'content-type': 'application/json', - 'x-identity': appIdentity.pub, - 'x-signature': signedData - }, - data: json - }; - }; - - var _postAuth = function(endpoint, json, appIdentity) { - json['params'].signature = bitauthService.sign(JSON.stringify(json.params), appIdentity.priv); - json['params'].pubkey = appIdentity.pub; - json['params'] = JSON.stringify(json.params); - - var ret = { - method: 'POST', - url: BITPAY_API_URL + endpoint, - headers: { - 'content-type': 'application/json' - }, - data: json - }; - - $log.debug('post auth:' + JSON.stringify(ret)); - return ret; - }; - - return root; - -}); diff --git a/src/js/services/buyAndSellService.js b/src/js/services/buyAndSellService.js deleted file mode 100644 index bffbb7252..000000000 --- a/src/js/services/buyAndSellService.js +++ /dev/null @@ -1,73 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').factory('buyAndSellService', function($log, nextStepsService, lodash, $ionicScrollDelegate, $timeout) { - var root = {}; - var services = []; - var linkedServices = []; - - root.update = function() { - - var newLinked = lodash.filter(services, function(x) { - return x.linked; - }); - - // This is to preserve linkedServices pointer - while (linkedServices.length) - linkedServices.pop(); - - while (newLinked.length) - linkedServices.push(newLinked.pop()); - // - - $log.debug('buyAndSell Service, updating nextSteps. linked/total: ' + linkedServices.length + '/' + services.length); - - if (linkedServices.length == 0) { - nextStepsService.register({ - title: 'Buy or Sell Bitcoin', - name: 'buyandsell', - icon: 'icon-buy-bitcoin', - sref: 'tabs.buyandsell', - }); - } else { - nextStepsService.unregister({ - name: 'buyandsell', - }); - }; - - $timeout(function() { - $ionicScrollDelegate.resize(); - }, 10); - }; - - var updateNextStepsDebunced = lodash.debounce(root.update, 1000); - - root.register = function(serviceInfo) { - services.push(serviceInfo); - $log.info('Adding Buy and Sell service:' + serviceInfo.name + ' linked:' + serviceInfo.linked); - updateNextStepsDebunced(); - }; - - - root.updateLink = function(name, linked) { - var service = lodash.find(services, function(x) { - return x.name == name; - }); - $log.info('Updating Buy and Sell service:' + name + ' linked:' + linked); - service.linked = linked - - root.update(); - }; - - - root.get = function() { - return services; - }; - - - root.getLinked = function() { - return linkedServices; - }; - - - return root; -}); diff --git a/src/js/services/bwcError.js b/src/js/services/bwcError.js deleted file mode 100644 index 417350868..000000000 --- a/src/js/services/bwcError.js +++ /dev/null @@ -1,169 +0,0 @@ -'use strict'; -angular.module('copayApp.services') - .factory('bwcError', function bwcErrorService($log, gettextCatalog) { - var root = {}; - - root.msg = function(err, prefix) { - if (!err) - return 'Unknown error'; - - var name; - - if (err.name) { - if (err.name == 'Error') - name = err.message - else - name = err.name.replace(/^bwc.Error/g, ''); - } else - name = err; - - var body = ''; - prefix = prefix || ''; - - if (name) { - switch (name) { - case 'INVALID_BACKUP': - body = gettextCatalog.getString('Wallet Recovery Phrase is invalid'); - break; - case 'WALLET_DOES_NOT_EXIST': - body = gettextCatalog.getString('Wallet not registered at the wallet service. Recreate it from "Create Wallet" using "Advanced Options" to set your recovery phrase'); - break; - case 'MISSING_PRIVATE_KEY': - body = gettextCatalog.getString('Missing private keys to sign'); - break; - case 'ENCRYPTED_PRIVATE_KEY': - body = gettextCatalog.getString('Private key is encrypted, cannot sign'); - break; - case 'SERVER_COMPROMISED': - body = gettextCatalog.getString('Server response could not be verified'); - break; - case 'COULD_NOT_BUILD_TRANSACTION': - body = gettextCatalog.getString('Could not build transaction'); - break; - case 'INSUFFICIENT_FUNDS': - body = gettextCatalog.getString('Insufficient funds'); - break; - case 'CONNECTION_ERROR': - body = gettextCatalog.getString('Network error'); - break; - case 'NOT_FOUND': - body = gettextCatalog.getString('Wallet service not found'); - break; - case 'ECONNRESET_ERROR': - body = gettextCatalog.getString('Connection reset by peer'); - break; - case 'BAD_RESPONSE_CODE': - body = gettextCatalog.getString('The request could not be understood by the server'); - break; - case 'WALLET_ALREADY_EXISTS': - body = gettextCatalog.getString('Wallet already exists'); - break; - case 'COPAYER_IN_WALLET': - body = gettextCatalog.getString('Copayer already in this wallet'); - break; - case 'WALLET_FULL': - body = gettextCatalog.getString('Wallet is full'); - break; - case 'WALLET_NOT_FOUND': - body = gettextCatalog.getString('Wallet not found'); - break; - case 'INSUFFICIENT_FUNDS_FOR_FEE': - body = gettextCatalog.getString('Insufficient funds for fee'); - break; - case 'LOCKED_FUNDS': - body = gettextCatalog.getString('Funds are locked by pending spend proposals'); - break; - case 'COPAYER_VOTED': - body = gettextCatalog.getString('Copayer already voted on this spend proposal'); - break; - case 'NOT_AUTHORIZED': - body = gettextCatalog.getString('Not authorized'); - break; - case 'TX_ALREADY_BROADCASTED': - body = gettextCatalog.getString('Transaction already broadcasted'); - break; - case 'TX_CANNOT_CREATE': - body = gettextCatalog.getString('Locktime in effect. Please wait to create a new spend proposal'); - break; - case 'TX_CANNOT_REMOVE': - body = gettextCatalog.getString('Locktime in effect. Please wait to remove this spend proposal'); - break; - case 'TX_NOT_ACCEPTED': - body = gettextCatalog.getString('Spend proposal is not accepted'); - break; - case 'TX_NOT_FOUND': - body = gettextCatalog.getString('Spend proposal not found'); - break; - case 'TX_NOT_PENDING': - body = gettextCatalog.getString('The spend proposal is not pending'); - break; - case 'UPGRADE_NEEDED': - body = gettextCatalog.getString('Please upgrade Copay to perform this action'); - break; - case 'BAD_SIGNATURES': - body = gettextCatalog.getString('Signatures rejected by server'); - break; - case 'COPAYER_DATA_MISMATCH': - body = gettextCatalog.getString('Copayer data mismatch'); - break; - case 'DUST_AMOUNT': - body = gettextCatalog.getString('Amount below minimum allowed'); - break; - case 'INCORRECT_ADDRESS_NETWORK': - body = gettextCatalog.getString('Incorrect network address'); - break; - case 'COPAYER_REGISTERED': - body = gettextCatalog.getString('Key already associated with an existing wallet'); - break; - case 'INVALID_ADDRESS': - body = gettextCatalog.getString('Invalid address'); - break; - case 'MAIN_ADDRESS_GAP_REACHED': - body = gettextCatalog.getString('Empty addresses limit reached. New addresses cannot be generated.'); - break; - case 'WALLET_LOCKED': - body = gettextCatalog.getString('Wallet is locked'); - break; - case 'WALLET_NOT_COMPLETE': - body = gettextCatalog.getString('Wallet is not complete'); - break; - case 'WALLET_NEEDS_BACKUP': - body = gettextCatalog.getString('Wallet needs backup'); - break; - case 'MISSING_PARAMETER': - body = gettextCatalog.getString('Missing parameter'); - break; - case 'NO_PASSWORD_GIVEN': - body = gettextCatalog.getString('Spending Password needed'); - break; - case 'PASSWORD_INCORRECT': - body = gettextCatalog.getString('Wrong spending password'); - break; - case 'EXCEEDED_DAILY_LIMIT': - body = gettextCatalog.getString('Exceeded daily limit of $500 per user'); - break; - case 'ERROR': - body = (err.message || err.error); - break; - - default: - $log.warn('Unknown error type:', name); - body = err.message || name; - break; - } - } else if (err.message) { - body = err.message; - } else { - body = err; - } - - var msg = prefix + (body ? (prefix ? ': ' : '') + body : ''); - return msg; - }; - - root.cb = function(err, prefix, cb) { - return cb(root.msg(err, prefix)); - }; - - return root; - }); diff --git a/src/js/services/coinbaseService.js b/src/js/services/coinbaseService.js deleted file mode 100644 index 1bee17990..000000000 --- a/src/js/services/coinbaseService.js +++ /dev/null @@ -1,791 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').factory('coinbaseService', function($http, $log, $window, $filter, platformInfo, lodash, storageService, configService, appConfigService, txFormatService, buyAndSellService, $rootScope, feeService) { - var root = {}; - var credentials = {}; - var isCordova = platformInfo.isCordova; - var isNW = platformInfo.isNW; - var isWindowsPhoneApp = platformInfo.isCordova && platformInfo.isWP; - - root.priceSensitivity = [{ - value: 0.5, - name: '0.5%' - }, { - value: 1, - name: '1%' - }, { - value: 2, - name: '2%' - }, { - value: 5, - name: '5%' - }, { - value: 10, - name: '10%' - }]; - - root.selectedPriceSensitivity = root.priceSensitivity[1]; - - var setCredentials = function() { - - if (!$window.externalServices || !$window.externalServices.coinbase) { - return; - } - - var coinbase = $window.externalServices.coinbase; - - /* - * Development: 'testnet' - * Production: 'livenet' - */ - credentials.NETWORK = 'livenet'; - - // Coinbase permissions - credentials.SCOPE = '' + - 'wallet:accounts:read,' + - 'wallet:addresses:read,' + - 'wallet:addresses:create,' + - 'wallet:user:read,' + - 'wallet:user:email,' + - 'wallet:buys:read,' + - 'wallet:buys:create,' + - 'wallet:sells:read,' + - 'wallet:sells:create,' + - 'wallet:transactions:read,' + - 'wallet:transactions:send,' + - 'wallet:payment-methods:read'; - - // NW has a bug with Window Object - if (isCordova) { - credentials.REDIRECT_URI = coinbase.redirect_uri.mobile; - } else { - credentials.REDIRECT_URI = coinbase.redirect_uri.desktop; - } - - if (credentials.NETWORK == 'testnet') { - credentials.HOST = coinbase.sandbox.host; - credentials.API = coinbase.sandbox.api; - credentials.CLIENT_ID = coinbase.sandbox.client_id; - credentials.CLIENT_SECRET = coinbase.sandbox.client_secret; - } else { - credentials.HOST = coinbase.production.host; - credentials.API = coinbase.production.api; - credentials.CLIENT_ID = coinbase.production.client_id; - credentials.CLIENT_SECRET = coinbase.production.client_secret; - }; - }; - - var _afterTokenReceived = function(data, cb) { - if (data && data.access_token && data.refresh_token) { - storageService.setCoinbaseToken(credentials.NETWORK, data.access_token, function() { - storageService.setCoinbaseRefreshToken(credentials.NETWORK, data.refresh_token, function() { - buyAndSellService.updateLink('coinbase', true); - return cb(null, data.access_token); - }); - }); - } else { - return cb('Could not get the access token'); - } - }; - - root.getNetwork = function() { - return credentials.NETWORK; - }; - - root.getStoredToken = function(cb) { - storageService.getCoinbaseToken(credentials.NETWORK, function(err, accessToken) { - if (err || !accessToken) return cb(); - return cb(accessToken); - }); - }; - - root.getAvailableCurrency = function() { - var config = configService.getSync().wallet.settings; - // ONLY "USD" - switch (config.alternativeIsoCode) { - default: return 'USD' - }; - }; - - root.checkEnoughFundsForFee = function(amount, cb) { - _getNetAmount(amount, function(err, reducedAmount) { - if (err) return cb(err); - - // Check if transaction has enough funds to transfer bitcoin from Coinbase to Copay - if (reducedAmount < 0) { - return cb('Not enough funds for fee'); - } - - return cb(); - }); - }; - - root.getSignupUrl = function() { - return credentials.HOST + '/signup'; - } - - root.getSupportUrl = function() { - return 'https://support.coinbase.com/'; - } - - root.getOauthCodeUrl = function() { - return credentials.HOST + - '/oauth/authorize?response_type=code&client_id=' + - credentials.CLIENT_ID + - '&redirect_uri=' + - credentials.REDIRECT_URI + - '&state=SECURE_RANDOM&scope=' + - credentials.SCOPE + - '&meta[send_limit_amount]=1000&meta[send_limit_currency]=USD&meta[send_limit_period]=day'; - }; - - root.getToken = function(code, cb) { - var req = { - method: 'POST', - url: credentials.HOST + '/oauth/token', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json' - }, - data: { - grant_type: 'authorization_code', - code: code, - client_id: credentials.CLIENT_ID, - client_secret: credentials.CLIENT_SECRET, - redirect_uri: credentials.REDIRECT_URI - } - }; - - $http(req).then(function(data) { - $log.info('Coinbase Authorization Access Token: SUCCESS'); - // Show pending task from the UI - _afterTokenReceived(data.data, cb); - }, function(data) { - $log.error('Coinbase Authorization Access Token: ERROR ' + data.statusText); - return cb(data.data || 'Could not get the access token'); - }); - }; - - var _getNetAmount = function(amount, cb) { - // Fee Normal for a single transaction (450 bytes) - var txNormalFeeKB = 450 / 1000; - feeService.getFeeRate(null, 'normal', function(err, feePerKB) { - if (err) return cb(err); - var feeBTC = (feePerKB * txNormalFeeKB / 100000000).toFixed(8); - - return cb(null, amount - feeBTC, feeBTC); - }); - }; - - var _refreshToken = function(refreshToken, cb) { - var req = { - method: 'POST', - url: credentials.HOST + '/oauth/token', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json' - }, - data: { - grant_type: 'refresh_token', - client_id: credentials.CLIENT_ID, - client_secret: credentials.CLIENT_SECRET, - redirect_uri: credentials.REDIRECT_URI, - refresh_token: refreshToken - } - }; - - $http(req).then(function(data) { - $log.info('Coinbase Refresh Access Token: SUCCESS'); - _afterTokenReceived(data.data, cb); - }, function(data) { - $log.error('Coinbase Refresh Access Token: ERROR ' + data.statusText); - return cb(data.data || 'Could not get the access token'); - }); - }; - - var _getMainAccountId = function(accessToken, cb) { - root.getAccounts(accessToken, function(err, a) { - if (err) return cb(err); - var data = a.data; - for (var i = 0; i < data.length; i++) { - if (data[i].primary && data[i].type == 'wallet') { - return cb(null, data[i].id); - } - } - root.logout(function() {}); - return cb('Your primary account should be a WALLET. Set your wallet account as primary and try again'); - }); - }; - - root.isActive = function(cb) { - - if (isWindowsPhoneApp) - return cb(); - - if (lodash.isEmpty(credentials.CLIENT_ID)) - return cb(); - - storageService.getCoinbaseToken(credentials.NETWORK, function(err, accessToken) { - return cb(err, !!accessToken); - }); - } - - root.init = lodash.throttle(function(cb) { - if (lodash.isEmpty(credentials.CLIENT_ID)) { - return cb('Coinbase is Disabled'); - } - $log.debug('Trying to initialise Coinbase...'); - - storageService.getCoinbaseToken(credentials.NETWORK, function(err, accessToken) { - if (err || !accessToken) return cb(); - else { - _getMainAccountId(accessToken, function(err, accountId) { - if (err) { - if (err.errors && err.errors[0] && err.errors[0].id == 'expired_token') { - $log.debug('Refresh token'); - storageService.getCoinbaseRefreshToken(credentials.NETWORK, function(err, refreshToken) { - if (err) return cb(err); - _refreshToken(refreshToken, function(err, newToken) { - if (err) return cb(err); - _getMainAccountId(newToken, function(err, accountId) { - if (err) return cb(err); - return cb(null, { - accessToken: newToken, - accountId: accountId - }); - }); - }); - }); - } else { - return cb(err); - } - } else { - return cb(null, { - accessToken: accessToken, - accountId: accountId - }); - } - }); - } - }); - }, 10000); - - var _get = function(endpoint, token) { - return { - method: 'GET', - url: credentials.API + '/v2' + endpoint, - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - 'Authorization': 'Bearer ' + token - } - }; - }; - - root.getAccounts = function(token, cb) { - if (!token) return cb('Invalid Token'); - $http(_get('/accounts', token)).then(function(data) { - $log.info('Coinbase Get Accounts: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Coinbase Get Accounts: ERROR ' + data.statusText); - return cb(data.data || 'Could not get the accounts'); - }); - }; - - root.getAccount = function(token, accountId, cb) { - if (!token) return cb('Invalid Token'); - $http(_get('/accounts/' + accountId, token)).then(function(data) { - $log.info('Coinbase Get Account: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Coinbase Get Account: ERROR ' + data.statusText); - return cb(data.data); - }); - }; - - root.getAuthorizationInformation = function(token, cb) { - if (!token) return cb('Invalid Token'); - $http(_get('/user/auth', token)).then(function(data) { - $log.info('Coinbase Autorization Information: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Coinbase Autorization Information: ERROR ' + data.statusText); - return cb(data.data); - }); - }; - - root.getCurrentUser = function(token, cb) { - if (!token) return cb('Invalid Token'); - $http(_get('/user', token)).then(function(data) { - $log.info('Coinbase Get Current User: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Coinbase Get Current User: ERROR ' + data.statusText); - return cb(data.data); - }); - }; - - root.getBuyOrder = function(token, accountId, buyId, cb) { - if (!token) return cb('Invalid Token'); - $http(_get('/accounts/' + accountId + '/buys/' + buyId, token)).then(function(data) { - $log.info('Coinbase Buy Info: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Coinbase Buy Info: ERROR ' + data.statusText); - return cb(data.data); - }); - }; - - root.getTransaction = function(token, accountId, transactionId, cb) { - if (!token) return cb('Invalid Token'); - $http(_get('/accounts/' + accountId + '/transactions/' + transactionId, token)).then(function(data) { - $log.info('Coinbase Transaction: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Coinbase Transaction: ERROR ' + data.statusText); - return cb(data.data); - }); - }; - - root.getAddressTransactions = function(token, accountId, addressId, cb) { - if (!token) return cb('Invalid Token'); - $http(_get('/accounts/' + accountId + '/addresses/' + addressId + '/transactions', token)).then(function(data) { - $log.info('Coinbase Address s Transactions: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Coinbase Address s Transactions: ERROR ' + data.statusText); - return cb(data.data); - }); - }; - - root.getTransactions = function(token, accountId, cb) { - if (!token) return cb('Invalid Token'); - $http(_get('/accounts/' + accountId + '/transactions', token)).then(function(data) { - $log.info('Coinbase Transactions: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Coinbase Transactions: ERROR ' + data.statusText); - return cb(data.data); - }); - }; - - root.paginationTransactions = function(token, Url, cb) { - if (!token) return cb('Invalid Token'); - $http(_get(Url.replace('/v2', ''), token)).then(function(data) { - $log.info('Coinbase Pagination Transactions: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Coinbase Pagination Transactions: ERROR ' + data.statusText); - return cb(data.data); - }); - }; - - root.sellPrice = function(token, currency, cb) { - $http(_get('/prices/sell?currency=' + currency, token)).then(function(data) { - $log.info('Coinbase Sell Price: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Coinbase Sell Price: ERROR ' + data.statusText); - return cb(data.data); - }); - }; - - root.buyPrice = function(token, currency, cb) { - $http(_get('/prices/buy?currency=' + currency, token)).then(function(data) { - $log.info('Coinbase Buy Price: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Coinbase Buy Price: ERROR ' + data.statusText); - return cb(data.data); - }); - }; - - root.getPaymentMethods = function(token, cb) { - $http(_get('/payment-methods', token)).then(function(data) { - $log.info('Coinbase Get Payment Methods: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Coinbase Get Payment Methods: ERROR ' + data.statusText); - return cb(data.data); - }); - }; - - root.getPaymentMethod = function(token, paymentMethodId, cb) { - $http(_get('/payment-methods/' + paymentMethodId, token)).then(function(data) { - $log.info('Coinbase Get Payment Method: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Coinbase Get Payment Method: ERROR ' + data.statusText); - return cb(data.data); - }); - }; - - var _post = function(endpoint, token, data) { - return { - method: 'POST', - url: credentials.API + '/v2' + endpoint, - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - 'Authorization': 'Bearer ' + token - }, - data: data - }; - }; - - root.sellRequest = function(token, accountId, data, cb) { - var data = { - amount: data.amount, - currency: data.currency, - payment_method: data.payment_method ||  null, - commit: data.commit || false, - quote: data.quote || false - }; - $http(_post('/accounts/' + accountId + '/sells', token, data)).then(function(data) { - $log.info('Coinbase Sell Request: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Coinbase Sell Request: ERROR ' + data.statusText); - return cb(data.data); - }); - }; - - root.sellCommit = function(token, accountId, sellId, cb) { - $http(_post('/accounts/' + accountId + '/sells/' + sellId + '/commit', token)).then(function(data) { - $log.info('Coinbase Sell Commit: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Coinbase Sell Commit: ERROR ' + data.statusText); - return cb(data.data); - }); - }; - - root.buyRequest = function(token, accountId, data, cb) { - var data = { - amount: data.amount, - currency: data.currency, - payment_method: data.payment_method || null, - commit: data.commit || false, - quote: data.quote || false - }; - $http(_post('/accounts/' + accountId + '/buys', token, data)).then(function(data) { - $log.info('Coinbase Buy Request: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Coinbase Buy Request: ERROR ' + data.statusText); - return cb(data.data); - }); - }; - - root.buyCommit = function(token, accountId, buyId, cb) { - $http(_post('/accounts/' + accountId + '/buys/' + buyId + '/commit', token)).then(function(data) { - $log.info('Coinbase Buy Commit: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Coinbase Buy Commit: ERROR ' + data.statusText); - return cb(data.data); - }); - }; - - root.createAddress = function(token, accountId, data, cb) { - var data = { - name: data.name - }; - $http(_post('/accounts/' + accountId + '/addresses', token, data)).then(function(data) { - $log.info('Coinbase Create Address: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Coinbase Create Address: ERROR ' + data.statusText); - return cb(data.data); - }); - }; - - root.sendTo = function(token, accountId, data, cb) { - var data = { - type: 'send', - to: data.to, - amount: data.amount, - currency: data.currency, - description: data.description - }; - $http(_post('/accounts/' + accountId + '/transactions', token, data)).then(function(data) { - $log.info('Coinbase Create Address: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Coinbase Create Address: ERROR ' + data.statusText); - return cb(data.data); - }); - }; - - // Pending transactions - - root.savePendingTransaction = function(ctx, opts, cb) { - _savePendingTransaction(ctx, opts, cb); - }; - - var _savePendingTransaction = function(ctx, opts, cb) { - storageService.getCoinbaseTxs(credentials.NETWORK, function(err, oldTxs) { - if (lodash.isString(oldTxs)) { - oldTxs = JSON.parse(oldTxs); - } - if (lodash.isString(ctx)) { - ctx = JSON.parse(ctx); - } - var tx = oldTxs || {}; - tx[ctx.id] = ctx; - if (opts && (opts.error || opts.status)) { - tx[ctx.id] = lodash.assign(tx[ctx.id], opts); - } - if (opts && opts.remove) { - delete(tx[ctx.id]); - } - tx = JSON.stringify(tx); - - storageService.setCoinbaseTxs(credentials.NETWORK, tx, function(err) { - return cb(err); - }); - }); - }; - - root.getPendingTransactions = function(coinbasePendingTransactions) { - storageService.getCoinbaseTxs(credentials.NETWORK, function(err, txs) { - txs = txs ? JSON.parse(txs) : {}; - coinbasePendingTransactions.data = lodash.isEmpty(txs) ? null : txs; - - root.init(function(err, data) { - if (err || lodash.isEmpty(data)) { - if (err) $log.error(err); - return; - } - var accessToken = data.accessToken; - var accountId = data.accountId; - - lodash.forEach(coinbasePendingTransactions.data, function(dataFromStorage, txId) { - if ((dataFromStorage.type == 'sell' && dataFromStorage.status == 'completed') || - (dataFromStorage.type == 'buy' && dataFromStorage.status == 'completed') || - dataFromStorage.status == 'error' || - (dataFromStorage.type == 'send' && dataFromStorage.status == 'completed')) - return; - root.getTransaction(accessToken, accountId, txId, function(err, tx) { - if (err || lodash.isEmpty(tx) || (tx.data && tx.data.error)) { - _savePendingTransaction(dataFromStorage, { - status: 'error', - error: (tx.data && tx.data.error) ? tx.data.error : err - }, function(err) { - if (err) $log.debug(err); - _updateTxs(coinbasePendingTransactions); - }); - return; - } - _updateCoinbasePendingTransactions(dataFromStorage, tx.data); - coinbasePendingTransactions.data[txId] = dataFromStorage; - if (tx.data.type == 'send' && tx.data.status == 'completed' && tx.data.from) { - root.sellPrice(accessToken, dataFromStorage.sell_price_currency, function(err, s) { - if (err) { - _savePendingTransaction(dataFromStorage, { - status: 'error', - error: err - }, function(err) { - if (err) $log.debug(err); - _updateTxs(coinbasePendingTransactions); - }); - return; - } - var newSellPrice = s.data.amount; - var variance = Math.abs((newSellPrice - dataFromStorage.sell_price_amount) / dataFromStorage.sell_price_amount * 100); - if (variance < dataFromStorage.price_sensitivity.value) { - _sellPending(dataFromStorage, accessToken, accountId, coinbasePendingTransactions); - } else { - var error = { - errors: [{ - message: 'Price falls over the selected percentage' - }] - }; - _savePendingTransaction(dataFromStorage, { - status: 'error', - error: error - }, function(err) { - if (err) $log.debug(err); - _updateTxs(coinbasePendingTransactions); - }); - } - }); - } else if (tx.data.type == 'buy' && tx.data.status == 'completed' && tx.data.buy) { - _sendToWallet(dataFromStorage, accessToken, accountId, coinbasePendingTransactions); - } else { - _savePendingTransaction(dataFromStorage, {}, function(err) { - if (err) $log.debug(err); - _updateTxs(coinbasePendingTransactions); - }); - } - }); - }); - }); - }); - }; - - root.updatePendingTransactions = lodash.throttle(function() { - $log.debug('Updating coinbase pending transactions...'); - var pendingTransactions = { - data: {} - }; - root.getPendingTransactions(pendingTransactions); - }, 20000); - - var _updateTxs = function(coinbasePendingTransactions) { - storageService.getCoinbaseTxs(credentials.NETWORK, function(err, txs) { - txs = txs ? JSON.parse(txs) : {}; - coinbasePendingTransactions.data = lodash.isEmpty(txs) ? null : txs; - }); - }; - - var _sellPending = function(tx, accessToken, accountId, coinbasePendingTransactions) { - var data = tx.amount; - data['payment_method'] = tx.payment_method || null; - data['commit'] = true; - root.sellRequest(accessToken, accountId, data, function(err, res) { - if (err) { - _savePendingTransaction(tx, { - status: 'error', - error: err - }, function(err) { - if (err) $log.debug(err); - _updateTxs(coinbasePendingTransactions); - }); - } else { - if (res.data && !res.data.transaction) { - _savePendingTransaction(tx, { - status: 'error', - error: err - }, function(err) { - if (err) $log.debug(err); - _updateTxs(coinbasePendingTransactions); - }); - return; - } - _savePendingTransaction(tx, { - remove: true - }, function(err) { - root.getTransaction(accessToken, accountId, res.data.transaction.id, function(err, updatedTx) { - _savePendingTransaction(updatedTx.data, {}, function(err) { - if (err) $log.debug(err); - _updateTxs(coinbasePendingTransactions); - }); - }); - }); - } - }); - }; - - var _sendToWallet = function(tx, accessToken, accountId, coinbasePendingTransactions) { - if (!tx) return; - var desc = appConfigService.nameCase + ' Wallet'; - _getNetAmount(tx.amount.amount, function(err, amountBTC, feeBTC) { - if (err) { - _savePendingTransaction(tx, { - status: 'error', - error: err - }, function(err) { - if (err) $log.debug(err); - _updateTxs(coinbasePendingTransactions); - }); - return; - } - - var data = { - to: tx.toAddr, - amount: amountBTC, - currency: tx.amount.currency, - description: desc, - fee: feeBTC - }; - root.sendTo(accessToken, accountId, data, function(err, res) { - if (err) { - _savePendingTransaction(tx, { - status: 'error', - error: err - }, function(err) { - if (err) $log.debug(err); - _updateTxs(coinbasePendingTransactions); - }); - } else { - if (res.data && !res.data.id) { - _savePendingTransaction(tx, { - status: 'error', - error: err - }, function(err) { - if (err) $log.debug(err); - _updateTxs(coinbasePendingTransactions); - }); - return; - } - root.getTransaction(accessToken, accountId, res.data.id, function(err, sendTx) { - _savePendingTransaction(tx, { - remove: true - }, function(err) { - _savePendingTransaction(sendTx.data, {}, function(err) { - if (err) $log.debug(err); - _updateTxs(coinbasePendingTransactions); - }); - }); - }); - } - }); - }); - }; - - var _updateCoinbasePendingTransactions = function(obj /*, …*/ ) { - for (var i = 1; i < arguments.length; i++) { - for (var prop in arguments[i]) { - var val = arguments[i][prop]; - if (typeof val == "object") - _updateCoinbasePendingTransactions(obj[prop], val); - else - obj[prop] = val ? val : obj[prop]; - } - } - return obj; - }; - - root.logout = function(cb) { - storageService.removeCoinbaseToken(credentials.NETWORK, function() { - buyAndSellService.updateLink('coinbase', false); - storageService.removeCoinbaseRefreshToken(credentials.NETWORK, function() { - storageService.removeCoinbaseTxs(credentials.NETWORK, function() { - return cb(); - }); - }); - }); - }; - - var register = function() { - - root.isActive(function(err, isActive) { - if (err) return; - - buyAndSellService.register({ - name: 'coinbase', - logo: 'img/coinbase-logo.png', - location: '33 Countries', - sref: 'tabs.buyandsell.coinbase', - configSref: 'tabs.preferences.coinbase', - linked: isActive, - }); - }); - }; - - setCredentials(); - register(); - - $rootScope.$on('bwsEvent', function(e, walletId, type, n) { - if (type == 'NewBlock' && n && n.data && n.data.network == 'livenet') { - root.isActive(function(err, isActive) { - // Update Coinbase - if (isActive) - root.updatePendingTransactions(); - }); - } - }); - return root; -}); diff --git a/src/js/services/configService.js b/src/js/services/configService.js deleted file mode 100644 index a17fcf628..000000000 --- a/src/js/services/configService.js +++ /dev/null @@ -1,203 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').factory('configService', function(storageService, lodash, $log, $timeout, $rootScope, platformInfo) { - var root = {}; - - var isWindowsPhoneApp = platformInfo.isCordova && platformInfo.isWP; - - var defaultConfig = { - // wallet limits - limits: { - totalCopayers: 6, - mPlusN: 100, - }, - - // Bitcore wallet service URL - bws: { - url: 'https://bws.bitpay.com/bws/api', - }, - - download: { - bitpay: { - url: 'https://bitpay.com/wallet' - }, - copay: { - url: 'https://copay.io/#download' - } - }, - - rateApp: { - bitpay: { - ios: 'http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=1149581638&pageNumber=0&sortOrdering=2&type=Purple+Software&mt=8', - android: 'https://play.google.com/store/apps/details?id=com.bitpay.wallet', - wp: '' - }, - copay: { - ios: 'http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=951330296&pageNumber=0&sortOrdering=2&type=Purple+Software&mt=8', - android: 'https://play.google.com/store/apps/details?id=com.bitpay.copay', - wp: '' - } - }, - // wallet default config - wallet: { - requiredCopayers: 2, - totalCopayers: 3, - spendUnconfirmed: false, - reconnectDelay: 5000, - idleDurationMin: 4, - settings: { - unitName: 'BTC', - unitToSatoshi: 100000000, - unitDecimals: 8, - unitCode: 'btc', - alternativeName: 'US Dollar', - alternativeIsoCode: 'USD', - } - }, - - lock: { - method: null, - value: null, - bannedUntil: null, - }, - - // External services - recentTransactions: { - enabled: true, - }, - - hideNextSteps: { - enabled: isWindowsPhoneApp ? true : false, - }, - - rates: { - url: 'https://insight.bitpay.com:443/api/rates', - }, - - release: { - url: 'https://api.github.com/repos/bitpay/copay/releases/latest' - }, - - pushNotificationsEnabled: true, - - confirmedTxsNotifications: { - enabled: true, - }, - - emailNotifications: { - enabled: false, - }, - - log: { - filter: 'debug', - }, - }; - - var configCache = null; - - root.getSync = function() { - if (!configCache) - throw new Error('configService#getSync called when cache is not initialized'); - - return configCache; - }; - - root._queue = []; - root.whenAvailable = function(cb) { - if (!configCache) { - root._queue.push(cb); - return; - } - return cb(configCache); - }; - - - root.get = function(cb) { - - storageService.getConfig(function(err, localConfig) { - if (localConfig) { - configCache = JSON.parse(localConfig); - - //these ifs are to avoid migration problems - if (!configCache.bws) { - configCache.bws = defaultConfig.bws; - } - if (!configCache.wallet) { - configCache.wallet = defaultConfig.wallet; - } - if (!configCache.wallet.settings.unitCode) { - configCache.wallet.settings.unitCode = defaultConfig.wallet.settings.unitCode; - } - - if (!configCache.hideNextSteps) { - configCache.hideNextSteps = defaultConfig.hideNextSteps; - } - - if (!configCache.recentTransactions) { - configCache.recentTransactions = defaultConfig.recentTransactions; - } - if (!configCache.pushNotifications) { - configCache.pushNotifications = defaultConfig.pushNotifications; - } - if (!configCache.bitpayAccount) { - configCache.bitpayAccount = defaultConfig.bitpayAccount; - } - - } else { - configCache = lodash.clone(defaultConfig); - }; - - configCache.bwsFor = configCache.bwsFor || {}; - configCache.colorFor = configCache.colorFor || {}; - configCache.aliasFor = configCache.aliasFor || {}; - configCache.emailFor = configCache.emailFor || {}; - - $log.debug('Preferences read:', configCache) - - lodash.each(root._queue, function(x) { - $timeout(function() { - return x(configCache); - }, 1); - }); - root._queue = []; - - return cb(err, configCache); - }); - }; - - root.set = function(newOpts, cb) { - var config = lodash.cloneDeep(defaultConfig); - storageService.getConfig(function(err, oldOpts) { - oldOpts = oldOpts || {}; - - if (lodash.isString(oldOpts)) { - oldOpts = JSON.parse(oldOpts); - } - if (lodash.isString(config)) { - config = JSON.parse(config); - } - if (lodash.isString(newOpts)) { - newOpts = JSON.parse(newOpts); - } - - lodash.merge(config, oldOpts, newOpts); - configCache = config; - - $rootScope.$emit('Local/SettingsUpdated'); - - storageService.storeConfig(JSON.stringify(config), cb); - }); - }; - - root.reset = function(cb) { - configCache = lodash.clone(defaultConfig); - storageService.removeConfig(cb); - }; - - root.getDefaults = function() { - return lodash.clone(defaultConfig); - }; - - - return root; -}); diff --git a/src/js/services/derivationPathHelper.js b/src/js/services/derivationPathHelper.js deleted file mode 100644 index 8e9b7151c..000000000 --- a/src/js/services/derivationPathHelper.js +++ /dev/null @@ -1,55 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').factory('derivationPathHelper', function(lodash) { - var root = {}; - - root.default = "m/44'/0'/0'"; - root.defaultTestnet = "m/44'/1'/0'"; - - root.parse = function(str) { - var arr = str.split('/'); - - var ret = {}; - - if (arr[0] != 'm') - return false; - - switch (arr[1]) { - case "44'": - ret.derivationStrategy = 'BIP44'; - break; - case "45'": - return { - derivationStrategy: 'BIP45', - networkName: 'livenet', - account: 0, - } - break; - case "48'": - ret.derivationStrategy = 'BIP48'; - break; - default: - return false; - }; - - switch (arr[2]) { - case "0'": - ret.networkName = 'livenet'; - break; - case "1'": - ret.networkName = 'testnet'; - break; - default: - return false; - }; - - var match = arr[3].match(/(\d+)'/); - if (!match) - return false; - ret.account = +match[1] - - return ret; - }; - - return root; -}); diff --git a/src/js/services/emailService.js b/src/js/services/emailService.js deleted file mode 100644 index 7cba04fa8..000000000 --- a/src/js/services/emailService.js +++ /dev/null @@ -1,64 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').factory('emailService', function($log, configService, lodash, walletService, profileService) { - var root = {}; - - root.updateEmail = function(opts) { - opts = opts || {}; - if (!opts.email) return; - - var wallets = profileService.getWallets(); - - configService.set({ - emailFor: null, // Backward compatibility - emailNotifications: { - enabled: opts.enabled, - email: opts.enabled ? opts.email : null - } - }, function(err) { - if (err) $log.warn(err); - walletService.updateRemotePreferences(wallets); - }); - }; - - root.getEmailIfEnabled = function(config) { - config = config || configService.getSync(); - - if (config.emailNotifications) { - if (!config.emailNotifications.enabled) return; - - if (config.emailNotifications.email) - return config.emailNotifications.email; - } - - if (lodash.isEmpty(config.emailFor)) return; - - // Backward compatibility - var emails = lodash.values(config.emailFor); - for(var i = 0; i < emails.length; i++) { - if (emails[i] !== null && typeof emails[i] !== 'undefined') { - return emails[i]; - } - } - }; - - root.init = function() { - configService.whenAvailable(function(config) { - - if (config.emailNotifications && config.emailNotifications.enabled) { - - // If email already set - if (config.emailNotifications.email) return; - - var currentEmail = root.getEmailIfEnabled(config); - - root.updateEmail({ - enabled: currentEmail ? true : false, - email: currentEmail - }); - } - }); - }; - - return root; -}); diff --git a/src/js/services/externalLinkService.js b/src/js/services/externalLinkService.js deleted file mode 100644 index b47dd7857..000000000 --- a/src/js/services/externalLinkService.js +++ /dev/null @@ -1,36 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').service('externalLinkService', function(platformInfo, nodeWebkitService, popupService, gettextCatalog, $window, $log, $timeout) { - - var _restoreHandleOpenURL = function(old) { - $timeout(function() { - $window.handleOpenURL = old; - }, 500); - }; - - this.open = function(url, optIn, title, message, okText, cancelText) { - var old = $window.handleOpenURL; - - $window.handleOpenURL = function(url) { - // Ignore external URLs - $log.debug('Skip: ' + url); - }; - - if (platformInfo.isNW) { - nodeWebkitService.openExternalLink(url); - _restoreHandleOpenURL(old); - } else { - if (optIn) { - var openBrowser = function(res) { - if (res) window.open(url, '_system'); - _restoreHandleOpenURL(old); - }; - popupService.showConfirm(title, message, okText, cancelText, openBrowser); - } else { - window.open(url, '_system'); - _restoreHandleOpenURL(old); - } - } - }; - -}); diff --git a/src/js/services/feeService.js b/src/js/services/feeService.js deleted file mode 100644 index 3a289bfd8..000000000 --- a/src/js/services/feeService.js +++ /dev/null @@ -1,88 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').factory('feeService', function($log, $timeout, $stateParams, bwcService, walletService, configService, gettext, lodash, txFormatService, gettextCatalog) { - var root = {}; - - var CACHE_TIME_TS = 60; // 1 min - - // Constant fee options to translate - root.feeOpts = { - urgent: gettext('Urgent'), - priority: gettext('Priority'), - normal: gettext('Normal'), - economy: gettext('Economy'), - superEconomy: gettext('Super Economy'), - custom: gettext('Custom') - }; - - var cache = { - updateTs: 0, - }; - - root.getCurrentFeeLevel = function() { - return configService.getSync().wallet.settings.feeLevel || 'normal'; - }; - - - root.getFeeRate = function(network, feeLevel, cb) { - - if (feeLevel == 'custom') return cb(); - - network = network || 'livenet'; - - root.getFeeLevels(function(err, levels, fromCache) { - if (err) return cb(err); - - var feeLevelRate = lodash.find(levels[network], { - level: feeLevel - }); - - if (!feeLevelRate || !feeLevelRate.feePerKB) { - return cb({ - message: gettextCatalog.getString("Could not get dynamic fee for level: {{feeLevel}}", { - feeLevel: feeLevel - }) - }); - } - - var feeRate = feeLevelRate.feePerKB; - - if (!fromCache) $log.debug('Dynamic fee: ' + feeLevel + '/' + network + ' ' + (feeLevelRate.feePerKB / 1000).toFixed() + ' SAT/B'); - - return cb(null, feeRate); - }); - }; - - root.getCurrentFeeRate = function(network, cb) { - return root.getFeeRate(network, root.getCurrentFeeLevel(), cb); - }; - - root.getFeeLevels = function(cb) { - - if (cache.updateTs > Date.now() - CACHE_TIME_TS * 1000) { - return cb(null, cache.data, true); - } - - var walletClient = bwcService.getClient(); - var unitName = configService.getSync().wallet.settings.unitName; - - walletClient.getFeeLevels('livenet', function(errLivenet, levelsLivenet) { - walletClient.getFeeLevels('testnet', function(errTestnet, levelsTestnet) { - if (errLivenet || errTestnet) { - return cb(gettextCatalog.getString('Could not get dynamic fee')); - } - - cache.updateTs = Date.now(); - cache.data = { - 'livenet': levelsLivenet, - 'testnet': levelsTestnet - }; - - return cb(null, cache.data); - }); - }); - }; - - - return root; -}); diff --git a/src/js/services/feedbackService.js b/src/js/services/feedbackService.js deleted file mode 100644 index b35c4c323..000000000 --- a/src/js/services/feedbackService.js +++ /dev/null @@ -1,58 +0,0 @@ -'use strict'; -angular.module('copayApp.services').factory('feedbackService', function($http, $log, $httpParamSerializer, configService) { - var root = {}; - var URL = "https://script.google.com/macros/s/AKfycbybtvNSQKUfgzgXcj3jYLlvCKrcBoktjiJ1V8_cwd2yVkpUBGe3/exec"; - - root.send = function(dataSrc, cb) { - $http(_post(dataSrc)).then(function() { - $log.info("SUCCESS: Feedback sent"); - return cb(); - }, function(err) { - $log.info("ERROR: Feedback sent anyway."); - return cb(err); - }); - }; - - var _post = function(dataSrc) { - return { - method: 'POST', - url: URL, - headers: { - 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8' - }, - data: $httpParamSerializer(dataSrc) - }; - }; - - root.isVersionUpdated = function(currentVersion, savedVersion) { - - if (!verifyTagFormat(currentVersion)) - return 'Cannot verify the format of version tag: ' + currentVersion; - if (!verifyTagFormat(savedVersion)) - return 'Cannot verify the format of the saved version tag: ' + savedVersion; - - var current = formatTagNumber(currentVersion); - var saved = formatTagNumber(savedVersion); - if (saved.major > current.major || (saved.major == current.major && saved.minor > current.minor)) - return false; - - return true; - - function verifyTagFormat(tag) { - var regex = /^v?\d+\.\d+\.\d+$/i; - return regex.exec(tag); - }; - - function formatTagNumber(tag) { - var formattedNumber = tag.replace(/^v/i, '').split('.'); - return { - major: +formattedNumber[0], - minor: +formattedNumber[1], - patch: +formattedNumber[2] - }; - }; - - }; - - return root; -}); diff --git a/src/js/services/fileStorage.js b/src/js/services/fileStorage.js deleted file mode 100644 index 643effe83..000000000 --- a/src/js/services/fileStorage.js +++ /dev/null @@ -1,157 +0,0 @@ -'use strict'; - -angular.module('copayApp.services') - .factory('fileStorageService', function(lodash, $log) { - var root = {}, - _fs, _dir; - - root.init = function(cb) { - if (_dir) return cb(null, _fs, _dir); - - function onFileSystemSuccess(fileSystem) { - console.log('File system started: ', fileSystem.name, fileSystem.root.name); - _fs = fileSystem; - root.getDir(function(err, newDir) { - if (err || !newDir.nativeURL) return cb(err); - _dir = newDir - $log.debug("Got main dir:", _dir.nativeURL); - return cb(null, _fs, _dir); - }); - } - - function fail(evt) { - var msg = 'Could not init file system: ' + evt.target.error.code; - console.log(msg); - return cb(msg); - }; - - window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail); - }; - - root.get = function(k, cb) { - root.init(function(err, fs, dir) { - if (err) return cb(err); - dir.getFile(k, { - create: false, - }, function(fileEntry) { - if (!fileEntry) return cb(); - fileEntry.file(function(file) { - var reader = new FileReader(); - - reader.onloadend = function(e) { - return cb(null, this.result) - } - - reader.readAsText(file); - }); - }, function(err) { - // Not found - if (err.code == 1) return cb(); - else return cb(err); - }); - }) - }; - - var writelock = {}; - - root.set = function(k, v, cb, delay) { - - delay = delay || 100; - - if (writelock[k]) { - return setTimeout(function() { - console.log('## Writelock for:' + k + ' Retrying in ' + delay); - return root.set(k, v, cb, delay + 100); - }, delay); - } - - writelock[k] = true; - root.init(function(err, fs, dir) { - if (err) { - writelock[k] = false; - return cb(err); - } - dir.getFile(k, { - create: true, - }, function(fileEntry) { - // Create a FileWriter object for our FileEntry (log.txt). - fileEntry.createWriter(function(fileWriter) { - - fileWriter.onwriteend = function(e) { - console.log('Write completed:' + k); - writelock[k] = false; - return cb(); - }; - - fileWriter.onerror = function(e) { - var err = e.error ? e.error : JSON.stringify(e); - console.log('Write failed: ' + err); - writelock[k] = false; - return cb('Fail to write:' + err); - }; - - if (lodash.isObject(v)) - v = JSON.stringify(v); - - if (v && !lodash.isString(v)) { - v = v.toString(); - } - - $log.debug('Writing:', k, v); - fileWriter.write(v); - - }, cb); - }); - }); - }; - - - // See https://github.com/apache/cordova-plugin-file/#where-to-store-files - root.getDir = function(cb) { - if (!cordova.file) { - return cb('Could not write on device storage'); - } - - var url = cordova.file.dataDirectory; - // This could be needed for windows - // if (cordova.file === undefined) { - // url = 'ms-appdata:///local/'; - window.resolveLocalFileSystemURL(url, function(dir) { - return cb(null, dir); - }, function(err) { - $log.warn(err); - return cb(err || 'Could not resolve filesystem:' + url); - }); - }; - - root.remove = function(k, cb) { - root.init(function(err, fs, dir) { - if (err) return cb(err); - dir.getFile(k, { - create: false, - }, function(fileEntry) { - // Create a FileWriter object for our FileEntry (log.txt). - fileEntry.remove(function() { - console.log('File removed.'); - return cb(); - }, cb); - }, cb); - }); - }; - - /** - * Same as setItem, but fails if an item already exists - */ - root.create = function(name, value, callback) { - root.get(name, - function(err, data) { - if (data) { - return callback('EEXISTS'); - } else { - return root.set(name, value, callback); - } - }); - }; - - return root; - }); diff --git a/src/js/services/fingerprintService.js b/src/js/services/fingerprintService.js deleted file mode 100644 index 30e288a79..000000000 --- a/src/js/services/fingerprintService.js +++ /dev/null @@ -1,99 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').factory('fingerprintService', function($log, gettextCatalog, configService, platformInfo) { - var root = {}; - - var _isAvailable = false; - - if (platformInfo.isCordova && !platformInfo.isWP) { - window.plugins.touchid = window.plugins.touchid || {}; - window.plugins.touchid.isAvailable( - function(msg) { - _isAvailable = 'IOS'; - }, - function(msg) { - FingerprintAuth.isAvailable(function(result) { - - if (result.isAvailable) - _isAvailable = 'ANDROID'; - - }, function() { - _isAvailable = false; - }); - }); - }; - - var requestFinger = function(cb) { - try { - FingerprintAuth.show({ - clientId: 'Copay', - clientSecret: 'hVu1NvCZOyUuGgr46bFL', - }, - function(result) { - if (result.withFingerprint) { - $log.debug('Finger OK'); - return cb(); - } else if (result.withPassword) { - $log.debug("Finger: Authenticated with backup password"); - return cb(); - } - }, - function(msg) { - $log.debug('Finger Failed:' + JSON.stringify(msg)); - return cb(gettextCatalog.getString('Finger Scan Failed')); - } - ); - } catch (e) { - $log.warn('Finger Scan Failed:' + JSON.stringify(e)); - return cb(gettextCatalog.getString('Finger Scan Failed')); - }; - }; - - - var requestTouchId = function(cb) { - try { - window.plugins.touchid.verifyFingerprint( - gettextCatalog.getString('Scan your fingerprint please'), - function(msg) { - $log.debug('Touch ID OK'); - return cb(); - }, - function(msg) { - $log.debug('Touch ID Failed:' + JSON.stringify(msg)); - return cb(gettextCatalog.getString('Touch ID Failed')); - } - ); - } catch (e) { - $log.debug('Touch ID Failed:' + JSON.stringify(e)); - return cb(gettextCatalog.getString('Touch ID Failed')); - }; - }; - - var isNeeded = function(client) { - if (!_isAvailable) return false; - if (client === 'unlockingApp') return true; - - var config = configService.getSync(); - config.touchIdFor = config.touchIdFor || {}; - - return config.touchIdFor[client.credentials.walletId]; - }; - - root.isAvailable = function(client) { - return _isAvailable; - }; - - root.check = function(client, cb) { - if (isNeeded(client)) { - $log.debug('FingerPrint Service:', _isAvailable); - if (_isAvailable == 'IOS') - return requestTouchId(cb); - else - return requestFinger(cb); - } else { - return cb(); - } - }; - - return root; -}); diff --git a/src/js/services/glideraService.js b/src/js/services/glideraService.js deleted file mode 100644 index 1685ad9c7..000000000 --- a/src/js/services/glideraService.js +++ /dev/null @@ -1,462 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').factory('glideraService', function($http, $log, $window, $filter, platformInfo, storageService, buyAndSellService, lodash, configService, txFormatService) { - var root = {}; - var credentials = {}; - var isCordova = platformInfo.isCordova; - var isWindowsPhoneApp = platformInfo.isCordova && platformInfo.isWP; - - var setCredentials = function() { - if (!$window.externalServices || !$window.externalServices.glidera) { - return; - } - - var glidera = $window.externalServices.glidera; - - /* - * Development: 'testnet' - * Production: 'livenet' - */ - credentials.NETWORK = 'livenet'; - //credentials.NETWORK = 'testnet'; - - if (credentials.NETWORK == 'testnet') { - credentials.HOST = glidera.sandbox.host; - if (isCordova) { - credentials.REDIRECT_URI = glidera.sandbox.mobile.redirect_uri; - credentials.CLIENT_ID = glidera.sandbox.mobile.client_id; - credentials.CLIENT_SECRET = glidera.sandbox.mobile.client_secret; - } else { - credentials.REDIRECT_URI = glidera.sandbox.desktop.redirect_uri; - credentials.CLIENT_ID = glidera.sandbox.desktop.client_id; - credentials.CLIENT_SECRET = glidera.sandbox.desktop.client_secret; - } - } else { - credentials.HOST = glidera.production.host; - if (isCordova) { - credentials.REDIRECT_URI = glidera.production.mobile.redirect_uri; - credentials.CLIENT_ID = glidera.production.mobile.client_id; - credentials.CLIENT_SECRET = glidera.production.mobile.client_secret; - } else { - credentials.REDIRECT_URI = glidera.production.desktop.redirect_uri; - credentials.CLIENT_ID = glidera.production.desktop.client_id; - credentials.CLIENT_SECRET = glidera.production.desktop.client_secret; - } - }; - }; - - root.getNetwork = function() { - return credentials.NETWORK; - }; - - root.getCurrency = function() { - return 'USD'; - }; - - root.getSignupUrl = function() { - return credentials.HOST + '/register'; - } - - root.getSupportUrl = function() { - return 'https://twitter.com/GlideraInc'; - } - - root.getOauthCodeUrl = function() { - return credentials.HOST + '/oauth2/auth?response_type=code&client_id=' + credentials.CLIENT_ID + '&redirect_uri=' + credentials.REDIRECT_URI; - }; - - root.remove = function(cb) { - storageService.removeGlideraToken(credentials.NETWORK, function() { - storageService.removeGlideraPermissions(credentials.NETWORK, function() { - storageService.removeGlideraStatus(credentials.NETWORK, function() { - storageService.removeGlideraTxs(credentials.NETWORK, function() { - buyAndSellService.updateLink('glidera', false); - return cb(); - }); - }); - }); - }); - }; - - root.getToken = function(code, cb) { - var req = { - method: 'POST', - url: credentials.HOST + '/api/v1/oauth/token', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json' - }, - data: { - grant_type: 'authorization_code', - code: code, - client_id: credentials.CLIENT_ID, - client_secret: credentials.CLIENT_SECRET, - redirect_uri: credentials.REDIRECT_URI - } - }; - - $http(req).then(function(data) { - $log.info('Glidera Authorization Access Token: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Glidera Authorization Access Token: ERROR ' + data.statusText); - var message = data.data && data.data.message ? data.data.message : data.statusText; - return cb(message); - }); - }; - - root.authorize = function(code, cb) { - root.getToken(code, function(err, data) { - if (err) return cb(err); - if (data && !data.access_token) return cb('No access token'); - var accessToken = data.access_token; - root.getAccessTokenPermissions(accessToken, function(err, p) { - if (err) return cb(err); - root.getStatus(accessToken, function(err, status) { - if (err) $log.error(err); - storageService.setGlideraToken(credentials.NETWORK, accessToken, function() { - storageService.setGlideraPermissions(credentials.NETWORK, JSON.stringify(p), function() { - storageService.setGlideraStatus(credentials.NETWORK, JSON.stringify(status), function() { - return cb(null, { - token: accessToken, - permissions: p, - status: status - }); - }); - }); - }); - }); - }); - }); - }; - - var _get = function(endpoint, token) { - return { - method: 'GET', - url: credentials.HOST + '/api/v1' + endpoint, - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - 'Authorization': 'Bearer ' + token - } - }; - }; - - root.getAccessTokenPermissions = function(token, cb) { - if (!token) return cb('Invalid Token'); - $http(_get('/oauth/token', token)).then(function(data) { - $log.info('Glidera Access Token Permissions: SUCCESS'); - return cb(null, data.data); - }, function(data) { - var message = data.data && data.data.message ? data.data.message : data.statusText; - $log.error('Glidera Access Token Permissions: ERROR ' + message); - return cb(message); - }); - }; - - root.getEmail = function(token, cb) { - if (!token) return cb('Invalid Token'); - $http(_get('/user/email', token)).then(function(data) { - $log.info('Glidera Get Email: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Glidera Get Email: ERROR ' + data.statusText); - var message = data.data && data.data.message ? data.data.message : data.statusText; - return cb(message); - }); - }; - - root.getPersonalInfo = function(token, cb) { - if (!token) return cb('Invalid Token'); - $http(_get('/user/personalinfo', token)).then(function(data) { - $log.info('Glidera Get Personal Info: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Glidera Get Personal Info: ERROR ' + data.statusText); - var message = data.data && data.data.message ? data.data.message : data.statusText; - return cb(message); - }); - }; - - root.getStatus = function(token, cb) { - if (!token) return cb('Invalid Token'); - $http(_get('/user/status', token)).then(function(data) { - $log.info('Glidera User Status: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Glidera User Status: ERROR ' + data.statusText); - var message = data.data && data.data.message ? data.data.message : data.statusText; - return cb(message); - }); - }; - - root.getLimits = function(token, cb) { - if (!token) return cb('Invalid Token'); - $http(_get('/user/limits', token)).then(function(data) { - $log.info('Glidera Transaction Limits: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Glidera Transaction Limits: ERROR ' + data.statusText); - var message = data.data && data.data.message ? data.data.message : data.statusText; - return cb(message); - }); - }; - - root.getTransactions = function(token, cb) { - if (!token) return cb('Invalid Token'); - $http(_get('/transaction', token)).then(function(data) { - $log.info('Glidera Transactions: SUCCESS'); - return cb(null, data.data.transactions); - }, function(data) { - $log.error('Glidera Transactions: ERROR ' + data.statusText); - var message = data.data && data.data.message ? data.data.message : data.statusText; - return cb(message); - }); - }; - - root.getTransaction = function(token, txid, cb) { - if (!token) return cb('Invalid Token'); - if (!txid) return cb('TxId required'); - $http(_get('/transaction/' + txid, token)).then(function(data) { - $log.info('Glidera Transaction: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Glidera Transaction: ERROR ' + data.statusText); - var message = data.data && data.data.message ? data.data.message : data.statusText; - return cb(message); - }); - }; - - root.getSellAddress = function(token, cb) { - if (!token) return cb('Invalid Token'); - $http(_get('/user/create_sell_address', token)).then(function(data) { - $log.info('Glidera Create Sell Address: SUCCESS'); - return cb(null, data.data.sellAddress); - }, function(data) { - $log.error('Glidera Create Sell Address: ERROR ' + data.statusText); - var message = data.data && data.data.message ? data.data.message : data.statusText; - return cb(message); - }); - }; - - root.get2faCode = function(token, cb) { - if (!token) return cb('Invalid Token'); - $http(_get('/authentication/get2faCode', token)).then(function(data) { - $log.info('Glidera 2FA code: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Glidera 2FA code: ERROR ' + data.statusText); - var message = data.data && data.data.message ? data.data.message : data.statusText; - return cb(message); - }); - }; - - var _post = function(endpoint, token, twoFaCode, data) { - return { - method: 'POST', - url: credentials.HOST + '/api/v1' + endpoint, - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - 'Authorization': 'Bearer ' + token, - 'X-2FA-CODE': twoFaCode - }, - data: data - }; - }; - - root.sellPrice = function(token, price, cb) { - var data = { - qty: price.qty, - fiat: price.fiat - }; - $http(_post('/prices/sell', token, null, data)).then(function(data) { - $log.info('Glidera Sell Price: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Glidera Sell Price: ERROR ' + data.statusText); - var message = data.data && data.data.message ? data.data.message : data.statusText; - return cb(message); - }); - }; - - root.sell = function(token, twoFaCode, data, cb) { - var data = { - refundAddress: data.refundAddress, - signedTransaction: data.signedTransaction, - priceUuid: data.priceUuid, - useCurrentPrice: data.useCurrentPrice, - ip: data.ip - }; - $http(_post('/sell', token, twoFaCode, data)).then(function(data) { - $log.info('Glidera Sell: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Glidera Sell Request: ERROR ' + data.statusText); - var message = data.data && data.data.message ? data.data.message : data.statusText; - return cb(message); - }); - }; - - root.buyPrice = function(token, price, cb) { - var data = { - qty: price.qty, - fiat: price.fiat - }; - $http(_post('/prices/buy', token, null, data)).then(function(data) { - $log.info('Glidera Buy Price: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Glidera Buy Price: ERROR ' + data.statusText); - var message = data.data && data.data.message ? data.data.message : data.statusText; - return cb(message); - }); - }; - - root.buy = function(token, twoFaCode, data, cb) { - var data = { - destinationAddress: data.destinationAddress, - qty: data.qty, - priceUuid: data.priceUuid, - useCurrentPrice: data.useCurrentPrice, - ip: data.ip - }; - $http(_post('/buy', token, twoFaCode, data)).then(function(data) { - $log.info('Glidera Buy: SUCCESS'); - return cb(null, data.data); - }, function(data) { - $log.error('Glidera Buy Request: ERROR ' + data.statusText); - var message = data.data && data.data.message ? data.data.message : data.statusText; - return cb(message); - }); - }; - - var getPermissions = function(accessToken, network, force, cb) { - storageService.getGlideraPermissions(network, function(err, permissions) { - if (lodash.isString(permissions)) permissions = JSON.parse(permissions); - if (force || lodash.isEmpty(permissions)) { - root.getAccessTokenPermissions(accessToken, function(err, p) { - if (err) { - // Return error and remove token - root.remove(function() { - return cb(err); - }); - } else { - // Return permissions and store - storageService.setGlideraPermissions(network, JSON.stringify(p), function() { - return cb(null, p); - }); - } - }); - } else { - return cb(null, permissions); - } - }); - }; - - root.init = function(cb) { - if (lodash.isEmpty(credentials.CLIENT_ID)) { - return cb('Glidera is Disabled'); - } - $log.debug('Trying to initialise Glidera...'); - - storageService.getGlideraToken(credentials.NETWORK, function(err, accessToken) { - if (lodash.isEmpty(accessToken)) return cb(); - - getPermissions(accessToken, credentials.NETWORK, true, function(err, permissions) { - if (err) return cb(err); - - storageService.getGlideraStatus(credentials.NETWORK, function(err, status) { - if (lodash.isString(status)) status = JSON.parse(status); - storageService.getGlideraTxs(credentials.NETWORK, function(err, txs) { - if (lodash.isString(txs)) txs = JSON.parse(txs); - buyAndSellService.updateLink('glidera', true); - return cb(null, { - token: accessToken, - permissions: permissions, - status: status, - txs: txs - }); - }); - }); - }); - }); - }; - - root.updateStatus = function(data) { - storageService.getGlideraToken(credentials.NETWORK, function(err, accessToken) { - if (err) return; - - getPermissions(accessToken, credentials.NETWORK, false, function(err, permissions) { - if (err) return; - data.permissions = permissions; - - data.price = {}; - root.buyPrice(accessToken, { - qty: 1 - }, function(err, buy) { - if (err) return; - data.price['buy'] = buy.price; - }); - root.sellPrice(accessToken, { - qty: 1 - }, function(err, sell) { - if (err) return; - data.price['sell'] = sell.price; - }); - - root.getStatus(accessToken, function(err, status) { - if (err) return; - data.status = status; - storageService.setGlideraStatus(credentials.NETWORK, JSON.stringify(status), function() {}); - }); - - root.getLimits(accessToken, function(err, limits) { - data.limits = limits; - }); - - if (permissions.transaction_history) { - root.getTransactions(accessToken, function(err, txs) { - if (err) return; - storageService.setGlideraTxs(credentials.NETWORK, JSON.stringify(txs), function() {}); - data.txs = txs; - }); - } - - if (permissions.view_email_address) { - root.getEmail(accessToken, function(err, email) { - if (err) return; - data.email = email; - }); - } - if (permissions.personal_info) { - root.getPersonalInfo(accessToken, function(err, info) { - if (err) return; - data.personalInfo = info; - }); - } - }); - }); - }; - - var register = function() { - if (isWindowsPhoneApp) return; - - storageService.getGlideraToken(credentials.NETWORK, function(err, token) { - if (err) return cb(err); - - buyAndSellService.register({ - name: 'glidera', - logo: 'img/glidera-logo.png', - location: 'US Only', - sref: 'tabs.buyandsell.glidera', - configSref: 'tabs.preferences.glidera', - linked: !!token, - }); - }); - }; - - setCredentials(); - register(); - return root; -}); diff --git a/src/js/services/historicLog.js b/src/js/services/historicLog.js deleted file mode 100644 index 88446ae54..000000000 --- a/src/js/services/historicLog.js +++ /dev/null @@ -1,55 +0,0 @@ -'use strict'; -var logs = []; -angular.module('copayApp.services') - .factory('historicLog', function historicLog(lodash) { - var root = {}; - - var levels = [ - { level: 'error', weight: 0, label: 'Error'}, - { level: 'warn', weight: 1, label: 'Warning'}, - { level: 'info', weight: 2, label: 'Info', default: true}, - { level: 'debug', weight: 3, label: 'Debug'} - ]; - - // Create an array of level weights for performant filtering. - var weight = {}; - for (var i = 0; i < levels.length; i++) { - weight[levels[i].level] = levels[i].weight; - } - - root.getLevels = function() { - return levels; - }; - - root.getLevel = function(level) { - return lodash.find(levels, function(l) { - return l.level == level; - }); - }; - - root.getDefaultLevel = function() { - return lodash.find(levels, function(l) { - return l.default; - }); - }; - - root.add = function(level, msg) { - logs.push({ - timestamp: new Date().toISOString(), - level: level, - msg: msg, - }); - }; - - root.get = function(filterWeight) { - var filteredLogs = logs; - if (filterWeight != undefined) { - filteredLogs = lodash.filter(logs, function(l) { - return weight[l.level] <= filterWeight; - }); - } - return filteredLogs; - }; - - return root; - }); diff --git a/src/js/services/homeIntegrationsService.js b/src/js/services/homeIntegrationsService.js deleted file mode 100644 index ba52b686d..000000000 --- a/src/js/services/homeIntegrationsService.js +++ /dev/null @@ -1,25 +0,0 @@ - 'use strict'; - angular.module('copayApp.services').factory('homeIntegrationsService', function(lodash, configService, $log) { - var root = {}; - var services = []; - - root.register = function(serviceInfo) { - // Check if already exists - if (lodash.find(services, { 'name': serviceInfo.name })) return; - $log.info('Adding home Integrations entry:' + serviceInfo.name); - services.push(serviceInfo); - }; - - root.unregister = function(serviceName) { - services = lodash.filter(services, function(x) { - return x.name != serviceName - }); - }; - - root.get = function() { - return services; - }; - - return root; - - }); diff --git a/src/js/services/hwWallet.js b/src/js/services/hwWallet.js deleted file mode 100644 index f3553bf37..000000000 --- a/src/js/services/hwWallet.js +++ /dev/null @@ -1,74 +0,0 @@ -'use strict'; - -angular.module('copayApp.services') - .factory('hwWallet', function($log, bwcService) { - var root = {}; - - // Ledger magic number to get xPub without user confirmation - root.ENTROPY_INDEX_PATH = "0xb11e/"; - root.M = 'm/'; - root.UNISIG_ROOTPATH = 44; - root.MULTISIG_ROOTPATH = 48; - root.LIVENET_PATH = 0; - root.TESTNET_PATH = 1; - - root._err = function(data) { - var msg = data.error || data.message || 'unknown'; - return msg; - }; - - - root.getRootPath = function(device, isMultisig, account) { - var path; - if (isMultisig) { - path = root.MULTISIG_ROOTPATH; - } else { - if (device == 'ledger' && account > 0) { - path = root.MULTISIG_ROOTPATH; - } else { - path = root.UNISIG_ROOTPATH; - } - } - if (device == 'intelTEE') { - path = root.M + path; - } - return path; - }; - - root.getAddressPath = function(device, isMultisig, account, network) { - network = network || 'livenet'; - var networkPath = root.LIVENET_PATH; - if (network == 'testnet') { - networkPath = root.TESTNET_PATH; - } - return root.getRootPath(device, isMultisig, account) + "'/" + networkPath + "'/" + account + "'"; - }; - - root.getEntropyPath = function(device, isMultisig, account) { - var path = root.ENTROPY_INDEX_PATH; - if (isMultisig) { - path = path + "48'/" - } else { - path = path + "44'/" - } - - // Old ledger wallet compat - if (device == 'ledger' && account == 0) { - return path + "0'/"; - } - - if (device == 'intelTEE') { - path = root.M + path; - } - - return path + account + "'"; - }; - - root.pubKeyToEntropySource = function(xPubKey) { - var b = bwcService.getBitcore(); - var x = b.HDPublicKey(xPubKey); - return x.publicKey.toString(); - }; - - return root; - }); diff --git a/src/js/services/incomingData.js b/src/js/services/incomingData.js deleted file mode 100644 index c9d633eb8..000000000 --- a/src/js/services/incomingData.js +++ /dev/null @@ -1,275 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').factory('incomingData', function($log, $state, $timeout, $ionicHistory, bitcore, $rootScope, payproService, scannerService, appConfigService, popupService, gettextCatalog) { - - var root = {}; - - root.showMenu = function(data) { - $rootScope.$broadcast('incomingDataMenu.showMenu', data); - }; - - root.redir = function(data) { - $log.debug('Processing incoming data: ' + data); - - function sanitizeUri(data) { - // Fixes when a region uses comma to separate decimals - var regex = /[\?\&]amount=(\d+([\,\.]\d+)?)/i; - var match = regex.exec(data); - if (!match || match.length === 0) { - return data; - } - var value = match[0].replace(',', '.'); - var newUri = data.replace(regex, value); - - // mobile devices, uris like copay://glidera - newUri.replace('://', ':'); - - return newUri; - } - - function getParameterByName(name, url) { - if (!url) return; - name = name.replace(/[\[\]]/g, "\\$&"); - var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), - results = regex.exec(url); - if (!results) return null; - if (!results[2]) return ''; - return decodeURIComponent(results[2].replace(/\+/g, " ")); - } - - function checkPrivateKey(privateKey) { - try { - new bitcore.PrivateKey(privateKey, 'livenet'); - } catch (err) { - return false; - } - return true; - } - - function goSend(addr, amount, message) { - $state.go('tabs.send', {}, { - 'reload': true, - 'notify': $state.current.name == 'tabs.send' ? false : true - }); - // Timeout is required to enable the "Back" button - $timeout(function() { - if (amount) { - $state.transitionTo('tabs.send.confirm', { - toAmount: amount, - toAddress: addr, - description: message - }); - } else { - $state.transitionTo('tabs.send.amount', { - toAddress: addr - }); - } - }, 100); - } - // data extensions for Payment Protocol with non-backwards-compatible request - if ((/^bitcoin:\?r=[\w+]/).exec(data)) { - data = decodeURIComponent(data.replace('bitcoin:?r=', '')); - $state.go('tabs.send', {}, { - 'reload': true, - 'notify': $state.current.name == 'tabs.send' ? false : true - }).then(function() { - $state.transitionTo('tabs.send.confirm', { - paypro: data - }); - }); - return true; - } - - data = sanitizeUri(data); - - // BIP21 - if (bitcore.URI.isValid(data)) { - var parsed = new bitcore.URI(data); - - var addr = parsed.address ? parsed.address.toString() : ''; - var message = parsed.message; - - var amount = parsed.amount ? parsed.amount : ''; - - if (parsed.r) { - payproService.getPayProDetails(parsed.r, function(err, details) { - if (err) { - if (addr && amount) goSend(addr, amount, message); - else popupService.showAlert(gettextCatalog.getString('Error'), err); - } else handlePayPro(details); - }); - } else { - goSend(addr, amount, message); - } - return true; - - // Plain URL - } else if (/^https?:\/\//.test(data)) { - - payproService.getPayProDetails(data, function(err, details) { - if (err) { - root.showMenu({ - data: data, - type: 'url' - }); - return; - } - handlePayPro(details); - return true; - }); - // Plain Address - } else if (bitcore.Address.isValid(data, 'livenet') || bitcore.Address.isValid(data, 'testnet')) { - if ($state.includes('tabs.scan')) { - root.showMenu({ - data: data, - type: 'bitcoinAddress' - }); - } else { - goToAmountPage(data); - } - } else if (data && data.indexOf(appConfigService.name + '://glidera') === 0) { - var code = getParameterByName('code', data); - $ionicHistory.nextViewOptions({ - disableAnimate: true - }); - $state.go('tabs.home', {}, { - 'reload': true, - 'notify': $state.current.name == 'tabs.home' ? false : true - }).then(function() { - $ionicHistory.nextViewOptions({ - disableAnimate: true - }); - $state.transitionTo('tabs.buyandsell.glidera', { - code: code - }); - }); - return true; - - } else if (data && data.indexOf(appConfigService.name + '://coinbase') === 0) { - var code = getParameterByName('code', data); - $ionicHistory.nextViewOptions({ - disableAnimate: true - }); - $state.go('tabs.home', {}, { - 'reload': true, - 'notify': $state.current.name == 'tabs.home' ? false : true - }).then(function() { - $ionicHistory.nextViewOptions({ - disableAnimate: true - }); - $state.transitionTo('tabs.buyandsell.coinbase', { - code: code - }); - }); - return true; - - // BitPayCard Authentication - } else if (data && data.indexOf(appConfigService.name + '://') === 0) { - - // Disable BitPay Card - if (!appConfigService._enabledExtensions.debitcard) return false; - - var secret = getParameterByName('secret', data); - var email = getParameterByName('email', data); - var otp = getParameterByName('otp', data); - var reason = getParameterByName('r', data); - - $state.go('tabs.home', {}, { - 'reload': true, - 'notify': $state.current.name == 'tabs.home' ? false : true - }).then(function() { - switch (reason) { - default: - case '0': - /* For BitPay card binding */ - $state.transitionTo('tabs.bitpayCardIntro', { - secret: secret, - email: email, - otp: otp - }); - break; - } - }); - return true; - - // Join - } else if (data && data.match(/^copay:[0-9A-HJ-NP-Za-km-z]{70,80}$/)) { - $state.go('tabs.home', {}, { - 'reload': true, - 'notify': $state.current.name == 'tabs.home' ? false : true - }).then(function() { - $state.transitionTo('tabs.add.join', { - url: data - }); - }); - return true; - - // Old join - } else if (data && data.match(/^[0-9A-HJ-NP-Za-km-z]{70,80}$/)) { - $state.go('tabs.home', {}, { - 'reload': true, - 'notify': $state.current.name == 'tabs.home' ? false : true - }).then(function() { - $state.transitionTo('tabs.add.join', { - url: data - }); - }); - return true; - } else if (data && (data.substring(0, 2) == '6P' || checkPrivateKey(data))) { - root.showMenu({ - data: data, - type: 'privateKey' - }); - } else if (data && ((data.substring(0, 2) == '1|') || (data.substring(0, 2) == '2|') || (data.substring(0, 2) == '3|'))) { - $state.go('tabs.home').then(function() { - $state.transitionTo('tabs.add.import', { - code: data - }); - }); - return true; - - } else { - if ($state.includes('tabs.scan')) { - root.showMenu({ - data: data, - type: 'text' - }); - } - } - - return false; - - }; - - function goToAmountPage(toAddress) { - $state.go('tabs.send', {}, { - 'reload': true, - 'notify': $state.current.name == 'tabs.send' ? false : true - }); - $timeout(function() { - $state.transitionTo('tabs.send.amount', { - toAddress: toAddress - }); - }, 100); - } - - function handlePayPro(payProDetails) { - var stateParams = { - toAmount: payProDetails.amount, - toAddress: payProDetails.toAddress, - description: payProDetails.memo, - paypro: payProDetails - }; - scannerService.pausePreview(); - $state.go('tabs.send', {}, { - 'reload': true, - 'notify': $state.current.name == 'tabs.send' ? false : true - }).then(function() { - $timeout(function() { - $state.transitionTo('tabs.send.confirm', stateParams); - }); - }); - } - - return root; -}); diff --git a/src/js/services/intelTEE.js b/src/js/services/intelTEE.js deleted file mode 100644 index 39859c863..000000000 --- a/src/js/services/intelTEE.js +++ /dev/null @@ -1,195 +0,0 @@ -'use strict'; - -angular.module('copayApp.services') - .factory('intelTEE', function($log, $timeout, gettext, lodash, bitcore, hwWallet, bwcService, platformInfo) { - - var root = {}; - - root.description = { - supported: platformInfo.supportsIntelTEE, - version: platformInfo.versionIntelTEE, - id: 'intelTEE', - name: 'Intel TEE', - longName: 'Intel TEE Hardware Wallet', - derivationStrategy: 'BIP44', - isEmbeddedHardware: true, - supportsTestnet: true - }; - - if (!root.description.supported) { - return root; - } - - var IntelWallet = require('intelWalletCon'); - var TEE_APP_ID = '63279de1b6cb4dcf8c206716bd318092f8c206716bd31809263279de1b6cb4dc'; - - root.walletEnclave = new IntelWallet.Wallet(); - var walletEnclaveStatus = root.walletEnclave.initializeEnclave(); - if (walletEnclaveStatus != 0) { - $log.error('Failed to create Intel Wallet enclave'); - } - - root.getInfoForNewWallet = function(isMultisig, account, networkName, callback) { - var opts = {}; - initSource(opts, function(err, opts) { - if (err) return callback(err); - - root.getEntropySource(opts.hwInfo.id, isMultisig, account, function(err, entropySource) { - if (err) return callback(err); - - opts.entropySource = entropySource; - root.getXPubKey(opts.hwInfo.id, hwWallet.getAddressPath(root.description.id, isMultisig, account, networkName), function(data) { - if (!data.success) { - $log.warn(data.message); - return callback(data); - } - opts.extendedPublicKey = data.xpubkey; - opts.externalSource = root.description.id; - opts.derivationStrategy = root.description.derivationStrategy; - - return callback(null, opts); - }); - }); - }); - }; - - root.getXPubKey = function(teeWalletId, path, callback) { - $log.debug('TEE deriving xPub path:', path); - - // Expected to be a extended public key. - var xpubkey = root.walletEnclave.getPublicKey(teeWalletId, path); - - // Error messages returned in value. - var result = { - success: false, - message: xpubkey.ExtendedPublicKey - }; - - // Success indicated by status being equal to the tee wallet id. - if (xpubkey.Status == teeWalletId) { - result.success = true; - result.message = 'OK'; - result.xpubkey = xpubkey.ExtendedPublicKey; - } else { - $log.error('Failed to get xpubkey from TEE wallet: ' + result.message); - } - - callback(result); - }; - - root.getEntropySource = function(teeWalletId, isMultisig, account, callback) { - root.getXPubKey(teeWalletId, hwWallet.getEntropyPath(root.description.id, isMultisig, account), function(data) { - if (!data.success) - return callback(hwWallet._err(data)); - - return callback(null, hwWallet.pubKeyToEntropySource(data.xpubkey)); - }); - }; - - root.showMneumonic = function(teeWalletId, cb) { - var result = root.walletEnclave.displayWordList(teeWalletId, 'en'); - if (result != teeWalletId) { - cb(result); - } else { - cb(); - } - }; - - root.showReceiveAddress = function(teeWalletId, address, cb) { - var isMultisig = false; // TODO - var account = 0; // TODO - var basePath = hwWallet.getAddressPath(root.description.id, isMultisig, account, address.network); - var keyPath = address.path.replace('m', basePath); - - var result = root.walletEnclave.displayReceiveAddress(teeWalletId, keyPath); - if (result != teeWalletId) { - cb(result); - } else { - cb(); - } - }; - - root.signTx = function(teeWalletId, txp, callback) { - var account = 0; // TODO - var isMultisig = txp.requiredSignatures > 1; - var basePath = hwWallet.getAddressPath(root.description.id, isMultisig, account, txp.network); - - var rawTx = bwcService.Client.getRawTx(txp); - var keypaths = lodash.map(lodash.pluck(txp.inputs, 'path'), function(path) { - return path.replace('m', basePath); - }); - var publicKeys = lodash.pluck(txp.inputs, 'publicKeys'); - var changePublicKeys = txp.changeAddress.publicKeys; - publicKeys.push(changePublicKeys); - - var changeaddrpath; - if (txp.changeAddress) { - changeaddrpath = txp.changeAddress.path.replace('m', basePath); - } - - var result; - if (txp.requiredSignatures == 1) { - result = root.walletEnclave.signTransaction(teeWalletId, rawTx, changeaddrpath, keypaths); - } else { - result = root.walletEnclave.signTransaction(teeWalletId, rawTx, changeaddrpath, keypaths, publicKeys, txp.requiredSignatures, changePublicKeys, txp.requiredSignatures); - } - - if (result.Status != teeWalletId) { - return callback('TEE failed to sign transction: ' + result.Status); - } - return callback(null, result); - }; - - function initSource(opts, callback) { - var args = { - "Testnet" : (opts.networkName == 'livenet'? false : true), - "PINUnlockRequired" : false, - "PINSignatureDataRequired" : false, - "PINSignatureTransaction" : 0, - "ExportCount" : 10, - "MaxPINAttempts" : 3, - "PINTimeout" : 30 - }; - - var teeStatus = root.walletEnclave.createWallet(TEE_APP_ID, args); - switch (teeStatus) { - case "CREATE WALLET FAILURE": - case "CREATE WALLET FAILED TO INITIALIZE": - case "CREATE WALLET FAILURE BAD INPUT": - case "CREATE WALLET FAILURE case SERIALIZATION": - case "DELETE_WALLET_AUTHORIZATION_UNSUCCESSFUL": - case "LOAD_WALLET_FAILTURE": - case "IMPORT WORD LIST FAILTURE": - case "IMPORT WORD LIST FAILURE BAD INPUT": - case "IMPORT WORD NOT IN DICTIONARY": - case "INVALID PIN": - case "INVALID APPLICATION ID": - case "DISPLAY WORD LIST FAILURE": - case "DELETE WALLET NO SUCH APPLICATION ID": - case "SIGN DATA FAILURE": - case "SIGN DATA INVALID HASH": - case "SIGN DATA BUFFER TOO SMALL": - case "SIGN DATA INVALID PIN": - case "RECEIVE ADDRESS INVALID INPUT": - case "RECEIVE ADDRESS NULL": - case "RECEIVE ADDRESS BUFFER TOO SMALL": - case "PUBLIC KEY BUFFER TOO SMALL": - case "LOAD WALLET FAILURE": - case "PUBLIC KEY FAILURE": - case "PUBLIC KEY FAIL TO SERIALIZE": - case "UKNOWN ERROR CODE": - $log.error(teeStatus); - return callback(teeStatus); // TODO: translate error text for display - break; - default: - opts.hwInfo = { - name: root.description.id, - id: teeStatus - }; - $log.debug('TEE wallet created: ' + opts.hwInfo.id); - return callback(null, opts); - } - }; - - return root; -}); \ No newline at end of file diff --git a/src/js/services/latestReleaseService.js b/src/js/services/latestReleaseService.js deleted file mode 100644 index 87aace87f..000000000 --- a/src/js/services/latestReleaseService.js +++ /dev/null @@ -1,63 +0,0 @@ -'use strict'; -angular.module('copayApp.services') - .factory('latestReleaseService', function latestReleaseServiceFactory($log, $http, configService) { - - var root = {}; - - root.checkLatestRelease = function(cb) { - var releaseURL = configService.getDefaults().release.url; - - requestLatestRelease(releaseURL, function(err, release) { - if (err) return cb(err); - var currentVersion = window.version; - var latestVersion = release.data.tag_name; - - if (!verifyTagFormat(currentVersion)) - return cb('Cannot verify the format of version tag: ' + currentVersion); - if (!verifyTagFormat(latestVersion)) - return cb('Cannot verify the format of latest release tag: ' + latestVersion); - - var current = formatTagNumber(currentVersion); - var latest = formatTagNumber(latestVersion); - - if (latest.major < current.major || (latest.major == current.major && latest.minor <= current.minor)) - return cb(null, false); - - $log.debug('A new version is available: ' + latestVersion); - return cb(null, true); - }); - - function verifyTagFormat(tag) { - var regex = /^v?\d+\.\d+\.\d+$/i; - return regex.exec(tag); - }; - - function formatTagNumber(tag) { - var formattedNumber = tag.replace(/^v/i, '').split('.'); - return { - major: +formattedNumber[0], - minor: +formattedNumber[1], - patch: +formattedNumber[2] - }; - }; - }; - - function requestLatestRelease(releaseURL, cb) { - $log.debug('Retrieving latest relsease information...'); - - var request = { - url: releaseURL, - method: 'GET', - json: true - }; - - $http(request).then(function(release) { - $log.debug('Latest release: ' + release.data.name); - return cb(null, release); - }, function(err) { - return cb('Cannot get the release information: ' + err); - }); - }; - - return root; - }); diff --git a/src/js/services/ledger.js b/src/js/services/ledger.js deleted file mode 100644 index abfe6c8f7..000000000 --- a/src/js/services/ledger.js +++ /dev/null @@ -1,542 +0,0 @@ -'use strict'; - -angular.module('copayApp.services') - .factory('ledger', function($log, bwcService, gettext, hwWallet, platformInfo) { - var root = {}; - var LEDGER_CHROME_ID = "kkdpmhnladdopljabkgpacgpliggeeaf"; - - root.description = { - supported: platformInfo.supportsLedger, - id: 'ledger', - name: 'Ledger', - longName: 'Ledger Hardware Wallet', - isEmbeddedHardware: false, - supportsTestnet: false - }; - - root.callbacks = {}; - root.hasSession = function() { - root._message({ - command: "has_session" - }); - } - - root.getEntropySource = function(isMultisig, account, callback) { - root.getXPubKey(hwWallet.getEntropyPath(root.description.id, isMultisig, account), function(data) { - if (!data.success) - return callback(hwWallet._err(data)); - - return callback(null, hwWallet.pubKeyToEntropySource(data.xpubkey)); - }); - }; - - root.getXPubKey = function(path, callback) { - $log.debug('Ledger deriving xPub path:', path); - root.callbacks["get_xpubkey"] = callback; - root._messageAfterSession({ - command: "get_xpubkey", - path: path - }); - }; - - root.initSource = function(opts, callback) { - // No initialization for this hardware source. - return callback(opts); - }; - - root.getInfoForNewWallet = function(isMultisig, account, networkName, callback) { - // networkName not used for this hardware (always livenet) - root.getEntropySource(isMultisig, account, function(err, entropySource) { - if (err) return callback(err); - - var opts = {}; - opts.entropySource = entropySource; - root.getXPubKey(hwWallet.getAddressPath(root.description.id, isMultisig, account), function(data) { - if (!data.success) { - $log.warn(data.message); - return callback(data); - } - opts.extendedPublicKey = data.xpubkey; - opts.externalSource = root.description.id; - - // Old ledger compat - opts.derivationStrategy = opts.account ? 'BIP48' : 'BIP44'; - return callback(null, opts); - }); - }); - }; - - root._signP2SH = function(txp, account, isMultisig, callback) { - root.callbacks["sign_p2sh"] = callback; - var redeemScripts = []; - var paths = []; - var tx = bwcService.getUtils().buildTx(txp); - for (var i = 0; i < tx.inputs.length; i++) { - redeemScripts.push(new ByteString(tx.inputs[i].redeemScript.toBuffer().toString('hex'), GP.HEX).toString()); - paths.push(hwWallet.getAddressPath(root.description.id, isMultisig, account) + txp.inputs[i].path.substring(1)); - } - var splitTransaction = root._splitTransaction(new ByteString(tx.toString(), GP.HEX)); - var inputs = []; - for (var i = 0; i < splitTransaction.inputs.length; i++) { - var input = splitTransaction.inputs[i]; - inputs.push([ - root._reverseBytestring(input.prevout.bytes(0, 32)).toString(), - root._reverseBytestring(input.prevout.bytes(32)).toString() - ]); - } - $log.debug('Ledger signing paths:', paths); - root._messageAfterSession({ - command: "sign_p2sh", - inputs: inputs, - scripts: redeemScripts, - outputs_number: splitTransaction.outputs.length, - outputs_script: splitTransaction.outputScript.toString(), - paths: paths - }); - }; - - root.signTx = function(txp, account, callback) { - - // TODO Compat - var isMultisig = true; - if (txp.addressType == 'P2PKH') { - var msg = 'P2PKH wallets are not supported with ledger'; - $log.error(msg); - return callback(msg); - } else { - root._signP2SH(txp, account, isMultisig, callback); - } - } - - root._message = function(data) { - chrome.runtime.sendMessage( - LEDGER_CHROME_ID, { - request: data - }, - function(response) { - root._callback(response); - } - ); - } - - root._messageAfterSession = function(data) { - root._after_session = data; - root._message({ - command: "launch" - }); - root._should_poll_session = true; - root._do_poll_session(); - } - - root._do_poll_session = function() { - root.hasSession(); - if (root._should_poll_session) { - setTimeout(root._do_poll_session, 500); - } - } - - root._callback = function(data) { - if (typeof data == "object") { - if (data.command == "has_session" && data.success) { - root._message(root._after_session); - root._after_session = null; - root._should_poll_session = false; - } else if (typeof root.callbacks[data.command] == "function") { - root.callbacks[data.command](data); - } else {} - } else { - root._should_poll_session = false; - Object.keys(root.callbacks).forEach(function(key) { - root.callbacks[key]({ - success: false, - message: gettext("The Ledger Chrome application is not installed"), - }); - }); - } - } - - root._splitTransaction = function(transaction) { - var result = {}; - var inputs = []; - var outputs = []; - var offset = 0; - var version = transaction.bytes(offset, 4); - offset += 4; - var varint = root._getVarint(transaction, offset); - var numberInputs = varint[0]; - offset += varint[1]; - for (var i = 0; i < numberInputs; i++) { - var input = {}; - input['prevout'] = transaction.bytes(offset, 36); - offset += 36; - varint = root._getVarint(transaction, offset); - offset += varint[1]; - input['script'] = transaction.bytes(offset, varint[0]); - offset += varint[0]; - input['sequence'] = transaction.bytes(offset, 4); - offset += 4; - inputs.push(input); - } - varint = root._getVarint(transaction, offset); - var numberOutputs = varint[0]; - offset += varint[1]; - var outputStartOffset = offset; - for (var i = 0; i < numberOutputs; i++) { - var output = {}; - output['amount'] = transaction.bytes(offset, 8); - offset += 8; - varint = root._getVarint(transaction, offset); - offset += varint[1]; - output['script'] = transaction.bytes(offset, varint[0]); - offset += varint[0]; - outputs.push(output); - } - var locktime = transaction.bytes(offset, 4); - result['version'] = version; - result['inputs'] = inputs; - result['outputs'] = outputs; - result['locktime'] = locktime; - result['outputScript'] = transaction.bytes(outputStartOffset, offset - outputStartOffset); - return result; - } - - root._getVarint = function(data, offset) { - if (data.byteAt(offset) < 0xfd) { - return [data.byteAt(offset), 1]; - } - if (data.byteAt(offset) == 0xfd) { - return [((data.byteAt(offset + 2) << 8) + data.byteAt(offset + 1)), 3]; - } - if (data.byteAt(offset) == 0xfe) { - return [((data.byteAt(offset + 4) << 24) + (data.byteAt(offset + 3) << 16) + - (data.byteAt(offset + 2) << 8) + data.byteAt(offset + 1)), 5]; - } - } - - root._reverseBytestring = function(x) { - var res = ""; - for (var i = x.length - 1; i >= 0; i--) { - res += Convert.toHexByte(x.byteAt(i)); - } - return new ByteString(res, GP.HEX); - } - - return root; - }); - -var Convert = {}; - -/** - * Convert a binary string to his hexadecimal representation - * @param {String} src binary string - * @static - * @returns {String} hexadecimal representation - */ -Convert.stringToHex = function(src) { - var r = ""; - var hexes = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"); - for (var i = 0; i < src.length; i++) { - r += hexes[src.charCodeAt(i) >> 4] + hexes[src.charCodeAt(i) & 0xf]; - } - return r; -} - -/** - * Convert an hexadecimal string to its binary representation - * @param {String} src hexadecimal string - * @static - * @return {Array} byte array - * @throws {InvalidString} if the string isn't properly formatted - */ -Convert.hexToBin = function(src) { - var result = ""; - var digits = "0123456789ABCDEF"; - if ((src.length % 2) != 0) { - throw "Invalid string"; - } - src = src.toUpperCase(); - for (var i = 0; i < src.length; i += 2) { - var x1 = digits.indexOf(src.charAt(i)); - if (x1 < 0) { - return ""; - } - var x2 = digits.indexOf(src.charAt(i + 1)); - if (x2 < 0) { - return ""; - } - result += String.fromCharCode((x1 << 4) + x2); - } - return result; -} - -/** - * Convert a double digit hexadecimal number to an integer - * @static - * @param {String} data buffer containing the digit to parse - * @param {Number} offset offset to the digit (default is 0) - * @returns {Number} converted digit - */ -Convert.readHexDigit = function(data, offset) { - var digits = '0123456789ABCDEF'; - if (typeof offset == "undefined") { - offset = 0; - } - return (digits.indexOf(data.substring(offset, offset + 1).toUpperCase()) << 4) + (digits.indexOf(data.substring(offset + 1, offset + 2).toUpperCase())); -} - -/** - * Convert a number to a two digits hexadecimal string (deprecated) - * @static - * @param {Number} number number to convert - * @returns {String} converted number - */ -Convert.toHexDigit = function(number) { - var digits = '0123456789abcdef'; - return digits.charAt(number >> 4) + digits.charAt(number & 0x0F); -} - -/** - * Convert a number to a two digits hexadecimal string (similar to toHexDigit) - * @static - * @param {Number} number number to convert - * @returns {String} converted number - */ -Convert.toHexByte = function(number) { - return Convert.toHexDigit(number); -} - -/** - * Convert a BCD number to a two digits hexadecimal string - * @static - * @param {Number} number number to convert - * @returns {String} converted number - */ -Convert.toHexByteBCD = function(numberBCD) { - var number = ((numberBCD / 10) * 16) + (numberBCD % 10); - return Convert.toHexDigit(number); -} - - -/** - * Convert a number to an hexadecimal short number - * @static - * @param {Number} number number to convert - * @returns {String} converted number - */ -Convert.toHexShort = function(number) { - return Convert.toHexDigit((number >> 8) & 0xff) + Convert.toHexDigit(number & 0xff); -} - -/** - * Convert a number to an hexadecimal int number - * @static - * @param {Number} number number to convert - * @returns {String} converted number - */ -Convert.toHexInt = function(number) { - return Convert.toHexDigit((number >> 24) & 0xff) + Convert.toHexDigit((number >> 16) & 0xff) + - Convert.toHexDigit((number >> 8) & 0xff) + Convert.toHexDigit(number & 0xff); -} - - -var GP = {}; -GP.ASCII = 1; -GP.HEX = 5; - -/** - * @class GPScript ByteString implementation - * @param {String} value initial value - * @param {HEX|ASCII} encoding encoding to use - * @property {Number} length length of the ByteString - * @constructs - */ -var ByteString = function(value, encoding) { - this.encoding = encoding; - this.hasBuffer = (typeof Buffer != 'undefined'); - if (this.hasBuffer && (value instanceof Buffer)) { - this.value = value; - this.encoding = GP.HEX; - } else { - switch (encoding) { - case GP.HEX: - if (!this.hasBuffer) { - this.value = Convert.hexToBin(value); - } else { - this.value = new Buffer(value, 'hex'); - } - break; - - case GP.ASCII: - if (!this.hasBuffer) { - this.value = value; - } else { - this.value = new Buffer(value, 'ascii'); - } - break; - - default: - throw "Invalid arguments"; - } - } - this.length = this.value.length; -} - -/** - * Retrieve the byte value at the given index - * @param {Number} index index - * @returns {Number} byte value - */ -ByteString.prototype.byteAt = function(index) { - if (arguments.length < 1) { - throw "Argument missing"; - } - if (typeof index != "number") { - throw "Invalid index"; - } - if ((index < 0) || (index >= this.value.length)) { - throw "Invalid index offset"; - } - if (!this.hasBuffer) { - return Convert.readHexDigit(Convert.stringToHex(this.value.substring(index, index + 1))); - } else { - return this.value[index]; - } -} - -/** - * Retrieve a subset of the ByteString - * @param {Number} offset offset to start at - * @param {Number} [count] size of the target ByteString (default : use the remaining length) - * @returns {ByteString} subset of the original ByteString - */ -ByteString.prototype.bytes = function(offset, count) { - var result; - if (arguments.length < 1) { - throw "Argument missing"; - } - if (typeof offset != "number") { - throw "Invalid offset"; - } - //if ((offset < 0) || (offset >= this.value.length)) { - if (offset < 0) { - throw "Invalid offset"; - } - if (typeof count == "number") { - if (count < 0) { - throw "Invalid count"; - } - if (!this.hasBuffer) { - result = new ByteString(this.value.substring(offset, offset + count), GP.ASCII); - } else { - result = new Buffer(count); - this.value.copy(result, 0, offset, offset + count); - } - } else - if (typeof count == "undefined") { - if (!this.hasBuffer) { - result = new ByteString(this.value.substring(offset), GP.ASCII); - } else { - result = new Buffer(this.value.length - offset); - this.value.copy(result, 0, offset, this.value.length); - } - } else { - throw "Invalid count"; - } - if (!this.hasBuffer) { - result.encoding = this.encoding; - return result; - } else { - return new ByteString(result, GP.HEX); - } -} - -/** - * Appends two ByteString - * @param {ByteString} target ByteString to append - * @returns {ByteString} result of the concatenation - */ -ByteString.prototype.concat = function(target) { - if (arguments.length < 1) { - throw "Not enough arguments"; - } - if (!(target instanceof ByteString)) { - throw "Invalid argument"; - } - if (!this.hasBuffer) { - var result = this.value + target.value; - var x = new ByteString(result, GP.ASCII); - x.encoding = this.encoding; - return x; - } else { - var result = Buffer.concat([this.value, target.value]); - return new ByteString(result, GP.HEX); - } -} - -/** - * Check if two ByteString are equal - * @param {ByteString} target ByteString to check against - * @returns {Boolean} true if the two ByteString are equal - */ -ByteString.prototype.equals = function(target) { - if (arguments.length < 1) { - throw "Not enough arguments"; - } - if (!(target instanceof ByteString)) { - throw "Invalid argument"; - } - if (!this.hasBuffer) { - return (this.value == target.value); - } else { - return Buffer.equals(this.value, target.value); - } -} - - -/** - * Convert the ByteString to a String using the given encoding - * @param {HEX|ASCII|UTF8|BASE64|CN} encoding encoding to use - * @return {String} converted content - */ -ByteString.prototype.toString = function(encoding) { - var targetEncoding = this.encoding; - if (arguments.length >= 1) { - if (typeof encoding != "number") { - throw "Invalid encoding"; - } - switch (encoding) { - case GP.HEX: - case GP.ASCII: - targetEncoding = encoding; - break; - - default: - throw "Unsupported arguments"; - } - targetEncoding = encoding; - } - switch (targetEncoding) { - case GP.HEX: - if (!this.hasBuffer) { - return Convert.stringToHex(this.value); - } else { - return this.value.toString('hex'); - } - case GP.ASCII: - if (!this.hasBuffer) { - return this.value; - } else { - return this.value.toString(); - } - default: - throw "Unsupported"; - } -} - -ByteString.prototype.toStringIE = function(encoding) { - return this.toString(encoding); -} - -ByteString.prototype.toBuffer = function() { - return this.value; -} diff --git a/src/js/services/localStorage.js b/src/js/services/localStorage.js deleted file mode 100644 index c772b7eef..000000000 --- a/src/js/services/localStorage.js +++ /dev/null @@ -1,109 +0,0 @@ -'use strict'; - -angular.module('copayApp.services') - .factory('localStorageService', function(platformInfo, $timeout, $log, lodash) { - var isNW = platformInfo.isNW; - var isChromeApp = platformInfo.isChromeApp; - var root = {}; - var ls = ((typeof window.localStorage !== "undefined") ? window.localStorage : null); - - if (isChromeApp && !isNW && !ls) { - $log.info('Using CHROME storage'); - ls = chrome.storage.local; - } - - - if (!ls) - throw new Error('localstorage not available'); - - root.get = function(k, cb) { - if (isChromeApp || isNW) { - chrome.storage.local.get(k, - function(data) { - //TODO check for errors - return cb(null, data[k]); - }); - } else { - return cb(null, ls.getItem(k)); - } - }; - - /** - * Same as setItem, but fails if an item already exists - */ - root.create = function(name, value, callback) { - root.get(name, - function(err, data) { - if (data) { - return callback('EEXISTS'); - } else { - return root.set(name, value, callback); - } - }); - }; - - root.set = function(k, v, cb) { - - if (lodash.isObject(v)) { - v = JSON.stringify(v); - } - if (v && !lodash.isString(v)) { - v = v.toString(); - } - - if (isChromeApp || isNW) { - var obj = {}; - - obj[k] = v; - - chrome.storage.local.set(obj, cb); - } else { - ls.setItem(k, v); - return cb(); - } - }; - - root.remove = function(k, cb) { - if (isChromeApp || isNW) { - chrome.storage.local.remove(k, cb); - } else { - ls.removeItem(k); - return cb(); - } - - }; - - - if (isNW) { - $log.info('Overwritting localstorage with chrome storage for NW.JS'); - - var ts = ls.getItem('migrationToChromeStorage'); - var p = ls.getItem('profile'); - - // Need migration? - if (!ts && p) { - $log.info('### MIGRATING DATA! TO CHROME STORAGE'); - - var j = 0; - for (var i = 0; i < localStorage.length; i++) { - var k = ls.key(i); - var v = ls.getItem(k); - - $log.debug(' Key: ' + k); - root.set(k, v, function() { - j++; - if (j == localStorage.length) { - $log.info('### MIGRATION DONE'); - ls.setItem('migrationToChromeStorage', Date.now()) - ls = chrome.storage.local; - } - }) - } - } else if (p) { - $log.info('# Data already migrated to Chrome storage on ' + ts); - } - } - - - return root; - }); diff --git a/src/js/services/logHeader.js b/src/js/services/logHeader.js deleted file mode 100644 index f8ba63d81..000000000 --- a/src/js/services/logHeader.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; -angular.module('copayApp.services') - .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/nextStepsService.js b/src/js/services/nextStepsService.js deleted file mode 100644 index 566efd7be..000000000 --- a/src/js/services/nextStepsService.js +++ /dev/null @@ -1,40 +0,0 @@ - 'use strict'; - angular.module('copayApp.services').factory('nextStepsService', function(configService, $log, lodash) { - var root = {}; - var services = []; - - root.register = function(serviceInfo) { - $log.info('Adding NextSteps entry:' + serviceInfo.name); - - if (!lodash.find(services, function(x) { - return x.name == serviceInfo.name; - })) { - services.push(serviceInfo); - } - }; - - root.unregister = function(serviceName) { - - var newS = lodash.filter(services, function(x) { - return x.name != serviceName; - }); - - // Found? - if (newS.length == services.length) return; - - $log.info('Removing NextSteps entry:' + serviceName); - // This is to preserve services pointer - while (services.length) - services.pop(); - - while (newS.length) - services.push(newS.pop()); - }; - - root.get = function() { - return services; - }; - - return root; - - }); diff --git a/src/js/services/nodeWebkitService.js b/src/js/services/nodeWebkitService.js deleted file mode 100644 index a2b836ca5..000000000 --- a/src/js/services/nodeWebkitService.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').service('nodeWebkitService', function() { - - this.readFromClipboard = function() { - var gui = require('nw.gui'); - var clipboard = gui.Clipboard.get(); - return clipboard.get(); - }; - - this.writeToClipboard = function(text) { - var gui = require('nw.gui'); - var clipboard = gui.Clipboard.get(); - return clipboard.set(text); - }; - - this.openExternalLink = function(url) { - var gui = require('nw.gui'); - return gui.Shell.openExternal(url); - }; - -}); diff --git a/src/js/services/onGoingProcess.js b/src/js/services/onGoingProcess.js deleted file mode 100644 index e0f82fc40..000000000 --- a/src/js/services/onGoingProcess.js +++ /dev/null @@ -1,104 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').factory('ongoingProcess', function($log, $timeout, $filter, lodash, $ionicLoading, gettext, platformInfo) { - var root = {}; - var isCordova = platformInfo.isCordova; - var isWindowsPhoneApp = platformInfo.isCordova && platformInfo.isWP; - - var ongoingProcess = {}; - - var processNames = { - 'broadcastingTx': gettext('Broadcasting transaction'), - 'calculatingFee': gettext('Calculating fee'), - 'connectingCoinbase': gettext('Connecting to Coinbase...'), - 'connectingGlidera': gettext('Connecting to Glidera...'), - 'connectingledger': gettext('Waiting for Ledger...'), - 'connectingtrezor': gettext('Waiting for Trezor...'), - 'creatingTx': gettext('Creating transaction'), - 'creatingWallet': gettext('Creating Wallet...'), - 'deletingWallet': gettext('Deleting Wallet...'), - 'extractingWalletInfo': gettext('Extracting Wallet information...'), - 'fetchingPayPro': gettext('Fetching payment information'), - 'generatingCSV': gettext('Generating .csv file...'), - 'gettingFeeLevels': gettext('Getting fee levels...'), - 'importingWallet': gettext('Importing Wallet...'), - 'joiningWallet': gettext('Joining Wallet...'), - 'recreating': gettext('Recreating Wallet...'), - 'rejectTx': gettext('Rejecting payment proposal'), - 'removeTx': gettext('Deleting payment proposal'), - 'retrievingInputs': gettext('Retrieving inputs information'), - 'scanning': gettext('Scanning Wallet funds...'), - 'sendingTx': gettext('Sending transaction'), - 'signingTx': gettext('Signing transaction'), - 'sweepingWallet': gettext('Sweeping Wallet...'), - 'validatingWords': gettext('Validating recovery phrase...'), - 'loadingTxInfo': gettext('Loading transaction info...'), - 'sendingFeedback': gettext('Sending feedback...'), - 'generatingNewAddress': gettext('Generating new address...'), - 'sendingByEmail': gettext('Preparing addresses...'), - 'sending2faCode': gettext('Sending 2FA code...'), - 'buyingBitcoin': gettext('Buying Bitcoin...'), - 'sellingBitcoin': gettext('Selling Bitcoin...'), - 'fetchingBitPayAccount': gettext('Fetching BitPay Account...'), - 'updatingGiftCards': 'Updating Gift Cards...', - 'updatingGiftCard': 'Updating Gift Card...', - 'cancelingGiftCard': 'Canceling Gift Card...', - 'creatingGiftCard': 'Creating Gift Card...', - 'buyingGiftCard': 'Buying Gift Card...', - 'topup': gettext('Top up in progress...') - }; - - root.clear = function() { - ongoingProcess = {}; - if (isCordova && !isWindowsPhoneApp) { - window.plugins.spinnerDialog.hide(); - } else { - $ionicLoading.hide(); - } - }; - - root.get = function(processName) { - return ongoingProcess[processName]; - }; - - root.set = function(processName, isOn, customHandler) { - $log.debug('ongoingProcess', processName, isOn); - root[processName] = isOn; - ongoingProcess[processName] = isOn; - - var name; - root.any = lodash.any(ongoingProcess, function(isOn, processName) { - if (isOn) - name = name || processName; - return isOn; - }); - // The first one - root.onGoingProcessName = name; - - var showName = $filter('translate')(processNames[name] || name); - - if (customHandler) { - customHandler(processName, showName, isOn); - } else if (root.onGoingProcessName) { - if (isCordova && !isWindowsPhoneApp) { - window.plugins.spinnerDialog.show(null, showName, root.clear); - } else { - - var tmpl; - if (isWindowsPhoneApp) tmpl = '
' + showName + '
'; - else tmpl = '
' + showName + '
'; - $ionicLoading.show({ - template: tmpl - }); - } - } else { - if (isCordova && !isWindowsPhoneApp) { - window.plugins.spinnerDialog.hide(); - } else { - $ionicLoading.hide(); - } - } - }; - - return root; -}); diff --git a/src/js/services/openURL.js b/src/js/services/openURL.js deleted file mode 100644 index 29bdb248d..000000000 --- a/src/js/services/openURL.js +++ /dev/null @@ -1,108 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').factory('openURLService', function($rootScope, $ionicHistory, $document, $log, $state, platformInfo, lodash, profileService, incomingData, appConfigService) { - var root = {}; - - var handleOpenURL = function(args) { - - $log.info('Handling Open URL: ' + JSON.stringify(args)); - // Stop it from caching the first view as one to return when the app opens - $ionicHistory.nextViewOptions({ - historyRoot: true, - disableBack: false, - disableAnimation: true - }); - - var url = args.url; - if (!url) { - $log.error('No url provided'); - return; - }; - - if (url) { - if ('cordova' in window) { - window.cordova.removeDocumentEventHandler('handleopenurl'); - window.cordova.addStickyDocumentEventHandler('handleopenurl'); - } - document.removeEventListener('handleopenurl', handleOpenURL); - } - - document.addEventListener('handleopenurl', handleOpenURL, false); - - if (!incomingData.redir(url)) { - $log.warn('Unknown URL! : ' + url); - } - }; - - var handleResume = function() { - $log.debug('Handle Resume @ openURL...'); - document.addEventListener('handleopenurl', handleOpenURL, false); - }; - - root.init = function() { - $log.debug('Initializing openURL'); - document.addEventListener('handleopenurl', handleOpenURL, false); - document.addEventListener('resume', handleResume, false); - - if (platformInfo.isChromeApp) { - $log.debug('Registering Chrome message listener'); - chrome.runtime.onMessage.addListener( - function(request, sender, sendResponse) { - if (request.url) { - handleOpenURL(request.url); - } - }); - } else if (platformInfo.isNW) { - var gui = require('nw.gui'); - - // This event is sent to an existent instance of Copay (only for standalone apps) - gui.App.on('open', function(pathData) { - if (pathData.indexOf('bitcoin:') != -1) { - $log.debug('Bitcoin URL found'); - handleOpenURL({ - url: pathData.substring(pathData.indexOf('bitcoin:')) - }); - } else if (pathData.indexOf(appConfigService.name + '://') != -1) { - $log.debug(appConfigService.name + ' URL found'); - handleOpenURL({ - url: pathData.substring(pathData.indexOf(appConfigService.name + '://')) - }); - } - }); - - // Used at the startup of Copay - var argv = gui.App.argv; - if (argv && argv[0]) { - handleOpenURL({ - url: argv[0] - }); - } - } else if (platformInfo.isDevel) { - var base = window.location.origin + '/'; - var url = base + '#/uri/%s'; - - if (navigator.registerProtocolHandler) { - $log.debug('Registering Browser handlers base:' + base); - navigator.registerProtocolHandler('bitcoin', url, 'Copay Bitcoin Handler'); - navigator.registerProtocolHandler('web+copay', url, 'Copay Wallet Handler'); - navigator.registerProtocolHandler('web+bitpay', url, 'BitPay Wallet Handler'); - } - } - }; - - root.registerHandler = function(x) { - $log.debug('Registering URL Handler: ' + x.name); - root.registeredUriHandlers.push(x); - }; - - root.handleURL = function(args) { - profileService.whenAvailable(function() { - // Wait ux to settle - setTimeout(function() { - handleOpenURL(args); - }, 1000); - }); - }; - - return root; -}); diff --git a/src/js/services/payproService.js b/src/js/services/payproService.js deleted file mode 100644 index 96ed90441..000000000 --- a/src/js/services/payproService.js +++ /dev/null @@ -1,39 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').factory('payproService', - function(profileService, platformInfo, gettextCatalog, ongoingProcess, $log) { - - var ret = {}; - - ret.getPayProDetails = function(uri, cb, disableLoader) { - if (!cb) cb = function() {}; - - var wallet = profileService.getWallets({ - onlyComplete: true - })[0]; - - if (!wallet) return cb(); - - if (platformInfo.isChromeApp) { - return cb(gettextCatalog.getString('Payment Protocol not supported on Chrome App')); - } - - $log.debug('Fetch PayPro Request...', uri); - - if (!disableLoader) ongoingProcess.set('fetchingPayPro', true); - - wallet.fetchPayPro({ - payProUrl: uri, - }, function(err, paypro) { - if (!disableLoader) ongoingProcess.set('fetchingPayPro', false); - if (err) return cb(err); - else if (!paypro.verified) { - $log.warn('Failed to verify payment protocol signatures'); - return cb(gettextCatalog.getString('Payment Protocol Invalid')); - } - return cb(null, paypro); - }); - }; - - return ret; - }); diff --git a/src/js/services/platformInfo.js b/src/js/services/platformInfo.js deleted file mode 100644 index 8396afa07..000000000 --- a/src/js/services/platformInfo.js +++ /dev/null @@ -1,70 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').factory('platformInfo', function($window) { - - var ua = navigator ? navigator.userAgent : null; - - if (!ua) { - console.log('Could not determine navigator. Using fixed string'); - ua = 'dummy user-agent'; - } - - // Fixes IOS WebKit UA - ua = ua.replace(/\(\d+\)$/, ''); - - var isNodeWebkit = function() { - var isNode = (typeof process !== "undefined" && typeof require !== "undefined"); - if (isNode) { - try { - return (typeof require('nw.gui') !== "undefined"); - } catch (e) { - return false; - } - } - }; - - var getVersionIntelTee = function() { - var v = ''; - var isWindows = navigator.platform.indexOf('Win') > -1; - - if (!isNodeWebkit() || !isWindows) { - return v; - } - - try { - var IntelWallet = require('intelWalletCon'); - if (IntelWallet.getVersion) { - v = IntelWallet.getVersion(); - } else { - v = 'Alpha'; - } - if (v.length > 0) { - $log.info('Intel TEE library ' + v); - } - } catch (e) {} - return v; - }; - - // Detect mobile devices - var ret = { - isAndroid: ionic.Platform.isAndroid(), - isIOS: ionic.Platform.isIOS(), - isWP: ionic.Platform.isWindowsPhone() || ionic.Platform.platform() == 'edge', - isSafari: Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0, - ua: ua, - isCordova: !!$window.cordova, - isNW: isNodeWebkit(), - }; - - ret.isMobile = ret.isAndroid || ret.isIOS || ret.isWP; - ret.isChromeApp = $window.chrome && chrome.runtime && chrome.runtime.id && !ret.isNW; - ret.isDevel = !ret.isMobile && !ret.isChromeApp && !ret.isNW; - - ret.supportsLedger = ret.isChromeApp; - ret.supportsTrezor = ret.isChromeApp || ret.isDevel; - - ret.versionIntelTEE = getVersionIntelTee(); - ret.supportsIntelTEE = ret.versionIntelTEE.length > 0; - - return ret; -}); diff --git a/src/js/services/popupService.js b/src/js/services/popupService.js deleted file mode 100644 index 8b4489947..000000000 --- a/src/js/services/popupService.js +++ /dev/null @@ -1,138 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').service('popupService', function($log, $ionicPopup, platformInfo, gettextCatalog) { - - var isCordova = platformInfo.isCordova; - var isWindowsPhoneApp = platformInfo.isCordova && platformInfo.isWP; - - /*************** Ionic ****************/ - - var _ionicAlert = function(title, message, cb, okText) { - if (!cb) cb = function() {}; - $ionicPopup.alert({ - title: title, - subTitle: message, - okType: 'button-clear button-positive', - okText: okText || gettextCatalog.getString('OK'), - }).then(cb); - }; - - var _ionicConfirm = function(title, message, okText, cancelText, cb) { - $ionicPopup.confirm({ - title: title, - subTitle: message, - cancelText: cancelText, - cancelType: 'button-clear button-positive', - okText: okText, - okType: 'button-clear button-positive' - }).then(function(res) { - return cb(res); - }); - }; - - var _ionicPrompt = function(title, message, opts, cb) { - opts = opts || {}; - $ionicPopup.prompt({ - title: title, - subTitle: message, - cssClass: opts.class, - template: '', - inputPlaceholder: opts.inputPlaceholder, - defaultText: opts.defaultText - }).then(function(res) { - return cb(res); - }); - }; - - /*************** Cordova ****************/ - - var _cordovaAlert = function(title, message, cb, okText) { - if (!cb) cb = function() {}; - title = title ? title : ''; - okText = okText || gettextCatalog.getString('OK'); - navigator.notification.alert(message, cb, title, okText); - }; - - var _cordovaConfirm = function(title, message, okText, cancelText, cb) { - var onConfirm = function(buttonIndex) { - if (buttonIndex == 2) return cb(true); - else return cb(false); - } - okText = okText || gettextCatalog.getString('OK'); - cancelText = cancelText || gettextCatalog.getString('Cancel'); - title = title ? title : ''; - navigator.notification.confirm(message, onConfirm, title, [cancelText, okText]); - }; - - var _cordovaPrompt = function(title, message, opts, cb) { - var onPrompt = function(results) { - if (results.buttonIndex == 1) return cb(results.input1); - else return cb(); - } - var okText = gettextCatalog.getString('OK'); - var cancelText = gettextCatalog.getString('Cancel'); - title = title ? title : ''; - navigator.notification.prompt(message, onPrompt, title, [okText, cancelText], opts.defaultText); - }; - - /** - * Show a simple alert popup - * - * @param {String} Title (optional) - * @param {String} Message - * @param {Callback} Function (optional) - */ - - this.showAlert = function(title, msg, cb, okText) { - var message = (msg && msg.message) ? msg.message : msg; - $log.warn(title ? (title + ': ' + message) : message); - - if (isCordova) - _cordovaAlert(title, message, cb, okText); - else - _ionicAlert(title, message, cb, okText); - }; - - /** - * Show a simple confirm popup - * - * @param {String} Title (optional) - * @param {String} Message - * @param {String} okText (optional) - * @param {String} cancelText (optional) - * @param {Callback} Function - * @returns {Callback} OK: true, Cancel: false - */ - - this.showConfirm = function(title, message, okText, cancelText, cb) { - $log.warn(title ? (title + ': ' + message) : message); - - if (isCordova) - _cordovaConfirm(title, message, okText, cancelText, cb); - else - _ionicConfirm(title, message, okText, cancelText, cb); - }; - - /** - * Show a simple prompt popup - * - * @param {String} Title (optional) - * @param {String} Message - * @param {Object} Object{ inputType, inputPlaceholder, defaultText } (optional) - * @param {Callback} Function - * @returns {Callback} Return the value of the input if user presses OK - */ - - this.showPrompt = function(title, message, opts, cb) { - $log.warn(title ? (title + ': ' + message) : message); - - opts = opts ||  {}; - - if (isCordova && !isWindowsPhoneApp && !opts.forceHTMLPrompt) - _cordovaPrompt(title, message, opts, cb); - else - _ionicPrompt(title, message, opts, cb); - }; - - -}); diff --git a/src/js/services/profileService.js b/src/js/services/profileService.js deleted file mode 100644 index d5598a5b8..000000000 --- a/src/js/services/profileService.js +++ /dev/null @@ -1,965 +0,0 @@ -'use strict'; -angular.module('copayApp.services') - .factory('profileService', function profileServiceFactory($rootScope, $timeout, $filter, $log, sjcl, lodash, storageService, bwcService, configService, gettextCatalog, bwcError, uxLanguage, platformInfo, txFormatService, $state) { - - - var isChromeApp = platformInfo.isChromeApp; - var isCordova = platformInfo.isCordova; - var isWindowsPhoneApp = platformInfo.isCordova && platformInfo.isWP; - var isIOS = platformInfo.isIOS; - - var root = {}; - var errors = bwcService.getErrors(); - var usePushNotifications = isCordova && !isWindowsPhoneApp; - - var UPDATE_PERIOD = 15; - - root.profile = null; - - Object.defineProperty(root, "focusedClient", { - get: function() { - throw "focusedClient is not used any more" - }, - set: function() { - throw "focusedClient is not used any more" - } - }); - - - root.wallet = {}; // decorated version of client - - root.updateWalletSettings = function(wallet) { - var defaults = configService.getDefaults(); - configService.whenAvailable(function(config) { - wallet.usingCustomBWS = config.bwsFor && config.bwsFor[wallet.id] && (config.bwsFor[wallet.id] != defaults.bws.url); - wallet.name = (config.aliasFor && config.aliasFor[wallet.id]) || wallet.credentials.walletName; - wallet.color = (config.colorFor && config.colorFor[wallet.id]); - wallet.email = config.emailFor && config.emailFor[wallet.id]; - }); - } - - root.setBackupFlag = function(walletId) { - storageService.setBackupFlag(walletId, function(err) { - if (err) $log.error(err); - $log.debug('Backup flag stored'); - root.wallet[walletId].needsBackup = false; - }); - }; - - function _requiresBackup(wallet) { - if (wallet.isPrivKeyExternal()) return false; - if (!wallet.credentials.mnemonic) return false; - if (wallet.credentials.network == 'testnet') return false; - - return true; - }; - - function _needsBackup(wallet, cb) { - if (!_requiresBackup(wallet)) - return cb(false); - - storageService.getBackupFlag(wallet.credentials.walletId, function(err, val) { - if (err) $log.error(err); - if (val) return cb(false); - return cb(true); - }); - }; - - function _balanceIsHidden(wallet, cb) { - storageService.getHideBalanceFlag(wallet.credentials.walletId, function(err, shouldHideBalance) { - if (err) $log.error(err); - var hideBalance = (shouldHideBalance == 'true') ? true : false; - return cb(hideBalance); - }); - }; - // Adds a wallet client to profileService - root.bindWalletClient = function(wallet, opts) { - var opts = opts || {}; - var walletId = wallet.credentials.walletId; - - if ((root.wallet[walletId] && root.wallet[walletId].started) && !opts.force) { - return false; - } - - // INIT WALLET VIEWMODEL - wallet.id = walletId; - wallet.started = true; - wallet.doNotVerifyPayPro = isChromeApp; - wallet.network = wallet.credentials.network; - wallet.copayerId = wallet.credentials.copayerId; - wallet.m = wallet.credentials.m; - wallet.n = wallet.credentials.n; - - root.updateWalletSettings(wallet); - root.wallet[walletId] = wallet; - - _needsBackup(wallet, function(val) { - wallet.needsBackup = val; - }); - - _balanceIsHidden(wallet, function(val) { - wallet.balanceHidden = val; - }); - - wallet.removeAllListeners(); - - wallet.on('report', function(n) { - $log.info('BWC Report:' + n); - }); - - wallet.on('notification', function(n) { - - $log.debug('BWC Notification:', n); - - if (n.type == "NewBlock" && n.data.network == "testnet") { - throttledBwsEvent(n, wallet); - } else newBwsEvent(n, wallet); - }); - - wallet.on('walletCompleted', function() { - $log.debug('Wallet completed'); - - root.updateCredentials(JSON.parse(wallet.export()), function() { - $rootScope.$emit('Local/WalletCompleted', walletId); - }); - }); - - wallet.initialize({ - notificationIncludeOwn: true, - }, function(err) { - if (err) { - $log.error('Could not init notifications err:', err); - return; - } - wallet.setNotificationsInterval(UPDATE_PERIOD); - wallet.openWallet(function(err) { - if (wallet.status !== true) - $log.debug('Wallet + ' + walletId + ' status:' + wallet.status) - }); - }); - - $rootScope.$on('Local/SettingsUpdated', function(e, walletId) { - if (!walletId || walletId == wallet.id) { - $log.debug('Updating settings for wallet:' + wallet.id); - root.updateWalletSettings(wallet); - } - }); - - return true; - }; - - var throttledBwsEvent = lodash.throttle(function(n, wallet) { - newBwsEvent(n, wallet); - }, 10000); - - var newBwsEvent = function(n, wallet) { - if (wallet.cachedStatus) - wallet.cachedStatus.isValid = false; - - if (wallet.completeHistory) - wallet.completeHistory.isValid = false; - - if (wallet.cachedActivity) - wallet.cachedActivity.isValid = false; - - if (wallet.cachedTxps) - wallet.cachedTxps.isValid = false; - - $rootScope.$emit('bwsEvent', wallet.id, n.type, n); - }; - - var validationLock = false; - - root.runValidation = function(client, delay, retryDelay) { - - delay = delay || 500; - retryDelay = retryDelay || 50; - - if (validationLock) { - return $timeout(function() { - $log.debug('ValidatingWallet Locked: Retrying in: ' + retryDelay); - return root.runValidation(client, delay, retryDelay); - }, retryDelay); - } - validationLock = true; - - // IOS devices are already checked - var skipDeviceValidation = isIOS || root.profile.isDeviceChecked(platformInfo.ua); - var walletId = client.credentials.walletId; - - $log.debug('ValidatingWallet: ' + walletId + ' skip Device:' + skipDeviceValidation); - $timeout(function() { - client.validateKeyDerivation({ - skipDeviceValidation: skipDeviceValidation, - }, function(err, isOK) { - validationLock = false; - - $log.debug('ValidatingWallet End: ' + walletId + ' isOK:' + isOK); - if (isOK) { - root.profile.setChecked(platformInfo.ua, walletId); - } else { - $log.warn('Key Derivation failed for wallet:' + walletId); - storageService.clearLastAddress(walletId, function() {}); - } - - root.storeProfileIfDirty(); - }); - }, delay); - }; - - var shouldSkipValidation = function(walletId) { - return root.profile.isChecked(platformInfo.ua, walletId) || isIOS || isWindowsPhoneApp; - } - // Used when reading wallets from the profile - root.bindWallet = function(credentials, cb) { - if (!credentials.walletId || !credentials.m) - return cb('bindWallet should receive credentials JSON'); - - // Create the client - var getBWSURL = function(walletId) { - var config = configService.getSync(); - var defaults = configService.getDefaults(); - return ((config.bwsFor && config.bwsFor[walletId]) || defaults.bws.url); - }; - - - var client = bwcService.getClient(JSON.stringify(credentials), { - bwsurl: getBWSURL(credentials.walletId), - }); - - var skipKeyValidation = shouldSkipValidation(credentials.walletId); - if (!skipKeyValidation) - root.runValidation(client, 500); - - $log.info('Binding wallet:' + credentials.walletId + ' Validating?:' + !skipKeyValidation); - return cb(null, root.bindWalletClient(client)); - }; - - root.bindProfile = function(profile, cb) { - root.profile = profile; - - configService.get(function(err) { - $log.debug('Preferences read'); - if (err) return cb(err); - - function bindWallets(cb) { - var l = root.profile.credentials.length; - var i = 0, - totalBound = 0; - - if (!l) return cb(); - - lodash.each(root.profile.credentials, function(credentials) { - root.bindWallet(credentials, function(err, bound) { - i++; - totalBound += bound; - if (i == l) { - $log.info('Bound ' + totalBound + ' out of ' + l + ' wallets'); - return cb(); - } - }); - }); - } - - bindWallets(function() { - root.isBound = true; - - lodash.each(root._queue, function(x) { - $timeout(function() { - return x(); - }, 1); - }); - root._queue = []; - - - - root.isDisclaimerAccepted(function(val) { - if (!val) { - return cb(new Error('NONAGREEDDISCLAIMER: Non agreed disclaimer')); - } - return cb(); - }); - }); - }); - }; - - root._queue = []; - root.whenAvailable = function(cb) { - if (!root.isBound) { - root._queue.push(cb); - return; - } - return cb(); - }; - - root.loadAndBindProfile = function(cb) { - storageService.getProfile(function(err, profile) { - if (err) { - $rootScope.$emit('Local/DeviceError', err); - return cb(err); - } - if (!profile) { - // Migration?? - storageService.tryToMigrate(function(err, migratedProfile) { - if (err) return cb(err); - if (!migratedProfile) - return cb(new Error('NOPROFILE: No profile')); - - profile = migratedProfile; - return root.bindProfile(profile, cb); - }) - } else { - $log.debug('Profile read'); - return root.bindProfile(profile, cb); - } - }); - }; - - var seedWallet = function(opts, cb) { - opts = opts || {}; - var walletClient = bwcService.getClient(null, opts); - var network = opts.networkName || 'livenet'; - - if (opts.mnemonic) { - try { - opts.mnemonic = root._normalizeMnemonic(opts.mnemonic); - walletClient.seedFromMnemonic(opts.mnemonic, { - network: network, - passphrase: opts.passphrase, - account: opts.account || 0, - derivationStrategy: opts.derivationStrategy || 'BIP44', - }); - - } catch (ex) { - $log.info(ex); - return cb(gettextCatalog.getString('Could not create: Invalid wallet recovery phrase')); - } - } else if (opts.extendedPrivateKey) { - try { - walletClient.seedFromExtendedPrivateKey(opts.extendedPrivateKey); - } catch (ex) { - $log.warn(ex); - return cb(gettextCatalog.getString('Could not create using the specified extended private key')); - } - } else if (opts.extendedPublicKey) { - try { - walletClient.seedFromExtendedPublicKey(opts.extendedPublicKey, opts.externalSource, opts.entropySource, { - account: opts.account || 0, - derivationStrategy: opts.derivationStrategy || 'BIP44', - }); - walletClient.credentials.hwInfo = opts.hwInfo; - } catch (ex) { - $log.warn("Creating wallet from Extended Public Key Arg:", ex, opts); - return cb(gettextCatalog.getString('Could not create using the specified extended public key')); - } - } else { - var lang = uxLanguage.getCurrentLanguage(); - try { - walletClient.seedFromRandomWithMnemonic({ - network: network, - passphrase: opts.passphrase, - language: lang, - account: 0, - }); - } catch (e) { - $log.info('Error creating recovery phrase: ' + e.message); - if (e.message.indexOf('language') > 0) { - $log.info('Using default language for recovery phrase'); - walletClient.seedFromRandomWithMnemonic({ - network: network, - passphrase: opts.passphrase, - account: 0, - }); - } else { - return cb(e); - } - } - } - return cb(null, walletClient); - }; - - // Creates a wallet on BWC/BWS - var doCreateWallet = function(opts, cb) { - $log.debug('Creating Wallet:', opts); - $timeout(function() { - seedWallet(opts, function(err, walletClient) { - if (err) return cb(err); - - var name = opts.name || gettextCatalog.getString('Personal Wallet'); - var myName = opts.myName || gettextCatalog.getString('me'); - - walletClient.createWallet(name, myName, opts.m, opts.n, { - network: opts.networkName, - singleAddress: opts.singleAddress, - walletPrivKey: opts.walletPrivKey, - }, function(err, secret) { - if (err) return bwcError.cb(err, gettextCatalog.getString('Error creating wallet'), cb); - return cb(null, walletClient, secret); - }); - }); - }, 50); - }; - - // create and store a wallet - root.createWallet = function(opts, cb) { - doCreateWallet(opts, function(err, walletClient, secret) { - if (err) return cb(err); - - addAndBindWalletClient(walletClient, { - bwsurl: opts.bwsurl - }, cb); - }); - }; - - // joins and stores a wallet - root.joinWallet = function(opts, cb) { - var walletClient = bwcService.getClient(); - $log.debug('Joining Wallet:', opts); - - try { - var walletData = bwcService.parseSecret(opts.secret); - - // check if exist - if (lodash.find(root.profile.credentials, { - 'walletId': walletData.walletId - })) { - return cb(gettextCatalog.getString('Cannot join the same wallet more that once')); - } - } catch (ex) { - $log.debug(ex); - return cb(gettextCatalog.getString('Bad wallet invitation')); - } - opts.networkName = walletData.network; - $log.debug('Joining Wallet:', opts); - - seedWallet(opts, function(err, walletClient) { - if (err) return cb(err); - - walletClient.joinWallet(opts.secret, opts.myName || 'me', {}, function(err) { - if (err) return bwcError.cb(err, gettextCatalog.getString('Could not join wallet'), cb); - addAndBindWalletClient(walletClient, { - bwsurl: opts.bwsurl - }, cb); - }); - }); - }; - - root.getWallet = function(walletId) { - return root.wallet[walletId]; - }; - - - root.deleteWalletClient = function(client, cb) { - var walletId = client.credentials.walletId; - - var config = configService.getSync(); - - $log.debug('Deleting Wallet:', client.credentials.walletName); - client.removeAllListeners(); - - root.profile.deleteWallet(walletId); - - delete root.wallet[walletId]; - - storageService.removeAllWalletData(walletId, function(err) { - if (err) $log.warn(err); - }); - - storageService.storeProfile(root.profile, function(err) { - if (err) return cb(err); - return cb(); - }); - }; - - root.setMetaData = function(walletClient, addressBook, cb) { - storageService.getAddressbook(walletClient.credentials.network, function(err, localAddressBook) { - var localAddressBook1 = {}; - try { - localAddressBook1 = JSON.parse(localAddressBook); - } catch (ex) { - $log.warn(ex); - } - var mergeAddressBook = lodash.merge(addressBook, localAddressBook1); - storageService.setAddressbook(walletClient.credentials.network, JSON.stringify(addressBook), function(err) { - if (err) return cb(err); - return cb(null); - }); - }); - } - - // Adds and bind a new client to the profile - var addAndBindWalletClient = function(client, opts, cb) { - if (!client || !client.credentials) - return cb(gettextCatalog.getString('Could not access wallet')); - - var walletId = client.credentials.walletId - - if (!root.profile.addWallet(JSON.parse(client.export()))) - return cb(gettextCatalog.getString('Wallet already in Copay')); - - - var skipKeyValidation = shouldSkipValidation(walletId); - if (!skipKeyValidation) - root.runValidation(client); - - root.bindWalletClient(client); - - var saveBwsUrl = function(cb) { - var defaults = configService.getDefaults(); - var bwsFor = {}; - bwsFor[walletId] = opts.bwsurl || defaults.bws.url; - - // Dont save the default - if (bwsFor[walletId] == defaults.bws.url) - return cb(); - - configService.set({ - bwsFor: bwsFor, - }, function(err) { - if (err) $log.warn(err); - return cb(); - }); - }; - - saveBwsUrl(function() { - storageService.storeProfile(root.profile, function(err) { - return cb(err, client); - }); - }); - }; - - root.storeProfileIfDirty = function(cb) { - if (root.profile.dirty) { - storageService.storeProfile(root.profile, function(err) { - $log.debug('Saved modified Profile'); - if (cb) return cb(err); - }); - } else { - if (cb) return cb(); - }; - }; - - root.importWallet = function(str, opts, cb) { - - var walletClient = bwcService.getClient(null, opts); - - $log.debug('Importing Wallet:', opts); - - try { - var c = JSON.parse(str); - - if (c.xPrivKey && c.xPrivKeyEncrypted) { - $log.warn('Found both encrypted and decrypted key. Deleting the encrypted version'); - delete c.xPrivKeyEncrypted; - delete c.mnemonicEncrypted; - } - - str = JSON.stringify(c); - - walletClient.import(str, { - compressed: opts.compressed, - password: opts.password - }); - } catch (err) { - return cb(gettextCatalog.getString('Could not import. Check input file and spending password')); - } - - str = JSON.parse(str); - - if (!str.n) { - return cb("Backup format not recognized. If you are using a Copay Beta backup and version is older than 0.10, please see: https://github.com/bitpay/copay/issues/4730#issuecomment-244522614"); - } - - var addressBook = str.addressBook || {}; - - addAndBindWalletClient(walletClient, { - bwsurl: opts.bwsurl - }, function(err, walletId) { - if (err) return cb(err); - root.setMetaData(walletClient, addressBook, function(error) { - if (error) $log.warn(error); - return cb(err, walletClient); - }); - }); - }; - - root.importExtendedPrivateKey = function(xPrivKey, opts, cb) { - var walletClient = bwcService.getClient(null, opts); - $log.debug('Importing Wallet xPrivKey'); - - walletClient.importFromExtendedPrivateKey(xPrivKey, opts, function(err) { - if (err) { - if (err instanceof errors.NOT_AUTHORIZED) - return cb(err); - - return bwcError.cb(err, gettextCatalog.getString('Could not import'), cb); - } - - addAndBindWalletClient(walletClient, { - bwsurl: opts.bwsurl - }, cb); - }); - }; - - root._normalizeMnemonic = function(words) { - if (!words || !words.indexOf) return words; - var isJA = words.indexOf('\u3000') > -1; - var wordList = words.split(/[\u3000\s]+/); - - return wordList.join(isJA ? '\u3000' : ' '); - }; - - root.importMnemonic = function(words, opts, cb) { - var walletClient = bwcService.getClient(null, opts); - - $log.debug('Importing Wallet Mnemonic'); - - words = root._normalizeMnemonic(words); - walletClient.importFromMnemonic(words, { - network: opts.networkName, - passphrase: opts.passphrase, - entropySourcePath: opts.entropySourcePath, - derivationStrategy: opts.derivationStrategy || 'BIP44', - account: opts.account || 0, - }, function(err) { - if (err) { - if (err instanceof errors.NOT_AUTHORIZED) - return cb(err); - - return bwcError.cb(err, gettextCatalog.getString('Could not import'), cb); - } - - addAndBindWalletClient(walletClient, { - bwsurl: opts.bwsurl - }, cb); - }); - }; - - root.importExtendedPublicKey = function(opts, cb) { - var walletClient = bwcService.getClient(null, opts); - $log.debug('Importing Wallet XPubKey'); - - walletClient.importFromExtendedPublicKey(opts.extendedPublicKey, opts.externalSource, opts.entropySource, { - account: opts.account || 0, - derivationStrategy: opts.derivationStrategy || 'BIP44', - }, function(err) { - if (err) { - - // in HW wallets, req key is always the same. They can't addAccess. - if (err instanceof errors.NOT_AUTHORIZED) - err.name = 'WALLET_DOES_NOT_EXIST'; - - return bwcError.cb(err, gettextCatalog.getString('Could not import'), cb); - } - - addAndBindWalletClient(walletClient, { - bwsurl: opts.bwsurl - }, cb); - }); - }; - - root.createProfile = function(cb) { - $log.info('Creating profile'); - var defaults = configService.getDefaults(); - - configService.get(function(err) { - if (err) $log.debug(err); - - var p = Profile.create(); - storageService.storeNewProfile(p, function(err) { - if (err) return cb(err); - root.bindProfile(p, function(err) { - // ignore NONAGREEDDISCLAIMER - if (err && err.toString().match('NONAGREEDDISCLAIMER')) return cb(); - return cb(err); - }); - }); - }); - }; - - root.createDefaultWallet = function(cb) { - var opts = {}; - opts.m = 1; - opts.n = 1; - opts.networkName = 'livenet'; - root.createWallet(opts, cb); - }; - - root.setDisclaimerAccepted = function(cb) { - root.profile.disclaimerAccepted = true; - storageService.storeProfile(root.profile, function(err) { - return cb(err); - }); - }; - - root.isDisclaimerAccepted = function(cb) { - var disclaimerAccepted = root.profile && root.profile.disclaimerAccepted; - if (disclaimerAccepted) - return cb(true); - - // OLD flag - storageService.getCopayDisclaimerFlag(function(err, val) { - if (val) { - root.profile.disclaimerAccepted = true; - return cb(true); - } else { - return cb(); - } - }); - }; - - root.updateCredentials = function(credentials, cb) { - root.profile.updateWallet(credentials); - storageService.storeProfile(root.profile, cb); - }; - - root.getLastKnownBalance = function(wid, cb) { - storageService.getBalanceCache(wid, cb); - }; - - root.addLastKnownBalance = function(wallet, cb) { - var now = Math.floor(Date.now() / 1000); - var showRange = 600; // 10min; - - root.getLastKnownBalance(wallet.id, function(err, data) { - if (data) { - data = JSON.parse(data); - wallet.cachedBalance = data.balance; - wallet.cachedBalanceUpdatedOn = (data.updatedOn < now - showRange) ? data.updatedOn : null; - } - return cb(); - }); - }; - - root.setLastKnownBalance = function(wid, balance, cb) { - storageService.setBalanceCache(wid, { - balance: balance, - updatedOn: Math.floor(Date.now() / 1000), - }, cb); - }; - - root.getWallets = function(opts) { - - if (opts && !lodash.isObject(opts)) - throw "bad argument"; - - opts = opts || {}; - - var ret = lodash.values(root.wallet); - - if (opts.network) { - ret = lodash.filter(ret, function(x) { - return (x.credentials.network == opts.network); - }); - } - - if (opts.n) { - ret = lodash.filter(ret, function(w) { - return (w.credentials.n == opts.n); - }); - } - - if (opts.m) { - ret = lodash.filter(ret, function(w) { - return (w.credentials.m == opts.m); - }); - } - - if (opts.hasFunds) { - ret = lodash.filter(ret, function(w) { - return (w.status.availableBalanceSat > 0); - }); - } - - if (opts.minAmount) { - ret = lodash.filter(ret, function(w) { - return (w.status.availableBalanceSat > opts.minAmount); - }); - } - - if (opts.onlyComplete) { - ret = lodash.filter(ret, function(w) { - return w.isComplete(); - }); - } else {} - - // Add cached balance async - lodash.each(ret, function(x) { - root.addLastKnownBalance(x, function() {}); - }); - - - return lodash.sortBy(ret, [ - - function(x) { - return x.isComplete(); - }, 'createdOn' - ]); - }; - - root.toggleHideBalanceFlag = function(walletId, cb) { - root.wallet[walletId].balanceHidden = !root.wallet[walletId].balanceHidden; - storageService.setHideBalanceFlag(walletId, root.wallet[walletId].balanceHidden.toString(), cb); - }; - - root.getNotifications = function(opts, cb) { - opts = opts || {}; - - var TIME_STAMP = 60 * 60 * 6; - var MAX = 30; - - var typeFilter = { - 'NewOutgoingTx': 1, - 'NewIncomingTx': 1 - }; - - var w = root.getWallets(); - if (lodash.isEmpty(w)) return cb(); - - var l = w.length, - j = 0, - notifications = []; - - - function isActivityCached(wallet) { - return wallet.cachedActivity && wallet.cachedActivity.isValid; - }; - - - function updateNotifications(wallet, cb2) { - if (isActivityCached(wallet) && !opts.force) return cb2(); - - wallet.getNotifications({ - timeSpan: TIME_STAMP, - includeOwn: true, - }, function(err, n) { - if (err) return cb2(err); - - wallet.cachedActivity = { - n: n.slice(-MAX), - isValid: true, - }; - - return cb2(); - }); - }; - - function process(notifications) { - if (!notifications) return []; - - var shown = lodash.sortBy(notifications, 'createdOn').reverse(); - - shown = shown.splice(0, opts.limit || MAX); - - lodash.each(shown, function(x) { - x.txpId = x.data ? x.data.txProposalId : null; - x.txid = x.data ? x.data.txid : null; - x.types = [x.type]; - - if (x.data && x.data.amount) - x.amountStr = txFormatService.formatAmountStr(x.data.amount); - - x.action = function() { - // TODO? - // $state.go('tabs.wallet', { - // walletId: x.walletId, - // txpId: x.txpId, - // txid: x.txid, - // }); - }; - }); - - var finale = shown; // GROUPING DISABLED! - - var finale = [], - prev; - - - // Item grouping... DISABLED. - - // REMOVE (if we want 1-to-1 notification) ???? - lodash.each(shown, function(x) { - if (prev && prev.walletId === x.walletId && prev.txpId && prev.txpId === x.txpId && prev.creatorId && prev.creatorId === x.creatorId) { - prev.types.push(x.type); - prev.data = lodash.assign(prev.data, x.data); - prev.txid = prev.txid || x.txid; - prev.amountStr = prev.amountStr || x.amountStr; - prev.creatorName = prev.creatorName || x.creatorName; - } else { - finale.push(x); - prev = x; - } - }); - - var u = bwcService.getUtils(); - lodash.each(finale, function(x) { - if (x.data && x.data.message && x.wallet && x.wallet.credentials.sharedEncryptingKey) { - // TODO TODO TODO => BWC - x.message = u.decryptMessage(x.data.message, x.wallet.credentials.sharedEncryptingKey); - } - }); - - return finale; - }; - - lodash.each(w, function(wallet) { - updateNotifications(wallet, function(err) { - j++; - if (err) { - $log.warn('Error updating notifications:' + err); - } else { - - var n; - - n = lodash.filter(wallet.cachedActivity.n, function(x) { - return typeFilter[x.type]; - }); - - var idToName = {}; - if (wallet.cachedStatus) { - lodash.each(wallet.cachedStatus.wallet.copayers, function(c) { - idToName[c.id] = c.name; - }); - } - - lodash.each(n, function(x) { - x.wallet = wallet; - if (x.creatorId && wallet.cachedStatus) { - x.creatorName = idToName[x.creatorId]; - }; - }); - - notifications.push(n); - } - if (j == l) { - notifications = lodash.sortBy(notifications, 'createdOn'); - notifications = lodash.compact(lodash.flatten(notifications)).slice(0, MAX); - var total = notifications.length; - return cb(null, process(notifications), total); - }; - }); - }); - }; - - - root.getTxps = function(opts, cb) { - var MAX = 100; - opts = opts || {}; - - var w = root.getWallets(); - if (lodash.isEmpty(w)) return cb(); - - var txps = []; - - lodash.each(w, function(x) { - if (x.pendingTxps) - txps = txps.concat(x.pendingTxps); - }); - var n = txps.length; - txps = lodash.sortBy(txps, 'pendingForUs', 'createdOn'); - txps = lodash.compact(lodash.flatten(txps)).slice(0, opts.limit || MAX); - return cb(null, txps, n); - }; - - return root; - }); diff --git a/src/js/services/pushNotificationsService.js b/src/js/services/pushNotificationsService.js deleted file mode 100644 index 5627dea31..000000000 --- a/src/js/services/pushNotificationsService.js +++ /dev/null @@ -1,138 +0,0 @@ -'use strict'; -angular.module('copayApp.services').factory('pushNotificationsService', function pushNotificationsService($log, $state, $ionicHistory, sjcl, platformInfo, lodash, appConfigService, profileService, configService) { - var root = {}; - var isIOS = platformInfo.isIOS; - var isAndroid = platformInfo.isAndroid; - var usePushNotifications = platformInfo.isCordova && !platformInfo.isWP; - - var _token = null; - - root.init = function() { - if (!usePushNotifications || _token) return; - configService.whenAvailable(function(config) { - if (!config.pushNotificationsEnabled) return; - - $log.debug('Starting push notification registration...'); - - //Keep in mind the function will return null if the token has not been established yet. - FCMPlugin.getToken(function(token) { - $log.debug('Get token for push notifications: ' + token); - _token = token; - root.enable(); - }); - }); - }; - - root.updateSubscription = function(walletClient) { - if (!_token) { - $log.warn('Push notifications disabled for this device. Nothing to do here.'); - return; - } - _subscribe(walletClient); - }; - - root.enable = function() { - if (!_token) { - $log.warn('No token available for this device. Cannot set push notifications. Needs registration.'); - return; - } - - var wallets = profileService.getWallets(); - lodash.forEach(wallets, function(walletClient) { - _subscribe(walletClient); - }); - }; - - root.disable = function() { - if (!_token) { - $log.warn('No token available for this device. Cannot disable push notifications.'); - return; - } - - var wallets = profileService.getWallets(); - lodash.forEach(wallets, function(walletClient) { - _unsubscribe(walletClient); - }); - _token = null; - }; - - root.unsubscribe = function(walletClient) { - if (!_token) return; - _unsubscribe(walletClient); - }; - - var _subscribe = function(walletClient) { - var opts = { - token : _token, - platform: isIOS ? 'ios' : isAndroid ? 'android' : null, - packageName : appConfigService.packageNameId - }; - walletClient.pushNotificationsSubscribe(opts, function(err) { - if (err) $log.error(walletClient.name + ': Subscription Push Notifications error. ', JSON.stringify(err)); - else $log.debug(walletClient.name + ': Subscription Push Notifications success.'); - }); - }; - - var _unsubscribe = function(walletClient, cb) { - walletClient.pushNotificationsUnsubscribe(_token, function(err) { - if (err) $log.error(walletClient.name + ': Unsubscription Push Notifications error. ', JSON.stringify(err)); - else $log.debug(walletClient.name + ': Unsubscription Push Notifications Success.'); - }); - }; - - var _openWallet = function(walletIdHashed) { - var wallets = profileService.getWallets(); - var wallet = lodash.find(wallets, function(w) { - return (lodash.isEqual(walletIdHashed, sjcl.codec.hex.fromBits(sjcl.hash.sha256.hash(w.id)))); - }); - - if (!wallet) return; - - if (!wallet.isComplete()) { - return $state.go('tabs.copayers', { - walletId: wallet.id - }); - } - - $state.go('tabs.wallet', { - walletId: wallet.id - }); - }; - - if (usePushNotifications) { - - FCMPlugin.onTokenRefresh(function(token) { - if (!_token) return; - $log.debug('Refresh and update token for push notifications...'); - _token = token; - root.enable(); - }); - - FCMPlugin.onNotification(function(data) { - if (!_token) return; - $log.debug('New Event Push onNotification: ' + JSON.stringify(data)); - if(data.wasTapped) { - // Notification was received on device tray and tapped by the user. - var walletIdHashed = data.walletId; - if (!walletIdHashed) return; - $ionicHistory.nextViewOptions({ - disableAnimate: true, - historyRoot: true - }); - $ionicHistory.clearHistory(); - $state.go('tabs.home', {}, { - 'reload': true, - 'notify': $state.current.name == 'tabs.home' ? false : true - }).then(function() { - _openWallet(walletIdHashed); - }); - } else { - // TODO - // Notification was received in foreground. Maybe the user needs to be notified. - } - }); - } - - return root; - -}); diff --git a/src/js/services/rateService.js b/src/js/services/rateService.js deleted file mode 100644 index 9cbfe2821..000000000 --- a/src/js/services/rateService.js +++ /dev/null @@ -1,144 +0,0 @@ -'use strict'; - -//var util = require('util'); -//var _ = require('lodash'); -//var log = require('../util/log'); -//var preconditions = require('preconditions').singleton(); -//var request = require('request'); - -/* - This class lets interfaces with BitPay's exchange rate API. -*/ - -var RateService = function(opts) { - var self = this; - - opts = opts || {}; - self.httprequest = opts.httprequest; // || request; - self.lodash = opts.lodash; - - self.SAT_TO_BTC = 1 / 1e8; - self.BTC_TO_SAT = 1e8; - self.UNAVAILABLE_ERROR = 'Service is not available - check for service.isAvailable() or use service.whenAvailable()'; - self.UNSUPPORTED_CURRENCY_ERROR = 'Currency not supported'; - - self._isAvailable = false; - self._rates = {}; - self._alternatives = []; - self._queued = []; - - self._fetchCurrencies(); -}; - - -var _instance; -RateService.singleton = function(opts) { - if (!_instance) { - _instance = new RateService(opts); - } - return _instance; -}; - -RateService.prototype._fetchCurrencies = function() { - var self = this; - - var backoffSeconds = 5; - var updateFrequencySeconds = 5 * 60; - var rateServiceUrl = 'https://bitpay.com/api/rates'; - - var retrieve = function() { - //log.info('Fetching exchange rates'); - self.httprequest.get(rateServiceUrl).success(function(res) { - self.lodash.each(res, function(currency) { - self._rates[currency.code] = currency.rate; - self._alternatives.push({ - name: currency.name, - isoCode: currency.code, - rate: currency.rate - }); - }); - self._isAvailable = true; - self.lodash.each(self._queued, function(callback) { - setTimeout(callback, 1); - }); - setTimeout(retrieve, updateFrequencySeconds * 1000); - }).error(function(err) { - //log.debug('Error fetching exchange rates', err); - setTimeout(function() { - backoffSeconds *= 1.5; - retrieve(); - }, backoffSeconds * 1000); - return; - }); - - }; - - retrieve(); -}; - -RateService.prototype.getRate = function(code) { - return this._rates[code]; -}; - -RateService.prototype.getAlternatives = function() { - return this._alternatives; -}; - -RateService.prototype.isAvailable = function() { - return this._isAvailable; -}; - -RateService.prototype.whenAvailable = function(callback) { - if (this.isAvailable()) { - setTimeout(callback, 1); - } else { - this._queued.push(callback); - } -}; - -RateService.prototype.toFiat = function(satoshis, code) { - if (!this.isAvailable()) { - return null; - } - - return satoshis * this.SAT_TO_BTC * this.getRate(code); -}; - -RateService.prototype.fromFiat = function(amount, code) { - if (!this.isAvailable()) { - return null; - } - return amount / this.getRate(code) * this.BTC_TO_SAT; -}; - -RateService.prototype.listAlternatives = function(sort) { - var self = this; - if (!this.isAvailable()) { - return []; - } - - var alternatives = self.lodash.map(this.getAlternatives(), function(item) { - return { - name: item.name, - isoCode: item.isoCode - } - }); - if (sort) { - alternatives.sort(function(a, b) { - return a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1; - }); - } - return self.lodash.uniq(alternatives, 'isoCode'); -}; - -angular.module('copayApp.services').factory('rateService', function($http, lodash) { - // var cfg = _.extend(config.rates, { - // httprequest: $http - // }); - - var cfg = { - httprequest: $http, - lodash: lodash - }; - return RateService.singleton(cfg); -}); diff --git a/src/js/services/scannerService.js b/src/js/services/scannerService.js deleted file mode 100644 index ddf62895d..000000000 --- a/src/js/services/scannerService.js +++ /dev/null @@ -1,277 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').service('scannerService', function($log, $timeout, platformInfo, $rootScope, $window) { - - var isDesktop = !platformInfo.isCordova; - var QRScanner = $window.QRScanner; - var lightEnabled = false; - var backCamera = true; // the plugin defaults to the back camera - - // Initalize known capabilities - // Assume camera is available. If init fails, we'll set this to false. - var isAvailable = true; - var hasPermission = false; - var isDenied = false; - var isRestricted = false; - var canEnableLight = false; - var canChangeCamera = false; - var canOpenSettings = false; - - function _checkCapabilities(status) { - $log.debug('scannerService is reviewing platform capabilities...'); - // Permission can be assumed on the desktop builds - hasPermission = (isDesktop || status.authorized) ? true : false; - isDenied = status.denied ? true : false; - isRestricted = status.restricted ? true : false; - canEnableLight = status.canEnableLight ? true : false; - canChangeCamera = status.canChangeCamera ? true : false; - canOpenSettings = status.canOpenSettings ? true : false; - _logCapabilities(); - } - - function _logCapabilities() { - function _orIsNot(bool) { - return bool ? '' : 'not '; - } - $log.debug('A camera is ' + _orIsNot(isAvailable) + 'available to this app.'); - var access = 'not authorized'; - if (hasPermission) access = 'authorized'; - if (isDenied) access = 'denied'; - if (isRestricted) access = 'restricted'; - $log.debug('Camera access is ' + access + '.'); - $log.debug('Support for opening device settings is ' + _orIsNot(canOpenSettings) + 'available on this platform.'); - $log.debug('A light is ' + _orIsNot(canEnableLight) + 'available on this platform.'); - $log.debug('A second camera is ' + _orIsNot(canChangeCamera) + 'available on this platform.'); - } - - /** - * Immediately return known capabilities of the current platform. - */ - this.getCapabilities = function() { - return { - isAvailable: isAvailable, - hasPermission: hasPermission, - isDenied: isDenied, - isRestricted: isRestricted, - canEnableLight: canEnableLight, - canChangeCamera: canChangeCamera, - canOpenSettings: canOpenSettings - }; - }; - - var initializeStarted = false; - /** - * If camera access has been granted, pre-initialize the QRScanner. This method - * can be safely called before the scanner is visible to improve perceived - * scanner loading times. - * - * The `status` of QRScanner is returned to the callback. - */ - this.gentleInitialize = function(callback) { - if (initializeStarted && !isDesktop) { - QRScanner.getStatus(function(status) { - _completeInitialization(status, callback); - }); - return; - } - initializeStarted = true; - $log.debug('Trying to pre-initialize QRScanner.'); - if (!isDesktop) { - QRScanner.getStatus(function(status) { - _checkCapabilities(status); - if (status.authorized) { - $log.debug('Camera permission already granted.'); - initialize(callback); - } else { - $log.debug('QRScanner not authorized, waiting to initalize.'); - _completeInitialization(status, callback); - } - }); - } else { - $log.debug('To avoid flashing the privacy light, we do not pre-initialize the camera on desktop.'); - } - }; - - function initialize(callback) { - $log.debug('Initializing scanner...'); - QRScanner.prepare(function(err, status) { - if (err) { - isAvailable = false; - $log.error(err); - // does not return `status` if there is an error - QRScanner.getStatus(function(status) { - _completeInitialization(status, callback); - }); - } else { - _completeInitialization(status, callback); - } - }); - } - this.initialize = initialize; - - // This could be much cleaner with a Promise API - // (needs a polyfill for some platforms) - var initializeCompleted = false; - - function _completeInitialization(status, callback) { - _checkCapabilities(status); - initializeCompleted = true; - $rootScope.$emit('scannerServiceInitialized'); - if (typeof callback === "function") { - callback(status); - } - } - this.isInitialized = function() { - return initializeCompleted; - }; - this.initializeStarted = function() { - return initializeStarted; - }; - - var nextHide = null; - var nextDestroy = null; - var hideAfterSeconds = 5; - var destroyAfterSeconds = 60; - - /** - * (Re)activate the QRScanner, and cancel the timeouts if present. - * - * The `status` of QRScanner is passed to the callback when activation - * is complete. - */ - this.activate = function(callback) { - $log.debug('Activating scanner...'); - QRScanner.show(function(status) { - initializeCompleted = true; - _checkCapabilities(status); - if (typeof callback === "function") { - callback(status); - } - }); - if (nextHide !== null) { - $timeout.cancel(nextHide); - nextHide = null; - } - if (nextDestroy !== null) { - $timeout.cancel(nextDestroy); - nextDestroy = null; - } - }; - - /** - * Start a new scan. - * - * The callback receives: (err, contents) - */ - this.scan = function(callback) { - $log.debug('Scanning...'); - QRScanner.scan(callback); - }; - - this.pausePreview = function() { - QRScanner.pausePreview(); - }; - - this.resumePreview = function() { - QRScanner.resumePreview(); - }; - - /** - * Deactivate the QRScanner. To balance user-perceived performance and power - * consumption, this kicks off a countdown which will "sleep" the scanner - * after a certain amount of time. - * - * The `status` of QRScanner is passed to the callback when deactivation - * is complete. - */ - this.deactivate = function(callback) { - $log.debug('Deactivating scanner...'); - QRScanner.cancelScan(); - nextHide = $timeout(_hide, hideAfterSeconds * 1000); - nextDestroy = $timeout(_destroy, destroyAfterSeconds * 1000); - }; - - // Natively hide the QRScanner's preview - // On mobile platforms, this can reduce GPU/power usage - // On desktop, this fully turns off the camera (and any associated privacy lights) - function _hide() { - $log.debug('Scanner not in use for ' + hideAfterSeconds + ' seconds, hiding...'); - QRScanner.hide(); - } - - // Reduce QRScanner power/processing consumption by the maximum amount - function _destroy() { - $log.debug('Scanner not in use for ' + destroyAfterSeconds + ' seconds, destroying...'); - QRScanner.destroy(); - } - - this.reinitialize = function(callback) { - initializeCompleted = false; - QRScanner.destroy(); - initialize(callback); - }; - - /** - * Toggle the device light (if available). - * - * The callback receives a boolean which is `true` if the light is enabled. - */ - this.toggleLight = function(callback) { - $log.debug('Toggling light...'); - if (lightEnabled) { - QRScanner.disableLight(_handleResponse); - } else { - QRScanner.enableLight(_handleResponse); - } - - function _handleResponse(err, status) { - if (err) { - $log.error(err); - } else { - lightEnabled = status.lightEnabled; - var state = lightEnabled ? 'enabled' : 'disabled'; - $log.debug('Light ' + state + '.'); - } - callback(lightEnabled); - } - }; - - /** - * Switch cameras (if a second camera is available). - * - * The `status` of QRScanner is passed to the callback when activation - * is complete. - */ - this.toggleCamera = function(callback) { - var nextCamera = backCamera ? 1 : 0; - - function cameraToString(index) { - return index === 1 ? 'front' : 'back'; // front = 1, back = 0 - } - $log.debug('Toggling to the ' + cameraToString(nextCamera) + ' camera...'); - QRScanner.useCamera(nextCamera, function(err, status) { - if (err) { - $log.error(err); - } - backCamera = status.currentCamera === 1 ? false : true; - $log.debug('Camera toggled. Now using the ' + cameraToString(backCamera) + ' camera.'); - callback(status); - }); - }; - - this.openSettings = function() { - $log.debug('Attempting to open device settings...'); - QRScanner.openSettings(); - }; - - this.useOldScanner = function(callback) { - cordova.plugins.barcodeScanner.scan( - function(result) { - callback(null, result.text); - }, - function(error) { - callback(error); - } - ); - } -}); diff --git a/src/js/services/sendMax.js b/src/js/services/sendMax.js deleted file mode 100644 index a9c238a1e..000000000 --- a/src/js/services/sendMax.js +++ /dev/null @@ -1,36 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').service('sendMaxService', function(feeService, configService, walletService) { - - /** - * Get sendMaxInfo - * - * @param {Obj} Wallet - * @param {Callback} Function (optional) - * - */ - this.getInfo = function(wallet, cb) { - feeService.getCurrentFeeRate(wallet.credentials.network, function(err, feePerKb) { - if (err) return cb(err); - - var config = configService.getSync().wallet; - - walletService.getSendMaxInfo(wallet, { - feePerKb: feePerKb, - excludeUnconfirmedUtxos: !config.spendUnconfirmed, - returnInputs: true, - }, function(err, resp) { - if (err) return cb(err); - - return cb(null, { - sendMax: true, - amount: resp.amount, - inputs: resp.inputs, - fee: resp.fee, - feePerKb: feePerKb, - }); - }); - }); - }; - -}); diff --git a/src/js/services/sjcl.js b/src/js/services/sjcl.js deleted file mode 100644 index 8f6acad91..000000000 --- a/src/js/services/sjcl.js +++ /dev/null @@ -1,7 +0,0 @@ - -'use strict'; -angular.module('copayApp.services') - .factory('sjcl', function bitcoreFactory(bwcService) { - var sjcl = bwcService.getSJCL(); - return sjcl; - }); diff --git a/src/js/services/startupService.js b/src/js/services/startupService.js deleted file mode 100644 index 557d51997..000000000 --- a/src/js/services/startupService.js +++ /dev/null @@ -1,28 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').service('startupService', function($log, $timeout) { - - var splashscreenVisible = true; - var statusBarVisible = false; - - function _hideSplash(){ - if(typeof navigator.splashscreen !== "undefined" && splashscreenVisible){ - $log.debug('startupService is hiding the splashscreen...'); - $timeout(function(){ - navigator.splashscreen.hide(); - }, 20); - splashscreenVisible = false; - } - } - function _showStatusBar(){ - if(typeof StatusBar !== "undefined" && !statusBarVisible){ - $log.debug('startupService is showing the StatusBar...'); - StatusBar.show(); - statusBarVisible = true; - } - } - this.ready = function() { - _showStatusBar(); - _hideSplash(); - }; -}); diff --git a/src/js/services/storageService.js b/src/js/services/storageService.js deleted file mode 100644 index 5391569fd..000000000 --- a/src/js/services/storageService.js +++ /dev/null @@ -1,614 +0,0 @@ -'use strict'; -angular.module('copayApp.services') - .factory('storageService', function(logHeader, fileStorageService, localStorageService, sjcl, $log, lodash, platformInfo, $timeout) { - - var root = {}; - var storage; - - // File storage is not supported for writing according to - // https://github.com/apache/cordova-plugin-file/#supported-platforms - var shouldUseFileStorage = platformInfo.isCordova && !platformInfo.isWP; - - if (shouldUseFileStorage) { - $log.debug('Using: FileStorage'); - storage = fileStorageService; - } else { - $log.debug('Using: LocalStorage'); - storage = localStorageService; - } - - var getUUID = function(cb) { - // TO SIMULATE MOBILE - //return cb('hola'); - if (!window || !window.plugins || !window.plugins.uniqueDeviceID) - return cb(null); - - window.plugins.uniqueDeviceID.get( - function(uuid) { - return cb(uuid); - }, cb); - }; - - // This is only used in Copay, we used to encrypt profile - // using device's UUID. - - var decryptOnMobile = function(text, cb) { - var json; - try { - json = JSON.parse(text); - } catch (e) { - $log.warn('Could not open profile:' + text); - - var i = text.lastIndexOf('}{'); - if (i > 0) { - text = text.substr(i + 1); - $log.warn('trying last part only:' + text); - try { - json = JSON.parse(text); - $log.warn('Worked... saving.'); - storage.set('profile', text, function() {}); - } catch (e) { - $log.warn('Could not open profile (2nd try):' + e); - }; - }; - - }; - - if (!json) return cb('Could not access storage') - - if (!json.iter || !json.ct) { - $log.debug('Profile is not encrypted'); - return cb(null, text); - } - - $log.debug('Profile is encrypted'); - getUUID(function(uuid) { - $log.debug('Device UUID:' + uuid); - if (!uuid) - return cb('Could not decrypt storage: could not get device ID'); - - try { - text = sjcl.decrypt(uuid, text); - - $log.info('Migrating to unencrypted profile'); - return storage.set('profile', text, function(err) { - return cb(err, text); - }); - } catch (e) { - $log.warn('Decrypt error: ', e); - return cb('Could not decrypt storage: device ID mismatch'); - }; - return cb(null, text); - }); - }; - - // This is only use in Copay, for very old instalations - // in which we use to use localStorage instead of fileStorage - root.tryToMigrate = function(cb) { - if (!shouldUseFileStorage) return cb(); - - localStorageService.get('profile', function(err, str) { - if (err) return cb(err); - if (!str) return cb(); - - $log.info('Starting Migration profile to File storage...'); - - fileStorageService.create('profile', str, function(err) { - if (err) cb(err); - $log.info('Profile Migrated successfully'); - - localStorageService.get('config', function(err, c) { - if (err) return cb(err); - if (!c) return root.getProfile(cb); - - fileStorageService.create('config', c, function(err) { - - if (err) { - $log.info('Error migrating config: ignoring', err); - return root.getProfile(cb); - } - $log.info('Config Migrated successfully'); - return root.getProfile(cb); - }); - }); - }); - }); - }; - - root.storeNewProfile = function(profile, cb) { - storage.create('profile', profile.toObj(), cb); - }; - - root.storeProfile = function(profile, cb) { - storage.set('profile', profile.toObj(), cb); - }; - - root.getProfile = function(cb) { - storage.get('profile', function(err, str) { - if (err || !str) - return cb(err); - - decryptOnMobile(str, function(err, str) { - if (err) return cb(err); - var p, err; - try { - p = Profile.fromString(str); - } catch (e) { - $log.debug('Could not read profile:', e); - err = new Error('Could not read profile:' + p); - } - return cb(err, p); - }); - }); - }; - - root.deleteProfile = function(cb) { - storage.remove('profile', cb); - }; - - root.setFeedbackInfo = function(feedbackValues, cb) { - storage.set('feedback', feedbackValues, cb); - }; - - root.getFeedbackInfo = function(cb) { - storage.get('feedback', cb); - }; - - root.storeFocusedWalletId = function(id, cb) { - storage.set('focusedWalletId', id || '', cb); - }; - - root.getFocusedWalletId = function(cb) { - storage.get('focusedWalletId', cb); - }; - - root.getLastAddress = function(walletId, cb) { - storage.get('lastAddress-' + walletId, cb); - }; - - root.storeLastAddress = function(walletId, address, cb) { - storage.set('lastAddress-' + walletId, address, cb); - }; - - root.clearLastAddress = function(walletId, cb) { - storage.remove('lastAddress-' + walletId, cb); - }; - - root.setBackupFlag = function(walletId, cb) { - storage.set('backup-' + walletId, Date.now(), cb); - }; - - root.getBackupFlag = function(walletId, cb) { - storage.get('backup-' + walletId, cb); - }; - - root.clearBackupFlag = function(walletId, cb) { - storage.remove('backup-' + walletId, cb); - }; - - root.setCleanAndScanAddresses = function(walletId, cb) { - storage.set('CleanAndScanAddresses', walletId, cb); - }; - - root.getCleanAndScanAddresses = function(cb) { - storage.get('CleanAndScanAddresses', cb); - }; - - root.removeCleanAndScanAddresses = function(cb) { - storage.remove('CleanAndScanAddresses', cb); - }; - - root.getConfig = function(cb) { - storage.get('config', cb); - }; - - root.storeConfig = function(val, cb) { - $log.debug('Storing Preferences', val); - storage.set('config', val, cb); - }; - - root.clearConfig = function(cb) { - storage.remove('config', cb); - }; - - root.getHomeTipAccepted = function(cb) { - storage.get('homeTip', cb); - }; - - root.setHomeTipAccepted = function(val, cb) { - storage.set('homeTip', val, cb); - }; - - root.setHideBalanceFlag = function(walletId, val, cb) { - storage.set('hideBalance-' + walletId, val, cb); - }; - - root.getHideBalanceFlag = function(walletId, cb) { - storage.get('hideBalance-' + walletId, cb); - }; - - //for compatibility - root.getCopayDisclaimerFlag = function(cb) { - storage.get('agreeDisclaimer', cb); - }; - - root.setRemotePrefsStoredFlag = function(cb) { - storage.set('remotePrefStored', true, cb); - }; - - root.getRemotePrefsStoredFlag = function(cb) { - storage.get('remotePrefStored', cb); - }; - - root.setGlideraToken = function(network, token, cb) { - storage.set('glideraToken-' + network, token, cb); - }; - - root.getGlideraToken = function(network, cb) { - storage.get('glideraToken-' + network, cb); - }; - - root.removeGlideraToken = function(network, cb) { - storage.remove('glideraToken-' + network, cb); - }; - - root.setGlideraPermissions = function(network, p, cb) { - storage.set('glideraPermissions-' + network, p, cb); - }; - - root.getGlideraPermissions = function(network, cb) { - storage.get('glideraPermissions-' + network, cb); - }; - - root.removeGlideraPermissions = function(network, cb) { - storage.remove('glideraPermissions-' + network, cb); - }; - - root.setGlideraStatus = function(network, status, cb) { - storage.set('glideraStatus-' + network, status, cb); - }; - - root.getGlideraStatus = function(network, cb) { - storage.get('glideraStatus-' + network, cb); - }; - - root.removeGlideraStatus = function(network, cb) { - storage.remove('glideraStatus-' + network, cb); - }; - - root.setGlideraTxs = function(network, txs, cb) { - storage.set('glideraTxs-' + network, txs, cb); - }; - - root.getGlideraTxs = function(network, cb) { - storage.get('glideraTxs-' + network, cb); - }; - - root.removeGlideraTxs = function(network, cb) { - storage.remove('glideraTxs-' + network, cb); - }; - - root.setCoinbaseRefreshToken = function(network, token, cb) { - storage.set('coinbaseRefreshToken-' + network, token, cb); - }; - - root.getCoinbaseRefreshToken = function(network, cb) { - storage.get('coinbaseRefreshToken-' + network, cb); - }; - - root.removeCoinbaseRefreshToken = function(network, cb) { - storage.remove('coinbaseRefreshToken-' + network, cb); - }; - - root.setCoinbaseToken = function(network, token, cb) { - storage.set('coinbaseToken-' + network, token, cb); - }; - - root.getCoinbaseToken = function(network, cb) { - storage.get('coinbaseToken-' + network, cb); - }; - - root.removeCoinbaseToken = function(network, cb) { - storage.remove('coinbaseToken-' + network, cb); - }; - - root.setAddressbook = function(network, addressbook, cb) { - storage.set('addressbook-' + network, addressbook, cb); - }; - - root.getAddressbook = function(network, cb) { - storage.get('addressbook-' + network, cb); - }; - - root.removeAddressbook = function(network, cb) { - storage.remove('addressbook-' + network, cb); - }; - - root.setLastCurrencyUsed = function(lastCurrencyUsed, cb) { - storage.set('lastCurrencyUsed', lastCurrencyUsed, cb) - }; - - root.getLastCurrencyUsed = function(cb) { - storage.get('lastCurrencyUsed', cb) - }; - - root.checkQuota = function() { - var block = ''; - // 50MB - for (var i = 0; i < 1024 * 1024; ++i) { - block += '12345678901234567890123456789012345678901234567890'; - } - storage.set('test', block, function(err) { - $log.error('CheckQuota Return:' + err); - }); - }; - - root.setTxHistory = function(txs, walletId, cb) { - try { - storage.set('txsHistory-' + walletId, txs, cb); - } catch (e) { - $log.error('Error saving tx History. Size:' + txs.length); - $log.error(e); - return cb(e); - } - } - - root.getTxHistory = function(walletId, cb) { - storage.get('txsHistory-' + walletId, cb); - } - - root.removeTxHistory = function(walletId, cb) { - storage.remove('txsHistory-' + walletId, cb); - } - - root.setCoinbaseTxs = function(network, ctx, cb) { - storage.set('coinbaseTxs-' + network, ctx, cb); - }; - - root.getCoinbaseTxs = function(network, cb) { - storage.get('coinbaseTxs-' + network, cb); - }; - - root.removeCoinbaseTxs = function(network, cb) { - storage.remove('coinbaseTxs-' + network, cb); - }; - - root.setBalanceCache = function(cardId, data, cb) { - storage.set('balanceCache-' + cardId, data, cb); - }; - - root.getBalanceCache = function(cardId, cb) { - storage.get('balanceCache-' + cardId, cb); - }; - - root.removeBalanceCache = function(cardId, cb) { - storage.remove('balanceCache-' + cardId, cb); - }; - - // cards: [ - // eid: card id - // id: card id - // lastFourDigits: card number - // token: card token - // ] - root.setBitpayDebitCards = function(network, email, cards, cb) { - root.getBitpayAccounts(network, function(err, allAccounts) { - if (err) return cb(err); - - if (!allAccounts[email]) { - return cb('Cannot set cards for unknown account ' + email); - } - - allAccounts[email].cards = cards; - storage.set('bitpayAccounts-v2-' + network, allAccounts, cb); - }); - }; - - // cb(err, cards) - // cards: [ - // eid: card id - // id: card id - // lastFourDigits: card number - // token: card token - // email: account email - // ] - root.getBitpayDebitCards = function(network, cb) { - root.getBitpayAccounts(network, function(err, allAccounts) { - if (err) return cb(err); - - var allCards = []; - - lodash.each(allAccounts, function(account, email) { - - if (account.cards) { - // Add account's email to each card - var cards = lodash.clone(account.cards); - lodash.each(cards, function(x) { - x.email = email; - }); - - allCards = allCards.concat(cards); - } - }); - - return cb(null, allCards); - }); - }; - - root.removeBitpayDebitCard = function(network, cardEid, cb) { - root.getBitpayAccounts(network, function(err, allAccounts) { - - lodash.each(allAccounts, function(account) { - account.cards = lodash.reject(account.cards, { - 'eid': cardEid - }); - }); - - storage.set('bitpayAccounts-v2-' + network, allAccounts, cb); - }); - }; - - // cb(err, accounts) - // accounts: { - // email_1: { - // token: account token - // cards: { - // - // } - // } - // ... - // email_n: { - // token: account token - // cards: { - // - // } - // } - // } - // - root.getBitpayAccounts = function(network, cb) { - storage.get('bitpayAccounts-v2-' + network, function(err, allAccountsStr) { - if (err) return cb(err); - - if (!allAccountsStr) - return cb(null, {}); - - var allAccounts = {}; - try { - allAccounts = JSON.parse(allAccountsStr); - } catch (e) { - $log.error('Bad storage value for bitpayAccount-v2' + allAccountsStr) - return cb(null, {}); - }; - - var anyMigration; - - lodash.each(allAccounts, function(account, email) { - - // Migrate old `'bitpayApi-' + network` key, if exists - if (!account.token && account['bitpayApi-' + network].token) { - - $log.info('Migrating all bitpayApi-network branch'); - account.token = account['bitpayApi-' + network].token; - account.cards = lodash.clone(account['bitpayApi-' + network].cards); - if (!account.cards) { - account.cards = lodash.clone(account['bitpayDebitCards-' + network]); - } - - delete account['bitpayDebitCards-' + network]; - delete account['bitpayApi-' + network]; - anyMigration = true; - - } - }); - - if (anyMigration) { - storage.set('bitpayAccounts-v2-' + network, allAccounts, function() { - return cb(err, allAccounts); - }); - } else - return cb(err, allAccounts); - - }); - }; - - // data: { - // email: account email - // token: account token - // familyName: account family (last) name - // givenName: account given (first) name - // } - root.setBitpayAccount = function(network, data, cb) { - if (!lodash.isObject(data) || !data.email || !data.token) - return cb('No account to set'); - - root.getBitpayAccounts(network, function(err, allAccounts) { - if (err) return cb(err); - - allAccounts = allAccounts || {}; - var account = allAccounts[data.email] || {}; - account.token = data.token; - account.familyName = data.familyName; - account.givenName = data.givenName; - - allAccounts[data.email] = account; - - $log.info('Storing BitPay accounts with new account:' + data.email); - storage.set('bitpayAccounts-v2-' + network, allAccounts, cb); - }); - }; - - // account: { - // email: account email - // apiContext: the context needed for making future api calls - // cards: an array of cards - // } - root.removeBitpayAccount = function(network, account, cb) { - if (lodash.isString(account)) { - account = JSON.parse(account); - } - account = account || {}; - if (lodash.isEmpty(account)) return cb('No account to remove'); - storage.get('bitpayAccounts-v2-' + network, function(err, bitpayAccounts) { - if (err) cb(err); - if (lodash.isString(bitpayAccounts)) { - bitpayAccounts = JSON.parse(bitpayAccounts); - } - bitpayAccounts = bitpayAccounts || {}; - delete bitpayAccounts[account.email]; - storage.set('bitpayAccounts-v2-' + network, JSON.stringify(bitpayAccounts), cb); - }); - }; - - root.setAppIdentity = function(network, data, cb) { - storage.set('appIdentity-' + network, data, cb); - }; - - root.getAppIdentity = function(network, cb) { - storage.get('appIdentity-' + network, function(err, data) { - if (err) return cb(err); - cb(err, JSON.parse(data || '{}')); - }); - }; - - root.removeAppIdentity = function(network, cb) { - storage.remove('appIdentity-' + network, cb); - }; - - root.removeAllWalletData = function(walletId, cb) { - root.clearLastAddress(walletId, function(err) { - if (err) return cb(err); - root.removeTxHistory(walletId, function(err) { - if (err) return cb(err); - root.clearBackupFlag(walletId, function(err) { - return cb(err); - }); - }); - }); - }; - - root.setAmazonGiftCards = function(network, gcs, cb) { - storage.set('amazonGiftCards-' + network, gcs, cb); - }; - - root.getAmazonGiftCards = function(network, cb) { - storage.get('amazonGiftCards-' + network, cb); - }; - - root.removeAmazonGiftCards = function(network, cb) { - storage.remove('amazonGiftCards-' + network, cb); - }; - - root.setTxConfirmNotification = function(txid, val, cb) { - storage.set('txConfirmNotif-' + txid, val, cb); - }; - - root.getTxConfirmNotification = function(txid, cb) { - storage.get('txConfirmNotif-' + txid, cb); - }; - - root.removeTxConfirmNotification = function(txid, cb) { - storage.remove('txConfirmNotif-' + txid, cb); - }; - - return root; - }); diff --git a/src/js/services/timeService.js b/src/js/services/timeService.js deleted file mode 100644 index 23f0b348e..000000000 --- a/src/js/services/timeService.js +++ /dev/null @@ -1,30 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').factory('timeService', function() { - var root = {}; - - root.withinSameMonth = function(time1, time2) { - if (!time1 || !time2) return false; - var date1 = new Date(time1); - var date2 = new Date(time2); - return root.getMonthYear(date1) === root.getMonthYear(date2); - } - - root.withinPastDay = function(time) { - var now = new Date(); - var date = new Date(time); - return (now.getTime() - date.getTime()) < (1000 * 60 * 60 * 24); - }; - - root.isDateInCurrentMonth = function(date) { - var now = new Date(); - return root.getMonthYear(now) === root.getMonthYear(date); - }; - - root.getMonthYear = function(date) { - return date.getMonth() + date.getFullYear(); - } - - return root; - -}); diff --git a/src/js/services/trezor.js b/src/js/services/trezor.js deleted file mode 100644 index 3d40d88d1..000000000 --- a/src/js/services/trezor.js +++ /dev/null @@ -1,256 +0,0 @@ -'use strict'; - -angular.module('copayApp.services') - .factory('trezor', function($log, $timeout, lodash, bitcore, hwWallet, platformInfo) { - var root = {}; - - var SETTLE_TIME = 3000; - root.callbacks = {}; - - root.description = { - supported: platformInfo.supportsTrezor, - id: 'trezor', - name: 'Trezor', - longName: 'Trezor Hardware Wallet', - derivationStrategy: 'BIP48', - isEmbeddedHardware: false, - supportsTestnet: false - }; - - root.getEntropySource = function(isMultisig, account, callback) { - root.getXPubKey(hwWallet.getEntropyPath(root.description.id, isMultisig, account), function(data) { - if (!data.success) - return callback(hwWallet._err(data)); - - return callback(null, hwWallet.pubKeyToEntropySource(data.xpubkey)); - }); - }; - - - root.getXPubKey = function(path, callback) { - $log.debug('TREZOR deriving xPub path:', path); - try { - TrezorConnect.getXPubKey(path, callback); - } catch (e) { - callback('Error connecting Trezor'); - } - }; - - root.initSource = function(opts, callback) { - // No initialization for this hardware source. - return callback(opts); - }; - - root.getInfoForNewWallet = function(isMultisig, account, networkName, callback) { - // networkName not used for this hardware (always livenet) - var opts = {}; - root.getEntropySource(isMultisig, account, function(err, data) { - if (err) return callback(err); - opts.entropySource = data; - $log.debug('Waiting TREZOR to settle...'); - $timeout(function() { - - root.getXPubKey(hwWallet.getAddressPath(root.description.id, isMultisig, account), function(data) { - if (!data.success) - return callback(hwWallet._err(data)); - - opts.extendedPublicKey = data.xpubkey; - opts.externalSource = root.description.id; - - if (isMultisig) - opts.derivationStrategy = 'BIP48'; - - return callback(null, opts); - }); - }, SETTLE_TIME); - }); - }; - - root._orderPubKeys = function(xPub, np) { - var xPubKeys = lodash.clone(xPub); - var path = lodash.clone(np); - path.unshift('m'); - path = path.join('/'); - - var keys = lodash.map(xPubKeys, function(x) { - var pub = (new bitcore.HDPublicKey(x)).derive(path).publicKey; - return { - xpub: x, - pub: pub.toString('hex'), - }; - }); - - var sorted = lodash.sortBy(keys, function(x) { - return x.pub; - }); - - return lodash.pluck(sorted, 'xpub'); - }; - - root.signTx = function(xPubKeys, txp, account, callback) { - - var inputs = [], - outputs = []; - var tmpOutputs = []; - - if (txp.type && txp.type != 'simple') { - return callback('Only TXPs type SIMPLE are supported in TREZOR'); - } else if (txp.outputs) { - if (txp.outputs.length > 1) - return callback('Only single output TXPs are supported in TREZOR'); - } else { - return callback('Unknown TXP at TREZOR'); - } - - if (txp.outputs) { - - if (!txp.toAddress) - txp.toAddress = txp.outputs[0].toAddress; - - if (!txp.amount) - txp.amount = txp.outputs[0].amount; - } - - if (!txp.toAddress || !txp.amount) - return callback('No address or amount at TREZOR signing'); - - - var toScriptType = 'PAYTOADDRESS'; - if (txp.toAddress.charAt(0) == '2' || txp.toAddress.charAt(0) == '3') - toScriptType = 'PAYTOSCRIPTHASH'; - - - // Add to - tmpOutputs.push({ - address: txp.toAddress, - amount: txp.amount, - script_type: toScriptType, - }); - - - - if (txp.addressType == 'P2PKH') { - - $log.debug("Trezor signing uni-sig p2pkh. Account:", account); - - var inAmount = 0; - inputs = lodash.map(txp.inputs, function(i) { - $log.debug("Trezor TX input path:", i.path); - var pathArr = i.path.split('/'); - var n = [hwWallet.UNISIG_ROOTPATH | 0x80000000, 0 | 0x80000000, account | 0x80000000, parseInt(pathArr[1]), parseInt(pathArr[2])]; - inAmount += i.satoshis; - return { - address_n: n, - prev_index: i.vout, - prev_hash: i.txid, - }; - }); - - var change = inAmount - txp.fee - txp.amount; - if (change > 0) { - $log.debug("Trezor TX change path:", txp.changeAddress.path); - var pathArr = txp.changeAddress.path.split('/'); - var n = [hwWallet.UNISIG_ROOTPATH | 0x80000000, 0 | 0x80000000, account | 0x80000000, parseInt(pathArr[1]), parseInt(pathArr[2])]; - - tmpOutputs.push({ - address_n: n, - amount: change, - script_type: 'PAYTOADDRESS' - }); - } - - } else { - - // P2SH Wallet, multisig wallet - var inAmount = 0; - $log.debug("Trezor signing multi-sig p2sh. Account:", account); - - var sigs = xPubKeys.map(function(v) { - return ''; - }); - - inputs = lodash.map(txp.inputs, function(i) { - $log.debug("Trezor TX input path:", i.path); - var pathArr = i.path.split('/'); - var n = [hwWallet.MULTISIG_ROOTPATH | 0x80000000, 0 | 0x80000000, account | 0x80000000, parseInt(pathArr[1]), parseInt(pathArr[2])]; - var np = n.slice(3); - - inAmount += i.satoshis; - - var orderedPubKeys = root._orderPubKeys(xPubKeys, np); - var pubkeys = orderedPubKeys.map(function(v) { - return { - node: v, - address_n: np, - }; - }); - - return { - address_n: n, - prev_index: i.vout, - prev_hash: i.txid, - script_type: 'SPENDMULTISIG', - multisig: { - pubkeys: pubkeys, - signatures: sigs, - m: txp.requiredSignatures, - } - }; - }); - - var change = inAmount - txp.fee - txp.amount; - if (change > 0) { - $log.debug("Trezor TX change path:", txp.changeAddress.path); - var pathArr = txp.changeAddress.path.split('/'); - var n = [hwWallet.MULTISIG_ROOTPATH | 0x80000000, 0 | 0x80000000, account | 0x80000000, parseInt(pathArr[1]), parseInt(pathArr[2])]; - var np = n.slice(3); - - var orderedPubKeys = root._orderPubKeys(xPubKeys, np); - var pubkeys = orderedPubKeys.map(function(v) { - return { - node: v, - address_n: np, - }; - }); - - tmpOutputs.push({ - address_n: n, - amount: change, - script_type: 'PAYTOMULTISIG', - multisig: { - pubkeys: pubkeys, - signatures: sigs, - m: txp.requiredSignatures, - } - }); - } - } - - // Shuffle outputs for improved privacy - if (tmpOutputs.length > 1) { - outputs = new Array(tmpOutputs.length); - lodash.each(txp.outputOrder, function(order) { - outputs[order] = tmpOutputs.shift(); - }); - - if (tmpOutputs.length) - return cb("Error creating transaction: tmpOutput order"); - } else { - outputs = tmpOutputs; - } - - // Prevents: Uncaught DataCloneError: Failed to execute 'postMessage' on 'Window': An object could not be cloned. - inputs = JSON.parse(JSON.stringify(inputs)); - outputs = JSON.parse(JSON.stringify(outputs)); - - $log.debug('Signing with TREZOR', inputs, outputs); - TrezorConnect.signTx(inputs, outputs, function(res) { - if (!res.success) - return callback(hwWallet._err(res)); - - callback(null, res); - }); - }; - - return root; - }); diff --git a/src/js/services/txConfirmNotification.js b/src/js/services/txConfirmNotification.js deleted file mode 100644 index 70800ae97..000000000 --- a/src/js/services/txConfirmNotification.js +++ /dev/null @@ -1,32 +0,0 @@ -'use strict'; -angular.module('copayApp.services').factory('txConfirmNotification', function txConfirmNotification($log, storageService) { - var root = {}; - - root.checkIfEnabled = function(txid, cb) { - storageService.getTxConfirmNotification(txid, function(err, res) { - if (err) $log.error(err); - return cb(!!res); - }); - }; - - root.subscribe = function(client, opts) { - client.txConfirmationSubscribe(opts, function(err, res) { - if (err) $log.error(err); - storageService.setTxConfirmNotification(opts.txid, true, function(err) { - if (err) $log.error(err); - }); - }); - }; - - root.unsubscribe = function(client, txId) { - client.txConfirmationUnsubscribe(txId, function(err, res) { - if (err) $log.error(err); - storageService.removeTxConfirmNotification(txId, function(err) { - if (err) $log.error(err); - }); - }); - }; - - return root; - -}); diff --git a/src/js/services/txFormatService.js b/src/js/services/txFormatService.js deleted file mode 100644 index 0df46fe86..000000000 --- a/src/js/services/txFormatService.js +++ /dev/null @@ -1,227 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').factory('txFormatService', function($filter, bwcService, rateService, configService, lodash) { - var root = {}; - - root.Utils = bwcService.getUtils(); - - - root.formatAmount = function(satoshis, fullPrecision) { - var config = configService.getSync().wallet.settings; - if (config.unitCode == 'sat') return satoshis; - - //TODO : now only works for english, specify opts to change thousand separator and decimal separator - var opts = { - fullPrecision: !!fullPrecision - }; - return this.Utils.formatAmount(satoshis, config.unitCode, opts); - }; - - root.formatAmountStr = function(satoshis) { - if (isNaN(satoshis)) return; - var config = configService.getSync().wallet.settings; - return root.formatAmount(satoshis) + ' ' + config.unitName; - }; - - root.toFiat = function(satoshis, code, cb) { - if (isNaN(satoshis)) return; - var val = function() { - var v1 = rateService.toFiat(satoshis, code); - if (!v1) return null; - - return v1.toFixed(2); - }; - - // Async version - if (cb) { - rateService.whenAvailable(function() { - return cb(val()); - }); - } else { - if (!rateService.isAvailable()) return null; - return val(); - }; - }; - - root.formatToUSD = function(satoshis, cb) { - if (isNaN(satoshis)) return; - var val = function() { - var v1 = rateService.toFiat(satoshis, 'USD'); - if (!v1) return null; - - return v1.toFixed(2); - }; - - // Async version - if (cb) { - rateService.whenAvailable(function() { - return cb(val()); - }); - } else { - if (!rateService.isAvailable()) return null; - return val(); - }; - }; - - root.formatAlternativeStr = function(satoshis, cb) { - if (isNaN(satoshis)) return; - var config = configService.getSync().wallet.settings; - - var val = function() { - var v1 = parseFloat((rateService.toFiat(satoshis, config.alternativeIsoCode)).toFixed(2)); - v1 = $filter('formatFiatAmount')(v1); - if (!v1) return null; - - return v1 + ' ' + config.alternativeIsoCode; - }; - - // Async version - if (cb) { - rateService.whenAvailable(function() { - return cb(val()); - }); - } else { - if (!rateService.isAvailable()) return null; - return val(); - }; - }; - - root.processTx = function(tx) { - if (!tx || tx.action == 'invalid') - return tx; - - // New transaction output format - if (tx.outputs && tx.outputs.length) { - - var outputsNr = tx.outputs.length; - - if (tx.action != 'received') { - if (outputsNr > 1) { - tx.recipientCount = outputsNr; - tx.hasMultiplesOutputs = true; - } - tx.amount = lodash.reduce(tx.outputs, function(total, o) { - o.amountStr = root.formatAmountStr(o.amount); - o.alternativeAmountStr = root.formatAlternativeStr(o.amount); - return total + o.amount; - }, 0); - } - tx.toAddress = tx.outputs[0].toAddress; - } - - tx.amountStr = root.formatAmountStr(tx.amount); - tx.alternativeAmountStr = root.formatAlternativeStr(tx.amount); - tx.feeStr = root.formatAmountStr(tx.fee || tx.fees); - - if (tx.amountStr) { - tx.amountValueStr = tx.amountStr.split(' ')[0]; - tx.amountUnitStr = tx.amountStr.split(' ')[1]; - } - - return tx; - }; - - root.formatPendingTxps = function(txps) { - $scope.pendingTxProposalsCountForUs = 0; - var now = Math.floor(Date.now() / 1000); - - /* To test multiple outputs... - var txp = { - message: 'test multi-output', - fee: 1000, - createdOn: new Date() / 1000, - outputs: [] - }; - function addOutput(n) { - txp.outputs.push({ - amount: 600, - toAddress: '2N8bhEwbKtMvR2jqMRcTCQqzHP6zXGToXcK', - message: 'output #' + (Number(n) + 1) - }); - }; - lodash.times(150, addOutput); - txps.push(txp); - */ - - lodash.each(txps, function(tx) { - - tx = txFormatService.processTx(tx); - - // no future transactions... - if (tx.createdOn > now) - tx.createdOn = now; - - tx.wallet = profileService.getWallet(tx.walletId); - if (!tx.wallet) { - $log.error("no wallet at txp?"); - return; - } - - var action = lodash.find(tx.actions, { - copayerId: tx.wallet.copayerId - }); - - if (!action && tx.status == 'pending') { - tx.pendingForUs = true; - } - - if (action && action.type == 'accept') { - tx.statusForUs = 'accepted'; - } else if (action && action.type == 'reject') { - tx.statusForUs = 'rejected'; - } else { - tx.statusForUs = 'pending'; - } - - if (!tx.deleteLockTime) - tx.canBeRemoved = true; - }); - - return txps; - }; - - root.parseAmount = function(amount, currency) { - var config = configService.getSync().wallet.settings; - var satToBtc = 1 / 100000000; - var unitToSatoshi = config.unitToSatoshi; - var amountUnitStr; - var amountSat; - var alternativeIsoCode = config.alternativeIsoCode; - - // If fiat currency - if (currency != 'bits' && currency != 'BTC' && currency != 'sat') { - amountUnitStr = $filter('formatFiatAmount')(amount) + ' ' + currency; - amountSat = rateService.fromFiat(amount, currency).toFixed(0); - } else if (currency == 'sat') { - amountSat = amount; - amountUnitStr = root.formatAmountStr(amountSat); - // convert sat to BTC - amount = (amountSat * satToBtc).toFixed(8); - currency = 'BTC'; - } else { - amountSat = parseInt((amount * unitToSatoshi).toFixed(0)); - amountUnitStr = root.formatAmountStr(amountSat); - // convert unit to BTC - amount = (amountSat * satToBtc).toFixed(8); - currency = 'BTC'; - } - - return { - amount: amount, - currency: currency, - alternativeIsoCode: alternativeIsoCode, - amountSat: amountSat, - amountUnitStr: amountUnitStr - }; - }; - - root.satToUnit = function(amount) { - var config = configService.getSync().wallet.settings; - var unitToSatoshi = config.unitToSatoshi; - var satToUnit = 1 / unitToSatoshi; - var unitDecimals = config.unitDecimals; - return parseFloat((amount * satToUnit).toFixed(unitDecimals)); - }; - - return root; -}); diff --git a/src/js/services/txpModalService.js b/src/js/services/txpModalService.js deleted file mode 100644 index a17f1c030..000000000 --- a/src/js/services/txpModalService.js +++ /dev/null @@ -1,34 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').factory('txpModalService', function(configService, profileService, $rootScope, $ionicModal) { - - var root = {}; - - - var glideraActive = true; // TODO TODO TODO - // isGlidera flag is a security measure so glidera status is not - // only determined by the tx.message - - - root.open = function(tx) { - var wallet = tx.wallet ? tx.wallet : profileService.getWallet(tx.walletId); - var config = configService.getSync().wallet; - var scope = $rootScope.$new(true); - scope.tx = tx; - if (!scope.tx.toAddress) scope.tx.toAddress = tx.outputs[0].toAddress; - scope.wallet = wallet; - scope.copayers = wallet ? wallet.copayers : null; - scope.isGlidera = glideraActive; - scope.currentSpendUnconfirmed = config.spendUnconfirmed; - // scope.tx.hasMultiplesOutputs = true; // Uncomment to test multiple outputs - - $ionicModal.fromTemplateUrl('views/modals/txp-details.html', { - scope: scope - }).then(function(modal) { - scope.txpDetailsModal = modal; - scope.txpDetailsModal.show(); - }); - }; - - return root; -}); diff --git a/src/js/services/uxLanguage.js b/src/js/services/uxLanguage.js deleted file mode 100644 index 23bf40da0..000000000 --- a/src/js/services/uxLanguage.js +++ /dev/null @@ -1,124 +0,0 @@ -'use strict'; -angular.module('copayApp.services') - .factory('uxLanguage', function languageService($log, lodash, gettextCatalog, amMoment, configService) { - var root = {}; - - root.currentLanguage = null; - - root.availableLanguages = [{ - name: 'English', - isoCode: 'en', - }, { - name: 'Español', - isoCode: 'es', - }, { - name: 'Français', - isoCode: 'fr', - }, { - name: 'Italiano', - isoCode: 'it', - }, { - name: 'Polski', - isoCode: 'pl', - }, { - name: 'Deutsch', - isoCode: 'de', - }, { - name: '日本語', - isoCode: 'ja', - useIdeograms: true, - }, { - name: '中文(简体)', - isoCode: 'zh', - useIdeograms: true, - }, { - name: 'Pусский', - isoCode: 'ru', - }, { - name: 'Português', - isoCode: 'pt', - }]; - - // }, { - // name: 'Český', - // isoCode: 'cs', - // } - - root._detect = function(cb) { - var userLang, androidLang; - if (navigator && navigator.globalization) { - - navigator.globalization.getPreferredLanguage(function(preferedLanguage) { - // works for iOS and Android 4.x - userLang = preferedLanguage.value; - userLang = userLang ? (userLang.split('-', 1)[0] || 'en') : 'en'; - // Set only available languages - userLang = root.isAvailableLanguage(userLang); - return cb(userLang); - }); - } else { - // Auto-detect browser language - userLang = navigator.userLanguage || navigator.language; - userLang = userLang ? (userLang.split('-', 1)[0] || 'en') : 'en'; - // Set only available languages - userLang = root.isAvailableLanguage(userLang); - return cb(userLang); - } - }; - - root.isAvailableLanguage = function(userLang) { - return lodash.find(root.availableLanguages, { - 'isoCode': userLang - }) ? userLang : 'en'; - }; - - root._set = function(lang) { - $log.debug('Setting default language: ' + lang); - gettextCatalog.setCurrentLanguage(lang); - root.currentLanguage = lang; - - if (lang == 'zh') lang = lang + '-CN'; // Fix for Chinese Simplified - amMoment.changeLocale(lang); - }; - - root.getCurrentLanguage = function() { - return root.currentLanguage; - }; - - root.getCurrentLanguageName = function() { - return root.getName(root.currentLanguage); - }; - - root.getCurrentLanguageInfo = function() { - return lodash.find(root.availableLanguages, { - 'isoCode': root.currentLanguage - }); - }; - - root.getLanguages = function() { - return root.availableLanguages; - }; - - root.init = function(cb) { - configService.whenAvailable(function(config) { - var userLang = config.wallet.settings.defaultLanguage; - - if (userLang && userLang != root.currentLanguage) { - root._set(userLang); - } else { - root._detect(function(lang) { - root._set(lang); - }); - } - if (cb) return cb(); - }); - }; - - root.getName = function(lang) { - return lodash.result(lodash.find(root.availableLanguages, { - 'isoCode': lang - }), 'name'); - }; - - return root; - }); diff --git a/src/js/services/walletService.js b/src/js/services/walletService.js deleted file mode 100644 index 5414da09c..000000000 --- a/src/js/services/walletService.js +++ /dev/null @@ -1,1240 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').factory('walletService', function($log, $timeout, lodash, trezor, ledger, intelTEE, storageService, configService, rateService, uxLanguage, $filter, gettextCatalog, bwcError, $ionicPopup, fingerprintService, ongoingProcess, gettext, $rootScope, txFormatService, $ionicModal, $state, bwcService, bitcore, popupService) { - - // Ratio low amount warning (fee/amount) in incoming TX - var LOW_AMOUNT_RATIO = 0.15; - - // Ratio of "many utxos" warning in total balance (fee/amount) - var TOTAL_LOW_WARNING_RATIO = .3; - - var root = {}; - - root.externalSource = { - ledger: ledger.description, - trezor: trezor.description, - intelTEE: intelTEE.description - } - - root.WALLET_STATUS_MAX_TRIES = 7; - root.WALLET_STATUS_DELAY_BETWEEN_TRIES = 1.4 * 1000; - root.SOFT_CONFIRMATION_LIMIT = 12; - root.SAFE_CONFIRMATIONS = 6; - - var errors = bwcService.getErrors(); - - var _signWithLedger = function(wallet, txp, cb) { - $log.info('Requesting Ledger Chrome app to sign the transaction'); - - ledger.signTx(txp, wallet.credentials.account, function(result) { - $log.debug('Ledger response', result); - if (!result.success) - return cb(result.message || result.error); - - txp.signatures = lodash.map(result.signatures, function(s) { - return s.substring(0, s.length - 2); - }); - return wallet.signTxProposal(txp, cb); - }); - }; - - var _signWithTrezor = function(wallet, txp, cb) { - $log.info('Requesting Trezor to sign the transaction'); - - var xPubKeys = lodash.pluck(wallet.credentials.publicKeyRing, 'xPubKey'); - trezor.signTx(xPubKeys, txp, wallet.credentials.account, function(err, result) { - if (err) return cb(err); - - $log.debug('Trezor response', result); - txp.signatures = result.signatures; - return wallet.signTxProposal(txp, cb); - }); - }; - - var _signWithIntelTEE = function(wallet, txp, cb) { - $log.info('Requesting Intel TEE to sign the transaction'); - - intelTEE.signTx(wallet.credentials.hwInfo.id, txp, function(err, result) { - if (err) return cb(err); - - $log.debug('Intel TEE response', result); - txp.signatures = result.Signatures; - return wallet.signTxProposal(txp, cb); - }); - }; - - root.showMneumonicFromHardware = function(wallet, cb) { - switch (wallet.getPrivKeyExternalSourceName()) { - case root.externalSource.intelTEE.id: - return intelTEE.showMneumonic(wallet.credentials.hwInfo.id, cb); - break; - default: - cb('Error: unrecognized external source'); - break; - } - }; - - root.showReceiveAddressFromHardware = function(wallet, address, cb) { - switch (wallet.getPrivKeyExternalSourceName()) { - case root.externalSource.intelTEE.id: - root.getAddressObj(wallet, address, function(err, addrObj) { - if (err) return cb(err); - return intelTEE.showReceiveAddress(wallet.credentials.hwInfo.id, addrObj, cb); - }); - break; - default: - cb('Error: unrecognized external source'); - break; - } - }; - - root.invalidateCache = function(wallet) { - if (wallet.cachedStatus) - wallet.cachedStatus.isValid = false; - - if (wallet.completeHistory) - wallet.completeHistory.isValid = false; - - if (wallet.cachedActivity) - wallet.cachedActivity.isValid = false; - - if (wallet.cachedTxps) - wallet.cachedTxps.isValid = false; - }; - - root.getStatus = function(wallet, opts, cb) { - opts = opts || {}; - - - function processPendingTxps(status) { - var txps = status.pendingTxps; - var now = Math.floor(Date.now() / 1000); - - /* To test multiple outputs... - var txp = { - message: 'test multi-output', - fee: 1000, - createdOn: new Date() / 1000, - outputs: [] - }; - function addOutput(n) { - txp.outputs.push({ - amount: 600, - toAddress: '2N8bhEwbKtMvR2jqMRcTCQqzHP6zXGToXcK', - message: 'output #' + (Number(n) + 1) - }); - }; - lodash.times(150, addOutput); - txps.push(txp); - */ - - lodash.each(txps, function(tx) { - - tx = txFormatService.processTx(tx); - - // no future transactions... - if (tx.createdOn > now) - tx.createdOn = now; - - tx.wallet = wallet; - - if (!tx.wallet) { - $log.error("no wallet at txp?"); - return; - } - - var action = lodash.find(tx.actions, { - copayerId: tx.wallet.copayerId - }); - - if (!action && tx.status == 'pending') { - tx.pendingForUs = true; - } - - if (action && action.type == 'accept') { - tx.statusForUs = 'accepted'; - } else if (action && action.type == 'reject') { - tx.statusForUs = 'rejected'; - } else { - tx.statusForUs = 'pending'; - } - - if (!tx.deleteLockTime) - tx.canBeRemoved = true; - }); - - wallet.pendingTxps = txps; - }; - - - function get(cb) { - wallet.getStatus({ - twoStep: true - }, function(err, ret) { - if (err) { - if (err instanceof errors.NOT_AUTHORIZED) { - return cb('WALLET_NOT_REGISTERED'); - } - return cb(err); - } - - return cb(null, ret); - }); - }; - - function cacheBalance(wallet, balance) { - if (!balance) return; - - var config = configService.getSync().wallet; - - var cache = wallet.cachedStatus; - - // Address with Balance - cache.balanceByAddress = balance.byAddress; - - // Total wallet balance is same regardless of 'spend unconfirmed funds' setting. - cache.totalBalanceSat = balance.totalAmount; - - // Spend unconfirmed funds - if (config.spendUnconfirmed) { - cache.lockedBalanceSat = balance.lockedAmount; - cache.availableBalanceSat = balance.availableAmount; - cache.totalBytesToSendMax = balance.totalBytesToSendMax; - cache.pendingAmount = 0; - cache.spendableAmount = balance.totalAmount - balance.lockedAmount; - } else { - cache.lockedBalanceSat = balance.lockedConfirmedAmount; - cache.availableBalanceSat = balance.availableConfirmedAmount; - cache.totalBytesToSendMax = balance.totalBytesToSendConfirmedMax; - cache.pendingAmount = balance.totalAmount - balance.totalConfirmedAmount; - cache.spendableAmount = balance.totalConfirmedAmount - balance.lockedAmount; - } - - // Selected unit - cache.unitToSatoshi = config.settings.unitToSatoshi; - cache.satToUnit = 1 / cache.unitToSatoshi; - cache.unitName = config.settings.unitName; - - //STR - cache.totalBalanceStr = txFormatService.formatAmount(cache.totalBalanceSat) + ' ' + cache.unitName; - cache.lockedBalanceStr = txFormatService.formatAmount(cache.lockedBalanceSat) + ' ' + cache.unitName; - cache.availableBalanceStr = txFormatService.formatAmount(cache.availableBalanceSat) + ' ' + cache.unitName; - cache.spendableBalanceStr = txFormatService.formatAmount(cache.spendableAmount) + ' ' + cache.unitName; - cache.pendingBalanceStr = txFormatService.formatAmount(cache.pendingAmount) + ' ' + cache.unitName; - - cache.alternativeName = config.settings.alternativeName; - cache.alternativeIsoCode = config.settings.alternativeIsoCode; - - // Check address - root.isAddressUsed(wallet, balance.byAddress, function(err, used) { - if (used) { - $log.debug('Address used. Creating new'); - // Force new address - root.getAddress(wallet, true, function(err, addr) { - $log.debug('New address: ', addr); - }); - } - }); - - rateService.whenAvailable(function() { - - var totalBalanceAlternative = rateService.toFiat(cache.totalBalanceSat, cache.alternativeIsoCode); - var pendingBalanceAlternative = rateService.toFiat(cache.pendingAmount, cache.alternativeIsoCode); - var lockedBalanceAlternative = rateService.toFiat(cache.lockedBalanceSat, cache.alternativeIsoCode); - var spendableBalanceAlternative = rateService.toFiat(cache.spendableAmount, cache.alternativeIsoCode); - var alternativeConversionRate = rateService.toFiat(100000000, cache.alternativeIsoCode); - - cache.totalBalanceAlternative = $filter('formatFiatAmount')(totalBalanceAlternative); - cache.pendingBalanceAlternative = $filter('formatFiatAmount')(pendingBalanceAlternative); - cache.lockedBalanceAlternative = $filter('formatFiatAmount')(lockedBalanceAlternative); - cache.spendableBalanceAlternative = $filter('formatFiatAmount')(spendableBalanceAlternative); - cache.alternativeConversionRate = $filter('formatFiatAmount')(alternativeConversionRate); - - cache.alternativeBalanceAvailable = true; - cache.isRateAvailable = true; - }); - }; - - function isStatusCached() { - return wallet.cachedStatus && wallet.cachedStatus.isValid; - }; - - function cacheStatus(status) { - wallet.cachedStatus = status ||  {}; - var cache = wallet.cachedStatus; - cache.statusUpdatedOn = Date.now(); - cache.isValid = true; - cache.email = status.preferences ? status.preferences.email : null; - cacheBalance(wallet, status.balance); - }; - - function walletStatusHash(status) { - return status ? status.balance.totalAmount : wallet.totalBalanceSat; - }; - - function _getStatus(initStatusHash, tries, cb) { - if (isStatusCached() && !opts.force) { - $log.debug('Wallet status cache hit:' + wallet.id); - cacheStatus(wallet.cachedStatus); - processPendingTxps(wallet.cachedStatus); - return cb(null, wallet.cachedStatus); - }; - - tries = tries || 0; - - $log.debug('Updating Status:', wallet.credentials.walletName, tries); - get(function(err, status) { - if (err) return cb(err); - - var currentStatusHash = walletStatusHash(status); - $log.debug('Status update. hash:' + currentStatusHash + ' Try:' + tries); - if (opts.untilItChanges && - initStatusHash == currentStatusHash && - tries < root.WALLET_STATUS_MAX_TRIES && - walletId == wallet.credentials.walletId) { - return $timeout(function() { - $log.debug('Retrying update... ' + walletId + ' Try:' + tries) - return _getStatus(initStatusHash, ++tries, cb); - }, root.WALLET_STATUS_DELAY_BETWEEN_TRIES * tries); - } - - processPendingTxps(status); - - $log.debug('Got Wallet Status for:' + wallet.credentials.walletName); - - cacheStatus(status); - - return cb(null, status); - }); - }; - - _getStatus(walletStatusHash(), 0, cb); - }; - - var getSavedTxs = function(walletId, cb) { - storageService.getTxHistory(walletId, function(err, txs) { - if (err) return cb(err); - - var localTxs = []; - - if (!txs) { - return cb(null, localTxs); - } - - try { - localTxs = JSON.parse(txs); - } catch (ex) { - $log.warn(ex); - } - return cb(null, lodash.compact(localTxs)); - }); - }; - - var getTxsFromServer = function(wallet, skip, endingTxid, limit, cb) { - var res = []; - - wallet.getTxHistory({ - skip: skip, - limit: limit - }, function(err, txsFromServer) { - if (err) return cb(err); - - if (!txsFromServer.length) - return cb(); - - var res = lodash.takeWhile(txsFromServer, function(tx) { - return tx.txid != endingTxid; - }); - - return cb(null, res, res.length >= limit); - }); - }; - - var removeAndMarkSoftConfirmedTx = function(txs) { - return lodash.filter(txs, function(tx) { - if (tx.confirmations >= root.SOFT_CONFIRMATION_LIMIT) - return tx; - tx.recent = true; - }); - } - - var processNewTxs = function(wallet, txs) { - var config = configService.getSync().wallet.settings; - var now = Math.floor(Date.now() / 1000); - var txHistoryUnique = {}; - var ret = []; - wallet.hasUnsafeConfirmed = false; - - lodash.each(txs, function(tx) { - tx = txFormatService.processTx(tx); - - // no future transactions... - if (tx.time > now) - tx.time = now; - - if (tx.confirmations >= root.SAFE_CONFIRMATIONS) { - tx.safeConfirmed = root.SAFE_CONFIRMATIONS + '+'; - } else { - tx.safeConfirmed = false; - wallet.hasUnsafeConfirmed = true; - } - - if (tx.note) { - delete tx.note.encryptedEditedByName; - delete tx.note.encryptedBody; - } - - if (!txHistoryUnique[tx.txid]) { - ret.push(tx); - txHistoryUnique[tx.txid] = true; - } else { - $log.debug('Ignoring duplicate TX in history: ' + tx.txid) - } - }); - - return ret; - }; - - var updateLocalTxHistory = function(wallet, opts, cb) { - var FIRST_LIMIT = 5; - var LIMIT = 50; - var requestLimit = FIRST_LIMIT; - var walletId = wallet.credentials.walletId; - var config = configService.getSync().wallet.settings; - - var opts = opts || {}; - var progressFn = opts.progressFn || function() {}; - var foundLimitTx = false; - - - if (opts.feeLevels) { - opts.lowAmount = root.getLowAmount(wallet, opts.feeLevels); - } - - var fixTxsUnit = function(txs) { - if (!txs || !txs[0] || !txs[0].amountStr) return; - - var cacheUnit = txs[0].amountStr.split(' ')[1]; - - if (cacheUnit == config.unitName) - return; - - var name = ' ' + config.unitName; - - $log.debug('Fixing Tx Cache Unit to:' + name) - lodash.each(txs, function(tx) { - tx.amountStr = txFormatService.formatAmount(tx.amount) + name; - tx.feeStr = txFormatService.formatAmount(tx.fees) + name; - }); - }; - - getSavedTxs(walletId, function(err, txsFromLocal) { - if (err) return cb(err); - - fixTxsUnit(txsFromLocal); - - var confirmedTxs = removeAndMarkSoftConfirmedTx(txsFromLocal); - var endingTxid = confirmedTxs[0] ? confirmedTxs[0].txid : null; - var endingTs = confirmedTxs[0] ? confirmedTxs[0].time : null; - - // First update - progressFn(txsFromLocal, 0); - wallet.completeHistory = txsFromLocal; - - function getNewTxs(newTxs, skip, next) { - getTxsFromServer(wallet, skip, endingTxid, requestLimit, function(err, res, shouldContinue) { - if (err) { - $log.warn(bwcError.msg(err, 'Server Error')); //TODO - if (err instanceof errors.CONNECTION_ERROR || (err.message && err.message.match(/5../))) { - $log.info('Retrying history download in 5 secs...'); - return $timeout(function() { - return getNewTxs(newTxs, skip, next); - }, 5000); - }; - return next(err); - } - - newTxs = newTxs.concat(processNewTxs(wallet, lodash.compact(res))); - - progressFn(newTxs.concat(txsFromLocal), newTxs.length); - - skip = skip + requestLimit; - - $log.debug('Syncing TXs. Got:' + newTxs.length + ' Skip:' + skip, ' EndingTxid:', endingTxid, ' Continue:', shouldContinue); - - // TODO Dirty - // do not sync all history, just looking for a single TX. - if (opts.limitTx) { - - foundLimitTx = lodash.find(newTxs, { - txid: opts.limitTx, - }); - - if (foundLimitTx) { - $log.debug('Found limitTX: ' + opts.limitTx); - return next(null, [foundLimitTx]); - } - } - // - - - if (!shouldContinue) { - $log.debug('Finished Sync: New / soft confirmed Txs: ' + newTxs.length); - return next(null, newTxs); - } - - requestLimit = LIMIT; - getNewTxs(newTxs, skip, next); - }); - }; - - getNewTxs([], 0, function(err, txs) { - if (err) return cb(err); - - var newHistory = lodash.uniq(lodash.compact(txs.concat(confirmedTxs)), function(x) { - return x.txid; - }); - - - function updateNotes(cb2) { - if (!endingTs) return cb2(); - - $log.debug('Syncing notes from: ' + endingTs); - wallet.getTxNotes({ - minTs: endingTs - }, function(err, notes) { - if (err) { - $log.warn(err); - return cb2(); - }; - lodash.each(notes, function(note) { - $log.debug('Note for ' + note.txid); - lodash.each(newHistory, function(tx) { - if (tx.txid == note.txid) { - $log.debug('...updating note for ' + note.txid); - tx.note = note; - } - }); - }); - return cb2(); - }); - } - - function updateLowAmount(txs) { - if (!opts.lowAmount) return; - - lodash.each(txs, function(tx) { - tx.lowAmount = tx.amount < opts.lowAmount; - }); - }; - - updateLowAmount(txs); - - updateNotes(function() { - - // - if (foundLimitTx) { - $log.debug('Tx history read until limitTx: ' + opts.limitTx); - return cb(null, newHistory); - } - // - - var historyToSave = JSON.stringify(newHistory); - - lodash.each(txs, function(tx) { - tx.recent = true; - }) - - $log.debug('Tx History synced. Total Txs: ' + newHistory.length); - - // Final update - if (walletId == wallet.credentials.walletId) { - wallet.completeHistory = newHistory; - } - - return storageService.setTxHistory(historyToSave, walletId, function() { - $log.debug('Tx History saved.'); - - return cb(); - }); - }); - }); - }); - }; - - root.getTxNote = function(wallet, txid, cb) { - wallet.getTxNote({ - txid: txid - }, function(err, note) { - if (err) return cb(err); - return cb(null, note); - }); - }; - - root.editTxNote = function(wallet, args, cb) { - wallet.editTxNote(args, function(err, res) { - return cb(err, res); - }); - }; - - root.getTxp = function(wallet, txpid, cb) { - wallet.getTx(txpid, function(err, txp) { - if (err) return cb(err); - return cb(null, txp); - }); - }; - - root.getTx = function(wallet, txid, cb) { - - function finish(list) { - var tx = lodash.find(list, { - txid: txid - }); - - if (!tx) return cb('Could not get transaction'); - return cb(null, tx); - }; - - if (wallet.completeHistory && wallet.completeHistory.isValid) { - finish(wallet.completeHistory); - } else { - root.getTxHistory(wallet, { - limitTx: txid - }, function(err, txHistory) { - if (err) return cb(err); - - finish(txHistory); - }); - } - }; - - - root.clearTxHistory = function(wallet, cb) { - root.invalidateCache(wallet); - - storageService.removeTxHistory(wallet.id, function(err) { - if (err) { - $log.error(err); - return cb(err); - } - return cb(); - }); - }; - - - - root.getTxHistory = function(wallet, opts, cb) { - opts = opts || {}; - - var walletId = wallet.credentials.walletId; - - if (!wallet.isComplete()) return cb(); - - function isHistoryCached() { - return wallet.completeHistory && wallet.completeHistory.isValid; - }; - - if (isHistoryCached() && !opts.force) return cb(null, wallet.completeHistory); - - $log.debug('Updating Transaction History'); - - updateLocalTxHistory(wallet, opts, function(err, txs) { - if (err) return cb(err); - - if (opts.limitTx) { - return cb(err, txs); - } - - wallet.completeHistory.isValid = true; - return cb(err, wallet.completeHistory); - }); - }; - - root.isEncrypted = function(wallet) { - if (lodash.isEmpty(wallet)) return; - var isEncrypted = wallet.isPrivKeyEncrypted(); - if (isEncrypted) $log.debug('Wallet is encrypted'); - return isEncrypted; - }; - - root.createTx = function(wallet, txp, cb) { - if (lodash.isEmpty(txp) || lodash.isEmpty(wallet)) - return cb('MISSING_PARAMETER'); - - wallet.createTxProposal(txp, function(err, createdTxp) { - if (err) return cb(err); - else { - $log.debug('Transaction created'); - return cb(null, createdTxp); - } - }); - }; - - root.publishTx = function(wallet, txp, cb) { - if (lodash.isEmpty(txp) || lodash.isEmpty(wallet)) - return cb('MISSING_PARAMETER'); - - wallet.publishTxProposal({ - txp: txp - }, function(err, publishedTx) { - if (err) return cb(err); - else { - $log.debug('Transaction published'); - return cb(null, publishedTx); - } - }); - }; - - root.signTx = function(wallet, txp, password, cb) { - if (!wallet || !txp || !cb) - return cb('MISSING_PARAMETER'); - - if (wallet.isPrivKeyExternal()) { - switch (wallet.getPrivKeyExternalSourceName()) { - case root.externalSource.ledger.id: - return _signWithLedger(wallet, txp, cb); - case root.externalSource.trezor.id: - return _signWithTrezor(wallet, txp, cb); - case root.externalSource.intelTEE.id: - return _signWithIntelTEE(wallet, txp, cb); - default: - var msg = 'Unsupported External Key:' + wallet.getPrivKeyExternalSourceName(); - $log.error(msg); - return cb(msg); - } - } else { - - try { - wallet.signTxProposal(txp, password, function(err, signedTxp) { - $log.debug('Transaction signed err:' + err); - return cb(err, signedTxp); - }); - } catch (e) { - $log.warn('Error at signTxProposal:', e); - return cb(e); - } - } - }; - - root.broadcastTx = function(wallet, txp, cb) { - if (lodash.isEmpty(txp) || lodash.isEmpty(wallet)) - return cb('MISSING_PARAMETER'); - - if (txp.status != 'accepted') - return cb('TX_NOT_ACCEPTED'); - - wallet.broadcastTxProposal(txp, function(err, broadcastedTxp, memo) { - if (err) - return cb(err); - - $log.debug('Transaction broadcasted'); - if (memo) $log.info(memo); - - return cb(null, broadcastedTxp); - }); - }; - - root.rejectTx = function(wallet, txp, cb) { - if (lodash.isEmpty(txp) || lodash.isEmpty(wallet)) - return cb('MISSING_PARAMETER'); - - wallet.rejectTxProposal(txp, null, function(err, rejectedTxp) { - $log.debug('Transaction rejected'); - return cb(err, rejectedTxp); - }); - }; - - root.removeTx = function(wallet, txp, cb) { - if (lodash.isEmpty(txp) || lodash.isEmpty(wallet)) - return cb('MISSING_PARAMETER'); - - wallet.removeTxProposal(txp, function(err) { - $log.debug('Transaction removed'); - - root.invalidateCache(wallet); - $rootScope.$emit('Local/TxAction', wallet.id); - - return cb(err); - }); - }; - - root.updateRemotePreferences = function(clients, prefs, cb) { - prefs = prefs || {}; - cb = cb || function() {}; - - if (!lodash.isArray(clients)) - clients = [clients]; - - function updateRemotePreferencesFor(clients, prefs, next) { - var wallet = clients.shift(); - if (!wallet) return next(); - $log.debug('Saving remote preferences', wallet.credentials.walletName, prefs); - - wallet.savePreferences(prefs, function(err) { - - if (err) { - popupService.showAlert(bwcError.msg(err, gettextCatalog.getString('Could not save preferences on the server'))); - return next(err); - } - - updateRemotePreferencesFor(clients, prefs, next); - }); - }; - - // Update this JIC. - var config = configService.getSync(); - var walletSettings = config.wallet.settings; - - //prefs.email (may come from arguments) - prefs.email = config.emailNotifications.email; - prefs.language = uxLanguage.getCurrentLanguage(); - prefs.unit = walletSettings.unitCode; - - updateRemotePreferencesFor(lodash.clone(clients), prefs, function(err) { - if (err) return cb(err); - - $log.debug('Remote preferences saved for' + lodash.map(clients, function(x) { - return x.credentials.walletId; - }).join(',')); - - lodash.each(clients, function(c) { - c.preferences = lodash.assign(prefs, c.preferences); - }); - return cb(); - }); - }; - - root.recreate = function(wallet, cb) { - $log.debug('Recreating wallet:', wallet.id); - ongoingProcess.set('recreating', true); - wallet.recreateWallet(function(err) { - wallet.notAuthorized = false; - ongoingProcess.set('recreating', false); - return cb(err); - }); - }; - - root.startScan = function(wallet, cb) { - cb = cb || function() {}; - - $log.debug('Scanning wallet ' + wallet.id); - if (!wallet.isComplete()) return; - - wallet.updating = true; - ongoingProcess.set('scanning', true); - wallet.startScan({ - includeCopayerBranches: true, - }, function(err) { - wallet.updating = false; - ongoingProcess.set('scanning', false); - return cb(err); - }); - }; - - - root.expireAddress = function(wallet, cb) { - $log.debug('Cleaning Address ' + wallet.id); - storageService.clearLastAddress(wallet.id, function(err) { - return cb(err); - }); - }; - - // Check address - root.isAddressUsed = function(wallet, byAddress, cb) { - storageService.getLastAddress(wallet.id, function(err, addr) { - var used = lodash.find(byAddress, { - address: addr - }); - return cb(err, used); - }); - }; - - var createAddress = function(wallet, cb) { - $log.debug('Creating address for wallet:', wallet.id); - - wallet.createAddress({}, function(err, addr) { - if (err) { - var prefix = gettextCatalog.getString('Could not create address'); - if (err instanceof errors.CONNECTION_ERROR || (err.message && err.message.match(/5../))) { - $log.warn(err); - return $timeout(function() { - createAddress(wallet, cb); - }, 5000); - } else if (err instanceof errors.MAIN_ADDRESS_GAP_REACHED || (err.message && err.message == 'MAIN_ADDRESS_GAP_REACHED')) { - $log.warn(err); - prefix = null; - wallet.getMainAddresses({ - reverse: true, - limit: 1 - }, function(err, addr) { - if (err) return cb(err); - return cb(null, addr[0].address); - }); - } - return bwcError.cb(err, prefix, cb); - } - return cb(null, addr.address); - }); - }; - - root.getMainAddresses = function(wallet, opts, cb) { - opts = opts || {}; - opts.reverse = true; - wallet.getMainAddresses(opts, function(err, addresses) { - return cb(err, addresses); - }); - }; - - root.getBalance = function(wallet, opts, cb) { - opts = opts || {}; - wallet.getBalance(opts, function(err, resp) { - return cb(err, resp); - }); - }; - - - // These 2 functions were taken from - // https://github.com/bitpay/bitcore-wallet-service/blob/master/lib/model/txproposal.js#L243 - - function getEstimatedSizeForSingleInput(wallet) { - switch (wallet.credentials.addressType) { - case 'P2PKH': - return 147; - default: - case 'P2SH': - return wallet.m * 72 + wallet.n * 36 + 44; - } - }; - - - root.getEstimatedTxSize = function(wallet, nbOutputs) { - // Note: found empirically based on all multisig P2SH inputs and within m & n allowed limits. - var safetyMargin = 0.02; - - var overhead = 4 + 4 + 9 + 9; - var inputSize = getEstimatedSizeForSingleInput(wallet); - var outputSize = 34; - var nbInputs = 1; //Assume 1 input - var nbOutputs = nbOutputs || 2; // Assume 2 outputs - - var size = overhead + inputSize * nbInputs + outputSize * nbOutputs; - return parseInt((size * (1 + safetyMargin)).toFixed(0)); - }; - - - // Approx utxo amount, from which the uxto is economically redeemable - root.getMinFee = function(wallet, feeLevels, nbOutputs) { - var lowLevelRate = (lodash.find(feeLevels[wallet.network], { - level: 'normal', - }).feePerKB / 1000).toFixed(0); - - var size = root.getEstimatedTxSize(wallet, nbOutputs); - return size * lowLevelRate; - }; - - - // Approx utxo amount, from which the uxto is economically redeemable - root.getLowAmount = function(wallet, feeLevels, nbOutputs) { - var minFee = root.getMinFee(wallet,feeLevels, nbOutputs); - return parseInt( minFee / LOW_AMOUNT_RATIO); - }; - - - - root.getLowUtxos = function(wallet, levels, cb) { - - wallet.getUtxos({}, function(err, resp) { - if (err || !resp || !resp.length) return cb(); - - var minFee = root.getMinFee(wallet, levels, resp.length); - - var balance = lodash.sum(resp, 'satoshis'); - - // for 2 outputs - var lowAmount = root.getLowAmount(wallet, levels); - var lowUtxos = lodash.filter(resp, function(x) { - return x.satoshis < lowAmount; - }); - - var totalLow = lodash.sum(lowUtxos, 'satoshis'); - - return cb(err, { - allUtxos: resp || [], - lowUtxos: lowUtxos || [], - warning: minFee / balance > TOTAL_LOW_WARNING_RATIO, - minFee: minFee, - }); - }); - }; - - root.getAddress = function(wallet, forceNew, cb) { - storageService.getLastAddress(wallet.id, function(err, addr) { - if (err) return cb(err); - - if (!forceNew && addr) return cb(null, addr); - - if (!wallet.isComplete()) - return cb('WALLET_NOT_COMPLETE'); - - createAddress(wallet, function(err, _addr) { - if (err) return cb(err, addr); - storageService.storeLastAddress(wallet.id, _addr, function() { - if (err) return cb(err); - return cb(null, _addr); - }); - }); - }); - }; - - root.getAddressObj = function(wallet, address, cb) { - wallet.getMainAddresses({ - reverse: true - }, function(err, addr) { - if (err) return cb(err); - var addrObj = lodash.find(addr, function(a) { - return a.address == address; - }); - var err = null; - if (!addrObj) { - err = 'Error: specified address not in wallet'; - } - return cb(err, addrObj); - }); - }; - - root.isReady = function(wallet, cb) { - if (!wallet.isComplete()) - return cb('WALLET_NOT_COMPLETE'); - - if (wallet.needsBackup) - return cb('WALLET_NEEDS_BACKUP'); - return cb(); - }; - - - // An alert dialog - var askPassword = function(name, title, cb) { - var opts = { - inputType: 'password', - forceHTMLPrompt: true, - class: 'text-warn' - }; - popupService.showPrompt(title, name, opts, function(res) { - if (!res) return cb(); - if (res) return cb(res) - }); - }; - - - root.encrypt = function(wallet, cb) { - var title = gettextCatalog.getString('Enter new spending password'); - var warnMsg = gettextCatalog.getString('Your wallet key will be encrypted. The Spending Password cannot be recovered. Be sure to write it down.'); - askPassword(warnMsg, title, function(password) { - if (!password) return cb('no password'); - title = gettextCatalog.getString('Confirm your new spending password'); - askPassword(warnMsg, title, function(password2) { - if (!password2 || password != password2) - return cb('password mismatch'); - - wallet.encryptPrivateKey(password); - return cb(); - }); - }); - }; - - - root.decrypt = function(wallet, cb) { - $log.debug('Disabling private key encryption for' + wallet.name); - askPassword(null, gettextCatalog.getString('Enter Spending Password'), function(password) { - if (!password) return cb('no password'); - - try { - wallet.decryptPrivateKey(password); - } catch (e) { - return cb(e); - } - return cb(); - }); - }; - - root.handleEncryptedWallet = function(wallet, cb) { - if (!root.isEncrypted(wallet)) return cb(); - - askPassword(wallet.name, gettextCatalog.getString('Enter Spending Password'), function(password) { - if (!password) return cb('No password'); - if (!wallet.checkPassword(password)) return cb('Wrong password'); - - return cb(null, password); - }); - }; - - - root.reject = function(wallet, txp, cb) { - ongoingProcess.set('rejectTx', true); - root.rejectTx(wallet, txp, function(err, txpr) { - root.invalidateCache(wallet); - ongoingProcess.set('rejectTx', false); - - if (err) return cb(err); - - $rootScope.$emit('Local/TxAction', wallet.id); - return cb(null, txpr); - }); - }; - - - root.onlyPublish = function(wallet, txp, cb, customStatusHandler) { - ongoingProcess.set('sendingTx', true, customStatusHandler); - root.publishTx(wallet, txp, function(err, publishedTxp) { - root.invalidateCache(wallet); - ongoingProcess.set('sendingTx', false, customStatusHandler); - if (err) return cb(bwcError.msg(err)); - $rootScope.$emit('Local/TxAction', wallet.id); - return cb(); - }); - }; - - - root.prepare = function(wallet, cb) { - fingerprintService.check(wallet, function(err) { - if (err) return cb(err); - - root.handleEncryptedWallet(wallet, function(err, password) { - if (err) return cb(err); - - return cb(null, password); - }); - }); - }; - - root.publishAndSign = function(wallet, txp, cb, customStatusHandler) { - - var publishFn = root.publishTx; - - // Already published? - if (txp.status == 'pending') { - publishFn = function(wallet, txp, cb) { - return cb(null, txp); - }; - } - - root.prepare(wallet, function(err, password) { - if (err) return cb(bwcError.msg(err)); - - ongoingProcess.set('sendingTx', true, customStatusHandler); - - publishFn(wallet, txp, function(err, publishedTxp) { - ongoingProcess.set('sendingTx', false, customStatusHandler); - if (err) return cb(bwcError.msg(err)); - - ongoingProcess.set('signingTx', true, customStatusHandler); - root.signTx(wallet, publishedTxp, password, function(err, signedTxp) { - ongoingProcess.set('signingTx', false, customStatusHandler); - root.invalidateCache(wallet); - - - if (err) { - $log.warn('sign error:' + err); - var msg = err && err.message ? - err.message : - gettextCatalog.getString('The payment was created but could not be completed. Please try again from home screen'); - - $rootScope.$emit('Local/TxAction', wallet.id); - return cb(msg); - } - - if (signedTxp.status == 'accepted') { - ongoingProcess.set('broadcastingTx', true, customStatusHandler); - root.broadcastTx(wallet, signedTxp, function(err, broadcastedTxp) { - ongoingProcess.set('broadcastingTx', false, customStatusHandler); - if (err) return cb(bwcError.msg(err)); - - $rootScope.$emit('Local/TxAction', wallet.id); - return cb(null, broadcastedTxp); - }); - } else { - $rootScope.$emit('Local/TxAction', wallet.id); - return cb(null, signedTxp); - } - }); - }); - }); - }; - - root.getEncodedWalletInfo = function(wallet, password, cb) { - var derivationPath = wallet.credentials.getBaseAddressDerivationPath(); - var encodingType = { - mnemonic: 1, - xpriv: 2, - xpub: 3 - }; - var info; - - // not supported yet - if (wallet.credentials.derivationStrategy != 'BIP44' || !wallet.canSign()) - return cb(gettextCatalog.getString('Exporting via QR not supported for this wallet')); - - var keys = root.getKeysWithPassword(wallet, password); - - if (keys.mnemonic) { - info = { - type: encodingType.mnemonic, - data: keys.mnemonic, - } - } else { - info = { - type: encodingType.xpriv, - data: keys.xPrivKey - } - } - - return cb(null, info.type + '|' + info.data + '|' + wallet.credentials.network.toLowerCase() + '|' + derivationPath + '|' + (wallet.credentials.mnemonicHasPassphrase)); - }; - - root.setTouchId = function(wallet, enabled, cb) { - - var opts = { - touchIdFor: {} - }; - opts.touchIdFor[wallet.id] = enabled; - - fingerprintService.check(wallet, function(err) { - if (err) { - opts.touchIdFor[wallet.id] = !enabled; - $log.debug('Error with fingerprint:' + err); - return cb(err); - } - configService.set(opts, cb); - }); - }; - - root.getKeys = function(wallet, cb) { - root.prepare(wallet, function(err, password) { - if (err) return cb(err); - var keys; - - try { - keys = wallet.getKeys(password); - } catch (e) { - return cb(e); - } - - return cb(null, keys); - }); - }; - - root.getKeysWithPassword = function(wallet, password) { - try { - return wallet.getKeys(password); - } catch (e) {} - } - - root.getSendMaxInfo = function(wallet, opts, cb) { - opts = opts || {}; - wallet.getSendMaxInfo(opts, function(err, res) { - return cb(err, res); - }); - }; - - return root; -}); diff --git a/src/js/trezor-url.js b/src/js/trezor-url.js deleted file mode 100644 index 7b2255280..000000000 --- a/src/js/trezor-url.js +++ /dev/null @@ -1,2 +0,0 @@ -window.TREZOR_CHROME_URL = './bower_components/trezor-connect/chrome/wrapper.html'; - diff --git a/src/sass/buttons.scss b/src/sass/buttons.scss deleted file mode 100644 index 43aaf2bc2..000000000 --- a/src/sass/buttons.scss +++ /dev/null @@ -1,42 +0,0 @@ -%button-standard { - width: 85%; - max-width: 300px; - margin-left: auto; - margin-right: auto; - display: block; -} - -.button, -.onboarding .button { - &.button-primary { - @include button-style($v-button-primary-bg, $v-button-primary-border, $v-button-primary-active-bg, $v-button-primary-active-border, $v-button-primary-color); - @include button-clear($v-button-primary-bg); - @include button-outline($v-button-primary-bg); - } - &.button-primary, - &.button-secondary, - &.button-light, - &.button-assertive { - &.button-standard { - @extend %button-standard; - & + .button-standard { - margin-top: 1rem; - } - } - } -} -.onboarding .button { - &.button-secondary { - @include button-style($v-onboarding-button-secondary-bg, $v-onboarding-button-secondary-border, $v-onboarding-button-secondary-active-bg, $v-onboarding-button-secondary-active-border, $v-onboarding-button-secondary-color); - @include button-clear($v-onboarding-button-secondary-color); - @include button-outline($v-onboarding-button-secondary-color); - } -} - -.button { - &.button-secondary { - @include button-style($v-button-secondary-bg, $v-button-secondary-border, $v-button-secondary-active-bg, $v-button-secondary-active-border, $v-button-secondary-color); - @include button-clear($v-button-secondary-color); - @include button-outline($v-button-secondary-color); - } -} diff --git a/src/sass/directives/directives.scss b/src/sass/directives/directives.scss deleted file mode 100644 index 9159d3f23..000000000 --- a/src/sass/directives/directives.scss +++ /dev/null @@ -1 +0,0 @@ -@import "gravatar"; diff --git a/src/sass/directives/gravatar.scss b/src/sass/directives/gravatar.scss deleted file mode 100644 index 9832201c8..000000000 --- a/src/sass/directives/gravatar.scss +++ /dev/null @@ -1,4 +0,0 @@ -.gravatar { - border-radius: $v-icon-border-radius; - display: inline-block; -} diff --git a/src/sass/fonts.scss b/src/sass/fonts.scss deleted file mode 100644 index 7039ac3bf..000000000 --- a/src/sass/fonts.scss +++ /dev/null @@ -1,140 +0,0 @@ -@font-face { - font-family: 'Roboto-Black'; - src: url('../roboto-font/roboto-black-webfont.woff2') format('woff2'), - url('roboto-black-webfont.woff') format('woff'); - font-weight: normal; - font-style: normal; - -} - - - - -@font-face { - font-family: 'Roboto-Black-Italic'; - src: url('../roboto-font/roboto-blackitalic-webfont.woff2') format('woff2'), - url('roboto-blackitalic-webfont.woff') format('woff'); - font-weight: normal; - font-style: normal; - -} - - - - -@font-face { - font-family: 'Roboto-Bold'; - src: url('../roboto-font/roboto-bold-webfont.woff2') format('woff2'), - url('roboto-bold-webfont.woff') format('woff'); - font-weight: normal; - font-style: normal; - -} - - - - -@font-face { - font-family: 'Roboto-Bold-Italic'; - src: url('../roboto-font/roboto-bolditalic-webfont.woff2') format('woff2'), - url('roboto-bolditalic-webfont.woff') format('woff'); - font-weight: normal; - font-style: normal; - -} - - - - -@font-face { - font-family: 'Roboto-Italic'; - src: url('../roboto-font/roboto-italic-webfont.woff2') format('woff2'), - url('roboto-italic-webfont.woff') format('woff'); - font-weight: normal; - font-style: normal; - -} - - - - -@font-face { - font-family: 'Roboto-Light'; - src: url('../roboto-font/roboto-light-webfont.woff2') format('woff2'), - url('roboto-light-webfont.woff') format('woff'); - font-weight: normal; - font-style: normal; - -} - - - - -@font-face { - font-family: 'Roboto-Light-Italic'; - src: url('../roboto-font/roboto-lightitalic-webfont.woff2') format('woff2'), - url('roboto-lightitalic-webfont.woff') format('woff'); - font-weight: normal; - font-style: normal; - -} - - - - -@font-face { - font-family: 'Roboto-Medium'; - src: url('../roboto-font/roboto-medium-webfont.woff2') format('woff2'), - url('roboto-medium-webfont.woff') format('woff'); - font-weight: normal; - font-style: normal; - -} - - - - -@font-face { - font-family: 'Roboto-Medium-Italic'; - src: url('../roboto-font/roboto-mediumitalic-webfont.woff2') format('woff2'), - url('roboto-mediumitalic-webfont.woff') format('woff'); - font-weight: normal; - font-style: normal; - -} - - - - -@font-face { - font-family: 'Roboto'; - src: url('../roboto-font/roboto-regular-webfont.woff2') format('woff2'), - url('roboto-regular-webfont.woff') format('woff'); - font-weight: normal; - font-style: normal; - -} - - - - -@font-face { - font-family: 'Roboto-Thin'; - src: url('../roboto-font/roboto-thin-webfont.woff2') format('woff2'), - url('roboto-thin-webfont.woff') format('woff'); - font-weight: normal; - font-style: normal; - -} - - - - -@font-face { - font-family: 'Roboto-Thin-Italic'; - src: url('../roboto-font/roboto-thinitalic-webfont.woff2') format('woff2'), - url('roboto-thinitalic-webfont.woff') format('woff'); - font-weight: normal; - font-style: normal; - -} \ No newline at end of file diff --git a/src/sass/forms.scss b/src/sass/forms.scss deleted file mode 100644 index 2c725b7fd..000000000 --- a/src/sass/forms.scss +++ /dev/null @@ -1,3 +0,0 @@ -.button-clear{ - background: none !important; -} \ No newline at end of file diff --git a/src/sass/icons.scss b/src/sass/icons.scss deleted file mode 100644 index 9204718d5..000000000 --- a/src/sass/icons.scss +++ /dev/null @@ -1,85 +0,0 @@ -.icon.bp-arrow-right { - @extend .ion-ios-arrow-right; - @extend .just-a-hint; -} - -.icon.bp-arrow-down { - @extend .ion-ios-arrow-down; - @extend .just-a-hint; -} - -.icon.bp-arrow-up { - @extend .ion-ios-arrow-up; - @extend .just-a-hint; -} - -.just-a-hint { - opacity: 0.2; -} - -.item.item-big-icon-left { - padding-left: 74px; -} - - -.icon-svg { - display: flex; - justify-content: center; - align-items: center; - > img { - background-repeat:no-repeat; - background-clip: padding-box; - background-size: contain; - height: 18px; - } -} - -.big-icon-svg { - padding: 0 7px; - > .bg { - border-radius: $v-icon-border-radius; - width: 40px; - height: 40px; - box-shadow: $v-hovering-box-shadow; - background-repeat:no-repeat; - background-clip: padding-box; - background-size: 103%; - &.green{ - background: rgb(1, 209, 162); - } - } -} - - -.wallet-item { - padding: 1rem 0 2rem 0; - .name { - color: #445; - text-align:center; - } - .big-icon-svg { - &.circle{ - left:8px; - .bg { - border-radius: $v-icon-border-radius; - width: 70px; - height: 70px; - padding:.1rem; - margin: 0.2rem; - box-shadow: 0px 1px 5px rgba($v-mid-gray, .1); - display:flex; - margin:auto; - } - } - } - &:before { - display: block; - position: absolute; - width: 100%; - height: 1px; - background: rgba(221, 221, 221, 0.3); - top: 0; - right: 0; - content: ''; - } -} diff --git a/src/sass/ionic.scss b/src/sass/ionic.scss deleted file mode 100644 index 19877aa6e..000000000 --- a/src/sass/ionic.scss +++ /dev/null @@ -1,58 +0,0 @@ -// This file is for changes to the standard Ionic Framework which cannot be made -// in variables.scss. - -@import "../../bower_components/ionic/scss/ionic"; - -/* Ionic Overrides and Workarounds */ -// Please include a description of the problem solved by the workaround. - -// the ion tabs element never needs it's own background (backgrounds are -// rendered by the tabs), and the default background would cover the scanner -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 { - &:first-child { - padding-right: $placeholder-icon-padding; - } - &:last-child { - padding-left: $placeholder-icon-padding; - } -} - -// .item-input-wrapper background cannot be modified by a variable -.item-input-wrapper { - background: none transparent; -} - -// the default .item p color of #666 cannot be modified by a variable -.item p { - color: $v-mid-gray; -} - -// we'd like to diverge from the standard ionic formula for left-right card margins -.card { - margin: ($content-padding * 2) 14px; -} - -// A somewhat dirty solution to the nav-bar "flashing" during page transitions. -// Since the old nav-bar is hidden before the new one is shown, this pseudo -// element fills the space with the proper background color. -ion-view.deflash-blue:before { - content: " "; - display: block; - position: absolute; - top: 0; - left: 0; - right: 0; - height: $bar-height; - background-color: $royal; -} -.platform-ios.platform-cordova:not(.fullscreen) ion-view.deflash-blue:before { - height: $bar-height + $ios-statusbar-height; -} diff --git a/src/sass/main.scss b/src/sass/main.scss deleted file mode 100644 index cb5e7118f..000000000 --- a/src/sass/main.scss +++ /dev/null @@ -1,11 +0,0 @@ -@import "app/overrides"; -@import "fonts"; -@import "variables"; -@import "ionic"; -@import "icons"; -@import "buttons"; -@import "forms"; -@import "mixins/mixins"; -@import "views/views"; -@import "directives/directives"; -@import "shame"; diff --git a/src/sass/mixins/layout.scss b/src/sass/mixins/layout.scss deleted file mode 100644 index b03d53800..000000000 --- a/src/sass/mixins/layout.scss +++ /dev/null @@ -1,20 +0,0 @@ -@mixin center-block($topBottom: 0) { - float: none; - margin: $topBottom auto; -} - -@mixin absolute-center() { - position: absolute; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); - top: 50%; - left: 50%; -} - -.center-block { - @include center-block(); -} - -.absolute-center{ - @include absolute-center(); -} diff --git a/src/sass/mixins/mixins.scss b/src/sass/mixins/mixins.scss deleted file mode 100644 index 933fea1f7..000000000 --- a/src/sass/mixins/mixins.scss +++ /dev/null @@ -1 +0,0 @@ -@import "layout"; \ No newline at end of file diff --git a/src/sass/shame.scss b/src/sass/shame.scss deleted file mode 100644 index 07ac2dedf..000000000 --- a/src/sass/shame.scss +++ /dev/null @@ -1,466 +0,0 @@ -/* This is for rules that don't yet have a home. - * Our goal is to delete this file. Search the regex: /class=".*CLASS.*?"/ - */ - - .enable_text_select { - -webkit-user-select: auto; - -moz-user-select: auto; - -ms-user-select: auto; - user-select: auto; - } - -.box-notification { - padding: 0.5rem; - border: 1px solid; - margin: 10px; - a { - color: #fff; - } - &.notice { - border-color: #b2b2b2; - background-color: #f8f8f8; - color: #444; - } - &.warning { - border-color: #e6b500; - background-color: #ffc900; - color: #fff; - &.warning-red{ - border-color: #EB475A; - background-color: $v-warning-color; - } - } - &.error { - background-color: #ef473a; - border-color: #e42112; - color: #fff; - } -} - -.text-warn { - .popup-sub-title { - margin-top: 15px; - color: #e42112 !important; - } -} - -.item-toggle, .item { - white-space: normal; -} - -.input-label { - max-width: none; - width: inherit; -} - -.wallets { - height: 110px; -} - -// No looks likes locked -input[type="number"] { - &[readonly] { - background-color: #F6F7F9; - padding-left: 0; - } -} - -/* Turn Off Number Input Spinners */ - -input[type=number] { - &::-webkit-inner-spin-button, &::-webkit-outer-spin-button { - -webkit-appearance: none; - margin: 0; - } -} - -/* Spinner */ - -.item-icon-left ion-spinner { - float: left; - margin-left: -3.2em; - margin-right: 1em; - margin-top: -0.2em; - height: 24px; -} - -/* Wrap text from item-note */ -.item-note{ - white-space: -moz-pre-wrap !important; - white-space: -pre-wrap; - white-space: -o-pre-wrap; - white-space: pre-wrap; - word-wrap: break-word; - white-space: -webkit-pre-wrap; - word-break: break-all; - white-space: normal; -} - -.back-button { - border: 0; - .icon:before { - color: #fff; - font-size: 30px !important; - font-weight: bold; - margin-left: 5px; - } -} - -.search-button { - .icon:before { - color: #fff; - font-size: 30px !important; - margin-left: 5px; - } -} - -.name-wallet { - font-size: 14px; - font-weight: 400; - padding-top: 0 !important; - line-height: 14px; -} - -.header-modal { - background: #fff; - width: 100%; - padding-top: 20px; - padding-bottom: 20px; - position: relative; -} - -.ellipsis { - display: block; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.updating { - div { - text-align: center; - } - .spinner { - margin: auto; - height: 2em; - text-align: center; - } -} - -.postfix { - position: absolute; - font-size: 20px; - right: 10px; - background-color: $v-subtle-gray; - color: $v-dark-gray; - border-radius: 4px; - padding: 2px 10px; - cursor: pointer; - top: 21px; - z-index: 10; - label &{ - top: 38px; - padding: 0 5px; - } -} -.postfix:active { - opacity: 0.2; -} -#qr-canvas { - display: none; -} - -#qrcode-scanner-video { - display: block; - margin: 0 auto; -} - -.input-notification { - float: right; - margin-right: 25px; -} - -.pr { - position: relative; -} - -.m0 { - margin: 0; -} - -.p0i { - padding: 0 !important; -} - -.db { - display: block; -} - -.dib { - display: inline-block; -} - -.size-10 { - font-size: 10px; -} - -.size-12 { - font-size: 12px; -} - -.size-14 { - font-size: 14px; -} - -.size-16 { - font-size: 16px; -} - -.size-18 { - font-size: 18px; -} - - -.size-20 { - font-size: 21px; -} - -.size-21 { - font-size: 21px; -} - -.size-24 { - font-size: 24px; -} - -.size-28 { - font-size: 28px; -} - -.size-36 { - font-size: 36px; -} - -.size-42 { - font-size: 42px; -} - -.m5t { - margin-top: 5px; -} - -.m5b { - margin-bottom: 5px; -} - -.m5r { - margin-right: 5px; -} - -.m10 { - margin: 10px; -} - -.m10b { - margin-bottom: 10px; -} - -.m10t { - margin-top: 10px; -} - -.m15b { - margin-bottom: 15px; -} - -.m15r { - margin-right: 15px; -} - -.m20b { - margin-bottom: 20px; -} - -.m10r { - margin-right: 10px; -} - -.m55r { - margin-right: 55px; -} - -.m10l { - margin-left: 10px; -} - -.m15l { - margin-left: 15px; -} - -.m15t { - margin-top: 15px; -} - -.m20t { - margin-top: 20px; -} - -.m20ti { - margin-top: 20px !important; -} - -.m20tp { - margin-top: 20%; -} - -.m30tp { - margin-top: 30%; -} - -.p10t { - padding-top: 10px; -} - -.p10h { - padding-right: 10px; - padding-left: 10px; -} - -.p15h { - padding: 0 15px; -} - -.p20h { - padding: 0 20px; -} - -.p20v { - padding: 20px 0; -} - -.p20b { - padding-bottom: 20px; -} - -.p15 { - padding: 15px; -} - -.p20 { - padding: 20px; -} - -.p10 { - padding: 10px; -} - -.p60b { - padding-bottom: 60px; -} - -.m30v { - margin: 30px 0; -} - -.m10h { - margin: 0 10px; -} - -.m10v { - margin: 10px 0; -} - -.m20v { - margin: 20px 0; -} - -.m30v { - margin: 30px 0; -} - -.oh { - overflow: hidden; -} - -.vm { - vertical-align: middle; -} - -.ma { - margin: 0 auto; -} - -.tu { - text-transform: uppercase; -} - -.tl { - text-transform: lowercase; -} - -.text-center { - text-align: center; -} - -.text-light { - font-weight: 200; -} - -.text-bold { - font-weight: 700; -} - -.text-gray { - color: gray; -} - -.text-italic { - font-style: italic; -} - -.no-border { - border-style: none; - background-color: transparent !important; -} - -input[type=file] { - margin-top: 10px; - margin-bottom: -10px; - line-height: 0px; -} - -.w100p { - width: 100%; -} - -.pointer { - cursor: pointer; -} - -.text-right { - text-align: right; -} - -.text-left { - text-align: left; -} - -.right { - float: right; -} - -.left { - float: left; -} - -.keyboard-open .tabs { - display: none; - } - - .keyboard-open .has-tabs { - bottom: 0; -} - -.white-space-initial { - white-space: initial; -} diff --git a/src/sass/variables.scss b/src/sass/variables.scss deleted file mode 100644 index 302dac511..000000000 --- a/src/sass/variables.scss +++ /dev/null @@ -1,195 +0,0 @@ -/* - * App variables - */ - -/* Fonts */ -$v-font-family: "Roboto", sans-serif !default; -$v-font-family-light: "Roboto-Light", sans-serif-light !default; - -/* Colors */ -$v-bitcoin-orange: #ff9900 !default; - -$v-dark-gray: #445 !default; -$v-mid-gray: #667 !default; -$v-light-gray: #9b9bab !default; -$v-subtle-gray: darken(#ffffff, 5%) !default; - -$v-primary-color: #1e3186 !default; -$v-secondary-color: #111b49 !default; -$v-accent-color: #647ce8 !default; - -$v-text-primary-color: #1e3186 !default; -$v-text-secondary-color: #ffffff !default; -$v-text-accent-color: #647ce8 !default; - -$v-success-color: #13e5b6 !default; -$v-warning-color: #ffa500 !default; -$v-error-color: #ef473a !default; - -$v-wallet-color-map: ( - 0: (color: #dd4b39, name: 'Cinnabar'), - 1: (color: #f38f12, name: 'Carrot Orange'), - 2: (color: #faa77f, name: 'Light Salmon'), - 3: (color: #d0b136, name: 'Metallic Gold'), - 4: (color: #9edd72, name: 'Feijoa'), - 5: (color: #29bb9c, name: 'Shamrock'), - 6: (color: #019477, name: 'Observatory'), - 7: (color: #77dada, name: 'Turquoise Blue'), - 8: (color: #4a90e2, name: 'Cornflower Blue'), - 9: (color: #484ed3, name: 'Free Speech Blue'), - 10: (color: #9b59b6, name: 'Deep Lilac'), - 11: (color: #e856ef, name: 'Free Speech Magenta'), - 12: (color: #ff599e, name: 'Brilliant Rose'), - 13: (color: #7a8c9e, name: 'Light Slate Grey') -) !default; - -/* Theme */ -$v-default-wallet-color-index: 8 !default; // See $v-wallet-color-map -$v-subtle-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25) !default; -$v-hovering-box-shadow: 0px 6px 12px 0px rgba(0, 0, 0, 0.3) !default; -$v-subtle-radius: 3px !default; -$v-visible-radius: 6px !default; -$v-unmistakable-radius: 12px !default; -$v-scanner-background-color: $v-primary-color !default; -$v-scanner-guide-color: $v-accent-color !default; -$v-top-tabs-color: $v-primary-color !default; - -$v-wallet-backup-bg: #ffffff !default; -$v-wallet-backup-phrase-bg: $v-subtle-gray !default; -$v-wallet-backup-phrase-color: $v-dark-gray !default; -$v-wallet-backup-select-phrase-color: $v-subtle-gray; -$v-wallet-backup-select-word-bg: #ffffff !default; -$v-wallet-backup-select-word-color: $v-dark-gray !default; -$v-wallet-backup-select-word-disabled-color: $v-light-gray !default; -$v-tou-bg: #ffffff !default; -$v-tou-color: $v-dark-gray !default; -$v-icon-color: $v-accent-color !default; -$v-icon-negative-color: $v-accent-color !default; -$v-icon-border-radius: 50% !default; -$v-bitcoin-icon: url('../img/icon-bitcoin.svg') !default; - -$v-button-primary-bg: $v-accent-color !default; -$v-button-primary-color: #ffffff !default; -$v-button-primary-border: transparent !default; -$v-button-primary-active-bg: darken($v-accent-color, 10%) !default; -$v-button-primary-active-border: transparent !default; -$v-button-primary-clear-bg: none !default; -$v-button-primary-clear-color: $v-accent-color !default; -$v-button-primary-outline-bg: transparent !default; -$v-button-primary-outline-border: $v-accent-color !default; -$v-button-primary-outline-color: $v-accent-color !default; -$v-button-primary-outline-active-bg: $v-accent-color !default; -$v-button-primary-outline-active-color: #ffffff !default; - -$v-button-secondary-bg: $v-subtle-gray !default; -$v-button-secondary-color: $v-dark-gray !default; -$v-button-secondary-border: transparent !default; -$v-button-secondary-active-bg: $v-subtle-gray !default; -$v-button-secondary-active-border: transparent !default; -$v-button-secondary-clear-bg: none !default; -$v-button-secondary-clear-color: $v-dark-gray !default; -$v-button-secondary-outline-border: $v-dark-gray !default; -$v-button-secondary-outline-bg: transparent !default; -$v-button-secondary-outline-color: $v-dark-gray !default; -$v-button-secondary-outline-active-bg: $v-dark-gray !default; -$v-button-secondary-outline-active-color: #ffffff !default; - -/* Slide */ - -$v-slide-bg-color: $v-accent-color !default; -$v-slider-bg-color: #5063B9 !default; -$v-slide-text-color: #FFFFFF !default; -$v-success-bg-color: #11D1A6 !default; - -/* Onboarding */ -$v-onboarding-pane-bg: $v-primary-color !default; -$v-onboarding-gradient-top-color: $v-primary-color !default; -$v-onboarding-gradient-bottom-color: $v-secondary-color !default; -$v-onboarding-welcome-bg: url(../img/onboarding-welcome-bg.png) !default; -$v-onboarding-color: #ffffff !default; -$v-onboarding-bar-header-color: #ffffff !default; -$v-onboarding-bar-header-button-color: #ffffff !default; -$v-onboarding-tour-swiper-pagination-bg: $v-accent-color !default; -$v-onboarding-backup-alert-icon-color: $v-accent-color !default; -$v-onboarding-checkbox-off-border: $v-accent-color !default; -$v-onboarding-checkbox-on-border: $v-success-color !default; - -$v-onboarding-tour-phone-bg: url(../img/onboarding-tour-phone.svg) !default; -$v-onboarding-tour-currency-bg: url(../img/onboarding-tour-currency-bg.svg) !default; -$v-onboarding-tour-control-bg: url(../img/onboarding-tour-control.svg) !default; -$v-onboarding-backup-warning-bg: url(../img/backup-warning.svg) !default; - -$v-onboarding-button-back-color: #ffffff !default; - -$v-onboarding-button-secondary-bg: rgba($v-light-gray, 0.1) !default; -$v-onboarding-button-secondary-color: #ffffff !default; -$v-onboarding-button-secondary-border: transparent !default; -$v-onboarding-button-secondary-active-bg: rgba($v-light-gray, 0.2) !default; -$v-onboarding-button-secondary-active-border: transparent !default; -$v-onboarding-button-secondary-clear-bg: transparent !default; -$v-onboarding-button-secondary-clear-color: #ffffff !default; -$v-onboarding-button-secondary-outline-border: #ffffff !default; -$v-onboarding-button-secondary-outline-bg: transparent !default; -$v-onboarding-button-secondary-outline-color: #ffffff !default; -$v-onboarding-button-secondary-outline-active-bg: #ffffff !default; -$v-onboarding-button-secondary-outline-active-color: #ffffff !default; - -/* Main tabs */ -$v-tab-home-icon: url('../img/tab-icons/ico-home.svg') !default; -$v-tab-home-selected-icon: url('../img/tab-icons/ico-home-selected.svg') !default; -$v-tab-receive-icon: url('../img/tab-icons/ico-receive.svg') !default; -$v-tab-receive-selected-icon: url('../img/tab-icons/ico-receive-selected.svg') !default; -$v-tab-settings-icon: url('../img/tab-icons/ico-settings.svg') !default; -$v-tab-settings-selected-icon: url('../img/tab-icons/ico-settings-selected.svg') !default; -$v-tab-scan-icon: url('../img/tab-icons/ico-scan.svg') !default; -$v-tab-scan-selected-icon: url('../img/tab-icons/ico-scan-selected.svg') !default; -$v-tab-send-icon: url('../img/tab-icons/ico-send.svg') !default; -$v-tab-send-selected-icon: url('../img/tab-icons/ico-send-selected.svg') !default; - -/* - * Ionic variables - */ -$royal: $v-primary-color !default; -$positive: $v-accent-color !default; - -$font-size-base: 16px !default; -$font-size-small: 12px !default; -$font-family-sans-serif: $v-font-family !default; -$font-family-light-sans-serif: $v-font-family-light !default; - -$link-color: $v-accent-color !default; - -$button-border-radius: $v-subtle-radius !default; -$button-height: 52px !default; -$button-padding: 16px !default; - -$base-background-color: $v-subtle-gray !default; - -$item-default-active-bg: $v-subtle-gray !default; -$item-icon-font-size: 24px !default; - -$input-color: $v-dark-gray !default; -$input-border: $v-light-gray !default; -$input-label-color: $v-mid-gray !default; -$input-color-placeholder: lighten($v-dark-gray, 40%) !default; - -$item-default-bg: #ffffff !default; -$item-default-border: $v-subtle-gray !default; -$item-default-text: $v-dark-gray !default; -$item-default-active-bg: darken(#ffffff, 7%) !default; -$item-default-active-border: darken($v-subtle-gray, 7%) !default; -$item-divider-bg: $v-subtle-gray !default; - -$bar-default-border: $v-subtle-gray !default; -$bar-royal-bg: $v-primary-color !default; -$bar-royal-border: $v-primary-color !default; -$bar-royal-text: #ffffff !default; - -$tabs-icon-size: 22px !default; - -$ios-transition-duration: 200ms !default; - -$card-box-shadow: $v-subtle-box-shadow !default; - -$toggle-on-positive-border: $v-accent-color !default; -$toggle-on-positive-bg: $v-accent-color !default; diff --git a/src/sass/views/add.scss b/src/sass/views/add.scss deleted file mode 100644 index 2cb96994d..000000000 --- a/src/sass/views/add.scss +++ /dev/null @@ -1,27 +0,0 @@ -#view-add { - .item { - margin-bottom: 10px; - margin-left: 10px; - margin-right: 10px; - padding-top:2rem; - padding-bottom: 2rem; - border:none; - padding-left:90px; - - &:first-child { - margin-top: 25px; - } - } - .add-type { - color: $v-dark-gray; - } - .bg{ - background-color: $v-icon-color; - height: 50px; - width: 50px; - padding:4px; - &.join{ - padding:10px; - } - } -} diff --git a/src/sass/views/address-book.scss b/src/sass/views/address-book.scss deleted file mode 100644 index c0d0f99a8..000000000 --- a/src/sass/views/address-book.scss +++ /dev/null @@ -1,155 +0,0 @@ -#add-address { - .zero-state-cta { - padding-bottom: 3vh; - } - .list { - background-color: #fff; - } - .qr-scan-icon a { - z-index: 10; - display: block; - position: absolute; - top: 164px; - right: 0; - padding: 0 10px; - font-size: 24px; - cursor: pointer; - line-height: 155px; - } - .icon { - &.valid { - padding-top: 3px; - color: $v-success-color; - } - &.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: $v-dark-gray; - padding-top: 1.3rem; - padding-bottom: 1.3rem; - &.item-divider { - color: $v-mid-gray; - padding-bottom: .5rem; - font-size: .9rem; - } - } - .item-note { - color: $v-light-gray; - } - } -} -#view-address-book { - @extend .deflash-blue; - .scroll { - height:100%; - } - i.icon>svg#Add_Contact path.st0 { - stroke: $v-icon-negative-color; - } - .list { - .item { - color: #444; - border-top: none; - &:before { - display: block; - position: absolute; - width: 100%; - height: 1px; - background: rgba(221, 221, 221, 0.3); - top: 0; - right: 0; - content: ''; - } - &.item-divider { - color: rgba(74, 74, 74, .8); - } - &.item-heading { - &:before { - top: 99% - } - } - &.item-icon-left{ - padding-left:80px; - } - &:nth-child(2) { - &:before { - width: 0; - } - } - .item-note { - color: rgb(58, 58, 58); - } - .big-icon-svg { - padding: 0 7px; - > .bg { - border-radius: $v-icon-border-radius; - width: 40px; - height: 40px; - box-shadow: none; - background-repeat: no-repeat; - background-clip: padding-box; - background-size: 103%; - &.green { - background: rgb(1, 209, 162); - } - } - } - } - } -} - -#address-book-view { - .has-click { - cursor: pointer; - } - .bar.bar-royal { - border: 0 transparent; - } - .gravatar-content { - position: relative; - height: 70px; - border-color: $royal; - background-color: $royal; - padding-top: 20px; - margin-bottom: 50px; - text-align: center; - } - .address-book-field-label { - text-transform: uppercase; - font-weight: bold; - font-size: 12px; - display: block; - color: $v-mid-gray; - } - .big-icon-svg { - padding: 0 7px; - > .bg { - background-color: #f2f2f2; - border-radius: $v-icon-border-radius; - width: 70px; - height: 70px; - box-shadow: 0px 1px 5px rgba($v-mid-gray, .1); - background-repeat: no-repeat; - background-clip: padding-box; - background-size: 103%; - &.green { - background: rgb(1, 209, 162); - } - } - } -} diff --git a/src/sass/views/addresses.scss b/src/sass/views/addresses.scss deleted file mode 100644 index c13eda8b4..000000000 --- a/src/sass/views/addresses.scss +++ /dev/null @@ -1,102 +0,0 @@ -#addresses { - @extend .deflash-blue; - .updating { - text-align: center; - font-size: 0.9em; - color: $v-mid-gray; - padding-top: 1.3rem; - .spinner svg { - stroke: #111; - fill: #111; - } - } - .addr { - &-explanation, &-button-group { - padding: 0 1rem; - margin: 1rem 0; - } - &-description { - text-align: center; - font-size: 0.9em; - color: $v-mid-gray; - margin: 1rem 0; - a { - font-weight: bold; - cursor: pointer; - cursor: hand; - } - } - &-balance { - margin-top: 4px; - color: #5DD263; - } - &-path { - margin-top: 4px; - color: #B8B8B8; - } - } - - .banner-icon { - margin-top: 25px; - i { - box-shadow: $v-hovering-box-shadow; - img { - content: $v-tab-receive-selected-icon; - } - } - } - - .addr-list { - .item { - color: $v-dark-gray; - padding-top: 1.3rem; - padding-bottom: 1.3rem; - &.has-addr-value { - padding-top: .65rem; - padding-bottom: .65rem; - } - &.item-divider { - color: $v-mid-gray; - padding-bottom: .5rem; - font-size: .9rem; - } - &.view-all { - cursor: pointer; - cursor: hand; - i { - font-size: 35px; - margin-right: 5px; - color: $link-color; - } - span { - color: $link-color; - font-weight: bold; - } - } - i { - font-size: 35px; - margin-right: 2px; - } - } - .box-error { - padding: 25px; - background-color: #E65555; - color: #F4F4F4; - h5 { - margin: 5px; - color: #F4F4F4; - text-align: center; - font-weight: bold; - } - a { - font-weight: bold; - color: #F4F4F4; - cursor: pointer; - cursor: hand; - } - } - .item-note { - color: $v-light-gray; - } - } -} diff --git a/src/sass/views/advancedSettings.scss b/src/sass/views/advancedSettings.scss deleted file mode 100644 index c48d50f80..000000000 --- a/src/sass/views/advancedSettings.scss +++ /dev/null @@ -1,31 +0,0 @@ -#advanced-settings { - .list { - .item { - &:before { - display: block; - position: absolute; - width: 100%; - height: 1px; - background: rgba(221, 221, 221, 0.3); - top: 0; - right: 0; - content: ''; - } - &.item-divider { - color: $v-dark-gray; - } - .item-note { - color: $v-dark-gray; - } - } - .has-comment { - border-bottom: 0 none; - } - .comment { - padding: 15px; - background-color: #fff; - color: $v-mid-gray; - font-size:0.9em; - } - } -} diff --git a/src/sass/views/amount.scss b/src/sass/views/amount.scss deleted file mode 100644 index 627f905e8..000000000 --- a/src/sass/views/amount.scss +++ /dev/null @@ -1,260 +0,0 @@ -#view-amount { - @extend .deflash-blue; - .recipient-label { - font-size: 14px; - padding-bottom: 0; - color: $v-mid-gray; - } - .item-no-bottom-border + .item { - border-top: 0; - } - .icon-bitpay-card { - background-image: url("../img/icon-bitpay.svg"); - } - .icon-amazon { - background-image: url("../img/icon-amazon.svg"); - } - @media(max-width: 480px) { - .bitcoin-address { - .icon { - left: 8px; - font-size: 24px; - } - .big-icon-svg { - left:5px; - & > .bg{ - width:30px; - height:30px; - box-shadow: none; - } - } - font-size: 13px; - padding-left: 48px; - } - } - @media(max-width: 320px) { - .bitcoin-address { - & > span:last-child { - margin-left: -2px; - } - } - } - .send-gravatar { - left: 11px; - position: absolute; - top: 10px; - } - .amount-pane-recipient { - position: absolute; - top: 95px; - bottom: 0; - width: 100%; - background-color: #fff; - padding: 0 16px; - - .amount-bar { - padding: 24px 0; - font-size: 18px; - @media(max-height: 480px) { - padding: 0px; - } - @media(max-width: 320px) { - padding: 0px; - } - .title { - float: left; - padding-top: 10px; - color: $v-dark-gray; - font-weight: bold; - @media(max-height: 480px) { - padding: 0px; - } - } - @media(max-height: 480px) { - padding-top: 3px; - } - } - .amount { - display: flex; - flex-direction: column; - justify-content: center; - flex-grow: 1; - position: absolute; - bottom: 254px; - top: 66px; - .light { - color: $v-light-gray; - } - @media(max-height: 480px) { - top: 45px; - } - @media(max-width: 320px) { - bottom: 276px; - top: 60px; - & > div { - display: inline-block; - } - & > div:first-child { - display: inherit; - } - } - } - } - .amount-pane-no-recipient { - position: absolute; - top: 0; - bottom: 0; - width: 100%; - background-color: #fff; - padding: 0 16px; - - .amount-bar { - padding: 24px 0; - font-size: 18px; - .title { - padding-top: 10px; - color: $v-dark-gray; - font-weight: bold; - .limits { - margin-top: 10px; - color: $v-light-gray; - font-size: 12px; - } - .select { - margin: 10px 1px; - } - } - } - .amount { - display: flex; - flex-direction: column; - justify-content: center; - flex-grow: 1; - position: absolute; - bottom: 254px; - top: 66px; - .light { - color: $v-light-gray; - } - } - } - .amount { - &__editable { - &--minimize { - font-size: 22px; - } - &--standard { - font-size: 42px; - @media(max-height: 480px) { - font-size: 26px; - padding-top: 10px; - } - } - &--placeholder { - color: $v-light-gray; - } - } - &__number { - color: $v-dark-gray; - } - &__currency-toggle { - border: 1px solid $v-subtle-gray; - color: $v-dark-gray; - border-radius: 3px; - padding: 0 10px; - cursor: pointer; - font-size: .6em; - position: relative; - top: -3px; - line-height: 1; - @media(max-width: 320px) { - line-height: 30px; - height: 30px; - } - } - &__results { - &--minimize { - font-size: 12px; - } - &--standard { - font-size: 18px; - padding: 10px 0; - } - &--placeholder { - color: $v-light-gray; - } - } - &__result { - color: $v-light-gray; - font-size: .9em; - margin-bottom: -.9em; - line-height: 1; - @media(max-height: 480px) { - margin-bottom: 0; - } - } - &__result-equiv { - color: $v-mid-gray; - font-size: 1.2em; - margin-top: 2rem; - @media(max-height: 480px) { - margin-top: 0; - font-size: 16px; - } - } - } - .keypad { - text-align: center; - font-size: 24px; - font-weight: lighter; - position: absolute; - bottom: 0; - width: 100%; - color: $v-mid-gray; - - .row { - padding: 0 !important; - margin: 0 !important; - } - - .col { - line-height: 45px; - } - - .operator { - background-color: $v-subtle-gray; - font-weight: normal; - cursor: pointer; - - &:active { - background-color: $v-light-gray; - } - } - - .operator-send { - font-weight: bolder; - color: #fff; - background-color: $positive; - font-size: 36px; - cursor: pointer; - - &:active { - background-color: #eaeaea; - } - } - - .digit{ - cursor: pointer; - border-top: 1px solid $v-subtle-gray; - border-left: 1px solid $v-subtle-gray; - &:active { - background-color: $v-subtle-gray; - } - } - - @media(max-height: 480px) { - font-size: 12px; - - } - } -} diff --git a/src/sass/views/backup-warning.scss b/src/sass/views/backup-warning.scss deleted file mode 100644 index 2b6cf7fd1..000000000 --- a/src/sass/views/backup-warning.scss +++ /dev/null @@ -1,6 +0,0 @@ -#backup-warning{ - #cta-buttons { - @extend %cta-buttons; - padding-bottom: 10vh; - } -} diff --git a/src/sass/views/bitpayCard.scss b/src/sass/views/bitpayCard.scss deleted file mode 100644 index 79bed16a6..000000000 --- a/src/sass/views/bitpayCard.scss +++ /dev/null @@ -1,360 +0,0 @@ -#bitpayCard { - - $item-lateral-padding: 20px; - $item-vertical-padding: 10px; - $item-border-color: #EFEFEF; - $item-label-color: #6C6C6E; - @extend .deflash-blue; - background: white; - - .status-label { - font-size: 14px; - font-weight: 300; - color: #727272; - padding: 1rem; - background: #f8f8f9; - i { - position: absolute; - padding-left: 5px; - } - } - - .comment { - padding: 15px; - background: #f8f8f9; - font-weight: bold; - font-size:0.9em; - color: $v-mid-gray; - display: inline-block; - } - - .spinner svg { - stroke: #0067c8; - fill: #0067c8; - } - - .add-bottom-for-cta { - bottom: 92px; - } - .head { - padding: 30px $item-lateral-padding 4rem; - border-top: 0; - - .sending-label { - display: flex; - font-size: 18px; - align-items: center; - margin-bottom: 1.5rem; - - img { - margin-right: 1rem; - height: 35px; - width: 35px; - } - - .big-icon-svg { - padding: 0 12px 0 0; - } - } - .amount-label{ - line-height: 30px; - .amount-final{ - font-size: 38px; - margin-bottom: .5rem; - - > .unit { - font-family: "Roboto-Light"; - } - } - .alternative { - font-size: 16px; - font-family: "Roboto-Light"; - color: #9B9B9B; - } - } - } - .item { - border-color: $item-border-color; - &.activity-header { - z-index: 3; - border: 0; - border-bottom: 1px solid #EFEFEF; - } - &.activity { - display: flex; - align-items: center; - background: #fff; - padding: 0 0 0 1rem; - margin: 0; - border: 0; - - &.send svg .nc-icon-wrapper g, - &.send svg .nc-icon-wrapper path, - &.send .tx-icon .houston { - } - &.receive svg .nc-icon-wrapper g, - &.receive svg .nc-icon-wrapper path, - &.receive .tx-icon .houston { - stroke: #09C286; - color: #09C286; - } - &.pending svg .nc-icon-wrapper g, - &.pending svg .nc-icon-wrapper path, - &.pending .tx-icon .houston { - stroke: $v-bitcoin-orange; - color: $v-bitcoin-orange; - } - } - .total { - font-weight: bold; - } - } - .tx-icon { - margin-right: 25px; - .houston { - width: 40px; - height: 40px; - border-radius: 40px; - border: 1px solid; - color: #9b9bab; - &.no-border { - border: none; - .svg { - width: 40px; - height: 40px; - display: block; - margin: 0 auto; - position: relative; - top: 50%; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); - } - } - .svg { - width: 23px; - height: 23px; - display: block; - margin: 0 auto; - position: relative; - top: 50%; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); - } - } - } - .tx-content { - display: flex; - align-items: center; - flex-grow: 1; - padding: 1rem 0; - padding-right: 1rem; - border-bottom: 1px solid rgb(245, 245, 245); - overflow: hidden; - } - .tx-title { - flex-grow: 1; - color: $v-dark-gray; - overflow: hidden; - } - .tx-message { - margin-right: 1rem; - text-transform: capitalize; - } - .tx-location { - margin-right: 1rem; - font-size: 12.5px; - color: $v-light-gray; - text-transform: capitalize; - } - .tx-amount { - font-size: 16px; - white-space: nowrap; - &--received { - color: #09C286; - } - &--sent { - color: $v-dark-gray; - } - &--pending { - color: $v-bitcoin-orange; - } - } - .tx-time { - white-space: nowrap; - color: $v-light-gray; - font-size: 12.5px; - } - .info { - .badge { - border-radius: 0; - padding: .5rem; - } - .item { - color: #4A4A4A; - padding-top: $item-vertical-padding; - padding-bottom: $item-vertical-padding; - padding-left: $item-lateral-padding; - - &:not(.item-icon-right) { - padding-right: $item-lateral-padding; - } - - .label { - font-size: 14px; - color: $item-label-color; - margin-bottom: 8px; - } - - .capitalized { - text-transform: capitalize; - } - - .wallet .big-icon-svg > .bg { - height: 24px; - width: 24px; - padding: 2px; - box-shadow: none; - vertical-align: middle; - } - - .total-amount { - font-weight: bold; - } - - &.single-line { - display: flex; - align-items: center; - padding-top: 17px; - padding-bottom: 17px; - - .label { - margin: 0; - flex-grow: 1; - } - } - } - .item-divider { - padding-top: 1.2rem; - color: $item-label-color; - font-size: 15px; - } - .wallet { - display: flex; - align-items: center; - padding: .2rem 0; - margin-bottom: 5px; - - ~ .bp-arrow-right { - top: 14px; - } - - > i { - padding: 0; - position: static; - - > img { - height: 24px; - width: 24px; - padding: 2px; - margin-right: .7rem; - box-shadow: none; - } - } - } - } - .disclosure { - color: $v-light-gray; - font-size: 12px; - text-align: left; - margin: 1rem; - } - - .icon-bitpay-card { - background-image: url("../img/icon-bitpay.svg"); - } - - .bar-header { - border: 0; - background: #1e3186; - .title, .button { - color: #fff; - } - .button { - background-color: transparent; - } - } - .amount-wrapper { - position: relative; - overflow: visible; - - .amount-bg { - content: ''; - top: -1000px; - left: 0; - position: absolute; - height: 1000px; - width: 100%; - background-color: #1e3186; - } - } - .amount { - width: 100%; - text-align: center; - padding: 2rem 1rem 1.5rem 1rem; - height: 160px; - border-color: #172565; - background-color: #1e3186; - background-image: linear-gradient(0deg, #172565, #172565 0%, transparent 0%); - color: #fff; - - &__balance { - margin-bottom: 25px; - font-weight: 600; - font-size: 34px; - } - } - .wallet-details-wallet-info { - bottom: 5px; - } - strong { - line-height: 100%; - } - .select-style { - border: none; - box-shadow: none; - background-color: transparent; - background-image: none; - margin: 0; - padding: 0; - width: 100%; - } - .item-select select { - color: $v-mid-gray; - } - - .get-started { - - margin-top: 20px; - - &__arrow { - font-size: 56px; - opacity: .2; - } - - h1 { - font-size: 28px; - color: #4A4A4A; - } - - &__text { - font-weight: 300; - color: #8e8e8e; - max-width: 300px; - margin: 0 auto; - } - } - .spinner svg { - stroke: white; - fill: white; - } -} diff --git a/src/sass/views/bitpayCardIntro.scss b/src/sass/views/bitpayCardIntro.scss deleted file mode 100644 index 5a048bc4e..000000000 --- a/src/sass/views/bitpayCardIntro.scss +++ /dev/null @@ -1,56 +0,0 @@ -#bitpayCard-intro { - @extend .deflash-blue; - background: url(../img/onboarding-welcome-bg.png), linear-gradient(to bottom, rgba(30, 49, 134, 1) 0%, rgba(17, 27, 73, 1) 100%); - background-position: top center; - background-size: contain; - background-repeat: no-repeat; - color: #fff; - .cta-button { - text-align: center; - position: absolute; - bottom: 55px; - padding: 0 1.5rem; - width: 100%; - } - color: #fff; - height: 100%; - .bar.bar-header { - background: transparent none; - border: 0 none transparent; - } - .bar.bar-stable{ - border-color: transparent; - border:none; - } - .bitpayCard { - &__illustration { - padding: 2rem; - &__img { - width: 100%; - max-width: 400px; - } - } - &__info:before { - font-size: 22px; - line-height: 22px; - margin-top: 6px; - } - } - ion-content { - height: 100%; - .scroll{ - height: 100%; - } - } - .slider__text { - text-align: center; - margin: 40px 20px; - font-size: 1rem; - color: rgba(255, 255, 255, .7); - } - .slider-pager .slider-pager-page { - color: $v-accent-color; - font-size: 8px; - margin: 0; - } -} diff --git a/src/sass/views/bitpayServicesPreferences.scss b/src/sass/views/bitpayServicesPreferences.scss deleted file mode 100644 index 5ef6652f6..000000000 --- a/src/sass/views/bitpayServicesPreferences.scss +++ /dev/null @@ -1,26 +0,0 @@ -#bitpayServicesPreferences { - .item { - .item-title { - display: block; - } - .item-subtitle { - display: block; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - color: $v-light-gray; - font-size: 14px; - } - &.item-icon-right { - .icon-hotspot { - right: 0px; - padding-left: 50px; - } - } - .icon-unlink { - background-image: url("../img/icon-unlink.svg"); - background-repeat: no-repeat; - background-position: center; - } - } -} diff --git a/src/sass/views/buyandsell.scss b/src/sass/views/buyandsell.scss deleted file mode 100644 index 2de0adc76..000000000 --- a/src/sass/views/buyandsell.scss +++ /dev/null @@ -1,38 +0,0 @@ -#buy-and-sell { - .explain { - text-align: center; - margin-top: 1em; - } - .buy-and-sell-icon { - display: inline-block; - width: 50px; - height: 50px; - border-radius: $v-icon-border-radius; - box-shadow: $v-subtle-box-shadow; - background-color: #fa912b; - img { - height: 100%; - width: 100%; - content: $v-bitcoin-icon; - background-color: $v-bitcoin-orange; - border-radius: $v-icon-border-radius; - } - } - .explain { - &-heading { - font-size: 20px; - margin: 1rem; - } - &-description { - margin-left: auto; - margin-right: auto; - opacity: .6; - max-width: 300px; - padding: 0 1em; - font-size: 0.9em; - } - } - .item-note { - color: $v-light-gray; - } -} diff --git a/src/sass/views/confirm.scss b/src/sass/views/confirm.scss deleted file mode 100644 index 9ceee92c4..000000000 --- a/src/sass/views/confirm.scss +++ /dev/null @@ -1,33 +0,0 @@ -#view-confirm { - background-color: #ffffff; - @extend .deflash-blue; - .item-note { - float: none; - .fee-rate { - display: inline-block; - .warn { - color: red; - } - - } - } - .icon-amazon { - background-image: url("../img/icon-amazon.svg"); - } - .tx-details-content > .scroll { - padding-bottom: .25rem; - } - .gravatar-contact { - display: flex; - margin-left: -3px; - span { - margin: 5px 0 0 8px; - } - } - .wallet-name { - margin-top: -3px; - } - .toggle { - cursor: pointer; - } -} diff --git a/src/sass/views/copayers.scss b/src/sass/views/copayers.scss deleted file mode 100644 index 6dabb8758..000000000 --- a/src/sass/views/copayers.scss +++ /dev/null @@ -1,37 +0,0 @@ -#copayers-invitation { - @extend .deflash-blue; - .button-share { - color: #fff; - box-shadow: none; - border-color: transparent; - background: transparent; - padding: 0 10px; - .icon:before { - font-size: 26px; - } - } - .button-cancel { - margin-top: 15px; - background: transparent; - border: none; - font-size: 12px; - color: $v-error-color; - i.icon { - vertical-align: middle; - padding-left: 5px; - } - } - .copayers-secret { - text-align: center; - font-size: 12px; - margin: 10px; - white-space: -moz-pre-wrap !important; - white-space: -pre-wrap; - white-space: -o-pre-wrap; - white-space: pre-wrap; - word-wrap: break-word; - white-space: -webkit-pre-wrap; - word-break: break-all; - white-space: normal; - } -} diff --git a/src/sass/views/custom-amount.scss b/src/sass/views/custom-amount.scss deleted file mode 100644 index 3576e56a0..000000000 --- a/src/sass/views/custom-amount.scss +++ /dev/null @@ -1,85 +0,0 @@ -#custom-amount { - @extend .deflash-blue; - $item-lateral-padding: 20px; - $item-vertical-padding: 10px; - $item-label-color: #6C6C6E; - .button-share { - color: #fff; - box-shadow: none; - border-color: transparent; - background: transparent; - padding: 0 10px; - .icon:before { - font-size: 26px; - } - } - .address { - background: #fff; - overflow: auto; - height: 100%; - .qr-code { - text-align: center; - margin-top: 24vh; - margin-bottom: 7vh; - @media(max-height: 800px) { - margin-top: 18vh; - } - @media(max-height: 700px) { - margin-top: 14vh; - } - @media(max-height: 600px) { - margin-top: 8vh; - } - } - .info { - position: absolute; - width: 100%; - bottom: 0; - .badge { - border-radius: 0; - padding: .5rem; - } - .item { - color: #4A4A4A; - padding-top: $item-vertical-padding; - padding-bottom: $item-vertical-padding; - padding-left: $item-lateral-padding; - - &:not(.item-icon-right) { - padding-right: $item-lateral-padding; - } - - .item-note { - width: 75%; - text-align: right; - } - - .label { - font-size: 14px; - color: $item-label-color; - margin-bottom: 8px; - } - .wallet { - float: right; - overflow: hidden; - } - .wallet .big-icon-svg > .bg { - height: 20px; - width: 20px; - padding: 1px; - box-shadow: none; - vertical-align: text-bottom; - } - .single-line { - display: flex; - align-items: center; - padding-top: 17px; - padding-bottom: 17px; - .item-note { - margin-left: 10px; - } - } - } - } - } -} diff --git a/src/sass/views/export.scss b/src/sass/views/export.scss deleted file mode 100644 index f0298d0d4..000000000 --- a/src/sass/views/export.scss +++ /dev/null @@ -1,30 +0,0 @@ -#export { - .list { - background-color: #fff; - } - .top-tabs.row { - padding: 0; - } - .top-tabs .col { - font-size: 14px; - cursor: pointer; - padding: 10px 5px; - border-bottom-width: 2px; - border-bottom-color: $v-top-tabs-color; - } - input[type="password"] { - border: none; - margin-left: -5px; - padding-left: 4px; - &.incorrect { - padding-left: 3px; - border: 1px solid; - color: #C90505; - } - &.correct { - padding-left: 3px; - border: 1px solid; - color: #00901B; - } - } -} diff --git a/src/sass/views/feedback/complete.scss b/src/sass/views/feedback/complete.scss deleted file mode 100644 index bb2e75ea6..000000000 --- a/src/sass/views/feedback/complete.scss +++ /dev/null @@ -1,89 +0,0 @@ -#complete { - background-color: #fff; - .complete-layout { - display: flex; - flex-direction: column; - height: 100%; - &__expand { - display: flex; - flex-direction: column; - flex-grow: 1; - align-items: center; - justify-content: center; - text-align: center; - opacity: 0; - transition: opacity .3s; - &.fade-in { - opacity: 1; - } - } - } - .share-the-love-illustration { - width: 5rem; - margin: 1rem; - } - .send-feedback-illustration { - height: 16rem; - margin: 1rem; - } - .feedback-title { - font-size: 20px; - font-weight: bold; - color: $v-dark-gray; - margin: 20px 10px; - text-align: center; - } - .subtitle { - padding: 10px 30px 20px; - text-align: center; - color: $v-mid-gray; - } - .icon-svg > img { - height: 16rem; - width: 16rem; - margin: 10px; - } - .socialsharing-icon { - display: inline-block; - width: 60px; - } - .addressbook-icon-svg { - display: inline-block; - width: 50px; - height: 50px; - } - .share-buttons { - padding: 50px 10px 30px; - background-color: $v-subtle-gray; - text-align: center; - -webkit-transform: translateY(100%); - transform: translateY(100%); - opacity: 0; - animation-name: slideUpFadeIn; - animation-duration: .3s; - animation-fill-mode: forwards; - animation-timing-function: cubic-bezier(0.4, 0.0, 0.2, 1); - animation-delay: .2s; - } - .share-buttons__action { - display: inline-block; - color: $v-mid-gray; - font-size: .9rem; - width: 90px; - height: 90px; - margin-bottom: 20px; - } -} - -@keyframes slideUpFadeIn { - from { - -webkit-transform: translateY(100%); - transform: translateY(100%); - opacity: 0; - } - to { - -webkit-transform: translateY(0); - transform: translateY(0); - opacity: 1; - } -} diff --git a/src/sass/views/feedback/rateApp.scss b/src/sass/views/feedback/rateApp.scss deleted file mode 100644 index 8a4cd2b8e..000000000 --- a/src/sass/views/feedback/rateApp.scss +++ /dev/null @@ -1,38 +0,0 @@ -#rate-app { - background-color: #ffffff; - text-align: center; - .skip-rating { - color: $v-dark-gray; - position: absolute; - top: 5px; - right: 10px; - padding: 15px; - } - .icon-svg > img { - width: 80px; - height: 80px; - margin-top: 15px; - } - .feedback-title { - font-size: 20px; - font-weight: bold; - color: $v-dark-gray; - margin: 80px 50px 10px; - text-align: center; - } - .share-the-love-illustration { - width: 5rem; - margin: 1rem; - } - .subtitle { - padding: 10px 30px 20px 40px; - color: $v-mid-gray; - } - .rate-buttons { - bottom: 0; - width: 100%; - position: absolute; - background-color: $v-subtle-gray; - padding: 30px 0 15px; - } -} diff --git a/src/sass/views/feedback/rateCard.scss b/src/sass/views/feedback/rateCard.scss deleted file mode 100644 index 9d57643d6..000000000 --- a/src/sass/views/feedback/rateCard.scss +++ /dev/null @@ -1,18 +0,0 @@ -#rate-card { - .item-heading { - font-weight: 700; - } - .row { - border: none; - } - .item-icon-right { - margin: 0; - } - .feedback-flow-button { - margin-bottom: 20px; - } - .icon-svg > img { - height: 1.8rem; - margin-bottom: 5px; - } -} diff --git a/src/sass/views/feedback/send.scss b/src/sass/views/feedback/send.scss deleted file mode 100644 index 807c4f8c5..000000000 --- a/src/sass/views/feedback/send.scss +++ /dev/null @@ -1,54 +0,0 @@ -#send-feedback { - @extend .deflash-blue; - background-color: #ffffff; - .row { - border: none; - } - .skip { - color: rgba(255, 255, 255, 0.3); - } - .feedback-heading { - padding-top: 20px - } - .feedback-title { - padding-left: 10px; - font-size: 20px; - font-weight: bold; - color: $v-dark-gray; - } - .rating { - text-align: right; - padding-right: 15px; - } - .comment { - padding: 0 20px 20px; - font-size: 1rem; - line-height: 1.5em; - font-weight: 300; - color: $v-dark-gray; - } - .user-feedback { - border-top: 1px solid $v-subtle-gray; - border-bottom: 1px solid $v-subtle-gray; - padding: 20px; - width: 100%; - margin-bottom: 20px; - -webkit-appearance: none; - } - .send-feedback-star { - height: 1rem; - margin-left: 5px; - } - .form-fade-in { - opacity: 0; - animation-name: fadeIn; - animation-duration: .5s; - animation-fill-mode: forwards; - animation-timing-function: ease-in; - } -} - -@keyframes fadeIn { - from { opacity: 0; } - to { opacity: 1; } -} diff --git a/src/sass/views/import.scss b/src/sass/views/import.scss deleted file mode 100644 index d114bb575..000000000 --- a/src/sass/views/import.scss +++ /dev/null @@ -1,25 +0,0 @@ -#import { - .top-tabs.row { - padding: 0; - } - .top-tabs .col { - font-size: 14px; - cursor: pointer; - padding: 10px 5px; - border-bottom-width: 2px; - border-bottom-color: $v-top-tabs-color; - } - .qr-scan-icon a { - z-index: 10; - display: block; - position: absolute; - top: 14px; - right: 0; - padding: 0 10px; - font-size: 24px; - cursor: pointer; - } - .qr-icon { - line-height: 45px; - } -} diff --git a/src/sass/views/includes/accountSelector.scss b/src/sass/views/includes/accountSelector.scss deleted file mode 100644 index 4bf34eca5..000000000 --- a/src/sass/views/includes/accountSelector.scss +++ /dev/null @@ -1,79 +0,0 @@ -account-selector { - - $border-color: #EFEFEF; - text-align: left; - - .bp-action-sheet__sheet { - padding-left: 2rem; - padding-right: .75rem; - } - - .account-selector { - .account { - border: 0; - padding-right: 0; - padding-top: 0; - padding-left: 65px; - padding-bottom: 0; - margin-bottom: 1px; - overflow: visible; - - > i { - padding: 0; - margin-left: -5px; - - > img { - height: 39px; - width: 39px; - padding: 4px; - background-color: $royal; - - &.icon-add { - background-color: $v-light-gray; - } - - } - } - } - .account-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; - } - } - .account-details { - flex-grow: 1; - - .account-name { - padding-bottom: 5px; - } - - .account-email { - color: #3A3A3A; - font-family: "Roboto-Light"; - } - - .account-add { - padding-bottom: 16px; - padding-top: 11px; - } - - } - } - -} diff --git a/src/sass/views/includes/actionSheet.scss b/src/sass/views/includes/actionSheet.scss deleted file mode 100644 index 75319e2b1..000000000 --- a/src/sass/views/includes/actionSheet.scss +++ /dev/null @@ -1,60 +0,0 @@ -action-sheet { - .bp-action-sheet { - $border-color: #EFEFEF; - - &__sheet { - background: #fff; - width: calc(100% + 1px); - position: fixed; - bottom: 0; - left: 50%; - -webkit-transform: translateY(100%) translateX(-50%); - transform: translateY(100%) translateX(-50%); - transition: transform 250ms cubic-bezier(0.4, 0.0, 0.2, 1); - z-index: 100; - padding-top: 1.75rem; - padding-left: 1.25rem; - padding-right: 1.25rem; - color: #2f2f2f; - padding-bottom: 3.5rem; - max-width: 550px; - max-height: 100vh; - overflow: scroll; - - &.slide-up { - -webkit-transform: translateY(0) translateX(-50%); - transform: translateY(0) translateX(-50%); - box-shadow: 0px 2px 13px 3px rgba(0, 0, 0, .3); - } - - .back-arrow { - padding-bottom: 1.25rem; - cursor: pointer; - } - - .header { - font-weight: 600; - padding-bottom: 1rem; - border-bottom: 1px solid $border-color; - margin-bottom: 1px; - } - } - - &__backdrop { - height: 100%; - width: 100%; - position: fixed; - top: 0; - left: 0; - background: rgba(0, 0, 0, 0); - transition: background 250ms cubic-bezier(0.4, 0.0, 0.2, 1);; - pointer-events: none; - z-index: 99; - - &.fade-in { - background: rgba(0, 0, 0, .4); - pointer-events: all; - } - } - } -} diff --git a/src/sass/views/includes/checkBar.scss b/src/sass/views/includes/checkBar.scss deleted file mode 100644 index 337635505..000000000 --- a/src/sass/views/includes/checkBar.scss +++ /dev/null @@ -1,62 +0,0 @@ -#check-bar { - $bar-widths: ( - // defined by user, example: - // error: 10%, - // warn: 37%, - // info: 65%, - // debug: 90% - ); - .item { - padding: 40px; - } - .checkbox-icon { - width: 22px; - height: 22px; - } - .checkbox-icon:after { - border: none; - } - .check-bar { - position: relative; - .initial-bar-default { - border: 2px solid $v-success-color; - width: 0%; - top: 40px; - z-index: 99; - border-radius: 10px; - position: absolute; - } - .initial-bar { - } - @each $name, $bar-width in $bar-widths { - .fill-bar-#{$name} { - width: $bar-width !important; - transition: width .2s; - } - } - .base-bar { - position: absolute; - width: 100%; - border-bottom: 2px solid #f2f2f2; - top: 41px; - z-index: 98; - left: 0px; - } - &.list { - margin-top: 20px; - display: flex; - justify-content: space-between; - .custom-checkbox { - text-align: -webkit-center; - .item { - border-style: none; - z-index: 999; - background-color: inherit; - } - label { - padding-top: 5px; - } - } - } - } -} diff --git a/src/sass/views/includes/clickToAccept.scss b/src/sass/views/includes/clickToAccept.scss deleted file mode 100644 index a38455ac3..000000000 --- a/src/sass/views/includes/clickToAccept.scss +++ /dev/null @@ -1,63 +0,0 @@ -click-to-accept { - - position: fixed; - bottom: 0; - height: 92px; - width: 100%; - - .click-to-accept { - - &__button.button.button-primary.button-standard { - height: 100%; - max-width: 9999px; - width: 100%; - } - - &__button.disable { - pointer-events: none; - } - - &__status-text { - position: absolute; - top: 0; - left: 0; - height: 100%; - width: 100%; - z-index: 4; - -webkit-transform: translateY(2rem); - transform: translateY(2rem); - opacity: 0; - pointer-events: none; - display: flex; - align-items: center; - justify-content: center; - - &.enter { - transition: transform 250ms ease, opacity 250ms ease; - -webkit-transform: translateY(0); - transform: translateY(0); - opacity: 1; - } - - > img { - margin-right: 10px; - animation-name: spin; - animation-duration: 500ms; - animation-iteration-count: infinite; - animation-timing-function: linear; - } - } - - } - - @keyframes spin { - from { - -webkit-transform:rotate(0deg); - transform:rotate(0deg); - } - to { - -webkit-transform:rotate(360deg); - transform:rotate(360deg); - } - } -} diff --git a/src/sass/views/includes/incomingDataMenu.scss b/src/sass/views/includes/incomingDataMenu.scss deleted file mode 100644 index 2ce6e462a..000000000 --- a/src/sass/views/includes/incomingDataMenu.scss +++ /dev/null @@ -1,81 +0,0 @@ -incoming-data-menu { - .bp-action-sheet__sheet { - padding-left: 0; - padding-right: 0; - padding-top: 0; - padding: 0; - } - .incoming-data-menu { - &__header { - padding-bottom: 1rem; - font-size: 16px; - } - - &__item { - border-top: 1px solid #f7f4f4; - font-size: 14px; - padding: 1rem 1.25rem; - color: #4A4A4A; - display: flex; - align-items: center; - - &.head { - display: block; - padding-top: 1.5rem; - } - - &:first-child { - border: 0; - } - - > img { - margin-left: .2rem; - position: absolute; - } - - &__text { - padding-left: 2.7rem; - } - } - - &__cancel { - background: #EDEDED; - font-size: 18px; - height: 66px; - display: flex; - align-items: center; - justify-content: center; - color: #3A3A3A; - border-top: 1px solid #e4e4e4; - - &:active { - background: #dadada; - } - } - &__url { - background: rgba(203, 203, 203, .13); - padding: .5rem; - padding-left: 0; - border-radius: 4px; - display: flex; - align-items: center; - margin-bottom: .5rem; - - &__icon { - padding: 0 9px 0 10px; - display: flex; - align-items: center; - } - - &__text { - color: #4A4A4A; - font-size: 14px; - border-left: 1px solid #E4E4E4; - padding-left: .7rem;//1rem; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - } - } - } -} diff --git a/src/sass/views/includes/itemSelector.scss b/src/sass/views/includes/itemSelector.scss deleted file mode 100644 index ad44217d5..000000000 --- a/src/sass/views/includes/itemSelector.scss +++ /dev/null @@ -1,61 +0,0 @@ -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: $v-accent-color; - 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/includes/logOptions.scss b/src/sass/views/includes/logOptions.scss deleted file mode 100644 index 89dfef121..000000000 --- a/src/sass/views/includes/logOptions.scss +++ /dev/null @@ -1,88 +0,0 @@ -log-options { - - $border-color: #EFEFEF; - - .bp-action-sheet__sheet { - padding-left: 2rem; - padding-right: .75rem; - } - - .entry { - border: 0; - padding-right: 0; - padding-top: 0; - padding-bottom: 0; - margin-bottom: 1px; - overflow: visible; - - > i { - color: $v-accent-color; - padding: 0 0 5px 0; - margin-left: -5px; - - > img { - height: 39px; - width: 39px; - padding: 4px; - } - } - } - - .entry-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: ''; - } - } - - .entry-details { - flex-grow: 1; - - .entry-name { - padding-bottom: 5px; - } - } - - #check-bar { - $bar-widths: ( - // Order must match weight, see services/historicLog.js - error: 10%, - warn: 35%, - info: 65%, - debug: 90% - ); - .check-bar { - .initial-bar { - border: 2px solid $v-accent-color; - } - @each $name, $bar-width in $bar-widths { - .fill-bar-#{$name} { - width: $bar-width !important; - } - } - } - - .head .checkbox-icon { - width: 22px; - height: 22px; - top: 0; - } - - .checkbox-icon { - width: 10px; - height: 10px; - top: 6px; - } - } -} diff --git a/src/sass/views/includes/menu-popover.scss b/src/sass/views/includes/menu-popover.scss deleted file mode 100644 index 93139b42d..000000000 --- a/src/sass/views/includes/menu-popover.scss +++ /dev/null @@ -1,12 +0,0 @@ -#menu-popover { - border-radius: 5px; - .list { - .item { - cursor: pointer; - cursor: hand; - &:hover { - background-color: #E4E2E2; - } - } - } -} diff --git a/src/sass/views/includes/modals/backup-needed-modal.scss b/src/sass/views/includes/modals/backup-needed-modal.scss deleted file mode 100644 index 9e9ed5620..000000000 --- a/src/sass/views/includes/modals/backup-needed-modal.scss +++ /dev/null @@ -1,12 +0,0 @@ -#backup-needed-modal{ - .button.button-secondary { - font-size: 14px; - margin-top: 0; - } - .button { - display: block; - margin-right: auto; - margin-left: auto; - margin-top: 1rem; - } -} diff --git a/src/sass/views/includes/modals/choose-fee-level.scss b/src/sass/views/includes/modals/choose-fee-level.scss deleted file mode 100644 index 920502698..000000000 --- a/src/sass/views/includes/modals/choose-fee-level.scss +++ /dev/null @@ -1,57 +0,0 @@ -#choose-fee-level { - @extend .deflash-blue; - .selected-fee-level { - text-align: center; - background: #f9f9f9; - font-size: 11px; - height: 140px; - padding-top: 25px; - .row { - padding: 0; - } - .col { - padding-top: 15px; - } - .separator { - border-left: 1px solid #d9d9df; - height: 75%; - } - .value { - font-size: 20px; - margin-bottom: 10px; - } - .rate .list { - margin-bottom: 0; - } - - .item-input { - input[type="number"] { - text-align: right; - padding-right: 90px; - } - .unit { - color: #9c9c9c; - background: #f2f2f2; - position: absolute; - right: 0; - top: 0; - padding: 15px 10px 12px 10px; - } - } - } - .error-fee { - padding: 8px 10px; - color: $v-error-color; - font-size: 12px; - text-align: center; - i { - margin-right: 8px; - } - } - .box-notification { - margin: 0; - padding: 1px; - text-align: center; - } - -} diff --git a/src/sass/views/includes/modals/modals.scss b/src/sass/views/includes/modals/modals.scss deleted file mode 100644 index 730624e7e..000000000 --- a/src/sass/views/includes/modals/modals.scss +++ /dev/null @@ -1,78 +0,0 @@ -.popup-modal { - background: #fff; - top: 50%; - left:50%; - position: absolute; - z-index: 10; - width: 90%; - max-width: 350px; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); - border-radius: $v-unmistakable-radius; - text-align: center; - &-header { - &-success { - background: $v-success-color; - } - &-warning { - background: $v-warning-color; - } - padding: 1rem; - border-radius: $v-unmistakable-radius $v-unmistakable-radius 0 0; - min-height: 120px; - &-img{ - height: 6rem; - background-size: contain; - margin-top: .3rem; - background-repeat: no-repeat; - background-position: center; - } - &-img-success { - background-image: url('../img/onboarding-success.svg'); - height: 6rem; - background-size: contain; - margin-top: .3rem; - } - &-img-warning { - background-image: url('../img/warning.svg'); - height: 6rem; - background-size: contain; - margin-top: .3rem; - } - } - &-content { - padding: 0rem 1rem; - } - &-heading { - margin:0 0 1rem; - color: $v-dark-gray; - font-weight: bold; - font-size: 1.3rem; - margin-top: 1rem; - line-height: 1.3; - } - &-message { - color: $v-mid-gray; - font-weight: 200; - } - .button { - margin-top: 1rem; - } - &-content-success { - .button { - color: $v-success-color !important; - } - } - &-content-warning { - .button { - color: $v-warning-color !important; - } - } -} - -.modal-backdrop.active { - background: rgba(0, 0, 0, .8); - } - -@import "backup-needed-modal"; -@import "screenshot-warning-model"; diff --git a/src/sass/views/includes/modals/screenshot-warning-model.scss b/src/sass/views/includes/modals/screenshot-warning-model.scss deleted file mode 100644 index 64662f0ef..000000000 --- a/src/sass/views/includes/modals/screenshot-warning-model.scss +++ /dev/null @@ -1,7 +0,0 @@ -#screenshot-warning-modal{ - .popup-modal-header{ - &-img{ - background-image: url('../img/no-screenshot.svg'); - } - } -} diff --git a/src/sass/views/includes/pin.scss b/src/sass/views/includes/pin.scss deleted file mode 100644 index fe8cc118b..000000000 --- a/src/sass/views/includes/pin.scss +++ /dev/null @@ -1,93 +0,0 @@ -#pin { - background-color: #FAFAFA; - width: 100%; - height: 100%; - top: 0; - left: 0; - .content { - text-align: center; - position: fixed; - width: 100%; - height: 100%; - .app-icon { - margin-top: -55px; - .big-icon-svg { - > .bg { - background-image: url("../img/app/icon.png"); - height: 60px; - width: 60px; - margin: auto; - } - } - } - .block-text { - align-items: center; - background-color: #F1F1F1; - height: 30%; - border-bottom: 1px solid #c5c5c5; - .message { - margin: auto; - } - span { - width: 60%; - margin: 10% auto; - } - @media(min-width: 480px) { - span { - font-size: 30px; - width: 90%; - } - } - } - .block-code { - width: 50%; - margin: auto; - @media(min-width: 480px) { - width: 25%; - } - } - .block-buttons { - .col { - padding: 5%; - } - color: $v-dark-gray; - font-size: 1.7rem; - font-family: $v-font-family-light; - cursor: pointer; - position: absolute; - bottom: 3%; - left: 5%; - width: 90%; - @media(min-width: 480px) { - left: 15%; - width: 70%; - max-height: 55%; - } - } - } - @mixin circle { - border-radius: 50%; - box-shadow: 0 0 3px 0px #5b5b5b; - transition: background-color .2s ease-in-out; - padding: 7%; - margin: 5%; - } - .circle-copay { - @include circle; - border: 1px solid $v-accent-color; - } - .circle-bitpay { - @include circle; - border: 1px solid $v-primary-color; - } - .filled-copay { - background-color: $v-accent-color; - } - .filled-bitpay { - background-color: #1f3598; - } - .error { - color: #f13333; - max-width: 70%; - } -} diff --git a/src/sass/views/includes/slideToAccept.scss b/src/sass/views/includes/slideToAccept.scss deleted file mode 100644 index 75502c6a8..000000000 --- a/src/sass/views/includes/slideToAccept.scss +++ /dev/null @@ -1,134 +0,0 @@ -slide-to-accept { - position: fixed; - bottom: 0; - height: 92px; - width: 100%; - background: $v-slide-bg-color; - - @mixin center-vertically { - display: flex; - align-items: center; - height: 100%; - position: absolute; - } - - .slide { - &__listener { - height: 100%; - width: 100%; - overflow: hidden; - position: relative; - } - &__slider { - @include center-vertically; - height: 100%; - width: 100%; - background: $v-slider-bg-color; - -webkit-transform: translateX(0); - transform: translateX(0); - margin-left: -100%; - z-index: 2; - - &::before { - @include center-vertically; - content: ''; - width: 10000px; - left: -10000px + 1; - background: $v-slider-bg-color; - } - - &::after { - @include center-vertically; - content: ''; - width: 15px; - right: -10px; - background: $v-slider-bg-color; - } - - &__tip { - @include center-vertically; - width: 124px; - height: 116px; - background: $v-slider-bg-color; - right: -71px; - border-radius: 50%; - top: 50%; - -webkit-transform: translateY(-47%); - transform: translateY(-47%); - } - - } - &__bitcoin { - @include center-vertically; - left: 20px; - z-index: 3; - - > img { - -webkit-transform: rotateZ(-5deg); - transform: rotateZ(-5deg); - } - } - &__button-text { - @include center-vertically; - - justify-content: center; - top: 0; - left: 0; - width: 100%; - color: $v-slide-text-color; - font-size: 18px; - font-weight: 600; - letter-spacing: .03rem; - z-index: 1; - - .justify { - width: 50%; - text-align: center; - } - } - - &__status-text { - @include center-vertically; - justify-content: center; - color: $v-slide-text-color; - z-index: 4; - width: 100%; - font-size: 17px; - letter-spacing: 0.02rem; - -webkit-transform: translateY(2rem); - transform: translateY(2rem); - opacity: 0; - - &.enter { - transition: transform 250ms ease, opacity 250ms ease; - -webkit-transform: translateY(0); - transform: translateY(0); - opacity: 1; - } - - > img { - margin-right: 10px; - animation-name: spin; - animation-duration: 500ms; - animation-iteration-count: infinite; - animation-timing-function: linear; - } - } - - &__arrow { - @include center-vertically; - right: 20px; - } - } - - @keyframes spin { - from { - -webkit-transform:rotate(0deg); - transform:rotate(0deg); - } - to { - -webkit-transform:rotate(360deg); - transform:rotate(360deg); - } - } -} diff --git a/src/sass/views/includes/slideToAcceptSuccess.scss b/src/sass/views/includes/slideToAcceptSuccess.scss deleted file mode 100644 index bf6c5e269..000000000 --- a/src/sass/views/includes/slideToAcceptSuccess.scss +++ /dev/null @@ -1,107 +0,0 @@ -slide-to-accept-success { - height: 100%; - width: 100%; - position: fixed; - top: 0; - left: 0; - z-index: 99999; - text-align: center; - display: flex; - align-items: center; - justify-content: center; - - .slide-success { - $duration: 400ms; - &__windows-background { - background: $v-success-bg-color; - height: 100%; - width: 100%; - position: fixed; - } - &__background { - $start-radius: 5; - $scale-factor: 20; - height: 10vmax; - width: 10vmax; - background: $v-slider-bg-color; - bottom: 0; - position: absolute; - left: calc(50% - 5vmax); - border-radius: 50%; - transition: transform $duration*1.5 ease, background $duration*1.5 ease; - - &.fill-screen { - -webkit-transform: scale3d($scale-factor, $scale-factor, 1) translateY(-40%); - transform: scale3d($scale-factor, $scale-factor, 1) translateY(-40%); - background: $v-success-bg-color; - } - } - - &__content { - position: relative; - z-index: 1; - margin-top: -20vh; - - > img { - margin-bottom: 1.8rem; - -webkit-transform: translateY(5rem); - transform: translateY(5rem); - opacity: 0; - transition: transform $duration ease, opacity $duration ease; - transition-delay: 200ms; - - &.reveal { - -webkit-transform: translateY(0); - transform: translateY(0); - opacity: 1; - } - } - - &__header { - color: #FFFFFF; - font-size: 26px; - -webkit-transform: translateY(5rem); - transform: translateY(5rem); - opacity: 0; - transition: transform $duration ease, opacity $duration ease; - transition-delay: 250ms; - - &.reveal { - -webkit-transform: translateY(0); - transform: translateY(0); - opacity: 1; - } - } - } - - &__footer { - position: absolute; - left: 0; - bottom: 0; - padding: 0 1.75rem; - width: 100%; - -webkit-transform: translateY(5rem); - transform: translateY(5rem); - opacity: 0; - transition: transform $duration ease, opacity $duration ease; - transition-delay: 250ms; - - &.reveal { - -webkit-transform: translateY(0); - transform: translateY(0); - opacity: 1; - } - - &__btn { - display: block; - color: #FFFFFF; - font-size: 18px; - font-weight: 600; - letter-spacing: 2.86px; - padding: 1rem 0 1.1rem; - border-top: 1px solid rgba(255, 255, 255, .45); - cursor: pointer; - } - } - } -} diff --git a/src/sass/views/includes/tx-details.scss b/src/sass/views/includes/tx-details.scss deleted file mode 100644 index 5248dcab8..000000000 --- a/src/sass/views/includes/tx-details.scss +++ /dev/null @@ -1,13 +0,0 @@ -#tx-details { - .action-created.action-accepted { - color: green; - } - - .action-rejected { - color: red; - } -} - - - - diff --git a/src/sass/views/includes/tx-status.scss b/src/sass/views/includes/tx-status.scss deleted file mode 100644 index 0e0f52a94..000000000 --- a/src/sass/views/includes/tx-status.scss +++ /dev/null @@ -1,10 +0,0 @@ -#tx-status { - .popup-txsent { - font-size: 5rem; - color: #4A90E2; - } - .popup-txsigned i, .popup-txrejected i { - font-size: 5rem; - color: #4A90E2; - } -} diff --git a/src/sass/views/includes/txp-details.scss b/src/sass/views/includes/txp-details.scss deleted file mode 100644 index 8d21570f4..000000000 --- a/src/sass/views/includes/txp-details.scss +++ /dev/null @@ -1,283 +0,0 @@ -#txp-details, -#view-confirm { - @extend .deflash-blue; - $item-lateral-padding: 20px; - $item-vertical-padding: 10px; - $item-border-color: #EFEFEF; - $item-label-color: #6C6C6E; - .item-note { - float: none; - .fee-rate { - display: inline-block; - } - } - .list { - background: #f5f5f5; - } - .add-bottom-for-cta { - bottom: 92px; - } - .head { - padding: 30px $item-lateral-padding 3rem; - border-top: 0; - - .sending-label { - display: flex; - font-size: 18px; - align-items: center; - margin-bottom: 1.5rem; - - img { - margin-right: 1rem; - height: 35px; - width: 35px; - } - } - .amount-label{ - line-height: 30px; - .amount{ - font-size: 38px; - margin-bottom: .5rem; - - > .unit { - font-family: "Roboto-Light"; - } - } - .alternative { - font-size: 16px; - font-family: "Roboto-Light"; - color: #9B9B9B; - } - } - } - .item { - border-color: $item-border-color; - &-note { - word-break: keep-all; - } - } - .info { - span { - display: block; - } - .badge { - border-radius: 0; - padding: .5rem; - } - .item { - color: #4A4A4A; - padding-top: $item-vertical-padding; - padding-bottom: $item-vertical-padding; - padding-left: $item-lateral-padding; - - &:not(.item-icon-right) { - padding-right: $item-lateral-padding; - } - - .label { - font-size: 14px; - color: $item-label-color; - margin-bottom: 8px; - } - - &.single-line { - display: flex; - align-items: center; - padding-top: 17px; - padding-bottom: 17px; - - .label { - margin: 0; - flex-grow: 1; - } - } - &.low-fees { - display: flex; - font-size: 14px; - color: #777; - align-items: center; - i { - padding-right: 20px; - } - } - } - .toggle-unconfirmed { - padding-bottom: 15px; - } - .toggle-label { - margin-top: 5px; - font-size: 14px; - color: $item-label-color; - } - .item-divider { - padding-top: 1.2rem; - color: $item-label-color; - font-size: 15px; - } - .payment-proposal-to { - width: 100%; - display: inline-block; - padding: 8px 13px; - background-color: rgba(203, 203, 203, .13); - margin-top: 10px; - margin-bottom: 5px; - display: flex; - align-items: center; - border-radius: 4px; - - img { - padding: .2rem; - padding-left: 0; - border-right: 1px solid #e4e4e4; - padding-right: 12px; - } - - i { - color: grey; - position: inherit; - padding: 0 10px; - float: right; - } - contact { - margin-left: 15px; - font-size: 14px; - display: inline-block; - } - } - .wallet { - display: flex; - align-items: center; - padding: .2rem 0; - margin-bottom: 5px; - - > i { - padding: 0; - position: static; - - > img { - height: 24px; - width: 24px; - padding: 2px; - margin-right: .7rem; - box-shadow: none; - } - } - } - - .timeline-item { - border: 0; - &:nth-child(2) { - border-top: 1px solid $item-border-color; - } - &:last-child { - border-bottom: 1px solid $item-border-color; - } - padding: 17px $item-lateral-padding; - - > * { - padding-right: 0; - } - } - - .timeline-content { - display: flex; - align-items: center; - - &__icon { - display: flex; - align-items: center; - min-width: 40px; - padding-right: 1rem; - padding-left: 1rem; - margin-right: .5rem; - position: relative; - - &::before { - content: ''; - background: #e8e8e8; - height: 100px; - width: 1px; - position: absolute; - left: 50%; - -webkit-transform: translateX(-50%) translateY(-100%); - transform: translateX(-50%) translateY(-100%); - top: 0; - } - - &::after { - content: ''; - background: #e8e8e8; - height: 100px; - width: 1px; - position: absolute; - left: 50%; - -webkit-transform: translateX(-50%) translateY(100%); - transform: translateX(-50%) translateY(100%); - bottom: 0; - } - - > div { - border: 3px solid $v-success-color; - border-radius: $v-icon-border-radius; - display: flex; - height: 26px; - width: 26px; - font-size: 13px; - align-items: center; - justify-content: center; - font-weight: 600; - vertical-align: middle; - color: $v-success-color; - - &.rejected { - background: #E15061; - border-color: #E15061; - color: #FFFFFF; - font-family: "Roboto-Bold"; - font-size: 19px; - } - } - } - - &__label { - flex-grow: 1; - - > .action { - font-size: 16px; - } - - > .name { - color: #aaa; - font-size: 14px; - } - } - } - } - .proposal-deletion-help { - color: $item-label-color; - padding: 1rem 2rem; - } - - .view-on-blockchain-btn { - background: #e8e7e7; - color: rgba(58, 58, 58, .6); - margin-bottom: 1.5rem; - } - .glidera-success { - padding: 20px; - margin-top: 15px; - span { - font-size: 15px; - display: block; - } - } - .glidera-explanation { - padding: 0 1rem; - white-space: normal; - } - .glidera-description { - text-align: center; - font-size: 12px; - color: $v-mid-gray; - } -} diff --git a/src/sass/views/includes/walletActivity.scss b/src/sass/views/includes/walletActivity.scss deleted file mode 100644 index 0d5fb0496..000000000 --- a/src/sass/views/includes/walletActivity.scss +++ /dev/null @@ -1,35 +0,0 @@ -.wallet-activity { - - &-not-pending { - opacity: 0.6; - filter: alpha(opacity=60); /* For IE8 and earlier */ - } - - &-amount { - float: right; - font-size: 18px; - @media(max-width: 320px) { - text-align: right; - } - } - - &-note { - margin-top: 3px; - font-size: 12px!important; - - &-child { - line-height: 30px; - vertical-align: middle; - } - - > i { - font-size: 21px; - margin-right: 8px; - } - - > time { - float: right; - } - } - -} diff --git a/src/sass/views/includes/walletSelector.scss b/src/sass/views/includes/walletSelector.scss deleted file mode 100644 index a0b382f90..000000000 --- a/src/sass/views/includes/walletSelector.scss +++ /dev/null @@ -1,67 +0,0 @@ -wallet-selector { - - $border-color: #EFEFEF; - - .bp-action-sheet__sheet { - padding-left: 2rem; - padding-right: .75rem; - } - - .wallet-selector { - .wallet { - border: 0; - padding-right: 0; - padding-top: 0; - padding-left: 65px; - padding-bottom: 0; - margin-bottom: 1px; - overflow: visible; - - > i { - padding: 0; - margin-left: -5px; - - > img { - height: 39px; - width: 39px; - padding: 4px; - } - } - } - .wallet-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; - } - } - .wallet-details { - flex-grow: 1; - - .wallet-name { - padding-bottom: 5px; - } - - .wallet-balance { - color: #3A3A3A; - font-family: "Roboto-Light"; - } - - } - } - -} diff --git a/src/sass/views/includes/wallets.scss b/src/sass/views/includes/wallets.scss deleted file mode 100644 index a1baaafaf..000000000 --- a/src/sass/views/includes/wallets.scss +++ /dev/null @@ -1,95 +0,0 @@ -.wallets { - .slides { - .swiper-container { - width: 85% !important; - overflow: visible; - } - .card { - max-width: 350px; - box-shadow:$v-subtle-box-shadow; - padding:0; - border-radius: 6px; - margin: 0 auto; - @media (min-width: 500px) { - & { - width: 350px; - position: relative; - margin: 1.5rem auto 0; - } - } - .item{ - padding: 3vh 3vw 3vh 3vw; - span{ - clear:both; - width: 100%; - display: inline-block; - &.wallet-name{ - font-size:16px; - width: 70%; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - font-weight: 600; - } - &.wallet-number{ - visibility: hidden; - } - &.visible{ - visibility: visible !important; - } - } - .big-icon-svg{ - & > .bg{padding:.3rem;width: 40px;height:40px;} - } - } - } - .swiper-slide { - width: 100% !important; - max-width: 450px; - @media (min-width: 500px) { - & { - margin: 0 auto; - display: block; - float: none; - max-width: none; - } - &.swiper-slide-next .card { - float: left; - } - &.swiper-slide-prev .card { - float: right; - } - } - &.swiper-slide-prev, - &.swiper-slide-next { - opacity: .3; - -webkit-transform: scale(.8); - transform: scale(.8); - } - &.swiper-slide-prev { - left: 5vw; - } - &.swiper-slide-next { - left: -5vw; - } - } - } - .swiper-pagination { - visibility: hidden; - } -} - -.platform-browser { - .wallets { - .slides { - .swiper-slide { - &.swiper-slide-prev, - &.swiper-slide-next { - &:hover { - opacity: 1; - } - } - } - } - } -} diff --git a/src/sass/views/integrations/amazon.scss b/src/sass/views/integrations/amazon.scss deleted file mode 100644 index 0139f8784..000000000 --- a/src/sass/views/integrations/amazon.scss +++ /dev/null @@ -1,137 +0,0 @@ -#amazon { - $item-lateral-padding: 20px; - $item-vertical-padding: 10px; - $item-border-color: #EFEFEF; - $item-label-color: #6C6C6E; - @extend .deflash-blue; - .icon-amazon { - background-image: url("../img/icon-amazon.svg"); - } - .spinner svg { - stroke: black; - fill: black; - } - - .add-bottom-for-cta { - bottom: 92px; - } - .head { - padding: 30px $item-lateral-padding 4rem; - border-top: 0; - - .sending-label { - display: flex; - font-size: 18px; - align-items: center; - margin-bottom: 1.8rem; - - img { - margin-right: 1rem; - height: 35px; - width: 35px; - } - - .big-icon-svg { - margin-right: 0.6rem; - } - - } - .amount-label{ - line-height: 30px; - .amount{ - font-size: 38px; - margin-bottom: .5rem; - - > .unit { - font-family: "Roboto-Light"; - } - } - .alternative { - font-size: 12px; - font-family: "Roboto-Light"; - color: #9B9B9B; - } - } - } - .item { - border-color: $item-border-color; - } - .info { - .badge { - border-radius: 0; - padding: .5rem; - } - .item { - color: #4A4A4A; - padding-top: $item-vertical-padding; - padding-bottom: $item-vertical-padding; - padding-left: $item-lateral-padding; - - &:not(.item-icon-right) { - padding-right: $item-lateral-padding; - } - - .label { - font-size: 14px; - color: $item-label-color; - margin-bottom: 8px; - } - - .capitalized { - text-transform: capitalize; - } - - .wallet .big-icon-svg > .bg { - height: 24px; - width: 24px; - padding: 2px; - box-shadow: none; - vertical-align: middle; - } - - .total-amount { - font-weight: bold; - } - - &.single-line { - display: flex; - align-items: center; - padding-top: 17px; - padding-bottom: 17px; - - .label { - margin: 0; - flex-grow: 1; - } - } - } - .item-divider { - padding-top: 1.2rem; - color: $item-label-color; - font-size: 15px; - } - .wallet { - display: flex; - align-items: center; - padding: .2rem 0; - margin-bottom: 5px; - - ~ .bp-arrow-right { - top: 14px; - } - - > i { - padding: 0; - position: static; - - > img { - height: 24px; - width: 24px; - padding: 2px; - margin-right: .7rem; - box-shadow: none; - } - } - } - } -} diff --git a/src/sass/views/integrations/coinbase.scss b/src/sass/views/integrations/coinbase.scss deleted file mode 100644 index e8ddfde2d..000000000 --- a/src/sass/views/integrations/coinbase.scss +++ /dev/null @@ -1,130 +0,0 @@ -#coinbase { - $item-lateral-padding: 20px; - $item-vertical-padding: 10px; - $item-border-color: #EFEFEF; - $item-label-color: #6C6C6E; - @extend .deflash-blue; - - .spinner svg { - stroke: #0067c8; - fill: #0067c8; - } - - .add-bottom-for-cta { - bottom: 92px; - } - .head { - padding: 30px $item-lateral-padding 4rem; - border-top: 0; - - .sending-label { - display: flex; - font-size: 18px; - align-items: center; - margin-bottom: 1.5rem; - - img { - margin-right: 1rem; - height: 35px; - width: 35px; - } - } - .amount-label{ - line-height: 30px; - .amount{ - font-size: 38px; - margin-bottom: .5rem; - - > .unit { - font-family: "Roboto-Light"; - } - } - .alternative { - font-size: 16px; - font-family: "Roboto-Light"; - color: #9B9B9B; - } - } - } - .item { - border-color: $item-border-color; - } - .info { - .badge { - border-radius: 0; - padding: .5rem; - } - .item { - color: #4A4A4A; - padding-top: $item-vertical-padding; - padding-bottom: $item-vertical-padding; - padding-left: $item-lateral-padding; - - &:not(.item-icon-right) { - padding-right: $item-lateral-padding; - } - - .label { - font-size: 14px; - color: $item-label-color; - margin-bottom: 8px; - } - - .capitalized { - text-transform: capitalize; - } - - .wallet .big-icon-svg > .bg { - height: 24px; - width: 24px; - padding: 2px; - box-shadow: none; - vertical-align: middle; - } - - .total-amount { - font-weight: bold; - } - - &.single-line { - display: flex; - align-items: center; - padding-top: 17px; - padding-bottom: 17px; - - .label { - margin: 0; - flex-grow: 1; - } - } - } - .item-divider { - padding-top: 1.2rem; - color: $item-label-color; - font-size: 15px; - } - .wallet { - display: flex; - align-items: center; - padding: .2rem 0; - margin-bottom: 5px; - - ~ .bp-arrow-right { - top: 14px; - } - - > i { - padding: 0; - position: static; - - > img { - height: 24px; - width: 24px; - padding: 2px; - margin-right: .7rem; - box-shadow: none; - } - } - } - } -} diff --git a/src/sass/views/integrations/glidera.scss b/src/sass/views/integrations/glidera.scss deleted file mode 100644 index c771e3099..000000000 --- a/src/sass/views/integrations/glidera.scss +++ /dev/null @@ -1,155 +0,0 @@ -#glidera { - $item-lateral-padding: 20px; - $item-vertical-padding: 10px; - $item-border-color: #EFEFEF; - $item-label-color: #6C6C6E; - @extend .deflash-blue; - - .spinner svg { - stroke: #0067c8; - fill: #0067c8; - } - - .add-bottom-for-cta { - bottom: 92px; - } - .head { - padding: 30px $item-lateral-padding 4rem; - border-top: 0; - - .sending-label { - display: flex; - font-size: 18px; - align-items: center; - margin-bottom: 1.5rem; - - img { - margin-right: 1rem; - height: 35px; - width: 35px; - } - } - .amount-label{ - line-height: 30px; - .amount{ - font-size: 38px; - margin-bottom: .5rem; - - > .unit { - font-family: "Roboto-Light"; - } - } - .alternative { - font-size: 16px; - font-family: "Roboto-Light"; - color: #9B9B9B; - } - } - } - .item { - border-color: $item-border-color; - } - .info { - .badge { - border-radius: 0; - padding: .5rem; - } - .item { - color: #4A4A4A; - padding-top: $item-vertical-padding; - padding-bottom: $item-vertical-padding; - padding-left: $item-lateral-padding; - - &:not(.item-icon-right) { - padding-right: $item-lateral-padding; - } - - .label { - font-size: 14px; - color: $item-label-color; - margin-bottom: 8px; - } - - .capitalized { - text-transform: capitalize; - } - - .wallet .big-icon-svg > .bg { - height: 24px; - width: 24px; - padding: 2px; - box-shadow: none; - vertical-align: middle; - } - - .total-amount { - font-weight: bold; - } - - &.single-line { - display: flex; - align-items: center; - padding-top: 17px; - padding-bottom: 17px; - - .label { - margin: 0; - flex-grow: 1; - } - } - } - .item-divider { - padding-top: 1.2rem; - color: $item-label-color; - font-size: 15px; - } - .wallet { - display: flex; - align-items: center; - padding: .2rem 0; - margin-bottom: 5px; - - ~ .bp-arrow-right { - top: 14px; - } - - > i { - padding: 0; - position: static; - - > img { - height: 24px; - width: 24px; - padding: 2px; - margin-right: .7rem; - box-shadow: none; - } - } - } - } - .glidera-lead { - margin: 2rem 1rem; - color: $v-dark-gray; - font-size: 20px; - line-height: 1.4; - text-align: center; - } - .glidera-text { - margin: 2rem 1rem; - color: $v-mid-gray; - font-size: 16px; - line-height: 1.4; - text-align: center; - } - .disclosure { - color: $v-light-gray; - font-size: 12px; - text-align: left; - margin: 1rem; - } - .item-img-buy, - .item-img-sell { - vertical-align: middle; - margin-right: 10px; - } -} diff --git a/src/sass/views/integrations/integrations.scss b/src/sass/views/integrations/integrations.scss deleted file mode 100644 index 22f9cbc0e..000000000 --- a/src/sass/views/integrations/integrations.scss +++ /dev/null @@ -1,51 +0,0 @@ -@import "coinbase"; -@import "glidera"; -@import "amazon"; - -#coinbase, #glidera { - .button-small { - font-size: 13px; - } -} - -.integration-onboarding { - height: 100%; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - text-align: center; - &-logo { - display: inline-block; - margin-bottom: 1em; - img { - max-width: 170px; - } - } - &-description { - margin-top: 0; - margin-left: 2rem; - margin-right: 2rem; - margin-bottom: 130px; - opacity: .6; - max-width: 300px; - } - &-cta, &-oauthform { - position: absolute; - bottom: 5vh; - width: 100%; - } - &-oauthform { - .item { - border: 0 none; - } - .item-floating-label { - padding-left: 0; - margin-left: 2em; - margin-right: 2em; - } - input { - border-bottom: 2px solid $v-light-gray; - } - } -} diff --git a/src/sass/views/join.scss b/src/sass/views/join.scss deleted file mode 100644 index 1b7ccbd0f..000000000 --- a/src/sass/views/join.scss +++ /dev/null @@ -1,27 +0,0 @@ -#join { - .qr-scan-icon a { - z-index: 10; - display: block; - position: absolute; - top: 115px; - right: 0; - padding: 0 10px; - font-size: 24px; - cursor: pointer; - line-height: 45px; - } - .item-stacked-label .icon { - padding: 0px; - margin: 0px; - } - .icon { - &.valid { - padding-top: 3px; - color: $v-success-color; - } - &.invalid { - padding-top: 3px; - color: #DF2121; - } - } -} diff --git a/src/sass/views/notifications.scss b/src/sass/views/notifications.scss deleted file mode 100644 index a0433cc5d..000000000 --- a/src/sass/views/notifications.scss +++ /dev/null @@ -1,43 +0,0 @@ -.settings { - .item { - color: #444; - border-color: rgba(221, 221, 221, 0.3); - } -} - -#tab-notifications { - .list { - .item { - color: #444; - border-top: none; - padding-top: 1.5rem; - padding-bottom: 1.5rem; - &:before { - display: block; - position: absolute; - width: 100%; - height: 1px; - background: rgba(221, 221, 221, 0.3); - top: 0; - right: 0; - content: ''; - } - &.item-divider { - color: rgba(74, 74, 74, .8); - } - &.item-heading { - &:before { - top: 99% - } - } - &:nth-child(2) { - &:before { - width: 0; - } - } - .item-note { - color: rgb(58, 58, 58); - } - } - } -} diff --git a/src/sass/views/onboarding/onboard-backup-request.scss b/src/sass/views/onboarding/onboard-backup-request.scss deleted file mode 100644 index 82a64df7a..000000000 --- a/src/sass/views/onboarding/onboard-backup-request.scss +++ /dev/null @@ -1,58 +0,0 @@ -#onboarding-backup-request { - #warning { - padding-top: 15%; - display: block; - flex-direction: column; - height: calc(100vh - 320px); - justify-content: center; - align-content: center; - } - #alert-icon { - margin: 20px auto 5px; - height: 10vh; - } - #arrow-down { - font-size: 4.2rem; - color: $v-accent-color; - } - #backup-tldr { - font-size: 16px; - } - #backup-description { - max-width: 500px; - margin: auto; - padding: 1rem 0.5rem 0 1rem; - @media (max-height: 480px) { - padding-top: 40px; - } - } - .cta-buttons { - @extend %cta-buttons; - padding-bottom: 4vw; - } - @media (max-height: 568px) { - #warning { - padding-top: 5%; - } - #backup-description { - font-size: 14px; - } - #backup-tldr { - font-size: 14px; - } - } - @media (max-height: 480px) { - #warning { - padding-top: 5%; - } - #backup-description { - font-size: 14px; - } - #backup-tldr { - font-size: 14px; - } - #arrow-down { - display: none; - } - } -} diff --git a/src/sass/views/onboarding/onboard-collect-email.scss b/src/sass/views/onboarding/onboard-collect-email.scss deleted file mode 100644 index d72dbc74b..000000000 --- a/src/sass/views/onboarding/onboard-collect-email.scss +++ /dev/null @@ -1,161 +0,0 @@ -$relish-success: 1.3s; - -#onboarding-collect-email { - background: rgb(17, 209, 166); - - #success-container { - top: 41vh; - position: relative; - animation-name: emailCollectSlideUp; - animation-iteration-count: 1; - animation-timing-function: ease-in; - animation-duration: .5s; - animation-delay: $relish-success; - animation-fill-mode: forwards; - } - #success-image { - width: 13vh; - margin: 0 auto 2vh; - } - #success-message { - font-size: 3vh; - } - .collect-overlay { - position: absolute; - top:0; - left:0; - width:100%; - height: 100%; - background: rgba(0,0,0,.4); - z-index: 4; - animation-name: emailCollectOpacity; - animation-iteration-count: 1; - animation-timing-function: ease-in; - animation-duration: .2s; - animation-delay: $relish-success; - animation-fill-mode: forwards; - opacity: 0; - button { - position: absolute; - right: 0; - } - } - .heading { - color: $v-dark-gray; - font-size: 1.2rem; - font-weight: bold; - margin: 2rem 0 1rem; - } - .prompt { - margin: 1rem 1.5rem; - color: $v-mid-gray; - } - #email-form { - margin: 0 1.5rem 1rem; - } - #email-label { - border-radius: $v-visible-radius; - background: rgba(200, 200, 200, 0.20); - height: 3rem; - margin-top:0; - } - #collect-email { - opacity: 1; - background: #fff; - animation-name: topBottom; - animation-iteration-count: 1; - animation-timing-function: ease-in; - animation-duration: .4s; - animation-delay: $relish-success + .2s; - position: absolute; - bottom: -100%; - animation-fill-mode: forwards; - z-index: 5; - margin-top: 0; - width: 100%; - } - #collect-email-inner { - max-width: 400px; - margin: 0 auto; - } - - #collect-email-confirm { - p.confirm { - margin: 2rem 0; - color: $v-mid-gray; - } - p.user-email { - color: $v-dark-gray; - margin-bottom: 2rem; - } - .row, .col { - padding: 0; - } - .button { - padding: 0.5rem; - margin-bottom: 0; - } - } - - #news-updates { - padding-top: 0; - } - .item { - border: none; - label { - background: none; - } - .checkbox input:before, - .checkbox .checkbox-icon:before { - border-radius: 50% !important; - background: none; - border-width: 2px; - padding: 12px; - position: relative; - right: 2px; - bottom: 2px; - } - .checkbox input:checked:after, - input:checked + .checkbox-icon:after { - border-color: $v-onboarding-checkbox-on-border; - top: 8px; - left: 6px; - } - .item-content { - color: $v-mid-gray; - text-align: left; - margin-left: 75px; - white-space: initial; - } - } - .item-checkbox { - padding: 1rem 0; - margin: 1rem 0; - } - .item-checkbox .checkbox { - margin-left: 15px; - } - .checkbox input:before, - .checkbox .checkbox-icon:before{ - border-color: $v-onboarding-checkbox-on-border; - } - .checkbox input:checked:before, - .checkbox input:checked + .checkbox-icon:before { - border-color: $v-onboarding-checkbox-on-border; - } -} - -@keyframes topBottom { - 0% { bottom: -100%; } - 100% { bottom: 0; } -} - -@keyframes emailCollectOpacity { - 0% { opacity: 0; } - 100% { opacity: 1; } -} - -@keyframes emailCollectSlideUp { - 0% { top: 41vh; } - 100% { top: calc((100vh - 20rem) / 2 - 11vh);} -} diff --git a/src/sass/views/onboarding/onboard-disclaimer.scss b/src/sass/views/onboarding/onboard-disclaimer.scss deleted file mode 100644 index 33f308ef2..000000000 --- a/src/sass/views/onboarding/onboard-disclaimer.scss +++ /dev/null @@ -1,190 +0,0 @@ -#onboarding-disclaimer { - .checkbox input, .checkbox-icon { - position: relative; - width: 28px; - height: 28px; - display: block; - border: 0; - background: transparent; - cursor: pointer; - -webkit-appearance: none; - } - color: $v-text-secondary-color; - height: 100%; - transition: transform 2.5s ease; - &.shrink{ - -webkit-transform: scale(.8); - transform: scale(.8); - } - &-container { - max-width: 450px; - justify-content: center; - margin-left: auto; - margin-right: auto; - padding-top: 3rem; - @media(max-height: 480px) { - padding-top: 1.5rem; - } - } - .has-header > &-container { - height: calc(100vh - 210px); - } - #disclaimer-topic { - margin: 0 1rem; - } - #disclaimer-description { - margin: 1rem 1rem 2rem; - @media(max-height: 480px) { - font-size: 14px; - } - } - ion-content { - height: 101%; - &.has-header { - top:40px !important; - } - .scroll{ - height: 100%; - } - h3{ - margin-top:1.5rem; - } - } - .tag{ - padding-bottom: 0; - } - .list{ - max-width: 600px; - @include center-block(); - .item{ - &:first-child{ - padding-top: 0; - } - @media(max-height: 480px) { - font-size: 14px; - } - } - } - .item { - background: transparent; - border: none; - color: #fff; - text-align: left; - .checkbox input:before, - .checkbox .checkbox-icon:before{ - border-color: $v-onboarding-checkbox-off-border; - background: transparent; - } - .checkbox input:after, - .checkbox .checkbox-icon:after{ - border-color: $v-onboarding-checkbox-on-border; - } - .checkbox input:checked:before, - .checkbox input:checked + .checkbox-icon:before { - border-color: $v-onboarding-checkbox-on-border; - } - .item-content { - width: 90%; - margin-left: 6%; - white-space: normal; - } - } - .item-checkbox .checkbox { - margin-left: 3%; - top:30%; - left:0; - } -} -#terms-of-use{ - position: absolute; - top: 100%; - left: 0; - z-index: 10; - transition: top 1s ease; - transition-delay: .25s; - width: 100%; - overflow: scroll; - background: #fff; - height: 100%; - ion-nav-bar{ - position: fixed; - background: #fff; - width: 100%; - z-index: 15; - } - .has-header{ - width:100%; - background:#fff; - overflow-y:scroll; - position:relative; - #terms{ - max-width:400px; - padding-top:.5rem; - position: relative; - margin: 0 auto; - padding-bottom: 165px; - width:90%; - } - } - &.slideUp{ - top:0; - } -} -#agree-to-terms { - background: $v-tou-bg; - padding:1rem; - position: absolute; - bottom: 0; - width: 100%; - z-index: 10; - box-shadow: 0 1px 10px rgba(0, 0, 0, 0.25); - &-content{ - max-width: 450px; - @include center-block(); - } - .item{ - background-color: transparent; - padding-bottom: 2.5rem; - float: left; - border:none; - .item-content{ - white-space: normal; - } - } - p{ - color: $v-tou-color; - text-align: left; - } - @media (min-width:450px){ - p{ - position: relative; - top: .6rem; - } - } - .checkbox input:before, - .checkbox .checkbox-icon:before{ - border-color: $v-onboarding-checkbox-off-border; - background: transparent; - } - .checkbox input:after, - .checkbox .checkbox-icon:after{ - border-color: $v-onboarding-checkbox-on-border; - } - .checkbox input:checked:before, - .checkbox input:checked + .checkbox-icon:before { - border-color: $v-onboarding-checkbox-on-border; - } - button { - margin-top: 1.5rem; - position: relative; - } - @media (max-height:480px) { - padding: 0.5rem; - } -} -@media (max-height:460px) { - #agree-to-terms{ - position: relative; - float:left; - } -} diff --git a/src/sass/views/onboarding/onboard-tour.scss b/src/sass/views/onboarding/onboard-tour.scss deleted file mode 100644 index bbf0aa508..000000000 --- a/src/sass/views/onboarding/onboard-tour.scss +++ /dev/null @@ -1,29 +0,0 @@ -#onboarding-tour { - &-currency { - .next-slide { - margin-top: 3rem; - } - } - .cta-buttons { - @extend %cta-buttons; - padding-bottom: 12vh; - } - #onboarding-illustration-currency-exchange-rate { - font-size: 14px; - font-weight: normal; - height: 40px; - line-height: 38px; - margin: 10px auto 0; - position: relative; - width: 140px; - z-index: 1; - } - .swiper-pagination { - &-bullet { - background: $v-onboarding-tour-swiper-pagination-bg; - &-active { - background: $v-onboarding-tour-swiper-pagination-bg; - } - } - } -} diff --git a/src/sass/views/onboarding/onboard-welcome.scss b/src/sass/views/onboarding/onboard-welcome.scss deleted file mode 100644 index 35d044a2e..000000000 --- a/src/sass/views/onboarding/onboard-welcome.scss +++ /dev/null @@ -1,36 +0,0 @@ -#onboard-welcome { - & > ion-content { - background: $v-onboarding-welcome-bg; - background-position: top center; - background-size: contain; - background-repeat: no-repeat; - } - #qrcode { - content: url("../img/onboarding-welcome-qrcode.png"); - position: absolute; - top: 5%; - right: 5%; - width: 20px; - height: auto; - } - #logo-tagline { - width: 100%; - height: 70%; - display: flex; - flex-direction: column; - justify-content: space-around; - } - #logo { - width: 40%; - max-width: 200px; - margin: 5rem auto 0; - } - #lead { - line-height: 1.6; - font-size: 18px; - } - #cta-buttons { - @extend %cta-buttons; - padding-bottom: 4vw; - } -} diff --git a/src/sass/views/onboarding/onboarding.scss b/src/sass/views/onboarding/onboarding.scss deleted file mode 100644 index 60bf824f7..000000000 --- a/src/sass/views/onboarding/onboarding.scss +++ /dev/null @@ -1,130 +0,0 @@ -.onboarding { - background: $v-onboarding-gradient-top-color; - color: $v-onboarding-color; - background-image: linear-gradient(to bottom, $v-onboarding-gradient-top-color 0%, $v-onboarding-gradient-bottom-color 100%); - height: 100%; - text-align: center; - .bar.bar-header { - background: none; - border: 0 none transparent; - color: $v-onboarding-bar-header-color; - button { - color: $v-onboarding-bar-header-button-color; - } - } - .onboarding-topic, - .onboarding-description, - .onboarding-tldr { - margin-left: 3rem; - margin-right: 3rem; - } - .onboarding-topic { - font-size: 24px; - margin-top: .5rem; - line-height: 1.3; - @media(max-width: 350px) { - font-size: 20px; - } - } - .onboarding-description { - margin-top: 1rem; - font-size: 16px; - color: rgba(255,255,255,0.5); - line-height: 1.5; - @media(max-width: 350px) { - line-height: 1.3; - } - @media(max-height: 480px) { - font-size: 16px; - } - } - .onboarding-tldr { - font-size: 18px; - margin-top: 1rem; - margin-bottom: 1em; - line-height: 1.3; - @media(max-width: 350px) { - font-size: 16px; - } - @media(max-height: 480px) { - font-size: 14px; - } - } - - svg#alert-icon g { - stroke: $v-onboarding-backup-alert-icon-color; - } - - #arrow-down { - color: $v-onboarding-backup-alert-icon-color !important; - } - - .back-button .icon:before { - color: $v-onboarding-button-back-color; - } -} - -%cta-buttons { - position: absolute; - bottom: 0; - left: 0; - width: 100%; -} - -.pane-onboarding{ - background: $v-onboarding-pane-bg; -} - -@import "terms-of-use"; -@import "onboard-welcome"; -@import "onboard-tour"; -@import "onboard-collect-email"; -@import "onboard-backup-request"; -@import "../backup-warning"; -@import "onboard-disclaimer"; - -%onboarding-illustration { - width: 100%; - margin-top: 1rem; - background-position: center; - background-repeat: no-repeat; - background-size: contain; - z-index: -1; -} - -@media(max-height: 600px) { - %onboarding-illustration { - height: 35%; - } -} - -@media(max-height: 480px) { - %onboarding-illustration { - height: 23%; - } -} - -@media(min-height: 600px) { - %onboarding-illustration { - height: 40%; - } -} - -.onboarding-illustration { - &-secure { - @extend %onboarding-illustration; - background-image: $v-onboarding-tour-phone-bg; - } - &-currency { - @extend %onboarding-illustration; - background-image: $v-onboarding-tour-currency-bg; - } - &-control { - @extend %onboarding-illustration; - background-image: $v-onboarding-tour-control-bg; - } - &-backup-warning { - @extend %onboarding-illustration; - background-image: $v-onboarding-backup-warning-bg; - } -} diff --git a/src/sass/views/onboarding/terms-of-use.scss b/src/sass/views/onboarding/terms-of-use.scss deleted file mode 100644 index c2650fb12..000000000 --- a/src/sass/views/onboarding/terms-of-use.scss +++ /dev/null @@ -1,34 +0,0 @@ -#terms { - .terms { - &__heading { - font-weight: bold; - color: $v-dark-gray; - } - } -} - -#terms-of-use { - ion-header-bar { - background: $bar-royal-bg; - box-shadow: $v-subtle-box-shadow; - color: $bar-royal-text; - .primary-buttons{ - .button{ - color: $bar-royal-text; - font-size: 2rem; - } - } - } - ion-content{ - padding-top: 1.5rem; - color: $v-dark-gray; - margin-bottom: 210px; - p { - padding: 0 2.5%; - margin: 2rem auto; - &:first-child { - margin-top: 0; - } - } - } -} diff --git a/src/sass/views/starting.scss b/src/sass/views/starting.scss deleted file mode 100644 index de24083f9..000000000 --- a/src/sass/views/starting.scss +++ /dev/null @@ -1,24 +0,0 @@ -#starting { - background: $v-primary-color; - background: -moz-linear-gradient(top, $v-primary-color 0%, $v-secondary-color 100%); - background: -webkit-gradient(left top, left bottom, color-stop(0%, $v-primary-color), color-stop(100%, $v-secondary-color)); - background: -webkit-linear-gradient(top, $v-primary-color 0%, $v-secondary-color 100%); - background: -o-linear-gradient(top, $v-primary-color 0%, $v-secondary-color 100%); - background: -ms-linear-gradient(top, $v-primary-color 0%, $v-secondary-color 100%); - background: linear-gradient(to bottom, $v-primary-color 0%, $v-secondary-color 100%); - color: #fff; - height: 100%; - .scroll-content { - display: table !important; - width: 100% !important; - height: 100% !important; - } - .scroll { - display: table-cell; - vertical-align: middle; - text-align: center; - } - .block-spinner { - display: block; - } -} diff --git a/src/sass/views/tab-home.scss b/src/sass/views/tab-home.scss deleted file mode 100644 index 3886ba7ee..000000000 --- a/src/sass/views/tab-home.scss +++ /dev/null @@ -1,149 +0,0 @@ -#tab-home { - @extend .deflash-blue; - .icon-create-wallet { - background-color: #4A90E2; // default wallet color - } - .icon-buy-bitcoin { - background-image: $v-bitcoin-icon; - background-color: $v-bitcoin-orange; - } - .icon-bitpay-card { - background-image: url("../img/icon-card.svg"); - background-color: #1e3186; - } - .icon-gift { - background-image: url("../img/icon-gift.svg"); - } - .icon-amazon { - background-image: url("../img/icon-amazon.svg"); - } - .bg { - &.wallet { - padding: .25rem - } - } - .card { - .item { - color: #444; - border-top:none; - padding-bottom: 1rem; - padding-top:1rem; - &.item-extra-padding { - padding-top: 1.5rem; - padding-bottom: 1.5rem; - } - } - .item-sub { - &:first-child:before { - width: 95% - } - &:before { - display: block; - position: absolute; - width: 75%; - height: 1px; - background: rgba(221, 221, 221, 0.3); - top:0; - right:0; - content:''; - @media (min-width: 450px){ - &{ - width:90%; - } - } - } - } - } - .wallet-details__item.item { - padding-top: 0; - padding-bottom: 0; - - .wallet-details__tx-icon { - background: #fff; - border-radius: 50px; - } - } - .next-step.item { - padding-top: 27px; - padding-bottom: 27px; - } - .homeTip { - text-align: center; - & > .item-heading { - margin-top: 10px; - background: 0 none; - } - .item { - border-style: none; - } - & > .title { - font-size: 20px; - font-weight: bold; - color: $v-dark-gray; - margin: 20px 10px; - } - & > .subtitle { - font-size: 1rem; - line-height: 1.5em; - font-weight: 300; - color: $v-dark-gray; - margin: 20px 3em 2.5em; - } - .big-icon-svg{ - .bg.green{ - padding: 0 10px; - box-shadow: none; - } - } - } - .icon.close-home-tip { - color: #666; - font-size: 38px; - } - .tab-home { - &__logo { - height: 18px; - position: relative; - top: 3px; - } - &__wallet { - &__multisig-number { - font-size: .8rem; - font-weight: 300; - color: $v-light-gray; - } - &__status-icon { - font-size: 18px; - margin-left: 5px; - position: relative; - top: 1px; - color: $v-light-gray; - } - } - } - .release { - text-align: center; - .item { - width: 100%; - } - .title { - font-weight: 700; - color: #444; - } - .button { - width: 100%; - border: none; - } - .big-icon-svg { - > .bg { - box-shadow: none; - } - padding-top: 2rem; - padding-bottom: 0; - } - } - - .badge { - top:11px; - } -} diff --git a/src/sass/views/tab-receive.scss b/src/sass/views/tab-receive.scss deleted file mode 100644 index c013ef4f5..000000000 --- a/src/sass/views/tab-receive.scss +++ /dev/null @@ -1,86 +0,0 @@ -#tab-receive { - @extend .deflash-blue; - .button-share { - color: #fff; - box-shadow: none; - border-color: transparent; - background: transparent; - padding: 0 10px; - .icon:before { - font-size: 26px; - } - } - .button-request { - margin-top: 10px; - background: transparent; - border: none; - font-size: 12px; - color: $v-text-accent-color; - i.icon { - vertical-align: middle; - padding-left: 5px; - } - } - .button-address { - margin-top: 10px; - background: transparent; - border: none; - font-size: 12px; - color: $v-text-accent-color; - } - .address { - background: #fff; - overflow: auto; - height: 100%; - &-info { - padding-top: 22vh; - padding-bottom: 17vh; - @media(max-height: 800px) { - padding-top: 17vh; - } - @media(max-height: 700px) { - padding-top: 14vh; - } - @media(max-height: 600px) { - padding-top: 7vh; - } - text-align: center; - .address-label { - margin-top: 5%; - font-size: 13px; - } - } - .incomplete { - .title { - padding-top: 10%; - font-size: 25px; - color: #444; - text-align: center; - } - .subtitle { - padding: 20px; - color: #444; - margin-top: 10%; - text-align: center; - } - } - } - .backup { - position: absolute; - top: 0; - width: 100%; - cursor: pointer; - background-color: orange; - color: #fff; - text-align: center; - padding: 5px 0; - i { - margin: 0 10px; - } - } - .wallet-selector { - position: absolute; - bottom: 0; - width: 100%; - } -} diff --git a/src/sass/views/tab-scan.scss b/src/sass/views/tab-scan.scss deleted file mode 100644 index 37487f2e2..000000000 --- a/src/sass/views/tab-scan.scss +++ /dev/null @@ -1,77 +0,0 @@ -#tab-scan { - color: #fff; - text-align: center; - background: transparent none; - .bar-header { - opacity: .9; - } - svg#QR-scanner-guides path.st1 { - stroke: $v-scanner-guide-color; - } - .zero-state-cta { - padding-bottom: 6vh; - } - &-has-problems, - &-loading-camera { - background-color: $v-scanner-background-color; - } - &-loading-camera { - height: 100%; - width: 100% - } - &-camera-ready { - // view background is transparent to show video preview - background: none transparent; - .scanner-controls { - width: 100%; - text-align: center; - bottom: 0; - position: absolute; - } - .guides { - display: flex; - position: absolute; - height: 100%; - width: 100%; - align-items: center; - justify-content: center; - top: 0; - left: 0; - } - .qr-scan-guides { - width: 60%; - max-width: 400px; - margin-bottom: 8em; - max-height: 50%; - } - .icon-flash, .icon-camera-toggle { - border-radius: 50%; - width: 4em; - height: 4em; - background-color: rgba(13, 13, 13, 0.79); - background-repeat: no-repeat; - background-clip: padding-box; - background-size: 100%; - display: inline-block; - margin: 2em 1em; - cursor: pointer; - // hover for desktop only - body:not(.platform-cordova) &:hover { - background-color: rgba(31, 40, 78, 0.79); - } - &.active, &:active { - background-color: rgba(100, 124, 232, 0.79); - } - } - .icon-flash { - background-image: url("../img/icon-flash.svg"); - } - .icon-camera-toggle { - background-image: url("../img/icon-camera-toggle.svg"); - } - } -} - -#cordova-plugin-qrscanner-still, #cordova-plugin-qrscanner-video-preview { - background-color: $v-scanner-background-color !important; -} diff --git a/src/sass/views/tab-send.scss b/src/sass/views/tab-send.scss deleted file mode 100644 index 8bba3cee6..000000000 --- a/src/sass/views/tab-send.scss +++ /dev/null @@ -1,180 +0,0 @@ -#tab-send { - @extend .deflash-blue; - .input { - input { - width: 100%; - height: auto; - } - &.item { - height: 55px; - } - i { - &.left { - padding-left: 15px; - } - &.qr { - cursor: pointer; - cursor: hand; - padding-right: 5px; - } - } - } - .qr-scan-icon { - cursor: pointer; - cursor: hand; - border-left: 1px solid rgb(228, 228, 228); - padding-left: 10px; - } - .qr-icon { - line-height: 20px; - } - .zero-state-cta { - padding-bottom: 3vh; - left: 0; - } - .send-heading { - font-size: 14px; - font-weight: bold; - padding: 0 0 16px 0; - border: none; - } - .send-header-wrapper { - padding: 10px; - background-color: white; - box-shadow: 0px 5px 10px 0px #cccccc; - } - .search-wrapper { - background-color: #f2f2f2; - border-radius: 3px; - border: none; - .svg#Bitcoin_Symbol { - width: 14px; - .st0 { - fill: #cccccc; - } - } - &.focus { - background: none; - .svg#Bitcoin_Symbol { - display: none; - } - .search-input { - padding-left: 0; - &:focus::-webkit-input-placeholder { - opacity: 0; - } - } - } - } - .abs-v-center { - position: absolute; - top: 50%; - transform: translateY(-50%); - } - .search-input { - background-color: transparent; - padding-left: 30px; - } - .separator-left { - border-left: 1px solid #d9d9df; - padding-left: 10px; - height: 70%; - } - .bitcoin-address { - border-top: none; - padding-bottom: .5rem; - @media(max-width: 480px) { - input { - font-size: 14px; - } - } - .icon { - line-height: 31px; - padding-top: 2px; - padding-bottom: 1px; - } - } - .show-more { - text-align: center; - padding: 20px; - font-size: 16px; - color: #387ef5; - font-weight: bold; - } - .sendTip { - text-align: center; - & > .item-heading { - margin-top: 10px; - background: 0 none; - } - img { - content: $v-tab-send-selected-icon; - } - .item { - border-style: none; - } - & > .title { - font-size: 20px; - font-weight: bold; - color: $v-dark-gray; - margin: 20px 10px; - } - & > .subtitle { - font-size: 1rem; - line-height: 1.5em; - font-weight: 300; - color: $v-dark-gray; - margin: 20px 1em 2.5em; - } - .big-icon-svg{ - .bg.green{ - padding: 0 10px; - box-shadow: none; - } - } - } - .list { - .item { - color: #444; - border-top: none; - padding-top: 1.5rem; - padding-bottom: 1.5rem; - .big-icon-svg { - left:5px; - & > .bg{ - width:30px; - height:30px; - box-shadow: none; - } - } - &:before { - display: block; - position: absolute; - width: 80%; - height: 1px; - background: rgba(221, 221, 221, 0.3); - top: 0; - right: 0; - content: ''; - } - &.item-divider { - color: rgba(74, 74, 74, .8); - } - &.item-heading { - &:before { - top: 99%; - width:100%; - } - } - &:nth-child(2) { - &:before { - width: 0; - } - } - .item-note { - color: rgb(58, 58, 58); - } - } - } - .scroll{height: 100%;} -} diff --git a/src/sass/views/tab-settings.scss b/src/sass/views/tab-settings.scss deleted file mode 100644 index 6e17b4d37..000000000 --- a/src/sass/views/tab-settings.scss +++ /dev/null @@ -1,221 +0,0 @@ -.settings { - @extend .deflash-blue; - .icon-bitpay { - background-image: url("../img/icon-bitpay.svg"); - } - .warning { - color: $v-warning-color; - } - .centered { - width: 100%; - text-align: center; - } - .disabled { - color: $v-light-gray; - } - .item { - color: $v-dark-gray; - border-color: rgba(221, 221, 221, 0.3); - } - .has-comment { - border-bottom: 0 none; - } - .comment { - padding: 15px; - background-color: #fff; - font-size:0.9em; - color: $v-mid-gray; - .text { - padding-left: 25px; - } - .icon { - position: absolute; - img { - width: 20px; - } - } - } - &-explanation, &-button-group { - padding: 0 1rem; - margin: 1rem 0; - } - &-heading { - font-size: 17px; - color: $v-dark-gray; - margin: 1rem 0; - } - &-description { - color: $v-mid-gray; - margin: 1rem 0; - font-size: 0.9em; - } - &-description-disabled { - font-size: 0.9em; - color: cadetblue; - text-decoration: none; - } - .setting-title, .setting-value { - display: block; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - .setting-value { - color: $v-light-gray; - font-size: 14px; - } - .settings-input-group { - background-color: #fff; - .item-stacked-label { - padding: 1rem; - } - .input-label { - text-transform: uppercase; - font-size: 12px; - font-weight: bold; - } - } - .settings-list { - .item { - color: $v-dark-gray; - padding-top: 1.3rem; - padding-bottom: 1.3rem; - &.has-setting-value { - padding-top: .65rem; - padding-bottom: .65rem; - } - &.item-divider { - color: $v-mid-gray; - padding-bottom: .5rem; - font-size: .9rem; - } - .icon { - color: $v-light-gray; - } - } - .item-note { - color: $v-light-gray; - } - .item-toggle .toggle, - .item-button-right > .button { - top: 16px; - } - .toggle-small.item-toggle .toggle, - .item-button-right > .button { - top: 25px; - } - .item-button-right > .button { - font-size: 16px; - } - } - input[type="password"] { - border: none; - margin-left: -5px; - padding-left: 4px; - &.incorrect { - margin-right: 10px; - border: 1px solid; - color: #C90505; - } - &.correct { - margin-right: 10px; - border: 1px solid; - color: #00901B; - } - } - .log-bg { - background: white; - } - .log-entry { - font-size: 12px; - line-height: 18px; - border: none; - } - .log-timestamp { - font-weight: bold; - } - .log-level { - font-weight: bold; - } -} - -#tab-settings { - .list { - .item { - .big-icon-svg { - & > .bg{ - width:20px; - height:20px; - border-radius: 0; - box-shadow: none; - } - &.circle{ - left:8px; - .bg { - border-radius: $v-icon-border-radius; - width: 25px; - height: 25px; - padding:.1rem; - box-shadow: 0px 1px 5px rgba($v-mid-gray, .1); - } - } - } - &:before { - display: block; - position: absolute; - width: 100%; - height: 1px; - background: rgba(221, 221, 221, 0.3); - top: 0; - right: 0; - content: ''; - } - &.item-heading { - &:before { - top: 99% - } - } - &:nth-child(2) { - &:before { - width: 0; - } - } - } - } - .item-radio .radio-icon { - font-size: 18px; - } -} - -#settings-fee { - .estimates { - min-height: 6rem; - font-size: 15px; - color: $v-dark-gray; - margin-bottom: .5rem; - } - .fee-minutes, .fee-rate { - font-weight: bold; - } - .fee-policies { - border-color: #fff; - border-style: solid; - } -} -.settings-color-name { - margin-left: 1rem; -} -.settings-color-block { - display: inline-block; - width: 24px; - height: 24px; - border-radius: 50%; - box-shadow: 0px 0px 10px; - float: left; // we don't want these indicators to affect their container's sizing -} - -#settings-tos { - p { - margin-bottom: 1rem; - } -} diff --git a/src/sass/views/tabs.scss b/src/sass/views/tabs.scss deleted file mode 100644 index b9a1cd724..000000000 --- a/src/sass/views/tabs.scss +++ /dev/null @@ -1,48 +0,0 @@ -.tabs .tab-item { - .icon { - background-repeat: no-repeat; - background-position: center; - margin: 6px 0 2px; - &.ico-home { - background-image: $v-tab-home-icon; - } - &.ico-home-selected { - background-image: $v-tab-home-selected-icon; - } - &.ico-receive { - background-image: $v-tab-receive-icon; - } - &.ico-receive-selected { - background-image: $v-tab-receive-selected-icon; - } - &.ico-settings { - background-image: $v-tab-settings-icon; - } - &.ico-settings-selected { - background-image: $v-tab-settings-selected-icon; - } - &.ico-scan { - background-image: $v-tab-scan-icon; - } - &.ico-scan-selected { - background-image: $v-tab-scan-selected-icon; - } - &.ico-send { - background-image: $v-tab-send-icon; - } - &.ico-send-selected { - background-image: $v-tab-send-selected-icon; - } - } -} - -#tab-home, #tab-send { - .card, .list { - & > .item-heading { - font-weight: 700; - .icon { - color: $v-mid-gray; - } - } - } -} diff --git a/src/sass/views/views.scss b/src/sass/views/views.scss deleted file mode 100644 index 722c97e1d..000000000 --- a/src/sass/views/views.scss +++ /dev/null @@ -1,52 +0,0 @@ -@import "tabs"; -@import "add"; -@import "amount"; -@import "confirm"; -@import "copayers"; -@import "starting"; -@import "tab-home"; -@import "tab-receive"; -@import "tab-scan"; -@import "tab-send"; -@import "tab-settings"; -@import "wallet-colors"; -@import "walletBalance"; -@import "walletDetails"; -@import "advancedSettings"; -@import "bitpayCard"; -@import "bitpayCardIntro"; -@import "buyandsell"; -@import "bitpayServicesPreferences"; -@import "address-book"; -@import "addresses"; -@import "wallet-backup-phrase"; -@import "zero-state"; -@import "onboarding/onboarding"; -@import "feedback/rateCard"; -@import "feedback/send"; -@import "feedback/complete"; -@import "feedback/rateApp"; -@import "includes/actionSheet"; -@import "export"; -@import "import"; -@import "join"; -@import "includes/menu-popover"; -@import "includes/walletActivity"; -@import "includes/wallets"; -@import "includes/modals/modals"; -@import "includes/modals/choose-fee-level"; -@import "includes/clickToAccept"; -@import "includes/incomingDataMenu"; -@import "includes/slideToAccept"; -@import "includes/slideToAcceptSuccess"; -@import "includes/tx-details"; -@import "includes/txp-details"; -@import "includes/tx-status"; -@import "includes/itemSelector"; -@import "includes/walletSelector"; -@import "includes/accountSelector"; -@import "integrations/integrations"; -@import "custom-amount"; -@import "includes/pin"; -@import "includes/logOptions"; -@import "includes/checkBar"; diff --git a/src/sass/views/wallet-backup-phrase.scss b/src/sass/views/wallet-backup-phrase.scss deleted file mode 100644 index de3879b0d..000000000 --- a/src/sass/views/wallet-backup-phrase.scss +++ /dev/null @@ -1,168 +0,0 @@ -#wallet-backup-phrase { - h3 { - padding: 15px; - } - .button-confirm { - margin-top: 1rem; - } - .password-required { - padding: 1rem; - } - .password-prompt { - background-color: $v-subtle-gray; - padding: 2rem; - .explanation { - padding: 0 1rem; - margin: 1rem 0; - } - .description { - text-align: center; - font-size: 15px; - color: #000; - margin: 1rem 0; - } - input { - width: 100%; - padding: 1rem; - } - } - .bar.bar-royal .title { - font-size: 1rem; - } - background: $v-wallet-backup-bg; - text-align: center; - .backup-phrase { - background: $v-wallet-backup-phrase-bg; - margin: auto; - border: 2px dashed darken($v-subtle-gray, 10%); - border-radius: $v-subtle-radius; - color: $v-wallet-backup-phrase-color; - text-align: center; - max-width: 500px; - min-height: 9rem; - display: flex; - justify-content: center; - align-items: center; - &-content { - font-weight: bold; - line-height: 2; - font-size: 16px; - letter-spacing: 1px; - @media (min-width: 575px) { - font-size: 18px; - padding: 3rem; - } - &-word-readonly { - padding: 0 1px; - @media (min-width: 575px) { - padding: 0 6px; - } - } - } - } - &-step-1 { - height: 70%; - color: $v-dark-gray; - .initial-prompt { - padding: 2.3rem; - @media(max-height: 480px) { - padding: 2rem; - } - } - .tldr-prompt { - padding-bottom: 3rem; - @media(max-height: 480px) { - height: 30%; - padding-bottom: 1rem; - font-size: 14px; - } - @media(max-height: 550px) { - padding-bottom: 1rem; - } - } - } - &-step-2 { - display: block; - height: 70%; - width: 100%; - justify-content: center; - align-items: center; - .confirmation-prompt { - padding: 3rem; - @media(max-height: 480px) { - padding: 1rem; - } - } - #select-phrase { - background: $v-wallet-backup-select-phrase-color; - .select-word { - &.button[disabled] { - background: transparent !important; - box-shadow: none !important; - color: transparent; - border: 1px solid $v-wallet-backup-select-word-disabled-color; - } - } - &-content { - max-width: 500px; - margin-left: auto; - margin-right: auto; - .tldr-prompt { - font-weight: bold; - padding: 1rem; - @media(max-height: 480px) { - padding: 0.5rem; - font-size: 14px; - } - } - } - .cta-buttons { - padding-bottom: 0; - } - } - .select-word { - background: $v-wallet-backup-select-word-bg; - color: $v-wallet-backup-select-word-color; - box-shadow: $v-subtle-box-shadow; - display: inline-block; - margin: 3px 0; - min-height: 35px; - line-height: 33px; - padding: 0 8px; - @media (min-width: 400px) { - margin: 4px 3px; - padding: 0 16px; - } - @media(max-height: 480px) { - font-size: 14px; - } - } - .tldr-prompt { - padding-bottom: 3rem; - @media(max-height: 480px) { - height: 30%; - padding-bottom: 1rem; - font-size: 14px; - } - } - } - &-step-3 { - - } - .cta-buttons { - @extend %cta-buttons; - padding-bottom: 5vh; - @media(max-height: 480px) { - padding-bottom: 3vh; - } - } - ion-content.has-tabs{ - // TODO: review - .cta-buttons{ - bottom:110px; - } - .cta-buttons, #select-phrase{ - bottom:110px; - } - } -} diff --git a/src/sass/views/wallet-colors.scss b/src/sass/views/wallet-colors.scss deleted file mode 100644 index a55948589..000000000 --- a/src/sass/views/wallet-colors.scss +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Generate wallet colors from color map - */ - -.wallet-color-count { - content: '' + length($v-wallet-color-map); -} - -/* background-color and color defaults should be the same */ -$default-wallet-color: map-get( map-get($v-wallet-color-map, $v-default-wallet-color-index) , color); - -.wallet-background-color-default { - background-color: $default-wallet-color; -} - -.wallet-color-default { - color: $default-wallet-color; -} - -/* generate classes for all colors */ -@each $id, $map in $v-wallet-color-map { - .wallet-color-#{$id} { - background: map-get($map, color); - } - .wallet-color-#{$id}:before { - content: map-get($map, name); - margin-left: 2.4rem; - } -} diff --git a/src/sass/views/walletBalance.scss b/src/sass/views/walletBalance.scss deleted file mode 100644 index f96da7f9a..000000000 --- a/src/sass/views/walletBalance.scss +++ /dev/null @@ -1,112 +0,0 @@ -.wallet-balance { - - &__amount { - - font-size: 16px; - - &--total { - color: $v-mid-gray; - } - - &--available { - color: #09C286;; - } - - &--confirming { - color: #FF9900; - } - - &--locked { - color: #FF9900; - } - - &--alternative { - color: $v-light-gray; - font-size: 14px; - } - - } - - &__title { - flex-grow: 1; - color: $v-dark-gray; - overflow: hidden; - } - - &__icon { - float: left; - margin-right: 1rem; - color: $v-light-gray; - font-size: 24px; - } - - &__list { - background: #f5f5f5; - } - - .item { - display: flex; - align-items: center; - background: #fff; - padding-left: 1rem; - } - - &__item { - display: flex; - align-items: center; - background: #fff; - padding: 0; - margin: 0; - border: 0; - padding-left: 1rem; - } - - &__content { - display: flex; - align-items: center; - flex-grow: 1; - padding: 0.6rem 0; - padding-right: 1rem; - border-bottom: 1px solid rgb(245, 245, 245); - overflow: hidden; - - &.no-border { - border: 0; - } - } - - &__amount { - white-space: nowrap; - } - - &__heading { - font-size: 17px; - color: $v-dark-gray; - margin: 1rem 1rem 1rem 1rem; - } - - &__description { - font-size: 12.5px; - color: $v-mid-gray; - margin: 0.7rem; - line-height: 16px; - } - -} - -#wallet-balance { - .bar-header { - border: 0; - .title, .button { - color: #fff; - } - .button { - background-color: transparent; - } - } - - ion-content { - background: #F5F5F5; - } - -} diff --git a/src/sass/views/walletDetails.scss b/src/sass/views/walletDetails.scss deleted file mode 100644 index 9553bf489..000000000 --- a/src/sass/views/walletDetails.scss +++ /dev/null @@ -1,268 +0,0 @@ -.wallet-details { - &__tx-amount { - font-size: 16px; - &--recent { - color: $v-mid-gray; - font-weight: bold; - } - &--received { - color: #09C286; - } - &--sent { - color: $v-dark-gray; - } - } - &__tx-time { - white-space: nowrap; - color: $v-light-gray; - font-size: 12.5px; - } - &__tx-title { - flex-grow: 1; - color: $v-dark-gray; - overflow: hidden; - } - &__tx-icon { - float: left; - margin-right: 25px; - } - &__tx-message { - margin-right: 1rem; - } - - &__list { - - } - - .item { - display: flex; - align-items: center; - background: #fff; - padding-left: 1rem; - } - - &__item { - display: flex; - align-items: center; - background: #fff; - padding: 0; - margin: 0; - border: 0; - padding-left: 1rem; - - &.proposal { - position: relative; - } - - &__marker { - position: absolute; - height: 100%; - width: 3px; - background: #F5A623; - left: 0; - } - } - - &__tx-content { - display: flex; - align-items: center; - flex-grow: 1; - padding: 1rem 0; - padding-right: 1rem; - border-bottom: 1px solid rgb(245, 245, 245); - overflow: hidden; - - &.no-border { - border: 0; - } - } - - &__tx-amount { - white-space: nowrap; - } - - &__group-label { - font-size: 14px; - font-weight: 300; - color: #727272; - padding: 1rem; - background: #f8f8f9; - } -} - -#walletDetails { - background: #F8F8F9; - - .scroll-refresher { - z-index: 1; - margin-top: 3.5rem; - } - - .ionic-refresher-content { - color: white !important; - - .spinner svg { - stroke: white; - fill: white; - } - } - - .bp-content { - position: relative; - height: 100%; - - &.status-bar { - margin-top: 20px; - } - } - .bar-header { - border: 0; - background: none; - .title, .button { - color: #fff; - } - .button { - background-color: transparent; - } - } - .nav-bar-block, .bar { - background-color: inherit !important; - } - ion-content { - - &.collapsible { - margin-top: 210px; - } - - padding-top: 0; - top: 0; - .scroll { - background: rgb(248, 248, 249); - min-height: 300px; - } - } - .amount-wrapper { - position: relative; - overflow: visible; - - .amount-bg { - content: ''; - top: 0; - left: 0; - position: absolute; - width: 100%; - height: 500px; - -webkit-transform: translateY(-499px); - transform: translateY(-499px); - - &.collapsible { - top: initial; - bottom: 0; - left: 0; - position: absolute; - width: 100%; - height: 200px; - -webkit-transform: translateY(100px); - transform: translateY(100px); - } - } - } - .amount { - width: 100%; - text-align: center; - color: #fff; - height: 210px; - padding-top: 40px; - display: block; - align-items: center; - justify-content: center; - - &.collapsible { - margin-bottom: 10px; - } - - &__balance { - -webkit-transform: scale3d(1, 1, 1) translateY(45px); - transform: scale3d(1, 1, 1) translateY(45px); - } - - &__updating { - z-index: 999; - margin-top: -2.1rem; - } - - &-alternative { - line-height: 36px; - } - - &__button-balance { - background-color: transparent; - border: 1px solid rgba(255,255,255,0.25); - } - - } - .item.item-footer { - font-weight: lighter; - } - .tx-search:before { - font-size: 22px !important; - } - .description { - background-color: #f2f2f2; - text-align: center; - font-size: 13px; - color: $v-mid-gray; - } - .low-fees { - .comment { - color: $v-mid-gray; - font-size: 12.5px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - margin-left: 25px; - } - img { - position: absolute; - margin-top: 3px; - } - } -} - -.wallet-details-wallet-info { - position: absolute; - top: inherit; - left: 10px; - bottom: 5px; - font-size: 20px; - color: #fff; - width:95%; -} - -.wallet-not-backed-up-warning { - background: orange; - text-align: center; - color: white; - font-size: 14px; - display: block; - text-decoration: none; - z-index: 9999; - position: relative; - padding: 2px 5px; -} - -a.item { - cursor: pointer; -} - -.recent svg { - margin-left:5px; - width:0.7em; - height:0.7em; - stroke: #eee; -} - -.updatingHistory { - color: $v-dark-gray; - font-size:0.9em; -} diff --git a/src/sass/views/zero-state.scss b/src/sass/views/zero-state.scss deleted file mode 100644 index d16684ecc..000000000 --- a/src/sass/views/zero-state.scss +++ /dev/null @@ -1,46 +0,0 @@ -.zero-state { - height: 100%; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - text-align: center; - &-icon { - display: inline-block; - width: 50px; - height: 50px; - border-radius: $v-icon-border-radius; - padding: 13px; - box-shadow: $v-subtle-box-shadow; - background-color: #fff; - img { - height: 100%; - width: 100%; - } - } - &-heading { - font-size: 20px; - margin: 1rem; - } - &-description { - font-size: 0.9em; - margin-top: 0; - margin-left: 2rem; - margin-right: 2rem; - margin-bottom: 120px; - opacity: .6; - max-width: 300px; - } - &-tldr { - margin: 1rem auto; - } - &-description, - &-tldr { - max-width: 300px; - } - &-cta { - position: absolute; - bottom: 0; - width: 100%; - } -} diff --git a/util/buildAppConfig.js b/util/buildAppConfig.js deleted file mode 100755 index 55012a4b2..000000000 --- a/util/buildAppConfig.js +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env node - -'use strict'; - -var fs = require('fs'); -var shell = require('shelljs'); - -var getCommitHash = function() { - //exec git command to get the hash of the current commit - //git rev-parse HEAD - - var hash = shell.exec('git rev-parse HEAD', { - silent: true - }).output.trim().substr(0, 7); - return hash; -} - -var commitHash = getCommitHash(); - - -var appConfig = JSON.parse(fs.readFileSync('./appConfig.json', 'utf8')); -var pkg = JSON.parse(fs.readFileSync('./package.json', 'utf8')); - -console.log('v' + pkg.version + ' #' + commitHash + ' App:' + appConfig.name); - - -var content = 'window.version="' + pkg.version + '";'; -content = content + '\nwindow.commitHash="' + commitHash + '";'; - -content = content + '\nwindow.appConfig=' + JSON.stringify(appConfig) + ';'; -fs.writeFileSync("./src/js/appConfig.js", content); - diff --git a/util/buildExternalServices.js b/util/buildExternalServices.js deleted file mode 100755 index 630d03609..000000000 --- a/util/buildExternalServices.js +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env node - -'use strict'; - -var fs = require('fs'); -var file; - -try { - file = fs.readFileSync('./externalServices.json', 'utf8'); -} catch(err) { - return; -} - -var externalServices = JSON.parse(file); -if (externalServices.coinbase && - externalServices.coinbase.production.client_id) - console.log('Coinbase Production Enabled'); -if (externalServices.coinbase && - externalServices.coinbase.sandbox.client_id) - console.log('Coinbase Sandbox Enabled'); -if (externalServices.glidera && - (externalServices.glidera.production.mobile.client_id || externalServices.glidera.production.desktop.client_id)) - console.log('Glidera Production Enabled'); -if (externalServices.glidera && - (externalServices.glidera.sandbox.mobile.client_id || externalServices.glidera.sandbox.desktop.client_id)) - console.log('Glidera Sandbox Enabled'); - -var content = 'window.externalServices=' + JSON.stringify(externalServices) + ';'; -fs.writeFileSync("./src/js/externalServices.js", content); - diff --git a/www/cordova.js b/www/cordova.js deleted file mode 100644 index e69de29bb..000000000 diff --git a/www/img/GCs-logo-cllb.png b/www/img/GCs-logo-cllb.png deleted file mode 100644 index 2ad1c7aba..000000000 Binary files a/www/img/GCs-logo-cllb.png and /dev/null differ diff --git a/www/img/a-smile_color_btn.png b/www/img/a-smile_color_btn.png deleted file mode 100644 index c5282761e..000000000 Binary files a/www/img/a-smile_color_btn.png and /dev/null differ diff --git a/www/img/a_generic.jpg b/www/img/a_generic.jpg deleted file mode 100644 index 5690b2a1c..000000000 Binary files a/www/img/a_generic.jpg and /dev/null differ diff --git a/www/img/address-book-add.svg b/www/img/address-book-add.svg deleted file mode 100644 index ea1ffdcd9..000000000 --- a/www/img/address-book-add.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - diff --git a/www/img/ajax-loader.gif b/www/img/ajax-loader.gif deleted file mode 100644 index e1130fa6b..000000000 Binary files a/www/img/ajax-loader.gif and /dev/null differ diff --git a/www/img/backup-warning.svg b/www/img/backup-warning.svg deleted file mode 100644 index bfb4c0bff..000000000 --- a/www/img/backup-warning.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - being-watched - Created with Sketch. - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/bank.svg b/www/img/bank.svg deleted file mode 100644 index 343af7a9c..000000000 --- a/www/img/bank.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - Shape + Shape Copy - Created with Sketch. - - - - - - - - - \ No newline at end of file diff --git a/www/img/bitpay-card-visa.svg b/www/img/bitpay-card-visa.svg deleted file mode 100644 index ce5375715..000000000 --- a/www/img/bitpay-card-visa.svg +++ /dev/null @@ -1,57 +0,0 @@ - - - - bp-card - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/bitpay-logo.svg b/www/img/bitpay-logo.svg deleted file mode 100644 index 158e539c8..000000000 --- a/www/img/bitpay-logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/www/img/bitpay-wallet-qr-scan-guides.svg b/www/img/bitpay-wallet-qr-scan-guides.svg deleted file mode 100644 index 07a700688..000000000 --- a/www/img/bitpay-wallet-qr-scan-guides.svg +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/www/img/bought-pending.svg b/www/img/bought-pending.svg deleted file mode 100644 index 2ada9aaaf..000000000 --- a/www/img/bought-pending.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - -Oval 356 + ios7-redo -Created with Sketch. - - - - - - - - - - - diff --git a/www/img/bought.svg b/www/img/bought.svg deleted file mode 100644 index 63c16f570..000000000 --- a/www/img/bought.svg +++ /dev/null @@ -1,37 +0,0 @@ - - - -Oval 356 + ios7-redo + Shape Copy 5 -Created with Sketch. - - - - - - - - - - - - - - - - - - - - - diff --git a/www/img/buy-bitcoin.svg b/www/img/buy-bitcoin.svg deleted file mode 100644 index ed4bb7fa3..000000000 --- a/www/img/buy-bitcoin.svg +++ /dev/null @@ -1,42 +0,0 @@ - - - -fi-bitcoin-circle + Oval 356 + ios7-redo Copy 4 -Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/www/img/change-avatar.png b/www/img/change-avatar.png deleted file mode 100644 index 6c0ed0826..000000000 Binary files a/www/img/change-avatar.png and /dev/null differ diff --git a/www/img/check-white.svg b/www/img/check-white.svg deleted file mode 100644 index 21ab38a5e..000000000 --- a/www/img/check-white.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - DF90EF75-F651-4B5A-9143-4512A3D52EC8 - Created with sketchtool. - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/check.svg b/www/img/check.svg deleted file mode 100644 index 23fdb8be7..000000000 --- a/www/img/check.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - DF90EF75-F651-4B5A-9143-4512A3D52EC8 - Created with sketchtool. - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/coinbase-logo-inverse.png b/www/img/coinbase-logo-inverse.png deleted file mode 100644 index b6470219d..000000000 Binary files a/www/img/coinbase-logo-inverse.png and /dev/null differ diff --git a/www/img/coinbase-logo.png b/www/img/coinbase-logo.png deleted file mode 100644 index 53da54f52..000000000 Binary files a/www/img/coinbase-logo.png and /dev/null differ diff --git a/www/img/contact-placeholder.svg b/www/img/contact-placeholder.svg deleted file mode 100644 index f730da86b..000000000 --- a/www/img/contact-placeholder.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/www/img/glidera-logo.png b/www/img/glidera-logo.png deleted file mode 100644 index 313aa614a..000000000 Binary files a/www/img/glidera-logo.png and /dev/null differ diff --git a/www/img/ico-positive-feedback.svg b/www/img/ico-positive-feedback.svg deleted file mode 100644 index 508cc7ded..000000000 --- a/www/img/ico-positive-feedback.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - diff --git a/www/img/ico-star-filled.svg b/www/img/ico-star-filled.svg deleted file mode 100644 index a475c9e2c..000000000 --- a/www/img/ico-star-filled.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - diff --git a/www/img/ico-star.svg b/www/img/ico-star.svg deleted file mode 100644 index 864f2b2ba..000000000 --- a/www/img/ico-star.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - diff --git a/www/img/icon-about.svg b/www/img/icon-about.svg deleted file mode 100644 index 609b76257..000000000 --- a/www/img/icon-about.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - 56CDED2F-4C6C-4463-A1F8-2D5CA198DC77 - Created with sketchtool. - - - - - - - - - - - - - - - - diff --git a/www/img/icon-account-add.svg b/www/img/icon-account-add.svg deleted file mode 100644 index 826fbec29..000000000 --- a/www/img/icon-account-add.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - Untitled - Created with Sketch. - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-account.svg b/www/img/icon-account.svg deleted file mode 100644 index 91c6e890f..000000000 --- a/www/img/icon-account.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - Untitled - Created with Sketch. - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-activity.svg b/www/img/icon-activity.svg deleted file mode 100644 index b24b17075..000000000 --- a/www/img/icon-activity.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - downloadbox - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/www/img/icon-address-book.svg b/www/img/icon-address-book.svg deleted file mode 100644 index 28c5e78f3..000000000 --- a/www/img/icon-address-book.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - 497EDE1E-1EB6-4FBF-8440-97D248EFDC4C - Created with sketchtool. - - - - - - - - - - - - - - - diff --git a/www/img/icon-advanced.svg b/www/img/icon-advanced.svg deleted file mode 100644 index 215e4a5f8..000000000 --- a/www/img/icon-advanced.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - 59625EA8-8AF4-43EC-AEF5-596F03BE3707 - Created with sketchtool. - - - - - - - - - - - diff --git a/www/img/icon-alternative-currency.svg b/www/img/icon-alternative-currency.svg deleted file mode 100644 index 8d92a81b2..000000000 --- a/www/img/icon-alternative-currency.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - 3A719124-019D-470F-908A-5D61F117A295 - Created with sketchtool. - - - - - - - - - - - - - - - - - diff --git a/www/img/icon-amazon.svg b/www/img/icon-amazon.svg deleted file mode 100644 index 14a4778ea..000000000 --- a/www/img/icon-amazon.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - diff --git a/www/img/icon-arrow-right.svg b/www/img/icon-arrow-right.svg deleted file mode 100644 index 3381555ca..000000000 --- a/www/img/icon-arrow-right.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - arrows-24px-outline-1_tail-right - Created with Sketch. - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-back-arrow.svg b/www/img/icon-back-arrow.svg deleted file mode 100644 index 18e06f27b..000000000 --- a/www/img/icon-back-arrow.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - controls-ico-back - Created with Sketch. - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-backup.svg b/www/img/icon-backup.svg deleted file mode 100755 index 37e44d19c..000000000 --- a/www/img/icon-backup.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - item-ico-backup - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-bitcoin-small.svg b/www/img/icon-bitcoin-small.svg deleted file mode 100644 index 23477ff69..000000000 --- a/www/img/icon-bitcoin-small.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - Bitcoin_Symbol - Created with Sketch. - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-bitcoin-symbol.svg b/www/img/icon-bitcoin-symbol.svg deleted file mode 100644 index 39d4cc30b..000000000 --- a/www/img/icon-bitcoin-symbol.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - diff --git a/www/img/icon-bitcoin-white.svg b/www/img/icon-bitcoin-white.svg deleted file mode 100644 index ef8cee901..000000000 --- a/www/img/icon-bitcoin-white.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - Imported Layers - Created with Sketch. - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-bitcoin.svg b/www/img/icon-bitcoin.svg deleted file mode 100644 index 5c532c555..000000000 --- a/www/img/icon-bitcoin.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/www/img/icon-bitpay.svg b/www/img/icon-bitpay.svg deleted file mode 100644 index 5105aa1fe..000000000 --- a/www/img/icon-bitpay.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - Oval 87 + bitpay-logo-grayscale - Created with Sketch. - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-broadcasted.svg b/www/img/icon-broadcasted.svg deleted file mode 100644 index 766957c73..000000000 --- a/www/img/icon-broadcasted.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - Group - Created with Sketch. - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-bws-white.svg b/www/img/icon-bws-white.svg deleted file mode 100644 index ad73056ee..000000000 --- a/www/img/icon-bws-white.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/www/img/icon-bws.svg b/www/img/icon-bws.svg deleted file mode 100644 index 1d557ced9..000000000 --- a/www/img/icon-bws.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - BWS + Rectangle 214 - Created with Sketch. - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-camera-toggle.svg b/www/img/icon-camera-toggle.svg deleted file mode 100644 index 1e1f06503..000000000 --- a/www/img/icon-camera-toggle.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - diff --git a/www/img/icon-card.svg b/www/img/icon-card.svg deleted file mode 100644 index 873f912f6..000000000 --- a/www/img/icon-card.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - diff --git a/www/img/icon-check-circled.svg b/www/img/icon-check-circled.svg deleted file mode 100644 index 17027dd45..000000000 --- a/www/img/icon-check-circled.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - Group - Created with Sketch. - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-check-selected.svg b/www/img/icon-check-selected.svg deleted file mode 100644 index e68f11eb4..000000000 --- a/www/img/icon-check-selected.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - Icons/Check/Green - Created with Sketch. - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-chrome-128.png b/www/img/icon-chrome-128.png deleted file mode 100644 index 0044af9ca..000000000 Binary files a/www/img/icon-chrome-128.png and /dev/null differ diff --git a/www/img/icon-confirming-clear.svg b/www/img/icon-confirming-clear.svg deleted file mode 100644 index e7cf58529..000000000 --- a/www/img/icon-confirming-clear.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - -Group 2 -Created with Sketch. - - - - - - - - - diff --git a/www/img/icon-confirming.svg b/www/img/icon-confirming.svg deleted file mode 100644 index 989af61aa..000000000 --- a/www/img/icon-confirming.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - Group 2 - Created with Sketch. - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-contacts.svg b/www/img/icon-contacts.svg deleted file mode 100644 index 01c52492a..000000000 --- a/www/img/icon-contacts.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - icons/list items/sync - Created with Sketch. - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-email.svg b/www/img/icon-email.svg deleted file mode 100644 index ad4efe592..000000000 --- a/www/img/icon-email.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - email copy - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/www/img/icon-exchange.svg b/www/img/icon-exchange.svg deleted file mode 100644 index 2eec6cdac..000000000 --- a/www/img/icon-exchange.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - CEACEB0C-360F-42C8-8D65-89BE2C0C9E86 - Created with sketchtool. - - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-fingerprint-bitpay.svg b/www/img/icon-fingerprint-bitpay.svg deleted file mode 100644 index edf9f95da..000000000 --- a/www/img/icon-fingerprint-bitpay.svg +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/www/img/icon-fingerprint-copay.svg b/www/img/icon-fingerprint-copay.svg deleted file mode 100644 index dcad0d889..000000000 --- a/www/img/icon-fingerprint-copay.svg +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/www/img/icon-flash.svg b/www/img/icon-flash.svg deleted file mode 100644 index 72c726a69..000000000 --- a/www/img/icon-flash.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - diff --git a/www/img/icon-gift.svg b/www/img/icon-gift.svg deleted file mode 100755 index fbb6344cd..000000000 --- a/www/img/icon-gift.svg +++ /dev/null @@ -1,30 +0,0 @@ - - - - item-ico-gift - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-heart.svg b/www/img/icon-heart.svg deleted file mode 100644 index ced8b8ff7..000000000 --- a/www/img/icon-heart.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-help-support.svg b/www/img/icon-help-support.svg deleted file mode 100644 index 49773850c..000000000 --- a/www/img/icon-help-support.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - 8BB4F43E-0712-4B4C-892E-C26DCD0E1646 - Created with sketchtool. - - - - - - - - - - - - - diff --git a/www/img/icon-import.svg b/www/img/icon-import.svg deleted file mode 100644 index 1cfba9a50..000000000 --- a/www/img/icon-import.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/www/img/icon-important.svg b/www/img/icon-important.svg deleted file mode 100644 index 4f113aaf2..000000000 --- a/www/img/icon-important.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/www/img/icon-inteltee-white.svg b/www/img/icon-inteltee-white.svg deleted file mode 100644 index 92f9bc4ba..000000000 --- a/www/img/icon-inteltee-white.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - ® - \ No newline at end of file diff --git a/www/img/icon-language.svg b/www/img/icon-language.svg deleted file mode 100644 index 83c23aaa9..000000000 --- a/www/img/icon-language.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - 7368D005-CAC7-454B-8CF2-4315F4016920 - Created with sketchtool. - - - - - - - - - - - diff --git a/www/img/icon-ledger-white.svg b/www/img/icon-ledger-white.svg deleted file mode 100644 index 37dbdab28..000000000 --- a/www/img/icon-ledger-white.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/www/img/icon-ledger.svg b/www/img/icon-ledger.svg deleted file mode 100644 index 6c844dfb2..000000000 --- a/www/img/icon-ledger.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - Group - Created with Sketch. - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-link-external.svg b/www/img/icon-link-external.svg deleted file mode 100644 index 8e198c75f..000000000 --- a/www/img/icon-link-external.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - arrows-24px-outline-4_launch-47 - Created with Sketch. - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-link.svg b/www/img/icon-link.svg deleted file mode 100644 index eba22bf4e..000000000 --- a/www/img/icon-link.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - 6ACA215E-2C9D-419C-9E24-5CC78D09C2EA - Created with sketchtool. - - - - - - - - - - - - - diff --git a/www/img/icon-lock-green.svg b/www/img/icon-lock-green.svg deleted file mode 100644 index d1be82334..000000000 --- a/www/img/icon-lock-green.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/www/img/icon-lock-white.svg b/www/img/icon-lock-white.svg deleted file mode 100644 index 4d093a9cd..000000000 --- a/www/img/icon-lock-white.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/www/img/icon-lock-x.svg b/www/img/icon-lock-x.svg deleted file mode 100644 index e59f48487..000000000 --- a/www/img/icon-lock-x.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - Group - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-lock.svg b/www/img/icon-lock.svg deleted file mode 100644 index 578c0c3e1..000000000 --- a/www/img/icon-lock.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - lock - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/www/img/icon-moved.svg b/www/img/icon-moved.svg deleted file mode 100644 index 96b2b78e7..000000000 --- a/www/img/icon-moved.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - Oval 145 Copy 7 + retweet - Created with Sketch. - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-network.svg b/www/img/icon-network.svg deleted file mode 100644 index 28de33dc3..000000000 --- a/www/img/icon-network.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - D1663024-9AD7-491F-B0E0-B718DFFAA258 - Created with sketchtool. - - - - - - - - - - - - - - - - diff --git a/www/img/icon-new.svg b/www/img/icon-new.svg deleted file mode 100644 index 71c7db6e1..000000000 --- a/www/img/icon-new.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - Oval 145 Copy 7 + retweet - Created with Sketch. - - - - - Layer 1 - - - - - - - - diff --git a/www/img/icon-notifications.svg b/www/img/icon-notifications.svg deleted file mode 100644 index b09e32fed..000000000 --- a/www/img/icon-notifications.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - A3CC6A90-742E-4634-91DC-28F2146B6659 - Created with sketchtool. - - - - - - - - - - - - - diff --git a/www/img/icon-paperclip.svg b/www/img/icon-paperclip.svg deleted file mode 100644 index ce65f0abc..000000000 --- a/www/img/icon-paperclip.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - Shape - Created with Sketch. - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-proposal-pending.svg b/www/img/icon-proposal-pending.svg deleted file mode 100644 index 6314b99ff..000000000 --- a/www/img/icon-proposal-pending.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - Group - Created with Sketch. - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-proposal.svg b/www/img/icon-proposal.svg deleted file mode 100644 index 63e90d1b8..000000000 --- a/www/img/icon-proposal.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - Oval 145 Copy 5 + send - Created with Sketch. - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-read-only-white.svg b/www/img/icon-read-only-white.svg deleted file mode 100644 index 933d6e0f6..000000000 --- a/www/img/icon-read-only-white.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/www/img/icon-read-only.svg b/www/img/icon-read-only.svg deleted file mode 100644 index 1d6b116c0..000000000 --- a/www/img/icon-read-only.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - Group - Created with Sketch. - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-receive-history.svg b/www/img/icon-receive-history.svg deleted file mode 100644 index caa28e347..000000000 --- a/www/img/icon-receive-history.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - Oval 145 Copy 5 + downloadbox - Created with Sketch. - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-receive.svg b/www/img/icon-receive.svg deleted file mode 100644 index 64209664e..000000000 --- a/www/img/icon-receive.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - downloadbox - Created with Sketch. - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-send-alt.svg b/www/img/icon-send-alt.svg deleted file mode 100644 index 27c7bd1dc..000000000 --- a/www/img/icon-send-alt.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - Group - Created with Sketch. - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-send-feedback.svg b/www/img/icon-send-feedback.svg deleted file mode 100644 index dc920f28a..000000000 --- a/www/img/icon-send-feedback.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - 8A36B580-8A7A-4989-BE8C-FD9BAD98D91C - Created with sketchtool. - - - - - - - - - - - - - - - - - - diff --git a/www/img/icon-send.svg b/www/img/icon-send.svg deleted file mode 100644 index 677348300..000000000 --- a/www/img/icon-send.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - send - Created with Sketch. - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-sent-history.svg b/www/img/icon-sent-history.svg deleted file mode 100644 index cfb0426e5..000000000 --- a/www/img/icon-sent-history.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - Oval 145 Copy 7 + send copy - Created with Sketch. - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-sent.svg b/www/img/icon-sent.svg deleted file mode 100644 index cfb0426e5..000000000 --- a/www/img/icon-sent.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - Oval 145 Copy 7 + send copy - Created with Sketch. - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-sigma.svg b/www/img/icon-sigma.svg deleted file mode 100644 index 0baf24a13..000000000 --- a/www/img/icon-sigma.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - diff --git a/www/img/icon-sync-white.svg b/www/img/icon-sync-white.svg deleted file mode 100644 index 05a4a219f..000000000 --- a/www/img/icon-sync-white.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/www/img/icon-sync.svg b/www/img/icon-sync.svg deleted file mode 100644 index a3245639d..000000000 --- a/www/img/icon-sync.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - sync - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/www/img/icon-testnet-white.svg b/www/img/icon-testnet-white.svg deleted file mode 100644 index 537370ba3..000000000 --- a/www/img/icon-testnet-white.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/www/img/icon-testnet.svg b/www/img/icon-testnet.svg deleted file mode 100644 index 6179fd715..000000000 --- a/www/img/icon-testnet.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - flask - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/www/img/icon-trezor-white.svg b/www/img/icon-trezor-white.svg deleted file mode 100644 index 5cd2a3254..000000000 --- a/www/img/icon-trezor-white.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/www/img/icon-trezor.svg b/www/img/icon-trezor.svg deleted file mode 100644 index accc0866c..000000000 --- a/www/img/icon-trezor.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - Group - Created with Sketch. - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-tx-moved-outline.svg b/www/img/icon-tx-moved-outline.svg deleted file mode 100644 index 1f15f2d7e..000000000 --- a/www/img/icon-tx-moved-outline.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - Group 2 - Created with Sketch. - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-tx-moved.svg b/www/img/icon-tx-moved.svg deleted file mode 100644 index 4f86c7722..000000000 --- a/www/img/icon-tx-moved.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - diff --git a/www/img/icon-tx-received-outline.svg b/www/img/icon-tx-received-outline.svg deleted file mode 100644 index fe902fab0..000000000 --- a/www/img/icon-tx-received-outline.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - diff --git a/www/img/icon-tx-received.svg b/www/img/icon-tx-received.svg deleted file mode 100644 index 37d4d84c9..000000000 --- a/www/img/icon-tx-received.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - diff --git a/www/img/icon-tx-sent-outline.svg b/www/img/icon-tx-sent-outline.svg deleted file mode 100644 index 790099585..000000000 --- a/www/img/icon-tx-sent-outline.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - Group 2 - Created with Sketch. - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-tx-sent.svg b/www/img/icon-tx-sent.svg deleted file mode 100644 index fc8148465..000000000 --- a/www/img/icon-tx-sent.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - diff --git a/www/img/icon-unit.svg b/www/img/icon-unit.svg deleted file mode 100644 index 906e7deaf..000000000 --- a/www/img/icon-unit.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/www/img/icon-unlink.svg b/www/img/icon-unlink.svg deleted file mode 100644 index 1330e50c3..000000000 --- a/www/img/icon-unlink.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - icon-link - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/icon-update.svg b/www/img/icon-update.svg deleted file mode 100644 index feabc1572..000000000 --- a/www/img/icon-update.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - diff --git a/www/img/icon-user.svg b/www/img/icon-user.svg deleted file mode 100644 index 27417de6f..000000000 --- a/www/img/icon-user.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - users - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/www/img/icon-users.svg b/www/img/icon-users.svg deleted file mode 100644 index 4afe0d6d5..000000000 --- a/www/img/icon-users.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - usergroup - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/www/img/icon-view.svg b/www/img/icon-view.svg deleted file mode 100644 index d24d494b7..000000000 --- a/www/img/icon-view.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - view - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/www/img/icon-wallet.svg b/www/img/icon-wallet.svg deleted file mode 100644 index 73406a0cd..000000000 --- a/www/img/icon-wallet.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/www/img/icon-warning.png b/www/img/icon-warning.png deleted file mode 100644 index fa33cfcdc..000000000 Binary files a/www/img/icon-warning.png and /dev/null differ diff --git a/www/img/illustration-send-feedback.png b/www/img/illustration-send-feedback.png deleted file mode 100644 index 6718b4325..000000000 Binary files a/www/img/illustration-send-feedback.png and /dev/null differ diff --git a/www/img/item-ico-addwallet.svg b/www/img/item-ico-addwallet.svg deleted file mode 100644 index a7389f6c6..000000000 --- a/www/img/item-ico-addwallet.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - users-24px-outline_add-29 - Created with Sketch. - - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/item-ico-contact.svg b/www/img/item-ico-contact.svg deleted file mode 100644 index 4ae7623c0..000000000 --- a/www/img/item-ico-contact.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - Contact Avatar - Created with Sketch. - - - - - - - - - \ No newline at end of file diff --git a/www/img/item-ico-import.svg b/www/img/item-ico-import.svg deleted file mode 100644 index 037e52be3..000000000 --- a/www/img/item-ico-import.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - Group - Created with Sketch. - - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/logo-negative.svg b/www/img/logo-negative.svg deleted file mode 100644 index d325ec632..000000000 --- a/www/img/logo-negative.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/www/img/logo.svg b/www/img/logo.svg deleted file mode 100644 index bae45745c..000000000 --- a/www/img/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/www/img/mcc-icons/airplane.svg b/www/img/mcc-icons/airplane.svg deleted file mode 100644 index 40e8c6869..000000000 --- a/www/img/mcc-icons/airplane.svg +++ /dev/null @@ -1 +0,0 @@ -airplane \ No newline at end of file diff --git a/www/img/mcc-icons/art.svg b/www/img/mcc-icons/art.svg deleted file mode 100644 index 4e792a044..000000000 --- a/www/img/mcc-icons/art.svg +++ /dev/null @@ -1 +0,0 @@ -art \ No newline at end of file diff --git a/www/img/mcc-icons/bicycle.svg b/www/img/mcc-icons/bicycle.svg deleted file mode 100644 index 03a7dc57c..000000000 --- a/www/img/mcc-icons/bicycle.svg +++ /dev/null @@ -1 +0,0 @@ -bicycle \ No newline at end of file diff --git a/www/img/mcc-icons/bitcoin-topup.svg b/www/img/mcc-icons/bitcoin-topup.svg deleted file mode 100644 index 8fbb8d0ef..000000000 --- a/www/img/mcc-icons/bitcoin-topup.svg +++ /dev/null @@ -1 +0,0 @@ -bitcoin-topup \ No newline at end of file diff --git a/www/img/mcc-icons/boat.svg b/www/img/mcc-icons/boat.svg deleted file mode 100644 index cb6d2d311..000000000 --- a/www/img/mcc-icons/boat.svg +++ /dev/null @@ -1 +0,0 @@ -boat \ No newline at end of file diff --git a/www/img/mcc-icons/books.svg b/www/img/mcc-icons/books.svg deleted file mode 100644 index 9b73de1e9..000000000 --- a/www/img/mcc-icons/books.svg +++ /dev/null @@ -1 +0,0 @@ -books \ No newline at end of file diff --git a/www/img/mcc-icons/bowling.svg b/www/img/mcc-icons/bowling.svg deleted file mode 100644 index fefab8446..000000000 --- a/www/img/mcc-icons/bowling.svg +++ /dev/null @@ -1 +0,0 @@ -bowling \ No newline at end of file diff --git a/www/img/mcc-icons/bug.svg b/www/img/mcc-icons/bug.svg deleted file mode 100644 index 22883da3f..000000000 --- a/www/img/mcc-icons/bug.svg +++ /dev/null @@ -1 +0,0 @@ -bug \ No newline at end of file diff --git a/www/img/mcc-icons/bus.svg b/www/img/mcc-icons/bus.svg deleted file mode 100644 index a6de44595..000000000 --- a/www/img/mcc-icons/bus.svg +++ /dev/null @@ -1 +0,0 @@ -bus \ No newline at end of file diff --git a/www/img/mcc-icons/camera.svg b/www/img/mcc-icons/camera.svg deleted file mode 100644 index 5c6710244..000000000 --- a/www/img/mcc-icons/camera.svg +++ /dev/null @@ -1 +0,0 @@ -camera \ No newline at end of file diff --git a/www/img/mcc-icons/car.svg b/www/img/mcc-icons/car.svg deleted file mode 100644 index 6e8f1e4e4..000000000 --- a/www/img/mcc-icons/car.svg +++ /dev/null @@ -1 +0,0 @@ -car \ No newline at end of file diff --git a/www/img/mcc-icons/clean.svg b/www/img/mcc-icons/clean.svg deleted file mode 100644 index 2a62d97c0..000000000 --- a/www/img/mcc-icons/clean.svg +++ /dev/null @@ -1 +0,0 @@ -clean \ No newline at end of file diff --git a/www/img/mcc-icons/clock.svg b/www/img/mcc-icons/clock.svg deleted file mode 100644 index 6bd3e7e08..000000000 --- a/www/img/mcc-icons/clock.svg +++ /dev/null @@ -1 +0,0 @@ -clock \ No newline at end of file diff --git a/www/img/mcc-icons/cocktail.svg b/www/img/mcc-icons/cocktail.svg deleted file mode 100644 index f03d4ba99..000000000 --- a/www/img/mcc-icons/cocktail.svg +++ /dev/null @@ -1 +0,0 @@ -cocktail \ No newline at end of file diff --git a/www/img/mcc-icons/coins.svg b/www/img/mcc-icons/coins.svg deleted file mode 100644 index d026b7605..000000000 --- a/www/img/mcc-icons/coins.svg +++ /dev/null @@ -1 +0,0 @@ -coins \ No newline at end of file diff --git a/www/img/mcc-icons/computer.svg b/www/img/mcc-icons/computer.svg deleted file mode 100644 index 92d5e187f..000000000 --- a/www/img/mcc-icons/computer.svg +++ /dev/null @@ -1 +0,0 @@ -computer \ No newline at end of file diff --git a/www/img/mcc-icons/default.svg b/www/img/mcc-icons/default.svg deleted file mode 100644 index 46320a4fd..000000000 --- a/www/img/mcc-icons/default.svg +++ /dev/null @@ -1 +0,0 @@ -default \ No newline at end of file diff --git a/www/img/mcc-icons/diamond-ring.svg b/www/img/mcc-icons/diamond-ring.svg deleted file mode 100644 index 515eae49c..000000000 --- a/www/img/mcc-icons/diamond-ring.svg +++ /dev/null @@ -1 +0,0 @@ -diamond-ring \ No newline at end of file diff --git a/www/img/mcc-icons/dollar-topup.svg b/www/img/mcc-icons/dollar-topup.svg deleted file mode 100644 index e36779ed1..000000000 --- a/www/img/mcc-icons/dollar-topup.svg +++ /dev/null @@ -1 +0,0 @@ -dollar-topup \ No newline at end of file diff --git a/www/img/mcc-icons/euro-topup.svg b/www/img/mcc-icons/euro-topup.svg deleted file mode 100644 index 027c8a836..000000000 --- a/www/img/mcc-icons/euro-topup.svg +++ /dev/null @@ -1 +0,0 @@ -euro-topup \ No newline at end of file diff --git a/www/img/mcc-icons/film.svg b/www/img/mcc-icons/film.svg deleted file mode 100644 index d9788f690..000000000 --- a/www/img/mcc-icons/film.svg +++ /dev/null @@ -1 +0,0 @@ -film \ No newline at end of file diff --git a/www/img/mcc-icons/food.svg b/www/img/mcc-icons/food.svg deleted file mode 100644 index 3044b6765..000000000 --- a/www/img/mcc-icons/food.svg +++ /dev/null @@ -1 +0,0 @@ -food \ No newline at end of file diff --git a/www/img/mcc-icons/football.svg b/www/img/mcc-icons/football.svg deleted file mode 100644 index 159a93882..000000000 --- a/www/img/mcc-icons/football.svg +++ /dev/null @@ -1 +0,0 @@ -football \ No newline at end of file diff --git a/www/img/mcc-icons/furniture.svg b/www/img/mcc-icons/furniture.svg deleted file mode 100644 index c590bc815..000000000 --- a/www/img/mcc-icons/furniture.svg +++ /dev/null @@ -1 +0,0 @@ -furniture \ No newline at end of file diff --git a/www/img/mcc-icons/game.svg b/www/img/mcc-icons/game.svg deleted file mode 100644 index 9679e789a..000000000 --- a/www/img/mcc-icons/game.svg +++ /dev/null @@ -1 +0,0 @@ -game \ No newline at end of file diff --git a/www/img/mcc-icons/gas.svg b/www/img/mcc-icons/gas.svg deleted file mode 100644 index 38415ece3..000000000 --- a/www/img/mcc-icons/gas.svg +++ /dev/null @@ -1 +0,0 @@ -gas \ No newline at end of file diff --git a/www/img/mcc-icons/golf.svg b/www/img/mcc-icons/golf.svg deleted file mode 100644 index 3ba939688..000000000 --- a/www/img/mcc-icons/golf.svg +++ /dev/null @@ -1 +0,0 @@ -golf \ No newline at end of file diff --git a/www/img/mcc-icons/hotel.svg b/www/img/mcc-icons/hotel.svg deleted file mode 100644 index c0b1e4dc6..000000000 --- a/www/img/mcc-icons/hotel.svg +++ /dev/null @@ -1 +0,0 @@ -hotel \ No newline at end of file diff --git a/www/img/mcc-icons/law.svg b/www/img/mcc-icons/law.svg deleted file mode 100644 index 49dbc1ccf..000000000 --- a/www/img/mcc-icons/law.svg +++ /dev/null @@ -1 +0,0 @@ -law \ No newline at end of file diff --git a/www/img/mcc-icons/mail.svg b/www/img/mcc-icons/mail.svg deleted file mode 100644 index b28775d97..000000000 --- a/www/img/mcc-icons/mail.svg +++ /dev/null @@ -1 +0,0 @@ -mail \ No newline at end of file diff --git a/www/img/mcc-icons/medical.svg b/www/img/mcc-icons/medical.svg deleted file mode 100644 index d3d059e3d..000000000 --- a/www/img/mcc-icons/medical.svg +++ /dev/null @@ -1 +0,0 @@ -medical \ No newline at end of file diff --git a/www/img/mcc-icons/money.svg b/www/img/mcc-icons/money.svg deleted file mode 100644 index d4700d3cf..000000000 --- a/www/img/mcc-icons/money.svg +++ /dev/null @@ -1 +0,0 @@ -money \ No newline at end of file diff --git a/www/img/mcc-icons/motorcycle.svg b/www/img/mcc-icons/motorcycle.svg deleted file mode 100644 index 177c51ca9..000000000 --- a/www/img/mcc-icons/motorcycle.svg +++ /dev/null @@ -1 +0,0 @@ -motorcycle \ No newline at end of file diff --git a/www/img/mcc-icons/music.svg b/www/img/mcc-icons/music.svg deleted file mode 100644 index aa1ab63e1..000000000 --- a/www/img/mcc-icons/music.svg +++ /dev/null @@ -1 +0,0 @@ -music \ No newline at end of file diff --git a/www/img/mcc-icons/newspaper.svg b/www/img/mcc-icons/newspaper.svg deleted file mode 100644 index 8572e8223..000000000 --- a/www/img/mcc-icons/newspaper.svg +++ /dev/null @@ -1 +0,0 @@ -newspaper \ No newline at end of file diff --git a/www/img/mcc-icons/park.svg b/www/img/mcc-icons/park.svg deleted file mode 100644 index 233ed999e..000000000 --- a/www/img/mcc-icons/park.svg +++ /dev/null @@ -1 +0,0 @@ -park \ No newline at end of file diff --git a/www/img/mcc-icons/people.svg b/www/img/mcc-icons/people.svg deleted file mode 100644 index e4ac4429e..000000000 --- a/www/img/mcc-icons/people.svg +++ /dev/null @@ -1 +0,0 @@ -people \ No newline at end of file diff --git a/www/img/mcc-icons/pet.svg b/www/img/mcc-icons/pet.svg deleted file mode 100644 index f63e7edbb..000000000 --- a/www/img/mcc-icons/pet.svg +++ /dev/null @@ -1 +0,0 @@ -pet \ No newline at end of file diff --git a/www/img/mcc-icons/plant.svg b/www/img/mcc-icons/plant.svg deleted file mode 100644 index d693aefc3..000000000 --- a/www/img/mcc-icons/plant.svg +++ /dev/null @@ -1 +0,0 @@ -plant \ No newline at end of file diff --git a/www/img/mcc-icons/purchase.svg b/www/img/mcc-icons/purchase.svg deleted file mode 100644 index 5d2b3fcb2..000000000 --- a/www/img/mcc-icons/purchase.svg +++ /dev/null @@ -1 +0,0 @@ -purchase \ No newline at end of file diff --git a/www/img/mcc-icons/repair.svg b/www/img/mcc-icons/repair.svg deleted file mode 100644 index bca6724d1..000000000 --- a/www/img/mcc-icons/repair.svg +++ /dev/null @@ -1 +0,0 @@ -repair \ No newline at end of file diff --git a/www/img/mcc-icons/sadface.svg b/www/img/mcc-icons/sadface.svg deleted file mode 100644 index 422101d0c..000000000 --- a/www/img/mcc-icons/sadface.svg +++ /dev/null @@ -1 +0,0 @@ -sadface \ No newline at end of file diff --git a/www/img/mcc-icons/scissors.svg b/www/img/mcc-icons/scissors.svg deleted file mode 100644 index cb41a20d6..000000000 --- a/www/img/mcc-icons/scissors.svg +++ /dev/null @@ -1 +0,0 @@ -scissors \ No newline at end of file diff --git a/www/img/mcc-icons/search.svg b/www/img/mcc-icons/search.svg deleted file mode 100644 index 1fd6c2659..000000000 --- a/www/img/mcc-icons/search.svg +++ /dev/null @@ -1 +0,0 @@ -search \ No newline at end of file diff --git a/www/img/mcc-icons/shirt.svg b/www/img/mcc-icons/shirt.svg deleted file mode 100644 index 2537830d7..000000000 --- a/www/img/mcc-icons/shirt.svg +++ /dev/null @@ -1 +0,0 @@ -shirt \ No newline at end of file diff --git a/www/img/mcc-icons/shoes.svg b/www/img/mcc-icons/shoes.svg deleted file mode 100644 index 17af5353a..000000000 --- a/www/img/mcc-icons/shoes.svg +++ /dev/null @@ -1 +0,0 @@ -shoes \ No newline at end of file diff --git a/www/img/mcc-icons/smiley-face.svg b/www/img/mcc-icons/smiley-face.svg deleted file mode 100644 index 298e51164..000000000 --- a/www/img/mcc-icons/smiley-face.svg +++ /dev/null @@ -1 +0,0 @@ -smiley-face \ No newline at end of file diff --git a/www/img/mcc-icons/suitcase.svg b/www/img/mcc-icons/suitcase.svg deleted file mode 100644 index 59cad03d1..000000000 --- a/www/img/mcc-icons/suitcase.svg +++ /dev/null @@ -1 +0,0 @@ -business-48px-outline_briefcase-25 \ No newline at end of file diff --git a/www/img/mcc-icons/telephone.svg b/www/img/mcc-icons/telephone.svg deleted file mode 100644 index 424f34fe7..000000000 --- a/www/img/mcc-icons/telephone.svg +++ /dev/null @@ -1 +0,0 @@ -telephone \ No newline at end of file diff --git a/www/img/mcc-icons/television.svg b/www/img/mcc-icons/television.svg deleted file mode 100644 index 0a402da0c..000000000 --- a/www/img/mcc-icons/television.svg +++ /dev/null @@ -1 +0,0 @@ -television \ No newline at end of file diff --git a/www/img/mcc-icons/tent.svg b/www/img/mcc-icons/tent.svg deleted file mode 100644 index 5edf93d0b..000000000 --- a/www/img/mcc-icons/tent.svg +++ /dev/null @@ -1 +0,0 @@ -tent \ No newline at end of file diff --git a/www/img/mcc-icons/ticket.svg b/www/img/mcc-icons/ticket.svg deleted file mode 100644 index a21490151..000000000 --- a/www/img/mcc-icons/ticket.svg +++ /dev/null @@ -1 +0,0 @@ -ticket \ No newline at end of file diff --git a/www/img/mcc-icons/toy.svg b/www/img/mcc-icons/toy.svg deleted file mode 100644 index 0a48dc10a..000000000 --- a/www/img/mcc-icons/toy.svg +++ /dev/null @@ -1 +0,0 @@ -toy \ No newline at end of file diff --git a/www/img/mcc-icons/truck.svg b/www/img/mcc-icons/truck.svg deleted file mode 100644 index 4bd63b7e1..000000000 --- a/www/img/mcc-icons/truck.svg +++ /dev/null @@ -1 +0,0 @@ -truck \ No newline at end of file diff --git a/www/img/mcc-icons/watch.svg b/www/img/mcc-icons/watch.svg deleted file mode 100644 index 3ec73801f..000000000 --- a/www/img/mcc-icons/watch.svg +++ /dev/null @@ -1 +0,0 @@ -watch \ No newline at end of file diff --git a/www/img/no-screenshot.svg b/www/img/no-screenshot.svg deleted file mode 100644 index 7ae7b3f4e..000000000 --- a/www/img/no-screenshot.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - no-screenshot - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/onboarding-checkbox-checked.svg b/www/img/onboarding-checkbox-checked.svg deleted file mode 100644 index bf54b2aab..000000000 --- a/www/img/onboarding-checkbox-checked.svg +++ /dev/null @@ -1,8 +0,0 @@ - - Created with Sketch. - - - - - - diff --git a/www/img/onboarding-checkbox-unchecked.svg b/www/img/onboarding-checkbox-unchecked.svg deleted file mode 100644 index 48c3adfae..000000000 --- a/www/img/onboarding-checkbox-unchecked.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - Created with Sketch. - - - diff --git a/www/img/onboarding-push-notifications.svg b/www/img/onboarding-push-notifications.svg deleted file mode 100644 index 4c6899861..000000000 --- a/www/img/onboarding-push-notifications.svg +++ /dev/null @@ -1,37 +0,0 @@ - - - - Group 7 - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/onboarding-success.svg b/www/img/onboarding-success.svg deleted file mode 100644 index 665a3fd01..000000000 --- a/www/img/onboarding-success.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - Group 3 - Created with Sketch. - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/onboarding-tour-control.svg b/www/img/onboarding-tour-control.svg deleted file mode 100644 index 68b1867e5..000000000 --- a/www/img/onboarding-tour-control.svg +++ /dev/null @@ -1,43 +0,0 @@ - - - - bg-3 - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/onboarding-tour-currency-bg.svg b/www/img/onboarding-tour-currency-bg.svg deleted file mode 100644 index f159baf5b..000000000 --- a/www/img/onboarding-tour-currency-bg.svg +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/www/img/onboarding-tour-phone.svg b/www/img/onboarding-tour-phone.svg deleted file mode 100644 index 93f7dcf08..000000000 --- a/www/img/onboarding-tour-phone.svg +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/www/img/onboarding-warning.svg b/www/img/onboarding-warning.svg deleted file mode 100644 index 5f4b4a907..000000000 --- a/www/img/onboarding-warning.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - warning - Created with Sketch. - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/onboarding-welcome-bg.png b/www/img/onboarding-welcome-bg.png deleted file mode 100644 index df49bed3f..000000000 Binary files a/www/img/onboarding-welcome-bg.png and /dev/null differ diff --git a/www/img/onboarding-welcome-qrcode.png b/www/img/onboarding-welcome-qrcode.png deleted file mode 100644 index 1dab91a3d..000000000 Binary files a/www/img/onboarding-welcome-qrcode.png and /dev/null differ diff --git a/www/img/scan-ico.svg b/www/img/scan-ico.svg deleted file mode 100644 index 5d13c91fe..000000000 --- a/www/img/scan-ico.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - scan-ico - Created with Sketch. - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/sell-bitcoin.svg b/www/img/sell-bitcoin.svg deleted file mode 100644 index 8a313b76c..000000000 --- a/www/img/sell-bitcoin.svg +++ /dev/null @@ -1,41 +0,0 @@ - - - -fi-bitcoin-circle copy + Oval 356 Copy + ios7-redo copy Copy -Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/www/img/sending-icon.svg b/www/img/sending-icon.svg deleted file mode 100644 index fdbf4de25..000000000 --- a/www/img/sending-icon.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - Received - Created with Sketch. - - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/social-icons/ico-social-email.svg b/www/img/social-icons/ico-social-email.svg deleted file mode 100644 index bd88c0374..000000000 --- a/www/img/social-icons/ico-social-email.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/www/img/social-icons/ico-social-facebook.svg b/www/img/social-icons/ico-social-facebook.svg deleted file mode 100644 index c74f94971..000000000 --- a/www/img/social-icons/ico-social-facebook.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - diff --git a/www/img/social-icons/ico-social-googleplus.svg b/www/img/social-icons/ico-social-googleplus.svg deleted file mode 100644 index 282bd61b6..000000000 --- a/www/img/social-icons/ico-social-googleplus.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/www/img/social-icons/ico-social-message.svg b/www/img/social-icons/ico-social-message.svg deleted file mode 100644 index 0bc23d2de..000000000 --- a/www/img/social-icons/ico-social-message.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - diff --git a/www/img/social-icons/ico-social-twitter.svg b/www/img/social-icons/ico-social-twitter.svg deleted file mode 100644 index 1dd16e791..000000000 --- a/www/img/social-icons/ico-social-twitter.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - diff --git a/www/img/social-icons/ico-social-whatsapp.svg b/www/img/social-icons/ico-social-whatsapp.svg deleted file mode 100644 index 9c19f2e68..000000000 --- a/www/img/social-icons/ico-social-whatsapp.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - diff --git a/www/img/sold-pending.svg b/www/img/sold-pending.svg deleted file mode 100644 index d4b33f08a..000000000 --- a/www/img/sold-pending.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - -Oval 356 + ios7-redo Copy -Created with Sketch. - - - - - - - - - - - diff --git a/www/img/sold.svg b/www/img/sold.svg deleted file mode 100644 index adade81d4..000000000 --- a/www/img/sold.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - -Oval 356 + ios7-redo Copy + Shape Copy 5 -Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/www/img/spinner.png b/www/img/spinner.png deleted file mode 100644 index 591bc204f..000000000 Binary files a/www/img/spinner.png and /dev/null differ diff --git a/www/img/sync.svg b/www/img/sync.svg deleted file mode 100644 index ec32e621a..000000000 --- a/www/img/sync.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - 1218C029-D515-4006-B1E3-E919177035E2 - Created with sketchtool. - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/img/tab-icons/ico-home-selected.svg b/www/img/tab-icons/ico-home-selected.svg deleted file mode 100644 index 3f302b1f2..000000000 --- a/www/img/tab-icons/ico-home-selected.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - diff --git a/www/img/tab-icons/ico-home.svg b/www/img/tab-icons/ico-home.svg deleted file mode 100644 index 4297cf20c..000000000 --- a/www/img/tab-icons/ico-home.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - diff --git a/www/img/tab-icons/ico-receive-selected.svg b/www/img/tab-icons/ico-receive-selected.svg deleted file mode 100644 index 1b544dda5..000000000 --- a/www/img/tab-icons/ico-receive-selected.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/www/img/tab-icons/ico-receive.svg b/www/img/tab-icons/ico-receive.svg deleted file mode 100644 index aab9aec69..000000000 --- a/www/img/tab-icons/ico-receive.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - diff --git a/www/img/tab-icons/ico-scan-selected.svg b/www/img/tab-icons/ico-scan-selected.svg deleted file mode 100644 index 6a5c8f589..000000000 --- a/www/img/tab-icons/ico-scan-selected.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - diff --git a/www/img/tab-icons/ico-scan.svg b/www/img/tab-icons/ico-scan.svg deleted file mode 100644 index ea08ae0f0..000000000 --- a/www/img/tab-icons/ico-scan.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - diff --git a/www/img/tab-icons/ico-send-selected.svg b/www/img/tab-icons/ico-send-selected.svg deleted file mode 100644 index 2f812b891..000000000 --- a/www/img/tab-icons/ico-send-selected.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/www/img/tab-icons/ico-send.svg b/www/img/tab-icons/ico-send.svg deleted file mode 100644 index a5020691d..000000000 --- a/www/img/tab-icons/ico-send.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - diff --git a/www/img/tab-icons/ico-settings-selected.svg b/www/img/tab-icons/ico-settings-selected.svg deleted file mode 100644 index 220c8ca5f..000000000 --- a/www/img/tab-icons/ico-settings-selected.svg +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - diff --git a/www/img/tab-icons/ico-settings.svg b/www/img/tab-icons/ico-settings.svg deleted file mode 100644 index 605bdb2fc..000000000 --- a/www/img/tab-icons/ico-settings.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - diff --git a/www/img/transaction-ico-down.svg b/www/img/transaction-ico-down.svg deleted file mode 100644 index 6222b9c3d..000000000 --- a/www/img/transaction-ico-down.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - 78FB16E7-9CC3-4CDA-A486-CB4310074D47 - Created with sketchtool. - - - - - - - - - \ No newline at end of file diff --git a/www/img/transaction-ico-up.svg b/www/img/transaction-ico-up.svg deleted file mode 100644 index e62cbe558..000000000 --- a/www/img/transaction-ico-up.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - 63F37BA0-E6F5-4C27-A289-41CF276928B5 - Created with sketchtool. - - - - - - - - - \ No newline at end of file diff --git a/www/img/warning.svg b/www/img/warning.svg deleted file mode 100644 index 529e60040..000000000 --- a/www/img/warning.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - warning - Created with Sketch. - - - - - - - - - - - - - \ No newline at end of file diff --git a/www/roboto-font/LICENSE.txt b/www/roboto-font/LICENSE.txt deleted file mode 100755 index 75b52484e..000000000 --- a/www/roboto-font/LICENSE.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/www/roboto-font/Roboto-Black.ttf b/www/roboto-font/Roboto-Black.ttf deleted file mode 100755 index fbde625d4..000000000 Binary files a/www/roboto-font/Roboto-Black.ttf and /dev/null differ diff --git a/www/roboto-font/Roboto-Black.woff b/www/roboto-font/Roboto-Black.woff deleted file mode 100644 index be889ddc2..000000000 Binary files a/www/roboto-font/Roboto-Black.woff and /dev/null differ diff --git a/www/roboto-font/Roboto-Black.woff2 b/www/roboto-font/Roboto-Black.woff2 deleted file mode 100644 index 7569a5df4..000000000 Binary files a/www/roboto-font/Roboto-Black.woff2 and /dev/null differ diff --git a/www/roboto-font/Roboto-BlackItalic.ttf b/www/roboto-font/Roboto-BlackItalic.ttf deleted file mode 100755 index 60f7782a2..000000000 Binary files a/www/roboto-font/Roboto-BlackItalic.ttf and /dev/null differ diff --git a/www/roboto-font/Roboto-BlackItalic.woff b/www/roboto-font/Roboto-BlackItalic.woff deleted file mode 100644 index 7e9de98d6..000000000 Binary files a/www/roboto-font/Roboto-BlackItalic.woff and /dev/null differ diff --git a/www/roboto-font/Roboto-BlackItalic.woff2 b/www/roboto-font/Roboto-BlackItalic.woff2 deleted file mode 100644 index 34696138f..000000000 Binary files a/www/roboto-font/Roboto-BlackItalic.woff2 and /dev/null differ diff --git a/www/roboto-font/Roboto-Bold.ttf b/www/roboto-font/Roboto-Bold.ttf deleted file mode 100755 index a355c27cd..000000000 Binary files a/www/roboto-font/Roboto-Bold.ttf and /dev/null differ diff --git a/www/roboto-font/Roboto-Bold.woff b/www/roboto-font/Roboto-Bold.woff deleted file mode 100644 index 3d86753b5..000000000 Binary files a/www/roboto-font/Roboto-Bold.woff and /dev/null differ diff --git a/www/roboto-font/Roboto-Bold.woff2 b/www/roboto-font/Roboto-Bold.woff2 deleted file mode 100644 index bd05e2eac..000000000 Binary files a/www/roboto-font/Roboto-Bold.woff2 and /dev/null differ diff --git a/www/roboto-font/Roboto-BoldItalic.ttf b/www/roboto-font/Roboto-BoldItalic.ttf deleted file mode 100755 index 3c9a7a373..000000000 Binary files a/www/roboto-font/Roboto-BoldItalic.ttf and /dev/null differ diff --git a/www/roboto-font/Roboto-BoldItalic.woff b/www/roboto-font/Roboto-BoldItalic.woff deleted file mode 100644 index bfe5843d0..000000000 Binary files a/www/roboto-font/Roboto-BoldItalic.woff and /dev/null differ diff --git a/www/roboto-font/Roboto-BoldItalic.woff2 b/www/roboto-font/Roboto-BoldItalic.woff2 deleted file mode 100644 index ac381b7cb..000000000 Binary files a/www/roboto-font/Roboto-BoldItalic.woff2 and /dev/null differ diff --git a/www/roboto-font/Roboto-Italic.ttf b/www/roboto-font/Roboto-Italic.ttf deleted file mode 100755 index ff6046d5b..000000000 Binary files a/www/roboto-font/Roboto-Italic.ttf and /dev/null differ diff --git a/www/roboto-font/Roboto-Italic.woff b/www/roboto-font/Roboto-Italic.woff deleted file mode 100644 index f386c07c2..000000000 Binary files a/www/roboto-font/Roboto-Italic.woff and /dev/null differ diff --git a/www/roboto-font/Roboto-Italic.woff2 b/www/roboto-font/Roboto-Italic.woff2 deleted file mode 100644 index 2f4d451bb..000000000 Binary files a/www/roboto-font/Roboto-Italic.woff2 and /dev/null differ diff --git a/www/roboto-font/Roboto-Light.ttf b/www/roboto-font/Roboto-Light.ttf deleted file mode 100755 index 94c6bcc67..000000000 Binary files a/www/roboto-font/Roboto-Light.ttf and /dev/null differ diff --git a/www/roboto-font/Roboto-Light.woff b/www/roboto-font/Roboto-Light.woff deleted file mode 100644 index ec6bf5749..000000000 Binary files a/www/roboto-font/Roboto-Light.woff and /dev/null differ diff --git a/www/roboto-font/Roboto-Light.woff2 b/www/roboto-font/Roboto-Light.woff2 deleted file mode 100644 index 288201788..000000000 Binary files a/www/roboto-font/Roboto-Light.woff2 and /dev/null differ diff --git a/www/roboto-font/Roboto-LightItalic.ttf b/www/roboto-font/Roboto-LightItalic.ttf deleted file mode 100755 index 04cc00230..000000000 Binary files a/www/roboto-font/Roboto-LightItalic.ttf and /dev/null differ diff --git a/www/roboto-font/Roboto-LightItalic.woff b/www/roboto-font/Roboto-LightItalic.woff deleted file mode 100644 index 54d6bb1aa..000000000 Binary files a/www/roboto-font/Roboto-LightItalic.woff and /dev/null differ diff --git a/www/roboto-font/Roboto-LightItalic.woff2 b/www/roboto-font/Roboto-LightItalic.woff2 deleted file mode 100644 index b427fa5aa..000000000 Binary files a/www/roboto-font/Roboto-LightItalic.woff2 and /dev/null differ diff --git a/www/roboto-font/Roboto-Medium.ttf b/www/roboto-font/Roboto-Medium.ttf deleted file mode 100755 index 39c63d746..000000000 Binary files a/www/roboto-font/Roboto-Medium.ttf and /dev/null differ diff --git a/www/roboto-font/Roboto-Medium.woff b/www/roboto-font/Roboto-Medium.woff deleted file mode 100644 index d30a88ac8..000000000 Binary files a/www/roboto-font/Roboto-Medium.woff and /dev/null differ diff --git a/www/roboto-font/Roboto-Medium.woff2 b/www/roboto-font/Roboto-Medium.woff2 deleted file mode 100644 index eeddd93ec..000000000 Binary files a/www/roboto-font/Roboto-Medium.woff2 and /dev/null differ diff --git a/www/roboto-font/Roboto-MediumItalic.ttf b/www/roboto-font/Roboto-MediumItalic.ttf deleted file mode 100755 index dc743f0a6..000000000 Binary files a/www/roboto-font/Roboto-MediumItalic.ttf and /dev/null differ diff --git a/www/roboto-font/Roboto-MediumItalic.woff b/www/roboto-font/Roboto-MediumItalic.woff deleted file mode 100644 index 0c8cd6c18..000000000 Binary files a/www/roboto-font/Roboto-MediumItalic.woff and /dev/null differ diff --git a/www/roboto-font/Roboto-MediumItalic.woff2 b/www/roboto-font/Roboto-MediumItalic.woff2 deleted file mode 100644 index e0b4d4858..000000000 Binary files a/www/roboto-font/Roboto-MediumItalic.woff2 and /dev/null differ diff --git a/www/roboto-font/Roboto-Regular.ttf b/www/roboto-font/Roboto-Regular.ttf deleted file mode 100755 index 8c082c8de..000000000 Binary files a/www/roboto-font/Roboto-Regular.ttf and /dev/null differ diff --git a/www/roboto-font/Roboto-Regular.woff b/www/roboto-font/Roboto-Regular.woff deleted file mode 100644 index 464d20623..000000000 Binary files a/www/roboto-font/Roboto-Regular.woff and /dev/null differ diff --git a/www/roboto-font/Roboto-Regular.woff2 b/www/roboto-font/Roboto-Regular.woff2 deleted file mode 100644 index f96619675..000000000 Binary files a/www/roboto-font/Roboto-Regular.woff2 and /dev/null differ diff --git a/www/roboto-font/Roboto-Thin.ttf b/www/roboto-font/Roboto-Thin.ttf deleted file mode 100755 index d69555029..000000000 Binary files a/www/roboto-font/Roboto-Thin.ttf and /dev/null differ diff --git a/www/roboto-font/Roboto-Thin.woff b/www/roboto-font/Roboto-Thin.woff deleted file mode 100644 index 09faa40d1..000000000 Binary files a/www/roboto-font/Roboto-Thin.woff and /dev/null differ diff --git a/www/roboto-font/Roboto-Thin.woff2 b/www/roboto-font/Roboto-Thin.woff2 deleted file mode 100644 index bd28dbcd3..000000000 Binary files a/www/roboto-font/Roboto-Thin.woff2 and /dev/null differ diff --git a/www/roboto-font/Roboto-ThinItalic.ttf b/www/roboto-font/Roboto-ThinItalic.ttf deleted file mode 100755 index 07172ff66..000000000 Binary files a/www/roboto-font/Roboto-ThinItalic.ttf and /dev/null differ diff --git a/www/roboto-font/Roboto-ThinItalic.woff b/www/roboto-font/Roboto-ThinItalic.woff deleted file mode 100644 index 3f58cbf54..000000000 Binary files a/www/roboto-font/Roboto-ThinItalic.woff and /dev/null differ diff --git a/www/roboto-font/Roboto-ThinItalic.woff2 b/www/roboto-font/Roboto-ThinItalic.woff2 deleted file mode 100644 index 12a1eef88..000000000 Binary files a/www/roboto-font/Roboto-ThinItalic.woff2 and /dev/null differ diff --git a/www/roboto-font/roboto-black-webfont.woff b/www/roboto-font/roboto-black-webfont.woff deleted file mode 100755 index 235a22e7f..000000000 Binary files a/www/roboto-font/roboto-black-webfont.woff and /dev/null differ diff --git a/www/roboto-font/roboto-black-webfont.woff2 b/www/roboto-font/roboto-black-webfont.woff2 deleted file mode 100755 index 7b2da40dd..000000000 Binary files a/www/roboto-font/roboto-black-webfont.woff2 and /dev/null differ diff --git a/www/roboto-font/roboto-blackitalic-webfont.woff b/www/roboto-font/roboto-blackitalic-webfont.woff deleted file mode 100755 index bc72f1191..000000000 Binary files a/www/roboto-font/roboto-blackitalic-webfont.woff and /dev/null differ diff --git a/www/roboto-font/roboto-blackitalic-webfont.woff2 b/www/roboto-font/roboto-blackitalic-webfont.woff2 deleted file mode 100755 index 5585aeb5e..000000000 Binary files a/www/roboto-font/roboto-blackitalic-webfont.woff2 and /dev/null differ diff --git a/www/roboto-font/roboto-bold-webfont.woff b/www/roboto-font/roboto-bold-webfont.woff deleted file mode 100755 index 25eafea79..000000000 Binary files a/www/roboto-font/roboto-bold-webfont.woff and /dev/null differ diff --git a/www/roboto-font/roboto-bold-webfont.woff2 b/www/roboto-font/roboto-bold-webfont.woff2 deleted file mode 100755 index 9eb35cc57..000000000 Binary files a/www/roboto-font/roboto-bold-webfont.woff2 and /dev/null differ diff --git a/www/roboto-font/roboto-bolditalic-webfont.woff b/www/roboto-font/roboto-bolditalic-webfont.woff deleted file mode 100755 index 93374b9ce..000000000 Binary files a/www/roboto-font/roboto-bolditalic-webfont.woff and /dev/null differ diff --git a/www/roboto-font/roboto-bolditalic-webfont.woff2 b/www/roboto-font/roboto-bolditalic-webfont.woff2 deleted file mode 100755 index f10418b7b..000000000 Binary files a/www/roboto-font/roboto-bolditalic-webfont.woff2 and /dev/null differ diff --git a/www/roboto-font/roboto-italic-webfont.woff b/www/roboto-font/roboto-italic-webfont.woff deleted file mode 100755 index 6fb4026ee..000000000 Binary files a/www/roboto-font/roboto-italic-webfont.woff and /dev/null differ diff --git a/www/roboto-font/roboto-italic-webfont.woff2 b/www/roboto-font/roboto-italic-webfont.woff2 deleted file mode 100755 index 5153a0e55..000000000 Binary files a/www/roboto-font/roboto-italic-webfont.woff2 and /dev/null differ diff --git a/www/roboto-font/roboto-light-webfont.woff b/www/roboto-font/roboto-light-webfont.woff deleted file mode 100755 index 2ea28a7c5..000000000 Binary files a/www/roboto-font/roboto-light-webfont.woff and /dev/null differ diff --git a/www/roboto-font/roboto-light-webfont.woff2 b/www/roboto-font/roboto-light-webfont.woff2 deleted file mode 100755 index 37b1f938a..000000000 Binary files a/www/roboto-font/roboto-light-webfont.woff2 and /dev/null differ diff --git a/www/roboto-font/roboto-lightitalic-webfont.woff b/www/roboto-font/roboto-lightitalic-webfont.woff deleted file mode 100755 index baaeabf23..000000000 Binary files a/www/roboto-font/roboto-lightitalic-webfont.woff and /dev/null differ diff --git a/www/roboto-font/roboto-lightitalic-webfont.woff2 b/www/roboto-font/roboto-lightitalic-webfont.woff2 deleted file mode 100755 index 8eb516501..000000000 Binary files a/www/roboto-font/roboto-lightitalic-webfont.woff2 and /dev/null differ diff --git a/www/roboto-font/roboto-medium-webfont.woff b/www/roboto-font/roboto-medium-webfont.woff deleted file mode 100755 index 17a6b6509..000000000 Binary files a/www/roboto-font/roboto-medium-webfont.woff and /dev/null differ diff --git a/www/roboto-font/roboto-medium-webfont.woff2 b/www/roboto-font/roboto-medium-webfont.woff2 deleted file mode 100755 index d8f2d61cb..000000000 Binary files a/www/roboto-font/roboto-medium-webfont.woff2 and /dev/null differ diff --git a/www/roboto-font/roboto-mediumitalic-webfont.woff b/www/roboto-font/roboto-mediumitalic-webfont.woff deleted file mode 100755 index 57361fc80..000000000 Binary files a/www/roboto-font/roboto-mediumitalic-webfont.woff and /dev/null differ diff --git a/www/roboto-font/roboto-mediumitalic-webfont.woff2 b/www/roboto-font/roboto-mediumitalic-webfont.woff2 deleted file mode 100755 index cd17dbcc4..000000000 Binary files a/www/roboto-font/roboto-mediumitalic-webfont.woff2 and /dev/null differ diff --git a/www/roboto-font/roboto-regular-webfont.woff b/www/roboto-font/roboto-regular-webfont.woff deleted file mode 100755 index 1ab884777..000000000 Binary files a/www/roboto-font/roboto-regular-webfont.woff and /dev/null differ diff --git a/www/roboto-font/roboto-regular-webfont.woff2 b/www/roboto-font/roboto-regular-webfont.woff2 deleted file mode 100755 index a429e364b..000000000 Binary files a/www/roboto-font/roboto-regular-webfont.woff2 and /dev/null differ diff --git a/www/roboto-font/roboto-thin-webfont.woff b/www/roboto-font/roboto-thin-webfont.woff deleted file mode 100755 index 2b03a0f74..000000000 Binary files a/www/roboto-font/roboto-thin-webfont.woff and /dev/null differ diff --git a/www/roboto-font/roboto-thin-webfont.woff2 b/www/roboto-font/roboto-thin-webfont.woff2 deleted file mode 100755 index 444575dba..000000000 Binary files a/www/roboto-font/roboto-thin-webfont.woff2 and /dev/null differ diff --git a/www/roboto-font/roboto-thinitalic-webfont.woff b/www/roboto-font/roboto-thinitalic-webfont.woff deleted file mode 100755 index 5352aa47b..000000000 Binary files a/www/roboto-font/roboto-thinitalic-webfont.woff and /dev/null differ diff --git a/www/roboto-font/roboto-thinitalic-webfont.woff2 b/www/roboto-font/roboto-thinitalic-webfont.woff2 deleted file mode 100755 index b8e2886b5..000000000 Binary files a/www/roboto-font/roboto-thinitalic-webfont.woff2 and /dev/null differ diff --git a/www/views/activity.html b/www/views/activity.html deleted file mode 100644 index 360246855..000000000 --- a/www/views/activity.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - {{'Recent Transactions'|translate}} - - - - - - -
-
- -
Updating... Please stand by
-
-
- -
-
-
- -
- -
- No recent transactions -
-
-
-
-
diff --git a/www/views/add.html b/www/views/add.html deleted file mode 100644 index 23651096d..000000000 --- a/www/views/add.html +++ /dev/null @@ -1,44 +0,0 @@ - - - {{'Add wallet' | translate}} - - - - - - - - - - - New personal wallet - - - - - - - - Create shared wallet - - - - - - - - Join shared wallet - - - - - - - - Import wallet - - - - - - diff --git a/www/views/addressbook.add.html b/www/views/addressbook.add.html deleted file mode 100644 index 8c78f5ab2..000000000 --- a/www/views/addressbook.add.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - Add Contact - - - - - - - - - - -
- -
- - -
- -
- -
-
-
- -
- -
- -
-
-
diff --git a/www/views/addressbook.html b/www/views/addressbook.html deleted file mode 100644 index 416e93f0f..000000000 --- a/www/views/addressbook.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Address Book - - - - - - -
- - - -
No contacts yet
-
Get started by adding your first one.
-
- -
-
-
- -
- -
- - - - -

{{addrEntry.name}}

-

{{addrEntry.address}}

- -
-
-
-
diff --git a/www/views/addressbook.view.html b/www/views/addressbook.view.html deleted file mode 100644 index 228dd71b4..000000000 --- a/www/views/addressbook.view.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - {{addressbookEntry.name}} - - - -
- - - - -
-
-
- Name - {{addressbookEntry.name}} -
-
- Email - {{addressbookEntry.email}} -
-
- Address - {{addressbookEntry.address}} -
-
-
- Send Money - -
-
-
- Remove -
-
-
-
diff --git a/www/views/addresses.html b/www/views/addresses.html deleted file mode 100644 index d21d7ce74..000000000 --- a/www/views/addresses.html +++ /dev/null @@ -1,104 +0,0 @@ - - - {{'Wallet Addresses' | translate}} - - - - - - - - -
- -
-
-
- 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. Why? -
-
- -
-
- 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 -
-
- -
-
- Scan addresses for funds -
-
- View All Addresses - -
- -
- Unused Addresses - -
- -
- - Loading addresses... -
- -
-
-
Unused Addresses Limit
-

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. Read more

-

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. Read less

-
- -
- {{u.address}} -
- {{u.path}} {{u.createdOn * 1000 | amDateFormat:'MMMM Do YYYY, hh:mm a'}} -
-
-
- -
-
- Addresses With Balance -
- -
- {{w.address}} -
{{w.balanceStr}}
-
-
- - -
-
- Wallet Inputs -
- -
- Total wallet inputs -
- {{allUtxosNb}} [{{allUtxosSum}}] -
-
-
- Low amount inputs -
- {{lowUtxosNb}} [{{ lowUtxosSum }}] -
-
- -
- Approximate Bitcoin network fee to transfer wallet's balance (with normal priority) -
- {{minFeePer}} [{{minFee}}] -
-
- -
-
-
-
-
diff --git a/www/views/advancedSettings.html b/www/views/advancedSettings.html deleted file mode 100644 index 68f1f58a5..000000000 --- a/www/views/advancedSettings.html +++ /dev/null @@ -1,33 +0,0 @@ - - - {{'Advanced Settings' | translate}} - - - - - -
- - Use Unconfirmed Funds - -
- If enabled, wallets will also try to spend unconfirmed funds. This option may cause transaction delays. -
- -
- - - Recent Transaction Card - -
- If enabled, the Recent Transactions card - a list of transactions occuring across all wallets - will appear in the Home tab. -
- -
- - - Hide Next Steps Card - -
-
-
diff --git a/www/views/allAddresses.html b/www/views/allAddresses.html deleted file mode 100644 index d54c0710d..000000000 --- a/www/views/allAddresses.html +++ /dev/null @@ -1,36 +0,0 @@ - - - {{'All Addresses' | translate}} - - - - - -
-
- -
- - Loading addresses... -
- -
-
- Send addresses by email -
- -
-
- -
- {{a.address}} -
- {{a.path}} {{a.createdOn * 1000 | amDateFormat:'MMMM Do YYYY, hh:mm a'}} -
-
{{a.balanceStr}}
-
- -
-
-
-
diff --git a/www/views/amazon.html b/www/views/amazon.html deleted file mode 100644 index 85d4e0636..000000000 --- a/www/views/amazon.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - Amazon.com Gift Cards - - - -
- Sandbox version. Only for testing purpose. -
-
- -
Gift Cards are only redeemable on Amazon.com (US website). Cards never expire and can be redeemed towards millions of items.
-
- - -
-
-
- -
- Sandbox version. Only for testing purpose. -
- -
- Amazon.com Gift Card -
Only redeemable on www.amazon.com (US website).
-
- -
- - -
- * Amazon.com is not a sponsor of this promotion. - Except as required by law, Amazon.com - Gift Cards ("GCs") cannot be transferred for value or redeemed for cash. GCs may be used only for purchases of - eligible goods at Amazon.com or certain of its - affiliated websites. For complete terms and conditions, see - www.amazon.com/gc-legal. - GCs are issued by ACI Gift Cards, Inc., a Washington corporation. All Amazon ®, ™ & © are IP - of Amazon.com, Inc. or its affiliates. - No expiration date or service fees. -
-
-
-
diff --git a/www/views/amazonCards.html b/www/views/amazonCards.html deleted file mode 100644 index eeb6560b1..000000000 --- a/www/views/amazonCards.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - Your cards - - - -
-
- {{id}} - - -

- {{item.amount | currency : '$ ' : 2}} {{item.currency}} -

-

- Error - Expired - Still waiting confirmation
(Use higher fees setting to faster delivery)
- Pending to confirmation - Canceled - {{item.date | amTimeAgo}} -

-
-
- -
- * Amazon.com is not a sponsor of this promotion. - Except as required by law, Amazon.com - Gift Cards ("GCs") cannot be transferred for value or redeemed for cash. GCs may be used only for purchases of - eligible goods at Amazon.com or certain of its - affiliated websites. For complete terms and conditions, see - www.amazon.com/gc-legal. - GCs are issued by ACI Gift Cards, Inc., a Washington corporation. All Amazon ®, ™ & © are IP - of Amazon.com, Inc. or its affiliates. - No expiration date or service fees. -
-
-
diff --git a/www/views/amount.html b/www/views/amount.html deleted file mode 100644 index 062722793..000000000 --- a/www/views/amount.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - {{'Enter Amount' | translate}} - - - - - - - - - - -
-
Recipient
- -
- - - - - - - - - - - - - - - {{toName || toAddress}} -
-
- -
- -
-
- Amount -
-
- -
-
- {{amount || "0.00" }} - {{alternativeIsoCode}} - {{unitName}} -
-
-
{{globalResult}} {{unitName}}
-
≈ {{amountResult || '0.00'}} {{alternativeIsoCode}}
-
-
-
{{globalResult}} {{alternativeIsoCode}}
-
{{alternativeResult || '0.00'}} {{unitName}}
-
-
-
- - -
-
-
- -
-
-
-
7
-
8
-
9
-
÷
-
- -
-
4
-
5
-
6
-
×
-
- -
-
1
-
2
-
3
-
+
-
- -
-
.
-
0
-
-
-
-
-
- - -
diff --git a/www/views/backup.html b/www/views/backup.html deleted file mode 100644 index cfaee0902..000000000 --- a/www/views/backup.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - {{viewTitle}} - - - - - -
-
Wallet recovery phrase not available.
-
You can still export it from Advanced > Export.
-
- -
-
Please carefully write down this phrase.
-
-
- {{word}}  -
-
-
- This recovery phrase was created with a password. To recover this wallet both the recovery phrase and password are needed. -
-
-
We'll confirm on the next screen.
- -
-
- -
-
Let's verify your backup phrase.
-
-
- - - -
-
-
-
-
Please tap each word in the correct order.
-
Is this correct?
- - - - - -
-
-
- -
-

Enter your password

-
-
-
In order to verify your wallet backup, please type your password.
-
- -
-
-
-
- -
-
-
-
diff --git a/www/views/backupWarning.html b/www/views/backupWarning.html deleted file mode 100644 index 49b7bc131..000000000 --- a/www/views/backupWarning.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - -
Are you being watched?
-
Now is a perfect time to assess your surroundings. Nearby windows? Hidden cameras? Shoulder-spies?
-
-
-
Anyone with your backup phrase can access or spend your bitcoin.
- -
-
-
diff --git a/www/views/bitpayCard.html b/www/views/bitpayCard.html deleted file mode 100644 index c81eb6e54..000000000 --- a/www/views/bitpayCard.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - BitPay Visa® Card ({{bitpayCard.lastFourDigits}}) - - - - -
- Sandbox version. Only for testing purpose -
- -
-
-
-
-
{{bitpayCard.currencySymbol}}{{bitpayCard.balance}}
- -
- {{bitpayCard.updatedOn * 1000 | amTimeAgo}} -
- - - - {{'Add Funds'|translate}} - -
-
- ... -
-
- -
- -
-
- -
- {{error}} -
- -
- -

Get started

-
- Your BitPay Card is ready. Add funds to your card to start using it at stores and ATMs worldwide. -
-
-
- -
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
-
-
diff --git a/www/views/bitpayCardIntro.html b/www/views/bitpayCardIntro.html deleted file mode 100644 index 28d777d76..000000000 --- a/www/views/bitpayCardIntro.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - -
- -
- - -

- Turn bitcoin into dollars, swipe anywhere Visa® is accepted. -

-
- -

- Get local cash anywhere you go, from any Visa® compatible ATM. ATM bank fees may apply. -

-
- -

- Pay 0% fees to turn bitcoin into dollars. -

-
-
-
- - -
-
- - -
diff --git a/www/views/buyAmazon.html b/www/views/buyAmazon.html deleted file mode 100644 index 6fbe3690e..000000000 --- a/www/views/buyAmazon.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - {{'Buy'|translate}} - - - - -
- -
-
- -
-
- Amazon.com Gift Card -
-
-
{{amountUnitStr}}
-
- {{limitPerDayMessage}} -
-
-
- -
-
-
From
-
- - - - {{wallet ? wallet.name : '...'}} -
- -
-
-
- Details -
-
- Gift card - - {{amount | currency:'$ ':2}} {{currencyIsoCode}} - -
-
- Invoice Fee - - {{invoiceFee | currency:'$ ':2}} {{currencyIsoCode}} - -
-
- Network Fee - - {{networkFee | currency:'$ ':2}} {{currencyIsoCode}} - -
-
- Total - - {{totalAmount | currency:'$ ':2}} {{currencyIsoCode}} - ({{totalAmountStr}}) - -
-
-
-
- * Amazon.com is not a sponsor of this promotion. - Except as required by law, Amazon.com - Gift Cards ("GCs") cannot be transferred for value or redeemed for cash. GCs may be used only for purchases of - eligible goods at Amazon.com or certain of its - affiliated websites. For complete terms and conditions, see - www.amazon.com/gc-legal. - GCs are issued by ACI Gift Cards, Inc., a Washington corporation. All Amazon ®, ™ & © are IP - of Amazon.com, Inc. or its affiliates. - No expiration date or service fees. -
-
-
- -
- - - {{'Confirm purchase'|translate}} - - - {{'Slide to buy'|translate}} - - - - Your purchase could not be completed - - - Your purchase was added to the list of pending - - - Bought {{amountUnitStr}} - -
- Gift card generated and ready to use. -
-
- - - -
diff --git a/www/views/buyCoinbase.html b/www/views/buyCoinbase.html deleted file mode 100644 index 8ae1999a0..000000000 --- a/www/views/buyCoinbase.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - Buy bitcoin - - - - -
- -
-
- buy bitcoin - Buying -
-
-
{{amountUnitStr}}
-
- {{buyRequestInfo.amount.amount}} {{buyRequestInfo.amount.currency}} - @ ${{buyPrice.amount}} per BTC -
-
-
- -
- - -
-
Receive in
-
- - - - {{wallet ? wallet.name : '...'}} -
- -
- -
- Transaction details -
-
- Amount - - {{buyRequestInfo.subtotal.amount}} {{buyRequestInfo.subtotal.currency}} - -
-
- - {{fee.type}} fee - - - {{fee.amount.amount}} {{fee.amount.currency}} - -
-
- Total to pay - - {{buyRequestInfo.total.amount}} {{buyRequestInfo.total.currency}} - -
-
-
- -
- - - Confirm purchase - - - Slide to buy - - - Bought -
- Bitcoin purchase completed. Coinbase has queued the transfer to your selected wallet -
-
- - - -
diff --git a/www/views/buyGlidera.html b/www/views/buyGlidera.html deleted file mode 100644 index df8e386e9..000000000 --- a/www/views/buyGlidera.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - Buy bitcoin - - - - -
- -
-
- buy bitcoin - Buying -
-
-
{{amountUnitStr}}
-
- {{buyInfo.subtotal}} {{buyInfo.currency}} - {{buyInfo.qty}} BTC - @ ${{buyInfo.price}} per BTC -
-
-
- -
- -
-
Receive in
-
- - - - {{wallet ? wallet.name : '...'}} -
- -
- -
- Transaction details -
-
- Expires - - {{buyInfo.expires | amCalendar}} - -
-
- Fees - - {{buyInfo.fees}} {{buyInfo.currency}} - -
-
- Total to pay - - {{buyInfo.total}} {{buyInfo.currency}} - -
-
-
- -
- - - Confirm purchase - - - Slide to buy - - - Bought -
- A transfer has been initiated from your bank account. Your bitcoins should arrive to your wallet in 2-4 business day -
-
- - - -
diff --git a/www/views/buyandsell.html b/www/views/buyandsell.html deleted file mode 100644 index f18866aa5..000000000 --- a/www/views/buyandsell.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - Buy or Sell Bitcoin - - -
-
- - - -
Connect an Exchange
-
Buy or sell bitcoin directly from your wallet by connecting your exchange accounts.
-
-
-
-
- - {{service.location}} - -
-
- - diff --git a/www/views/coinbase.html b/www/views/coinbase.html deleted file mode 100644 index 0a96ac0bd..000000000 --- a/www/views/coinbase.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - Coinbase - - - - - -
- -
Coinbase's exchange service is available in 33 countries, and can take 3-5 days to buy or sell bitcoin.
-
If you have trouble, contact Coinbase support for direct assistance.
-
- - -
- -
-
-
- -
- - -
-
-
-
- - - - - -
diff --git a/www/views/confirm.html b/www/views/confirm.html deleted file mode 100644 index a2b85ad88..000000000 --- a/www/views/confirm.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - {{'Confirm'|translate}} - - - - - - -
-
-
- - Sending - Sending maximum amount -
-
-
{{tx.amountValueStr || '...'}} {{tx.amountUnitStr}}
-
{{tx.alternativeAmountStr || '...'}}
-
-
-
-
- Payment Expires: - {{remainingTimeStr}} - Expired -
- -
- To - - - -
- - {{tx.toName}} -
- -
- - - {{tx.paypro.domain || tx.paypro.toAddress}} - {{tx.toName}} -
- -
-
- - - -
- - {{tx.toName}} -
-
-
- - {{tx.toName}} - {{tx.toAddress}} -
-
- - From -
- - - -
{{wallet.name}}
-
-
- - - -
...
-
- -
-
- {{'Fee:' | translate}} {{tx.feeLevelName | translate}} - {{tx.txp[wallet.id].feeStr || '...'}} - - {{tx.txp[wallet.id].alternativeFeeStr || '...'}}  - · -   - {{tx.txp[wallet.id].feeRatePerStr}} of the sending amount - - - - - - -
- - Add Memo - - {{tx.description}} - - - -
- {{noWalletMessage}} -
-
-
-
- - {{buttonText}} - - - {{buttonText}} - - - Payment Sent - Proposal Created - Transaction Created - - - - - -
diff --git a/www/views/copayers.html b/www/views/copayers.html deleted file mode 100644 index d09be3575..000000000 --- a/www/views/copayers.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - {{wallet.name}} - - - - - - -
-
-
- Share this invitation with your copayers -
-
-
- -
-
- -
-
-
- {{secret || ('Loading...'|translate)}} -
-
- -
-
- -
- -
-
- - [ {{wallet.m}}-of-{{wallet.n}} ] - - Waiting for copayers -
-
-
- - {{'Waiting...'|translate}} -
-
- -
-

Wallet incomplete and broken

-

Delete it and create a new one

-
-
-
-
-
diff --git a/www/views/customAmount.html b/www/views/customAmount.html deleted file mode 100644 index f9d5aafb7..000000000 --- a/www/views/customAmount.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - {{'Custom Amount' | translate}} - - - - - - -
-
- -
-
-
- Address - - {{address}} - -
-
- Amount - - {{amountUnitStr}} - {{altAmountStr}} - -
-
-
- - - - {{wallet.name}} -
-
Receive in
-
-
-
-
-
diff --git a/www/views/export.html b/www/views/export.html deleted file mode 100644 index 7a7e460c6..000000000 --- a/www/views/export.html +++ /dev/null @@ -1,24 +0,0 @@ - - - {{'Export wallet' | translate}} - - - - - - -
- -
-
- File/Text -
-
- QR Code -
-
- -
-
-
-
diff --git a/www/views/feedback/complete.html b/www/views/feedback/complete.html deleted file mode 100644 index 03a98a476..000000000 --- a/www/views/feedback/complete.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - {{title}} - - - - - -
-
-
- -
Share the love by inviting your friends.
-
-
- -
A member of the team will review your feedback as soon as possible.
-
-
If you have additional feedback, please let us know by tapping the "Send feedback" option in the Settings tab.
- -
-
Share the love by inviting your friends.
-
-
- -
-
-
diff --git a/www/views/feedback/rateApp.html b/www/views/feedback/rateApp.html deleted file mode 100644 index 9913b9d4e..000000000 --- a/www/views/feedback/rateApp.html +++ /dev/null @@ -1,21 +0,0 @@ - - - Not now - - -
- 5-star ratings help us get {{appName}} into more hands, and more users means more resources can be committed to the app! -
-
- Would you be willing to rate {{appName}} in the app store? -
-
- - -
-
-
diff --git a/www/views/feedback/rateCard.html b/www/views/feedback/rateCard.html deleted file mode 100644 index d31199466..000000000 --- a/www/views/feedback/rateCard.html +++ /dev/null @@ -1,43 +0,0 @@ -
-
- How do you like {{appName}}? - -
-
-
- - - - -
-
- - - - -
-
- - - - -
-
- - - - -
-
- - - - -
-
- -
diff --git a/www/views/feedback/send.html b/www/views/feedback/send.html deleted file mode 100644 index bb979bdee..000000000 --- a/www/views/feedback/send.html +++ /dev/null @@ -1,48 +0,0 @@ - - - {{'Send Feedback' | translate}} - - - - - - - - - - -
- {{comment}} -
-
- - -
-
-
diff --git a/www/views/glidera.html b/www/views/glidera.html deleted file mode 100644 index 7425120a8..000000000 --- a/www/views/glidera.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - Glidera - - - - - -
- -
Glidera's exchange service is available in the United States, and can take 1-2 weeks to buy or sell bitcoin.
-
If you have trouble, contact Glidera support for direct assistance.
-
- - -
- -
-
-
- -
- - -
-
-
-
- - -
- -
Please complete your account verification on Glidera's website. If you have trouble, contact Glidera's support for direct assistance.
-
- - -
-
-
- - -
- -
- - - - -
-
-
diff --git a/www/views/glideraUri.html b/www/views/glideraUri.html deleted file mode 100644 index a38988c2f..000000000 --- a/www/views/glideraUri.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Glidera - - - - -
- Testnet wallets only work with Glidera Sandbox Accounts -
- -
- -
- Connecting... -
-
-
-
diff --git a/www/views/import.html b/www/views/import.html deleted file mode 100644 index 75c6a2b93..000000000 --- a/www/views/import.html +++ /dev/null @@ -1,28 +0,0 @@ - - - {{'Import Wallet' | translate}} - - - - - -
-
- Recovery phrase -
-
- File/Text -
-
- Hardware wallet -
-
- -
-
-
-
-
diff --git a/www/views/includes/accountSelector.html b/www/views/includes/accountSelector.html deleted file mode 100644 index 862524798..000000000 --- a/www/views/includes/accountSelector.html +++ /dev/null @@ -1,34 +0,0 @@ - diff --git a/www/views/includes/actionSheet.html b/www/views/includes/actionSheet.html deleted file mode 100644 index 3ced59686..000000000 --- a/www/views/includes/actionSheet.html +++ /dev/null @@ -1,8 +0,0 @@ -
-
-
- -
diff --git a/www/views/includes/available-balance.html b/www/views/includes/available-balance.html deleted file mode 100644 index 3c1101adf..000000000 --- a/www/views/includes/available-balance.html +++ /dev/null @@ -1,10 +0,0 @@ -
- - Available Balance: - {{index.availableBalanceStr }} - - - {{index.lockedBalanceStr}} - locked by pending payments - -
diff --git a/www/views/includes/backupNeededPopup.html b/www/views/includes/backupNeededPopup.html deleted file mode 100644 index 7884ffc24..000000000 --- a/www/views/includes/backupNeededPopup.html +++ /dev/null @@ -1,13 +0,0 @@ - diff --git a/www/views/includes/bitpayCardsCard.html b/www/views/includes/bitpayCardsCard.html deleted file mode 100644 index 9da935945..000000000 --- a/www/views/includes/bitpayCardsCard.html +++ /dev/null @@ -1,16 +0,0 @@ -
- Cards - -
- diff --git a/www/views/includes/buyAndSellCard.html b/www/views/includes/buyAndSellCard.html deleted file mode 100644 index 14f4ffe5f..000000000 --- a/www/views/includes/buyAndSellCard.html +++ /dev/null @@ -1,12 +0,0 @@ -
-
- Buy & Sell Bitcoin - -
- -
diff --git a/www/views/includes/cardActivity.html b/www/views/includes/cardActivity.html deleted file mode 100644 index a5562bee7..000000000 --- a/www/views/includes/cardActivity.html +++ /dev/null @@ -1,27 +0,0 @@ -
-
-
- -
-
-
-
-
-
{{tx.merchant.name || 'Unknown Merchant'}}
-
{{tx.merchant.location}}
-
-
View Confirmation Status
-
-
-
- - - {{tx.price | currency:bitpayCard.currencySymbol:2 }} - -
- - -
-
-
-
diff --git a/www/views/includes/checkBar.html b/www/views/includes/checkBar.html deleted file mode 100644 index 38b3637ea..000000000 --- a/www/views/includes/checkBar.html +++ /dev/null @@ -1,10 +0,0 @@ -
-
-
-
-
- - -
-
-
diff --git a/www/views/includes/clickToAccept.html b/www/views/includes/clickToAccept.html deleted file mode 100644 index 4aa4aea16..000000000 --- a/www/views/includes/clickToAccept.html +++ /dev/null @@ -1,9 +0,0 @@ - diff --git a/www/views/includes/clientError.html b/www/views/includes/clientError.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/www/views/includes/confirmBackupPopup.html b/www/views/includes/confirmBackupPopup.html deleted file mode 100644 index d1a1885b4..000000000 --- a/www/views/includes/confirmBackupPopup.html +++ /dev/null @@ -1,10 +0,0 @@ - diff --git a/www/views/includes/copayers.html b/www/views/includes/copayers.html deleted file mode 100644 index 53fbeeebe..000000000 --- a/www/views/includes/copayers.html +++ /dev/null @@ -1,10 +0,0 @@ -
- - - {{'Me'|translate}} - - - - {{copayer.name}} - -
diff --git a/www/views/includes/copyToClipboard.html b/www/views/includes/copyToClipboard.html deleted file mode 100644 index c4ec03c4c..000000000 --- a/www/views/includes/copyToClipboard.html +++ /dev/null @@ -1,7 +0,0 @@ - -
- -
-
diff --git a/www/views/includes/homeIntegrations.html b/www/views/includes/homeIntegrations.html deleted file mode 100644 index 58c53c8fc..000000000 --- a/www/views/includes/homeIntegrations.html +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/www/views/includes/incomingDataMenu.html b/www/views/includes/incomingDataMenu.html deleted file mode 100644 index c37c93612..000000000 --- a/www/views/includes/incomingDataMenu.html +++ /dev/null @@ -1,102 +0,0 @@ - - -
-
-
Website
-
-
- - -
-
- {{data}} -
-
-
- - -
Open website
- -
- - Cancel - -
- - - -
-
-
Text
-
-
- {{data}} -
-
-
- - -
Copy to clipboard
- -
- - Cancel - -
- - - -
diff --git a/www/views/includes/itemSelector.html b/www/views/includes/itemSelector.html deleted file mode 100644 index 476814e33..000000000 --- a/www/views/includes/itemSelector.html +++ /dev/null @@ -1,12 +0,0 @@ - - -
{{title}}
- - -
-
-
Send max amount
-
-
-
-
diff --git a/www/views/includes/logOptions.html b/www/views/includes/logOptions.html deleted file mode 100644 index 3729bba38..000000000 --- a/www/views/includes/logOptions.html +++ /dev/null @@ -1,21 +0,0 @@ - - -
Log options
-
- - -
-
-
Copy to clipboard
-
-
-
- - -
-
-
Send by email
-
-
-
-
diff --git a/www/views/includes/menu.html b/www/views/includes/menu.html deleted file mode 100644 index 78c46b155..000000000 --- a/www/views/includes/menu.html +++ /dev/null @@ -1,12 +0,0 @@ -
-
-
-
- -
-
-
-
- - diff --git a/www/views/includes/nextSteps.html b/www/views/includes/nextSteps.html deleted file mode 100644 index 23c91a901..000000000 --- a/www/views/includes/nextSteps.html +++ /dev/null @@ -1,18 +0,0 @@ -
-
- Next steps - - -
- -
diff --git a/www/views/includes/note.html b/www/views/includes/note.html deleted file mode 100644 index e52beba85..000000000 --- a/www/views/includes/note.html +++ /dev/null @@ -1,11 +0,0 @@ -
- -
-
-
- -
-
- -
-
diff --git a/www/views/includes/offline.html b/www/views/includes/offline.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/www/views/includes/output.html b/www/views/includes/output.html deleted file mode 100644 index 1decbdff0..000000000 --- a/www/views/includes/output.html +++ /dev/null @@ -1,17 +0,0 @@ -
- To: - {{output.toAddress || output.address}} -
- -
- Amount: - {{output.amountStr}} - ({{output.alternativeAmountStr}}) - -
- - -
- Note: - {{output.message}} -
diff --git a/www/views/includes/screenshotWarningModal.html b/www/views/includes/screenshotWarningModal.html deleted file mode 100644 index 9cb86acbf..000000000 --- a/www/views/includes/screenshotWarningModal.html +++ /dev/null @@ -1,12 +0,0 @@ - diff --git a/www/views/includes/slideToAccept.html b/www/views/includes/slideToAccept.html deleted file mode 100644 index 643385ce0..000000000 --- a/www/views/includes/slideToAccept.html +++ /dev/null @@ -1,24 +0,0 @@ -
-
-
-
-
- -
-
- -
-
- - {{displaySendStatus}} -
-
- -
-
diff --git a/www/views/includes/slideToAcceptSuccess.html b/www/views/includes/slideToAcceptSuccess.html deleted file mode 100644 index 923eab25c..000000000 --- a/www/views/includes/slideToAcceptSuccess.html +++ /dev/null @@ -1,15 +0,0 @@ -
-
- -
- -
- Payment Sent -
-
- - diff --git a/www/views/includes/terms.html b/www/views/includes/terms.html deleted file mode 100644 index fb0ad6328..000000000 --- a/www/views/includes/terms.html +++ /dev/null @@ -1,56 +0,0 @@ -
-

- This is a binding Agreement between BitPay, Inc. (“BitPay” or “We”) and the person, persons, or entity (“You” or “Your”) using the service, Software, or application (“Software”). -

-

- RIGHTS AND OBLIGATIONS -

-

- BitPay provides the Software solely on the terms and conditions set forth in this Agreement and on the condition that You accept and comply with them. By using the Software You (a) accept this Agreement and agree that You are legally bound by its terms; and (b) represent and warrant that: (i) You are of legal age to enter into a binding agreement; and (ii) if You are a corporation, governmental organization or other legal entity, You have the right, power and authority to enter into this Agreement on behalf of the corporation, governmental organization or other legal entity and bind them to these terms. -

-

- This Software functions as a free, open source, and multi-signature digital wallet. The Software does not constitute an account where We or other third parties serve as financial intermediaries or custodians of Your bitcoin(s). -

-

- While the Software has undergone beta testing and continues to be improved by feedback from the open-source user and developer community, We cannot guarantee there will not be bugs in the Software. You acknowledge that Your use of this Software is at Your own discretion and in compliance with all applicable laws. You are responsible for safekeeping Your passwords, private key pairs, PINs, and any other codes You use to access the Software. -

-

- IF YOU LOSE ACCESS TO YOUR BITCOIN WALLET OR YOUR ENCRYPTED PRIVATE KEYS AND YOU HAVE NOT SEPARATELY STORED A BACKUP OF YOUR WALLET AND CORRESPONDING PASSWORD, YOU ACKNOWLEDGE AND AGREE THAT ANY BITCOIN YOU HAVE ASSOCIATED WITH THAT WALLET WILL BECOME INACCESSIBLE. All transaction requests are irreversible. The authors of the Software, employees and affiliates of BitPay, copyright holders, and BitPay, Inc. cannot retrieve Your private keys or passwords if You lose or forget them and cannot guarantee transaction confirmation as they do not have control over the bitcoin network. -

-

- DISCLAIMER -

-

- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OF THE SOFTWARE, EMPLOYEES AND AFFILIATES OF BITPAY, COPYRIGHT HOLDERS, OR BITPAY, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -

-

- IN NO EVENT WILL BITPAY OR ITS AFFILIATES, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -

-

- INTELLECTUAL PROPERTY -

-

- We retain all right, title, and interest in and to the Content and all of BitPay’s brands, logos, and trademarks, including, but not limited to, BitPay, Inc., BitPay, BitPay – Secure Bitcoin Wallet, BitPay Wallet, BitPay App, Copay, BitPay Prepaid Card, and variations of the wording of the aforementioned brands, logos, and trademarks. -

-

- CHOICE OF LAW -

-

- This Agreement, and its application and interpretation, shall be governed exclusively by the laws of the State of Georgia, without regard to its conflict of law rules. You consent to the exclusive jurisdiction of the federal and state courts located in or near Atlanta, Georgia for any dispute arising under this Agreement. -

-

- SEVERABILITY -

-

- In the event any court shall declare any section or sections of this Agreement invalid or void, such declaration shall not invalidate the entire Agreement and all other paragraphs of the Agreement shall remain in full force and effect. -

-

- BINDING AGREEMENT -

-

- The terms and provisions of this Agreement are binding upon Your heirs, successors, assigns, and other representatives. This Agreement may be executed in counterparts, each of which shall be considered to be an original, but both of which constitute the same Agreement. -

-

- You assume any and all risks associated with the use of the Software. We reserve the right to modify this Agreement from time to time. -

-
diff --git a/www/views/includes/transaction.html b/www/views/includes/transaction.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/www/views/includes/txp.html b/www/views/includes/txp.html deleted file mode 100644 index 4a1f07aaf..000000000 --- a/www/views/includes/txp.html +++ /dev/null @@ -1,35 +0,0 @@ -
-
- -
- -
- -
- - {{tx.message}} - {{addressbook[tx.toAddress].name || addressbook[tx.toAddress]}} - Sending - - - {{tx.merchant.domain}} - {{tx.merchant.domain}} - -
- - - - - - (possible double spend) - - - – {{tx.amountStr}} - - -
- - -
-
-
diff --git a/www/views/includes/version.html b/www/views/includes/version.html deleted file mode 100644 index c190141fe..000000000 --- a/www/views/includes/version.html +++ /dev/null @@ -1,4 +0,0 @@ - - v{{v.version}} - - diff --git a/www/views/includes/walletActivity.html b/www/views/includes/walletActivity.html deleted file mode 100644 index 3a2b78ab1..000000000 --- a/www/views/includes/walletActivity.html +++ /dev/null @@ -1,65 +0,0 @@ - -
- Copayer joined -
- -
- Wallet created -
- -
- Payment Sent -
- {{notification.amountStr}} -
-
- - - -
- Payment Received -
- {{notification.amountStr}} -
-
- -
- Proposal Deleted: - {{notification.message}} -
- {{notification.amountStr}}: -
-
- -
- Proposal Rejected: - {{notification.message}} -
- {{notification.amountStr}}: -
-
- - - New Proposal: - {{notification.message}} -
- {{notification.amountStr}} -
-
- - - Proposal Accepted: - {{notification.message}} -
- {{notification.amountStr}} -
-
- -

- - - {{ notification.creatorName}}@ - {{notification.wallet.name}} - -

-
diff --git a/www/views/includes/walletHistory.html b/www/views/includes/walletHistory.html deleted file mode 100644 index 81124ab7d..000000000 --- a/www/views/includes/walletHistory.html +++ /dev/null @@ -1,79 +0,0 @@ -
- - Recent - - - - {{getDate(btx.time) | amDateFormat:'MMMM'}} - -
- - - - - - - - - -
- -
-
-
{{btx.note.body}}
-
Received
-
- - Low fees -
-
- - Amount too low to spend -
- -
- -
-
{{btx.message}}
-
{{btx.note.body}}
-
- {{addressbook[btx.addressTo].name || addressbook[btx.addressTo]}} -
-
Sent
-
- -
-
{{btx.note.body}}
-
Moved
-
- Invalid -
- -
-
- - {{addressbook[btx.addressTo].name || addressbook[btx.addressTo] || 'Sending'|translate}} - - Receiving -
-
- - - - - - (possible double spend) - - - {{btx.amountStr}} - - -
- - -
-
-
-
diff --git a/www/views/includes/walletInfo.html b/www/views/includes/walletInfo.html deleted file mode 100644 index 98ec7ac02..000000000 --- a/www/views/includes/walletInfo.html +++ /dev/null @@ -1,19 +0,0 @@ - - - -
-Auditable - - - - - - -{{wallet.m}}-of-{{wallet.n}} -#{{wallet.credentials.account || 0}} - - - - - -
diff --git a/www/views/includes/walletItem.html b/www/views/includes/walletItem.html deleted file mode 100644 index e087e1410..000000000 --- a/www/views/includes/walletItem.html +++ /dev/null @@ -1,15 +0,0 @@ -
- - - -
- {{wallet.name || wallet.id}} - - {{wallet.m}}-of-{{wallet.n}} - - - {{'Incomplete' | translate}} - -
-
- diff --git a/www/views/includes/walletSelector.html b/www/views/includes/walletSelector.html deleted file mode 100644 index 28b77830f..000000000 --- a/www/views/includes/walletSelector.html +++ /dev/null @@ -1,32 +0,0 @@ - - -
{{title}}
- - - - -
-
-
- {{w.name}} -
-

- - Incomplete - - - {{w.status.availableBalanceStr}} - [Balance Hidden] - - -   -

-
- -
-
-
diff --git a/www/views/join.html b/www/views/join.html deleted file mode 100644 index 411b8b190..000000000 --- a/www/views/join.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - {{'Join shared wallet' | translate}} - - - - - -
- -
- - - -
- -
- -
-
-
- - - Show advanced options - Hide advanced options - - -
- - - - - - - - - - - Add a password - -
- Add an optional password to secure the recovery phrase - The recovery phrase could require a password to be imported -
- -
- - - -
- -
- - - -
- -
- This password cannot be recovered. If the password is lost, there is no way you could recover your funds. -
- - - I have written it down - - - - -
-
- - -
-
-
diff --git a/www/views/lockSetup.html b/www/views/lockSetup.html deleted file mode 100644 index de44ac4f4..000000000 --- a/www/views/lockSetup.html +++ /dev/null @@ -1,17 +0,0 @@ - - - {{'Startup Lock' | translate}} - - - - - - - {{opt.label}} - - -
- {{errorMsg}} -
-
-
diff --git a/www/views/modals/amazon-card-details.html b/www/views/modals/amazon-card-details.html deleted file mode 100644 index 0bd850367..000000000 --- a/www/views/modals/amazon-card-details.html +++ /dev/null @@ -1,120 +0,0 @@ - - - -

Details

-
- - - -
- Amazon.com Gift Card - -
- Gift Card Amount: - - {{card.amount | currency : '$ ' : 2}} - -
- - -
- Created - {{card.date | amTimeAgo}} -
- - -
-
- Claim code: {{card.claimCode}} -
-
- -
-
-
- Status: - - CANCELED - -
-
-
-
-
- Status: - - PENDING - - - STILL PENDING - - - - FAILURE - - - EXPIRED - -
-
- -
- -
- There was a failure to the create gift card. Please, contact BitPay support. -
- -
- To redeem your gift card, follow these steps: - -
    -
  1. 1. Visit www.amazon.com/gc -
  2. 2. Click Apply to Account and enter the Claim Code when prompted. -
  3. 3. Gift card funds will be applied automatically to eligible orders during the checkout process. -
  4. 4. You must pay for any remaining balance on your order with another payment method. -
- -

- Your gift card claim code may also be entered when prompted during checkout. To redeem your gift card using - the Amazon.com 1-Click® service, first add the gift card funds to Your Account. -

- -

- If you have questions about redeeming your gift card, please visit - www.amazon.com/gc-redeem. - If you have questions regarding the BitPay Introductory offer, please contact BitPay. -

- -
- -
- * Amazon.com is not a sponsor of this promotion. - Except as required by law, Amazon.com - Gift Cards ("GCs") cannot be transferred for value or redeemed for cash. GCs may be used only for purchases of - eligible goods at Amazon.com or certain of its - affiliated websites. For complete terms and conditions, see - www.amazon.com/gc-legal. - GCs are issued by ACI Gift Cards, Inc., a Washington corporation. All Amazon ®, ™ & © are IP - of Amazon.com, Inc. or its affiliates. - No expiration date or service fees. -
- - - -
-
diff --git a/www/views/modals/bitpay-card-confirmation.html b/www/views/modals/bitpay-card-confirmation.html deleted file mode 100644 index 7663f21ae..000000000 --- a/www/views/modals/bitpay-card-confirmation.html +++ /dev/null @@ -1,20 +0,0 @@ - - -
-

Are you sure you would like to log out of your BitPay Card account?

-

You will need to log back for fill in your BitPay Card.

-
-
- -
-
- -
-
-
-
-
diff --git a/www/views/modals/chooseFeeLevel.html b/www/views/modals/chooseFeeLevel.html deleted file mode 100644 index b0155ed42..000000000 --- a/www/views/modals/chooseFeeLevel.html +++ /dev/null @@ -1,84 +0,0 @@ - - -
- {{'Bitcoin Network Fee Policy'|translate}} -
- -
- -
- Testnet -
-
-
-
- - {{avgConfirmationTime | amDurationFormat: 'minute'}} - - ... -
- Average confirmation time -
-
-
-
- - {{feePerSatByte}} sat/byte - - ... -
- Current fee rate for this policy -
-
-
- -
-
-
- - - Transactions without fee are not supported. - -
-
- - - Your fee is lower than recommended. - - - You should not set a fee higher than {{maxFeeRecommended}} satoshis/byte. - -
-
-
-
-
- -
- -
- -
-
diff --git a/www/views/modals/coinbase-tx-details.html b/www/views/modals/coinbase-tx-details.html deleted file mode 100644 index ed8142b0d..000000000 --- a/www/views/modals/coinbase-tx-details.html +++ /dev/null @@ -1,88 +0,0 @@ - - - -
- Details -
-
- - -
-
- bought - bought - bought - bought -
-
- Bought - Sold -
-
- Receiving purchased bitcoin - Sending bitcoin to sell -
-
- Buying bitcoin - Selling bitcoin -
-
- -{{tx.amount.amount.replace('-','')}} - {{tx.amount.currency}} -
-
- -{{tx.native_amount.amount.replace('-','')}} - {{tx.native_amount.currency}} -
-
- -
    -
  • -
- -
    -
  • - {{tx.details.title}} - {{tx.details.subtitle}} -
  • - -
  • - Status - - Completed - Pending - Error - -
  • - -
  • - Date - {{tx.created_at | amCalendar}} -
  • - -
  • - Price Sensitivity - {{tx.price_sensitivity.name}} -
  • - -
  • - Sell Price - {{tx.sell_price_amount}} {{tx.sell_price_currency}} -
  • - -
  • - Sent bitcoin from - Receive bitcoin in - {{tx.description}} -
  • -
    -
    - Remove transaction -
    -
-
-
diff --git a/www/views/modals/confirmation.html b/www/views/modals/confirmation.html deleted file mode 100644 index ea908c84b..000000000 --- a/www/views/modals/confirmation.html +++ /dev/null @@ -1,18 +0,0 @@ - -
-
-

{{title|translate}}

-
- -
-
- -
-
-
-
diff --git a/www/views/modals/fingerprintCheck.html b/www/views/modals/fingerprintCheck.html deleted file mode 100644 index e8c97f63e..000000000 --- a/www/views/modals/fingerprintCheck.html +++ /dev/null @@ -1,13 +0,0 @@ - -
-
-
Verify your identity
-
-
- -
-
-
- -
-
diff --git a/www/views/modals/glidera-tx-details.html b/www/views/modals/glidera-tx-details.html deleted file mode 100644 index eead98fd2..000000000 --- a/www/views/modals/glidera-tx-details.html +++ /dev/null @@ -1,63 +0,0 @@ - - - -

Details

-
- - -
-
- bought - bought - bought - bought -
- Bought - Sold - {{tx.qty}} BTC -
- {{tx.subtotal|currency:'':2}} {{tx.currency}} -
-
- -
    - -
  • - Status - - Completed - Processing - Error - -
  • - -
  • - Date - {{tx.transactionDate | amCalendar}} -
  • - -
  • - Exchange rate - {{tx.price|currency:'':2}} {{tx.currency}}/BTC -
  • - -
  • - Subtotal - {{tx.subtotal|currency:'':2}} {{tx.currency}} -
  • - -
  • - Fees - {{tx.fees|currency:'':2}} {{tx.currency}} -
  • - -
  • - Total - {{tx.total|currency:'':2}} {{tx.currency}} -
  • -
-
-
diff --git a/www/views/modals/paypro.html b/www/views/modals/paypro.html deleted file mode 100644 index 18e3ae670..000000000 --- a/www/views/modals/paypro.html +++ /dev/null @@ -1,62 +0,0 @@ - - - -

Payment request

-
- -
-
-
-
{{tx.amountValueStr || '...'}} {{tx.amountUnitStr}}
-
{{tx.alternativeAmountStr || '...'}}
-
-
-
-
- {{'Pay To'|translate}} - - {{tx.paypro.domain}} - -
-
- {{'Address'|translate}} - - {{tx.paypro.toAddress}} - -
-
- {{'Certified by'|translate}} - - - - {{tx.paypro.caName}} {{'(Trusted)' | translate}} - - - - Self-signed Certificate - - - {{tx.paypro.caName}}
- WARNING: UNTRUSTED CERTIFICATE -
-
- -
-
- {{'Memo'|translate}} - - {{tx.paypro.memo}} - -
-
- {{'Expires'|translate}} - - {{tx.paypro.expires * 1000 | amTimeAgo }} - -
-
-
-
-
diff --git a/www/views/modals/pin.html b/www/views/modals/pin.html deleted file mode 100644 index 67d3ed8d5..000000000 --- a/www/views/modals/pin.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - -
-
-
Please enter your PIN
-
Confirm your PIN
-
-
Incorrect PIN, try again.
- -
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
1
-
-
-
2
-
-
-
3
-
-
-
-
-
4
-
-
-
5
-
-
-
6
-
-
-
-
-
7
-
-
-
8
-
-
-
9
-
-
-
-
-
-
0
-
-
-
-
-
-
-
-
diff --git a/www/views/modals/search.html b/www/views/modals/search.html deleted file mode 100644 index ad82409de..000000000 --- a/www/views/modals/search.html +++ /dev/null @@ -1,38 +0,0 @@ - - - -
- Search Transactions -
-
- - -
- -
- -
-
-
- -
-
-
- {{filteredTxHistory.length - txHistorySearchResults.length}} more -   - -
- - -
-
-
diff --git a/www/views/modals/terms.html b/www/views/modals/terms.html deleted file mode 100644 index 50e2483e7..000000000 --- a/www/views/modals/terms.html +++ /dev/null @@ -1,29 +0,0 @@ - - - {{'Terms of Use' | translate}} - - - - - -
-
-
- -
-
- -
-
-

I have read, understood, and agree with the Terms of use.

-
-
-
- -
-
-
diff --git a/www/views/modals/tx-status.html b/www/views/modals/tx-status.html deleted file mode 100644 index 83c363d83..000000000 --- a/www/views/modals/tx-status.html +++ /dev/null @@ -1,49 +0,0 @@ - -
- -
- - - - - - - - - -
diff --git a/www/views/modals/txp-details.html b/www/views/modals/txp-details.html deleted file mode 100644 index c8f750da5..000000000 --- a/www/views/modals/txp-details.html +++ /dev/null @@ -1,190 +0,0 @@ - - - -
- Payment Proposal -
- -
- - -
-
-
- - Sending -
-
-
{{tx.amountValueStr}} {{tx.amountUnitStr}}
-
{{tx.alternativeAmountStr}}
-
- -
- The payment was removed by creator -
- -
-
-
Payment accepted, but not yet broadcasted
- - -
-
-
Payment accepted. It will be broadcasted by Glidera. In case there is a problem, it can be deleted 6 hours after it was created.
-
-
Payment Sent
-
Payment Rejected
-
-
- -
- Warning: this transaction has unconfirmed inputs -
- -
-
- To - - - - Multiple recipients - -
- -
- Recipients - {{tx.recipientCount}} - - - -
- -
-
- -
- From -
- - - -
{{wallet.name}}
-
-
-
- Created by - - {{tx.creatorName}} - -
-
- Date - - - -
-
- Memo - - {{tx.message}} - -
-
- {{'Fee:' | translate}} {{tx.feeLevelStr | translate}} - {{tx.feeStr || '...'}} - - {{tx.feeFiatStr || '...'}} - {{tx.feeRateStr}} of the transaction - -
- -
-
Payment details
-
- {{'To'|translate}} - - - {{tx.paypro.domain}} - {{tx.paypro.domain}} - - - -
-
- {{'Expired'|translate}} - - - -
-
- {{'Expires'|translate}} - - - -
-
- {{'Merchant Message'|translate}} - {{tx.paypro.pr.pd.memo}} -
-
-
-
Timeline
-
-
-
-
!
-
{{actionList.length - $index}}
-
- -
- - - -
-
-
-
-
-
- -
-
- * A payment proposal can be deleted if 1) you are the creator, and no other copayer has signed, or 2) 24 hours have passed since the proposal was created. -
- -
-
- - - {{buttonText}} - - - {{buttonText}} - - - {{successText}} - -
diff --git a/www/views/modals/wallet-balance.html b/www/views/modals/wallet-balance.html deleted file mode 100644 index c4d5e8390..000000000 --- a/www/views/modals/wallet-balance.html +++ /dev/null @@ -1,96 +0,0 @@ - - - -
- {{wallet.name}} -
-
- - - -
-
- -
All of your bitcoin wallet balance may not be available for immediate spending.
-
-
- -
-
Total
- - - {{status.totalBalanceStr}} - -
- - {{status.totalBalanceAlternative}} {{status.alternativeIsoCode}} - -
-
-
-
-
The total amount of bitcoin stored in this wallet.
-
-
-
- -
-
Available
- - - {{status.spendableBalanceStr}} - -
- - {{status.spendableBalanceAlternative}} {{status.alternativeIsoCode}} - -
-
-
-
-
The amount of bitcoin immediately spendable from this wallet.
-
-
-
- -
-
Confirming
- - - {{status.pendingBalanceStr}} - -
- - {{status.pendingBalanceAlternative}} {{status.alternativeIsoCode}} - -
-
-
-
-
The amount of bitcoin stored in this wallet with less than 1 blockchain confirmation.
-
-
-
- -
-
Locked
- - - {{status.lockedBalanceStr}} - -
- - {{status.lockedBalanceAlternative}} {{status.alternativeIsoCode}} - -
-
-
-
-
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.
-
-
-
diff --git a/www/views/modals/wallets.html b/www/views/modals/wallets.html deleted file mode 100644 index e11c30489..000000000 --- a/www/views/modals/wallets.html +++ /dev/null @@ -1,57 +0,0 @@ - - - -

- Choose your destination wallet - Choose your source wallet -

-
- - - -
-
- {{error}} -
-
-

-
- -
-
- Notice: only 1-1 (single signature) wallets can be used for sell bitcoin -
-

-
-
-

-

-
- -
-
-
-
diff --git a/www/views/onboarding/backupRequest.html b/www/views/onboarding/backupRequest.html deleted file mode 100644 index b716f8ef7..000000000 --- a/www/views/onboarding/backupRequest.html +++ /dev/null @@ -1,15 +0,0 @@ - - -
- -
No backup, no bitcoin.
-
Since only you control your money, you’ll need to save your backup phrase in case this app is deleted.
-
-
- -
Your wallet is never saved to cloud storage or standard device backups.
- - -
-
-
diff --git a/www/views/onboarding/collectEmail.html b/www/views/onboarding/collectEmail.html deleted file mode 100644 index 501eacb05..000000000 --- a/www/views/onboarding/collectEmail.html +++ /dev/null @@ -1,44 +0,0 @@ - - -
- -
Wallet Created
-
-
-
-
Notifications by email
-
Where would you like to receive email notifications about payments?
-
- - Get news and updates from BitPay - -
-
-
-

Is this email address correct?

-

{{data.email}}

-
-
- -
-
- -
-
-
-
-
- -
-
-
diff --git a/www/views/onboarding/disclaimer.html b/www/views/onboarding/disclaimer.html deleted file mode 100644 index 484513c0b..000000000 --- a/www/views/onboarding/disclaimer.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - -
-
Quick review!
-
Almost done! Let's review.
-
Bitcoin is different – it cannot be safely held with a bank or web service.
- - - I understand that my funds are held securely on this device, not by a company. - - - I understand that if this app is moved to another device or deleted, my bitcoin can only be recovered with the backup phrase. - - -
-
-
-
- - {{'Terms of Use' | translate}} - - - - -
-
-
-
-
-
- -

I have read, understood, and agree to the Terms of Use.

- -
-
-
diff --git a/www/views/onboarding/notifications.html b/www/views/onboarding/notifications.html deleted file mode 100644 index 40a69ccad..000000000 --- a/www/views/onboarding/notifications.html +++ /dev/null @@ -1,12 +0,0 @@ - - -
Push Notifications
-
Would you like to receive push notifications about payments?
-
-
- - - -
-
-
diff --git a/www/views/onboarding/tour.html b/www/views/onboarding/tour.html deleted file mode 100644 index d0893492a..000000000 --- a/www/views/onboarding/tour.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - -
Bitcoin is secure,
digital money.
-
You can spend bitcoin at millions of websites and stores worldwide.
-
-
-
Just scan the code to pay.
- -
-
-
- - -
Bitcoin is a currency.
-
You can trade it for other currencies like US Dollars, Euros, or Pounds.
-
-
1 BTC = {{localCurrencySymbol}}{{localCurrencyPerBtc}}
-
-
-
The exchange rate changes with the market.
- -
-
-
- - -
You control your bitcoin.
-
This app stores your bitcoin with cutting-edge security.
-
-
-
Not even BitPay can access it.
- -
-
-
-
-
diff --git a/www/views/onboarding/welcome.html b/www/views/onboarding/welcome.html deleted file mode 100644 index 669efdbfb..000000000 --- a/www/views/onboarding/welcome.html +++ /dev/null @@ -1,12 +0,0 @@ - - -
- -

Take control of your money,
get started with bitcoin.

-
-
- - -
-
-
diff --git a/www/views/paperWallet.html b/www/views/paperWallet.html deleted file mode 100644 index 81b84ba41..000000000 --- a/www/views/paperWallet.html +++ /dev/null @@ -1,63 +0,0 @@ - - - {{'Sweep paper wallet' | translate}} - - - - - - - - -
- No wallets available to receive funds -
- - Funds transferred - -
- - -
diff --git a/www/views/preferences.html b/www/views/preferences.html deleted file mode 100644 index 64cf21c80..000000000 --- a/www/views/preferences.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - {{'Wallet Settings'|translate}} - - - - - -
- -
- - - Name - - {{wallet.name}} - - - - - Color - - - - - Hide Balance - - -
- Security -
- - Backup - - {{'Backup needed' | translate}} - - - -
- - Request Spending Password - -
- - If enabled, all sensitive information (private key and recovery phrase) and actions (spending and exporting) associated with this wallet will be protected. - - - Complete the backup process to use this option - -
-
-
- - Request Fingerprint - -
-
- - More Options - - -
-
-
diff --git a/www/views/preferencesAbout.html b/www/views/preferencesAbout.html deleted file mode 100644 index c8faff250..000000000 --- a/www/views/preferencesAbout.html +++ /dev/null @@ -1,40 +0,0 @@ - - - {{title}} - - - - -
-
- Release information -
-
- - Version - - v{{version}} - -
-
- - Commit hash - - #{{commitHash}} - -
-
-
- - - Terms of Use - - - - - Session log - - -
-
-
diff --git a/www/views/preferencesAdvanced.html b/www/views/preferencesAdvanced.html deleted file mode 100644 index c90691fc9..000000000 --- a/www/views/preferencesAdvanced.html +++ /dev/null @@ -1,38 +0,0 @@ - - - {{'More Options' | translate}} - - - - - - - diff --git a/www/views/preferencesAlias.html b/www/views/preferencesAlias.html deleted file mode 100644 index 6b8da4c24..000000000 --- a/www/views/preferencesAlias.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - {{'Wallet Name'|translate}} - - - - - -
-
What do you call this wallet?
-
When this wallet was created, it was called “{{walletName}}”. You can change the name displayed on this device below.
-
-
-
- -
- -
-
-
diff --git a/www/views/preferencesAltCurrency.html b/www/views/preferencesAltCurrency.html deleted file mode 100644 index c6b110f04..000000000 --- a/www/views/preferencesAltCurrency.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - {{'Alternative Currency'|translate}} - - - - - -
- -
-
- {{lastUsedAltCurrency.name}} - -
-
- {{altCurrency.name}} - -
- - -
-
diff --git a/www/views/preferencesBitpayServices.html b/www/views/preferencesBitpayServices.html deleted file mode 100644 index 76ae73c2e..000000000 --- a/www/views/preferencesBitpayServices.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - BitPay - - -
-
- BitPay Visa® Cards -
-
- - xxxx-xxxx-xxxx-{{card.lastFourDigits}} - - - {{card.email}} - - -
-
-
-
- Accounts -
-
- - {{account.givenName}} {{account.familyName}} - - - {{account.email}} - - -
-
-
-
diff --git a/www/views/preferencesBwsUrl.html b/www/views/preferencesBwsUrl.html deleted file mode 100644 index 54c7c89eb..000000000 --- a/www/views/preferencesBwsUrl.html +++ /dev/null @@ -1,27 +0,0 @@ - - - Wallet Service URL - - - - - -
- -
- - -
-
-
- {{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/preferencesCoinbase.html b/www/views/preferencesCoinbase.html deleted file mode 100644 index 6b76348ac..000000000 --- a/www/views/preferencesCoinbase.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - Preferences - - - - -
    -
    - Account -
    -
  • - ID - - {{coinbaseAccount.id}} - -
  • -
  • - Name - - {{coinbaseAccount.name}} - -
  • -
  • - Balance - - {{coinbaseAccount.balance.amount}} {{coinbaseAccount.balance.currency}} - -
  • -
  • - Native Balance - - {{coinbaseAccount.native_balance.amount}} {{coinbaseAccount.native_balance.currency}} - -
  • - -
    - User Information -
    -
  • - ID - - {{coinbaseUser.id}} - -
  • -
  • - Email - - {{coinbaseUser.email}} - -
  • -
- -
    -
    -
  • - Log out -
  • -
- -
-
diff --git a/www/views/preferencesColor.html b/www/views/preferencesColor.html deleted file mode 100644 index 620e4edfd..000000000 --- a/www/views/preferencesColor.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - {{'Wallet Color'|translate}} - - - - - - - - - - diff --git a/www/views/preferencesDeleteWallet.html b/www/views/preferencesDeleteWallet.html deleted file mode 100644 index 3d5202c9b..000000000 --- a/www/views/preferencesDeleteWallet.html +++ /dev/null @@ -1,25 +0,0 @@ - - - {{'Delete Wallet' | translate}} - - - - -
-
- -

Warning!

-
-

- Permanently delete this wallet. -

-

- THIS ACTION CANNOT BE REVERSED -

-
- -
-
-
diff --git a/www/views/preferencesExternal.html b/www/views/preferencesExternal.html deleted file mode 100644 index db6bc86ca..000000000 --- a/www/views/preferencesExternal.html +++ /dev/null @@ -1,41 +0,0 @@ - - - {{externalSource.longName}} - - - - -
- -
-
- No hardware information available. -
-
- -
-
- Hardware not connected.
- Check installation and retry. -
- -
-
-
- Version - - {{externalSource.version || 'hardware disconnected'}} - -
-
- -
- -
-
-
- -
-
diff --git a/www/views/preferencesFee.html b/www/views/preferencesFee.html deleted file mode 100644 index fdf29e4cd..000000000 --- a/www/views/preferencesFee.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - {{'Bitcoin Network Fee Policy'|translate}} - - - - - -
-
Bitcoin transactions include a fee collected by miners on the network.
-
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.
-
-
- Average confirmation time: - {{avgConfirmationTime | amDurationFormat: 'minute'}} - ... -
-
- Current fee rate for this policy: - {{feePerSatByte}} satoshis/byte - ... -
-
-
-
- - {{level|translate}} - -
-
-
diff --git a/www/views/preferencesGlidera.html b/www/views/preferencesGlidera.html deleted file mode 100644 index d74bfdeea..000000000 --- a/www/views/preferencesGlidera.html +++ /dev/null @@ -1,272 +0,0 @@ - - - - - Preferences - - - - -
    -
    -
    - Permissions -
    -
  • - Email - - {{account.permissions.view_email_address}} - -
  • -
  • - Personal Information - - {{account.permissions.personal_info}} - -
  • -
  • - Buy/Sell - - {{account.permissions.transact}} - -
  • -
  • - Transaction History - - {{account.permissions.transaction_history}} - -
  • -
    - -
    -
    - Email -
    -
  • - Email - - {{account.email.email}} - -
  • -
  • - Active - - {{account.email.userEmailIsSetup}} - -
  • -
    - -
    -
    - Personal Information -
    - -
  • - First Name - - {{account.personalInfo.firstName}} - -
  • -
  • - Middle Name - - {{account.personalInfo.middleName}} - -
  • -
  • - Last Name - - {{account.personalInfo.lastName}} - -
  • -
  • - Birth Date - - {{account.personalInfo.birthDate}} - -
  • -
  • - Address 1 - - {{account.personalInfo.address1}} - -
  • -
  • - Address 2 - - {{account.personalInfo.address2}} - -
  • -
  • - City - - {{account.personalInfo.city}} - -
  • -
  • - State - - {{account.personalInfo.state}} - -
  • -
  • - ZIP Code - - {{account.personalInfo.zipCode}} - -
  • -
  • - Country - - {{account.personalInfo.countryCode}} - -
  • -
  • - Occupation - - {{account.personalInfo.occupation}} - -
  • -
  • - Basic Information State - - {{account.personalInfo.basicInfoState}} - -
  • -
    - -
    -
    - Status -
    - -
  • - Buy/Sell - - {{account.status.userCanTransact}} - -
  • - -
  • - Buy - - {{account.status.userCanBuy}} - -
  • -
  • - Sell - - {{account.status.userCanSell}} - -
  • -
  • - Email Is Setup - - {{account.status.userEmailIsSetup}} - -
  • -
  • - Phone Is Setup - - {{account.status.userPhoneIsSetup}} - -
  • -
  • - Bank Account Is Setup - - {{account.status.userBankAccountIsSetup}} - -
  • -
  • - Personal Information State - - {{account.status.personalInfoState}} - -
  • -
  • - Bank Account State - - {{account.status.bankAccountState}} - -
  • -
  • - Country - - {{account.status.country}} - -
  • -
    - -
    -
    - Limits -
    - -
  • - Daily Buy - - {{account.limits.dailyBuy|currency:'':2}} {{limits.currency}} - -
  • -
  • - Daily Sell - - {{account.limits.dailySell|currency:'':2}} {{limits.currency}} - -
  • -
  • - Monthly Buy - - {{account.limits.monthlyBuy|currency:'':2}} {{limits.currency}} - -
  • -
  • - Monthly Sell - - {{account.limits.monthlySell|currency:'':2}} {{limits.currency}} - -
  • -
  • - Daily Buy Remaining - - {{account.limits.dailyBuyRemaining|currency:'':2}} {{limits.currency}} - -
  • -
  • - Daily Sell Remaining - - {{account.limits.dailySellRemaining|currency:'':2}} {{limits.currency}} - -
  • -
  • - Monthly Buy Remaining - - {{account.limits.monthlyBuyRemaining|currency:'':2}} {{limits.currency}} - -
  • -
  • - Monthly Sell Remaining - - {{account.limits.monthlySellRemaining|currency:'':2}} {{limits.currency}} - -
  • -
  • - Buy/Sell Disabled (pending first transaction) - - {{account.limits.transactDisabledPendingFirstTransaction}} - -
  • -
    - -
    - Account -
    - -
  • - Log out -
  • - -
    -
-
-
diff --git a/www/views/preferencesHistory.html b/www/views/preferencesHistory.html deleted file mode 100644 index ab1876317..000000000 --- a/www/views/preferencesHistory.html +++ /dev/null @@ -1,32 +0,0 @@ - - - {{'Transaction History' | translate}} - - - - -
- - - Export to file - - - Export to file - - preparing... - - - {{err | translate}} - - -
- - Clear cache - -
-
- The transaction history and every new incoming transaction are cached in the app. This feature clean this up and synchronizes again from the server -
-
-
-
diff --git a/www/views/preferencesInformation.html b/www/views/preferencesInformation.html deleted file mode 100644 index 728edb40b..000000000 --- a/www/views/preferencesInformation.html +++ /dev/null @@ -1,108 +0,0 @@ - - - {{'Wallet Information' | translate}} - - - - -
-
-
- Wallet Name (at creation) - - {{walletName}} - -
-
- Wallet Id - - {{walletId}} - -
-
- Wallet Configuration (m-n) - - {{M}}-{{N}} - -
-
- Wallet Network - - {{network}} - -
-
- Address Type - - {{addressType}} - -
-
- Derivation Strategy - - {{derivationStrategy}} - -
-
- Hardware Wallet - - {{externalSource}} - -
- - Hardware Wallet - - {{externalSource}} - - - -
- - - No private key - -
-
- Account({{derivationStrategy}}) - - #{{wallet.credentials.account}} - -
- -
- Copayers -
- -
- {{copayer.name}} - - ({{'Me'|translate}}) - -
- -
- Extended Public Keys -
- -
- Copayer {{$index}} - - {{pk}} - ({{basePath}}) - -
- -
-
- Balance By Address -
-
- {{a.address}} - - {{(a.amount/1e8).toFixed(8)}} BTC - -
-
-
-
-
diff --git a/www/views/preferencesLanguage.html b/www/views/preferencesLanguage.html deleted file mode 100644 index f9cadd017..000000000 --- a/www/views/preferencesLanguage.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - {{'Language'|translate}} - - - - - -
- {{lang.name}} - -
-
-
- We’re always looking for translation contributions! You can make corrections or help to make this app available in your native language by joining our community on Crowdin. -
-
-
-
- Don't see your language on Crowdin? Contact the Owner on Crowdin! We'd love to support your language. -
-
-
- Contribute Translations -
- - diff --git a/www/views/preferencesLogs.html b/www/views/preferencesLogs.html deleted file mode 100644 index 84d0528ac..000000000 --- a/www/views/preferencesLogs.html +++ /dev/null @@ -1,36 +0,0 @@ - - - {{'Session Log' | translate}} - - - - - - - -
-
-
No entries for this log level filter setting.
-
    -
  • - - [{{l.timestamp}}] - [{{l.level}}] - {{l.msg}} - -
  • -
-
-
-
- - -
diff --git a/www/views/preferencesNotifications.html b/www/views/preferencesNotifications.html deleted file mode 100644 index a2d7ee725..000000000 --- a/www/views/preferencesNotifications.html +++ /dev/null @@ -1,56 +0,0 @@ - - - {{'Notifications' | translate}} - - - - - -
-
- - Enable push notifications - -
- -
-
- Push notifications for {{appName}} are currently disabled. Enable them in the Settings app. -
-
- -
- - Notify me when transactions are confirmed - -
- - - Enable email notifications - - -
-
-
- You'll receive email notifications about payments sent and received from your wallets. -
-
- -
-
- -
- -
-
- - -
-
-
diff --git a/www/views/preferencesUnit.html b/www/views/preferencesUnit.html deleted file mode 100644 index 77edf05d7..000000000 --- a/www/views/preferencesUnit.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - {{'Unit'|translate}} - - - - - - {{unit.shortName}} - - - diff --git a/www/views/proposals.html b/www/views/proposals.html deleted file mode 100644 index 573b36a0c..000000000 --- a/www/views/proposals.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - {{'Pending Proposals'|translate}} - - - - - - -
-
- -
Updating pending proposals. Please stand by
-
-
- -
- -
- -
-
- No pending proposals -
-
-
-
diff --git a/www/views/sellCoinbase.html b/www/views/sellCoinbase.html deleted file mode 100644 index 5827efda6..000000000 --- a/www/views/sellCoinbase.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - Sell bitcoin - - - - -
- -
-
- sell bitcoin - Selling -
-
-
{{amountUnitStr}}
-
- {{sellRequestInfo.amount.amount}} {{sellRequestInfo.amount.currency}} - @ ${{sellPrice.amount}} per BTC -
-
-
- -
- -
-
From
-
- - - - {{wallet ? wallet.name : '...'}} -
- -
- - - -
- At what percentage lower price would you accept to sell? -
- -
-
- Coinbase has not yet implemented an immediate method to sell bitcoin from a wallet. To make this sale, funds - will be sent to your Coinbase account, and sold when Coinbase accepts the transaction (usually one - hour). -
-
Estimated sale value: - - {{sellRequestInfo.total.amount | currency : '' : 2}} - {{sellRequestInfo.total.currency}} - -
-
Still sell if price fall until: - - {{(sellRequestInfo.total.amount - - (selectedPriceSensitivity.data.value / 100) * sellRequestInfo.total.amount) | currency : '' : 2}} - {{sellRequestInfo.total.currency}} - -
-
- -
- Transaction details -
-
- Amount - - {{sellRequestInfo.subtotal.amount}} {{sellRequestInfo.subtotal.currency}} - -
-
- - {{fee.type}} fee - - - - - {{fee.amount.amount}} {{fee.amount.currency}} - -
-
- Total to receive - - {{sellRequestInfo.total.amount}} {{sellRequestInfo.total.currency}} - -
-
-
- -
- - - Confirm sale - - - Slide to sell - - - Funds sent to Coinbase Account -
- The transaction is not yet confirmed, and will show as "Pending" in your Activity. The bitcoin sale will be completed automatically once it is confirmed by Coinbase. -
-
- - - -
diff --git a/www/views/sellGlidera.html b/www/views/sellGlidera.html deleted file mode 100644 index cb354bac0..000000000 --- a/www/views/sellGlidera.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - Sell bitcoin - - - - -
- -
-
- sell bitcoin - Selling -
-
-
{{amountUnitStr}}
-
- {{sellInfo.subtotal}} {{sellInfo.currency}} - {{sellInfo.qty}} BTC - @ ${{sellInfo.price}} per BTC -
-
-
- -
- -
-
From
-
- - - - {{wallet ? wallet.name : '...'}} -
- -
- -
- Transaction details -
-
- Expires - - {{sellInfo.expires | amCalendar}} - -
-
- Fees - - {{sellInfo.fees}} {{sellInfo.currency}} - -
-
- Total to receive - - {{sellInfo.total}} {{sellInfo.currency}} - -
-
-
- -
- - - Confirm sale - - - Slide to sell - - - Funds sent to Glidera Account -
- The transaction is not yet confirmed, and will show as "Pending" in your Activity. The bitcoin sale will be - completed automatically once it is confirmed by Glidera. -
-
- - - -
diff --git a/www/views/tab-create-personal.html b/www/views/tab-create-personal.html deleted file mode 100644 index 9b695aefc..000000000 --- a/www/views/tab-create-personal.html +++ /dev/null @@ -1,133 +0,0 @@ - - - {{'Create Personal Wallet' | translate}} - - - - - -
-
- - -
- - - Show advanced options - Hide advanced options - - -
- - - - - - - - -
- - Add a password - -
- Add an optional password to secure the recovery phrase - The recovery phrase could require a password to be imported -
-
- -
- - - -
-
- - - -
- -
- This password cannot be recovered. If the password is lost, there is no way you could recover your funds. -
- - - I have written it down - - - - - - Testnet - - - - Single Address Wallet - For audit purposes - - -
-
- - -
-
-
diff --git a/www/views/tab-create-shared.html b/www/views/tab-create-shared.html deleted file mode 100644 index 700ac9c2b..000000000 --- a/www/views/tab-create-shared.html +++ /dev/null @@ -1,162 +0,0 @@ - - - {{'Create Shared Wallet' | translate}} - - - - - -
-
- - - - - - - - -
- - - Show advanced options - Hide advanced options - - -
- - - - - - - - -
- - Add a password - -
- Add an optional password to secure the recovery phrase - The recovery phrase could require a password to be imported -
-
- -
- - - -
-
- - - -
- -
- This password cannot be recovered. If the password is lost, there is no way you could recover your funds. -
- - - I have written it down - - - - - - Testnet - - - - Single Address Wallet - For audit purposes - - -
-
- - -
-
-
diff --git a/www/views/tab-export-file.html b/www/views/tab-export-file.html deleted file mode 100644 index 22f56c53e..000000000 --- a/www/views/tab-export-file.html +++ /dev/null @@ -1,96 +0,0 @@ -
-
- - Failed to export -
- -
-
- - - - -
-
- - Show advanced options - Hide advanced options - - - - Do not include private key - -
- -
- - - - WARNING: The private key of this wallet is not available. The export allows to check the wallet balance, transaction history, and create spend proposals from the export. However, does not allow to approve (sign) proposals, so funds will not be accessible from the export. - - -
- -
- - - - WARNING: Not including the private key allows to check the wallet balance, transaction history, and create spend proposals from the export. However, does not allow to approve (sign) proposals, so funds will not be accessible from the export. - - -
-
- - - - - -
- - -
-
-
- -
- -
- -

Copy this text as it is to a safe place (notepad or email)

-
-
diff --git a/www/views/tab-export-qrCode.html b/www/views/tab-export-qrCode.html deleted file mode 100644 index 478f9d328..000000000 --- a/www/views/tab-export-qrCode.html +++ /dev/null @@ -1,10 +0,0 @@ -
-
- -
-
From the destination device, go to Add wallet > Import wallet and scan this QR code
-
- -
-
Exporting via QR not supported for this wallet
-
diff --git a/www/views/tab-home.html b/www/views/tab-home.html deleted file mode 100644 index 0af9df0cd..000000000 --- a/www/views/tab-home.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - - - -
- - - - -
{{updateText}}
- -
- Download -
-
- -
-
-
- -
-
- - - -
-
- Your bitcoin wallet is ready! -
-
- On this screen you can see all your wallets, accounts, and assets. -
-
- - - - - - -
-
-
-
- -
-
diff --git a/www/views/tab-import-file.html b/www/views/tab-import-file.html deleted file mode 100644 index 65e9ee001..000000000 --- a/www/views/tab-import-file.html +++ /dev/null @@ -1,42 +0,0 @@ -
-
- - - - - - -
- - - Show advanced options - Hide advanced options - - -
- -
-
- - -
diff --git a/www/views/tab-import-hardware.html b/www/views/tab-import-hardware.html deleted file mode 100644 index 07c715315..000000000 --- a/www/views/tab-import-hardware.html +++ /dev/null @@ -1,46 +0,0 @@ -
-
-
- No hardware wallets supported on this device -
-
- -
-
- - - - - - Shared Wallet - - -
- - - Show advanced options - Hide advanced options - - -
- -
-
- - -
-
diff --git a/www/views/tab-import-phrase.html b/www/views/tab-import-phrase.html deleted file mode 100644 index 5b692f17e..000000000 --- a/www/views/tab-import-phrase.html +++ /dev/null @@ -1,81 +0,0 @@ -
-
Could not access the wallet at the server. Please check:
-
    -
  • The password of the recovery phrase (if set)
  • -
  • The derivation path
  • -
  • The wallet service URL
  • -
-
- NOTE: To import a wallet from a 3rd party software, please go to Add Wallet > Create Wallet, and specify the Recovery Phrase there. -
-
- -
-
-
- -
- -
-
-
- - - Show advanced options - Hide advanced options - - -
- - - - - - - From Hardware Wallet - - - - - - Testnet - - - - - -
-
- - -
diff --git a/www/views/tab-receive.html b/www/views/tab-receive.html deleted file mode 100644 index 7f42ab857..000000000 --- a/www/views/tab-receive.html +++ /dev/null @@ -1,93 +0,0 @@ - - - {{'Receive' | translate}} - - - - - -
- No Wallet -
-
-
-
-
- Incomplete wallet -
-
- All signing devices must be added to this multisig wallet before bitcoin addresses can be created. -
- -
-
-
-
- - - - -
- {{addr}} - -
-
-
- -
-
- -
-
-
- -
- - Wallet not backed up - -
- - - -
- - -
diff --git a/www/views/tab-scan.html b/www/views/tab-scan.html deleted file mode 100644 index ed4b48643..000000000 --- a/www/views/tab-scan.html +++ /dev/null @@ -1,46 +0,0 @@ - - - {{'Scan' | translate}} - - - - - -
- - - -
Scan QR Codes
-
You can scan bitcoin addresses, payment requests, paper wallets, and more.
-
-
Enable the camera to get started.
-
Enable camera access in your device settings to get started.
-
Please connect a camera to get started.
- - - -
-
-
-
-
- -
- -
-
- -
diff --git a/www/views/tab-send.html b/www/views/tab-send.html deleted file mode 100644 index 6b36814b0..000000000 --- a/www/views/tab-send.html +++ /dev/null @@ -1,81 +0,0 @@ - - - {{'Send' | translate}} - - - -
-
-
Recipient
-
- -
- - -
-
-
-
- -
-
-
-
- - - -
-
- Start sending bitcoin -
-
- To get started, buy bitcoin or share your address. You can receive bitcoin from any wallet or service. - To get started, you'll need to create a bitcoin wallet and get some bitcoin. -
- - - -
-
-
-
- -
-
- Contacts - - - -
-
- - - - - - {{item.name}} - - -
- Show more -
-
-
- -
-
- Transfer to Wallet -
- -
- -
-
diff --git a/www/views/tab-settings.html b/www/views/tab-settings.html deleted file mode 100644 index 2ccd0afdb..000000000 --- a/www/views/tab-settings.html +++ /dev/null @@ -1,162 +0,0 @@ - - - {{'Settings' | translate}} - - - - - - diff --git a/www/views/tabs.html b/www/views/tabs.html deleted file mode 100644 index 69cf93309..000000000 --- a/www/views/tabs.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/www/views/termsOfUse.html b/www/views/termsOfUse.html deleted file mode 100644 index 5bcc3cef0..000000000 --- a/www/views/termsOfUse.html +++ /dev/null @@ -1,13 +0,0 @@ - - - {{'Terms Of Use' | translate}} - - - - - -
-
-
-
-
diff --git a/www/views/topup.html b/www/views/topup.html deleted file mode 100644 index 1cdb3e8ab..000000000 --- a/www/views/topup.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - {{'Add funds' | translate}} - - - - - -
- -
-
- -
-
- BitPay Visa® Card ({{lastFourDigits}}) -
-
-
{{amountUnitStr}}
-
- @ - {{rate | currency:currencySymbol:2}} {{currencyIsoCode}} per BTC - ... -
-
-
- -
- -
-
From
-
- - - - {{wallet ? wallet.name : '...'}} -
- -
- -
-
- Details -
-
- Funds to be added - - {{amount | currency:currencySymbol:2}} {{currencyIsoCode}} - ... - -
-
- Invoice Fee - - {{invoiceFee | currency:currencySymbol:2}} {{currencyIsoCode}} - ... - -
-
- Network Fee - - {{networkFee | currency:currencySymbol:2}} {{currencyIsoCode}} - ... - -
-
- Total - - {{totalAmount | currency:currencySymbol:2}} {{currencyIsoCode}} - ({{totalAmountStr}}) - -
-
-
-
- -
- - - Add funds - - - Slide to confirm - - - Sent - Success -
- Funds were added to debit card - Transaction initiated -
-
- - - -
diff --git a/www/views/tx-details.html b/www/views/tx-details.html deleted file mode 100644 index de7ab9977..000000000 --- a/www/views/tx-details.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - {{title}} - - - - - - -
-
-
- - - - {{'Sent' | translate}} - {{'Received' | translate}} - {{'Moved' | translate}} -
-
- - Sending - Receiving -
-
-
{{btx.amountValueStr}} {{btx.amountUnitStr}}
-
- {{btx.alternativeAmountStr}} - - ... - - {{rate| currency:'':2}} {{alternativeIsoCode}} ({{rateDate | amDateFormat:'MM/DD/YYYY HH:mm a'}}) - - -
-
-
-
-
- To - - - -
- - {{toName}} -
-
-
-
- From - To -
- - - -
{{wallet.name}}
-
-
-
- Created by - - {{btx.creatorName}} - -
-
- Date - - - -
- - Memo -
- {{btx.note.body || btx.message}} -
- -
-
- Fee - {{btx.feeStr || '...'}} - - {{btx.feeFiatStr || '...'}} - {{btx.feeRateStr}} of the transaction - -
-
- - This transaction could take a long time to confirm or could be dropped due to the low fees set by the sender -
-
- - -This transaction amount is too small compared to current Bitcoin network fees. Spending these funds will need a Bitcoin network fee cost comparable to the funds itself. -
- -
- Confirmations - - - Unconfirmed - - - {{btx.confirmations}} - - - {{btx.safeConfirmed}} - - -
-
- - Notify me if confirmed - -
-
-
Timeline
-
-
-
-
!
- -
- {{actionList.length - $index}} -
-
- -
- - - -
-
-
-
-
- -
- - - -
-
diff --git a/www/views/unsupported.html b/www/views/unsupported.html deleted file mode 100644 index 8571a3feb..000000000 --- a/www/views/unsupported.html +++ /dev/null @@ -1,14 +0,0 @@ -
-
- -
-
-

Browser unsupported

-

- Sorry, Copay is not supported by your browser. - Please use a current version of Google Chrome, Mozilla Firefox, Internet Explorer, Safari, or Opera. -
- Note that localStorage should also be enabled (enabled by default in most cases). -

-
- diff --git a/www/views/walletDetails.html b/www/views/walletDetails.html deleted file mode 100644 index a2dbd7ae8..000000000 --- a/www/views/walletDetails.html +++ /dev/null @@ -1,230 +0,0 @@ - - - - {{wallet.name}} - - - - - - - -
- -
-
-
-
- -
- {{updateStatusError}} - Tap to retry -
- -
- This wallet is not registered at the given Bitcore Wallet Service (BWS). You can recreate it from the local information. - Recreate -
- -
- {{status.totalBalanceStr}} -
- {{status.totalBalanceAlternative}} {{status.alternativeIsoCode}} -
-
- -
- [Balance Hidden] -
- Tap and hold to show -
-
- -
- -
- -
-
-
- ... -
-
-
-
- -
-
- - - - - -
-
-
-
- -
- {{updateStatusError}} - Tap to retry -
- -
- This wallet is not registered at the given Bitcore Wallet Service (BWS). You can recreate it from the local information. - Recreate -
- -
- {{status.totalBalanceStr}} -
{{status.totalBalanceAlternative}} {{status.alternativeIsoCode}}
-
- -
- -
- -
- [Balance Hidden] -
- Tap and hold to show -
-
-
-
-
- ... -
-
-
- -
- -
-
- - - Wallet not backed up - - - - - Spending this balance will need significant Bitcoin network fees - - - -
-
-
- - - WARNING: Key derivation is not working on this device/wallet. Actions cannot be performed on this wallet. - -
-
-
-
- Proposals - Unsent transactions -
-
- -
- -
- - - -
- No transactions yet -
- - -
- Could not update transaction history -
- - -
-
- -
-
-
- Updating transaction history. Please stand by.
- {{updatingTxHistoryProgress}} transactions downloaded -
-
-
- -
-
- -
-
- - -
-
-
-